1414import datetime
1515import json
1616import ssl
17- import sys
1817import threading
1918import time
2019from http .server import BaseHTTPRequestHandler , ThreadingHTTPServer
2625from cryptography .x509 import CertificateBuilder , random_serial_number
2726
2827MODEL_ID = "mock-tls-model"
28+ TLS_PORT = 8443
29+ MTLS_PORT = 8444
30+ HOSTNAME_MISMATCH_PORT = 8445
2931
3032
3133class OpenAIHandler (BaseHTTPRequestHandler ):
@@ -199,9 +201,6 @@ def main() -> None:
199201 Generates certificates on-the-fly using trustme and exports the CA cert
200202 to /certs/ca.crt and client cert to /certs/client.* for use by tests.
201203 """
202- tls_port = int (sys .argv [1 ]) if len (sys .argv ) > 1 else 8443
203- mtls_port = int (sys .argv [2 ]) if len (sys .argv ) > 2 else 8444
204-
205204 print ("=" * 60 )
206205 print ("Generating TLS certificates with trustme..." )
207206 print ("=" * 60 )
@@ -262,20 +261,18 @@ def main() -> None:
262261 print ("Starting servers..." )
263262 print ("=" * 60 )
264263
265- hostname_mismatch_port = int (sys .argv [3 ]) if len (sys .argv ) > 3 else 8445
266-
267264 # Create TLS server (no client cert required)
268- tls_server = ThreadingHTTPServer (("" , tls_port ), OpenAIHandler )
265+ tls_server = ThreadingHTTPServer (("" , TLS_PORT ), OpenAIHandler )
269266 tls_ctx = _make_tls_context (ca , server_cert , require_client_cert = False )
270267 tls_server .socket = tls_ctx .wrap_socket (tls_server .socket , server_side = True )
271268
272269 # Create mTLS server (client cert required)
273- mtls_server = ThreadingHTTPServer (("" , mtls_port ), OpenAIHandler )
270+ mtls_server = ThreadingHTTPServer (("" , MTLS_PORT ), OpenAIHandler )
274271 mtls_ctx = _make_tls_context (ca , server_cert , require_client_cert = True )
275272 mtls_server .socket = mtls_ctx .wrap_socket (mtls_server .socket , server_side = True )
276273
277274 # Create hostname-mismatch TLS server (cert SAN ≠ connecting hostname)
278- mismatch_server = ThreadingHTTPServer (("" , hostname_mismatch_port ), OpenAIHandler )
275+ mismatch_server = ThreadingHTTPServer (("" , HOSTNAME_MISMATCH_PORT ), OpenAIHandler )
279276 mismatch_ctx = _make_tls_context (
280277 ca , hostname_mismatch_cert , require_client_cert = False
281278 )
@@ -286,30 +283,25 @@ def main() -> None:
286283 print ("=" * 60 )
287284 print ("Mock TLS Inference Server" )
288285 print ("=" * 60 )
289- print (f" TLS : https://localhost:{ tls_port } (no client cert)" )
290- print (f" mTLS : https://localhost:{ mtls_port } (client cert required)" )
286+ print (f" TLS : https://localhost:{ TLS_PORT } (no client cert)" )
287+ print (f" mTLS : https://localhost:{ MTLS_PORT } (client cert required)" )
291288 print (
292- f" Mismatch : https://localhost:{ hostname_mismatch_port } "
289+ f" Mismatch : https://localhost:{ HOSTNAME_MISMATCH_PORT } "
293290 " (hostname-mismatch cert)"
294291 )
295292 print (f" Model: { MODEL_ID } " )
296293 print ("=" * 60 )
297294
298295 for srv , label in [
299- (tls_server , f"TLS :{ tls_port } " ),
300- (mtls_server , f"mTLS :{ mtls_port } " ),
301- (mismatch_server , f"Mismatch :{ hostname_mismatch_port } " ),
296+ (tls_server , f"TLS :{ TLS_PORT } " ),
297+ (mtls_server , f"mTLS :{ MTLS_PORT } " ),
298+ (mismatch_server , f"Mismatch :{ HOSTNAME_MISMATCH_PORT } " ),
302299 ]:
303300 t = threading .Thread (target = _run_server , args = (srv , label ), daemon = True )
304301 t .start ()
305302
306- try :
307- while True :
308- time .sleep (3600 )
309- except KeyboardInterrupt :
310- print ("\n Shutting down..." )
311- tls_server .shutdown ()
312- mtls_server .shutdown ()
303+ # Keep main thread alive (daemon threads run until container stops)
304+ threading .Event ().wait ()
313305
314306
315307if __name__ == "__main__" :
0 commit comments