diff --git a/apps/pusher_app_prem/bin/git_pusher.pid b/apps/pusher_app_prem/bin/git_pusher.pid index d548103a..b76d2172 100644 --- a/apps/pusher_app_prem/bin/git_pusher.pid +++ b/apps/pusher_app_prem/bin/git_pusher.pid @@ -1 +1 @@ -431858 +1285462 diff --git a/apps/pusher_app_prem/bin/git_pusher.py b/apps/pusher_app_prem/bin/git_pusher.py index f312e389..60c76cce 100755 --- a/apps/pusher_app_prem/bin/git_pusher.py +++ b/apps/pusher_app_prem/bin/git_pusher.py @@ -399,13 +399,7 @@ class GitPusherRequestHandler(BaseHTTPRequestHandler): app_directories = [] for app in apps: - app_id = app.get('id') or app.get('app_id') or app.get('name') - - # Vérifier que app_id n'est pas None - if not app_id: - logger.warning(f"Skipping app with no ID: {app}") - continue - + app_id = app.get('id') or app.get('app_id') app_path = os.path.join(apps_base_path, app_id) if os.path.isdir(app_path): @@ -423,10 +417,64 @@ class GitPusherRequestHandler(BaseHTTPRequestHandler): return app_directories -def start_server(port=9999): - """Démarrer le serveur HTTP""" +def start_server(port=9999, use_ssl=True): + """Démarrer le serveur HTTP/HTTPS""" + import ssl + server = HTTPServer(('0.0.0.0', port), GitPusherRequestHandler) - logger.info(f"Git Pusher server listening on 0.0.0.0:{port}") + + ssl_enabled = False + + if use_ssl: + # Chemins possibles pour les certificats (ordre de priorité) + cert_paths = [ + # Certificats dédiés pour Git Pusher (recommandé) + ('/opt/splunk/etc/apps/pusher_app_prem/local/certs/server.crt', + '/opt/splunk/etc/apps/pusher_app_prem/local/certs/server.key'), + # Certificats splunkweb + ('/opt/splunk/etc/auth/splunkweb/cert.pem', + '/opt/splunk/etc/auth/splunkweb/privkey.pem'), + # Autre emplacement splunkweb + ('/opt/splunk/etc/auth/splunkweb/splunkweb.pem', + '/opt/splunk/etc/auth/splunkweb/splunkweb.key'), + ] + + for cert_file, key_file in cert_paths: + logger.info(f"Trying SSL cert: {cert_file}") + if os.path.exists(cert_file) and os.path.exists(key_file): + try: + ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) + ssl_context.check_hostname = False + ssl_context.verify_mode = ssl.CERT_NONE + + # Charger le certificat et la clé + ssl_context.load_cert_chain(certfile=cert_file, keyfile=key_file) + + server.socket = ssl_context.wrap_socket(server.socket, server_side=True) + ssl_enabled = True + logger.info(f"SSL enabled using: {cert_file}") + break + except Exception as e: + logger.warning(f"Could not load SSL cert {cert_file}: {e}") + continue + else: + logger.debug(f"Cert not found: {cert_file} or {key_file}") + + if not ssl_enabled: + logger.error("=" * 60) + logger.error("SSL CERTIFICATES NOT FOUND OR INVALID!") + logger.error("HTTPS requests from browser will fail!") + logger.error("") + logger.error("To fix, run these commands:") + logger.error(" mkdir -p /opt/splunk/etc/apps/pusher_app_prem/local/certs") + logger.error(" openssl req -x509 -newkey rsa:4096 \\") + logger.error(" -keyout /opt/splunk/etc/apps/pusher_app_prem/local/certs/server.key \\") + logger.error(" -out /opt/splunk/etc/apps/pusher_app_prem/local/certs/server.crt \\") + logger.error(" -days 365 -nodes -subj \"/CN=git-pusher\"") + logger.error("=" * 60) + + protocol = "HTTPS" if ssl_enabled else "HTTP" + logger.info(f"Git Pusher server listening on 0.0.0.0:{port} ({protocol})") # Afficher le statut de la licence au démarrage license_status = validate_license() @@ -439,6 +487,14 @@ def start_server(port=9999): if __name__ == '__main__': - port = 9999 - logger.info(f"Starting Git Pusher on port {port}") - start_server(port) \ No newline at end of file + import argparse + parser = argparse.ArgumentParser(description='Git Pusher Server') + parser.add_argument('--no-ssl', action='store_true', help='Disable SSL/HTTPS') + parser.add_argument('--port', type=int, default=9999, help='Port number (default: 9999)') + args = parser.parse_args() + + port = args.port + use_ssl = not args.no_ssl + + logger.info(f"Starting Git Pusher on port {port} (SSL: {use_ssl})") + start_server(port, use_ssl) \ No newline at end of file diff --git a/apps/pusher_app_prem/local/certs/server.crt b/apps/pusher_app_prem/local/certs/server.crt new file mode 100644 index 00000000..72166c19 --- /dev/null +++ b/apps/pusher_app_prem/local/certs/server.crt @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIFCzCCAvOgAwIBAgIUIkJeLpRn6wfN8VbsMrPdFAl/x7swDQYJKoZIhvcNAQEL +BQAwFTETMBEGA1UEAwwKZ2l0LXB1c2hlcjAeFw0yNjAyMDExOTM1MzNaFw0yNzAy +MDExOTM1MzNaMBUxEzARBgNVBAMMCmdpdC1wdXNoZXIwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDsTH5H+OD27yXIFz4MvNrpmpNgYly6QYUukJO8FI/f +unBe4N5mfOTZ/WrBeR5KoBOS3FV8VWIH7ShXIzWBpollmIz9+jlPyftawXyiSnSX +rwLBdHc8gjVRZf1H2U0E191v9z0oaXApy8d7E0Pw+i4odoGHOX5Ix89s0DJrG5UP +LrLr9OHlyMCC0D2QVp0wqFGkIXXv/cyYwlcGPACvFhE/fWUazC4AEImJhXypOfQZ +h57SoldKQWwW7BZdGmnbSqeG2lq7KFUow0sie4KzRPLPXrIGdKQbPAKDKcQ7MYlG +9bfgsmM1Rr6klRAmO/e4w1HRHSHUetmFBYDJ5MYNdeddYDfIVwjgwfDvy1i+ojRl +/viywW3ONXR9rUcx/nGGc8UJTjJAAaAaTj6UMzn40ltLYmiymhj6mWFNiuGwDxas +YTxA/3i62pGlbC8s1ZSXtdCYsEN4+W3N5CSadHdVtAIIEc6OyQ2mRa3v4oeZlyzt +1mk9j9oChxi5r74ujUmjNHxpawWG5wmnRy3b9ABxcivESEuXIbjBXrQ+RCmuQ8Dp +5Asa7iede7iEPkhGw3Es3uVdk4s3/OlS6o+1F+rG9qZr3aTtJrciVSLofbrSNtFF +MERip+VBwIdBofVzS6GUhnLjjdhfu/kdzsqrTDDFan4NX1IyC+zBL90DPQ8SoIOg +owIDAQABo1MwUTAdBgNVHQ4EFgQUe6KibB+U4yTq9/pwf6C4JeoPQo0wHwYDVR0j +BBgwFoAUe6KibB+U4yTq9/pwf6C4JeoPQo0wDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQsFAAOCAgEA12Y7N6iLOtRAt+xD3B5eIdJtPnFclhmy8FCd2+SdnF/K +zWVdzTsWYKzZ4TZ08aMOh2+H2vDf/ZTG+gryCob28QVy0sRxbpA4WJMI6zBfZSKr +Raudh5Gql/CO28gN4k6EGgNAn1S02NkvhZP4FokfXwkY4CIReRECJzws0gCyMZto +wLfYEVyvN9NYQf1xoJHaozGghA0FADQrr6pQsl1Ek4bkrvb8/L8gWeT6lgny0ZcI +1UEW9lkx7pc0dRDOjUjVzlHYzAf53xEslontihQcOoE/Uj3Wsmi1V/lPm+Pi0Ml0 +msMUkvMZP6Y8lnvRT4625YKR6L3ibuQxlXGtKHvu7eJdcOnW5IeVmg5vsH2xoVaF +4L0zBPpA6CBzsfZPgLJ9odD10nRVx8bh0b555/CUP5WIVHvLkPgp+NptJAoKah7Q +PkI5OKZWGjrJGiV7BWx5HIB5TX/w0PCjMA4ce3yVRNs7poUzR4PKgohrp94cIDFa +m+K4rfBmeMwVuuJZIuYpye80dcdsiFPrIZuA+hbP7tGlrwBKKMzpB3BEDIFTPb2b +hUq1TJCcHffFqxpRia+L/MMI8RpaEwzW9hghQB/LiPG0UqJycNpuo8cnggx+bsop +0ZXB68cW6K1UWLo1qLSz7/0+65PrWRkJisbjtmpKRDJlB72yIxlsZmBucxBy3II= +-----END CERTIFICATE----- diff --git a/apps/pusher_app_prem/local/certs/server.key b/apps/pusher_app_prem/local/certs/server.key new file mode 100644 index 00000000..465e812b --- /dev/null +++ b/apps/pusher_app_prem/local/certs/server.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +eiDRzM4++dQGm7osCy1NRbPGxdUyhw== +-----END PRIVATE KEY----- diff --git a/apps/pusher_app_prem/local/data/ui/views/git_pusher_-_deploy_applications.xml b/apps/pusher_app_prem/local/data/ui/views/git_pusher_-_deploy_applications.xml index 237cacba..6c6c977a 100644 --- a/apps/pusher_app_prem/local/data/ui/views/git_pusher_-_deploy_applications.xml +++ b/apps/pusher_app_prem/local/data/ui/views/git_pusher_-_deploy_applications.xml @@ -1,5 +1,5 @@ - + Modern interface to push Splunk applications to Git repository diff --git a/apps/pusher_app_prem/local/usage_stats.json b/apps/pusher_app_prem/local/usage_stats.json index b14a229a..b5153f03 100644 --- a/apps/pusher_app_prem/local/usage_stats.json +++ b/apps/pusher_app_prem/local/usage_stats.json @@ -1 +1 @@ -{"pushes_today": 3, "pushes_total": 12, "last_push_date": "2026-02-01", "apps_pushed": []} \ No newline at end of file +{"pushes_today": 6, "pushes_total": 15, "last_push_date": "2026-02-01", "apps_pushed": []} \ No newline at end of file diff --git a/apps/pusher_app_prem/metadata/local.meta b/apps/pusher_app_prem/metadata/local.meta index cf1356db..a5b103a6 100644 --- a/apps/pusher_app_prem/metadata/local.meta +++ b/apps/pusher_app_prem/metadata/local.meta @@ -23,4 +23,4 @@ access = read : [ * ], write : [ * ] export = none owner = admin version = 10.0.2 -modtime = 1769889828.514647000 +modtime = 1769976365.099941000