add reference ssl echo server using websockets and nginx reverse proxy to terminate ssl
This commit is contained in:
		
							
								
								
									
										3
									
								
								test/compatibility/python/websockets/Procfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/compatibility/python/websockets/Procfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| nginx: nginx -p . -c nginx.conf | ||||
| websocket_server: python echo_server.py | ||||
| send: sleep 1 ; ws send -x --verify_none wss://localhost:8765 /usr/local/bin/ws | ||||
| @@ -5,18 +5,15 @@ | ||||
| import asyncio | ||||
| import websockets | ||||
|  | ||||
| async def hello(websocket, path): | ||||
|     await websocket.send(f"> Welcome !") | ||||
|  | ||||
|     name = await websocket.recv() | ||||
|     print(f"< {name}") | ||||
| async def echo(websocket, path): | ||||
|     msg = await websocket.recv() | ||||
|     print(f'Received {len(msg)} bytes') | ||||
|     await websocket.send(msg) | ||||
|  | ||||
|     greeting = f"Hello {name}!" | ||||
|  | ||||
|     await websocket.send(greeting) | ||||
|     print(f"> {greeting}") | ||||
|  | ||||
| start_server = websockets.serve(hello, 'localhost', 8765) | ||||
| print('Serving on localhost:8766') | ||||
| start_server = websockets.serve(echo, 'localhost', 8766, max_size=2 ** 25) | ||||
|  | ||||
| asyncio.get_event_loop().run_until_complete(start_server) | ||||
| asyncio.get_event_loop().run_forever() | ||||
|   | ||||
| @@ -0,0 +1,28 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| # WS server example | ||||
|  | ||||
| import asyncio | ||||
| import websockets | ||||
|  | ||||
| async def hello(websocket, path): | ||||
|     await websocket.send(f"> Welcome !") | ||||
|  | ||||
|     name = await websocket.recv() | ||||
|     print(f"< {name}") | ||||
|  | ||||
|     greeting = f"Hello {name}!" | ||||
|  | ||||
|     await websocket.send(greeting) | ||||
|     print(f"> {greeting}") | ||||
|  | ||||
| async def echo(websocket, path): | ||||
|     msg = await websocket.recv() | ||||
|     print(f'Received {len(msg)} bytes') | ||||
|     await websocket.send(msg) | ||||
|  | ||||
| print('Serving on localhost:8766') | ||||
| start_server = websockets.serve(echo, 'localhost', 8766) | ||||
|  | ||||
| asyncio.get_event_loop().run_until_complete(start_server) | ||||
| asyncio.get_event_loop().run_forever() | ||||
| @@ -1,3 +1,6 @@ | ||||
| all: | ||||
| 	honcho start # install honcho (pip install honcho) or procman (the original ruby script) | ||||
|  | ||||
| .PHONY: docker | ||||
|  | ||||
| NAME   := bsergean/ws_proxy | ||||
|   | ||||
							
								
								
									
										36
									
								
								test/compatibility/python/websockets/nginx.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								test/compatibility/python/websockets/nginx.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
|  | ||||
| error_log stderr warn; | ||||
|  | ||||
| daemon off; | ||||
|  | ||||
| events { | ||||
|     worker_connections 32; | ||||
| } | ||||
|  | ||||
| http { | ||||
|  | ||||
|     map $http_upgrade $connection_upgrade { | ||||
|         default upgrade; | ||||
|         '' close; | ||||
|     } | ||||
|  | ||||
|     upstream websocket { | ||||
|         server localhost:8766; | ||||
|     } | ||||
|  | ||||
|     server { | ||||
|         listen 8765 ssl; | ||||
|  | ||||
|         ssl_certificate     trusted-client-crt.pem; | ||||
|         ssl_certificate_key trusted-client-key.pem; | ||||
|         ssl_protocols       TLSv1 TLSv1.1 TLSv1.2; | ||||
|         ssl_ciphers         HIGH:!aNULL:!MD5; | ||||
|  | ||||
|         location / { | ||||
|             proxy_pass http://websocket; | ||||
|             proxy_http_version 1.1; | ||||
|             proxy_set_header Upgrade $http_upgrade; | ||||
|             proxy_set_header Connection $connection_upgrade; | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										19
									
								
								test/compatibility/python/websockets/trusted-client-crt.pem
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								test/compatibility/python/websockets/trusted-client-crt.pem
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| -----BEGIN CERTIFICATE----- | ||||
| MIIDLDCCAhSgAwIBAgIJALyEpMxNH62gMA0GCSqGSIb3DQEBCwUAMEExFDASBgNV | ||||
| BAoMC21hY2hpbmV6b25lMRQwEgYDVQQKDAtJWFdlYlNvY2tldDETMBEGA1UEAwwK | ||||
| dHJ1c3RlZC1jYTAeFw0xOTEyMjQwMDM3MzVaFw0yMDEyMjMwMDM3MzVaMEUxFDAS | ||||
| BgNVBAoMC21hY2hpbmV6b25lMRQwEgYDVQQKDAtJWFdlYlNvY2tldDEXMBUGA1UE | ||||
| AwwOdHJ1c3RlZC1jbGllbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB | ||||
| AQDFCipQ6OIJX15n2okHxuSkviuzcHzoYEzPhF6QXzKFbKhuzp4g0mMOXPvDKQE+ | ||||
| +dycGm6l1yg1pUuNKNxYjDWcSqOIqvDaOv9DkJCCNXpAGbh1CUmGdmp4HvwrzSIn | ||||
| +3s/enC+zatcnwhrOyJk8k/9VqKlt+vB1++UAQV1eSX7adb/BemoyMguAQ8edAls | ||||
| IiVSRrHRRyHy98j97jxX5lIdoC1FMv7Tj4suJA7wvTHlq3clpLL8t6dw1DAmBybK | ||||
| ShUg9SC/T07WJ2cOo8wka+p7S/blh8qZwIy7kTgCI+SYgRfEOA94u9A9mDqp295h | ||||
| DCghN2UdU3hh1k7SChI/owLpAgMBAAGjIzAhMB8GA1UdEQQYMBaCCWxvY2FsaG9z | ||||
| dIIJMTI3LjAuMC4xMA0GCSqGSIb3DQEBCwUAA4IBAQAtsbBGLUxABNH5yoRbk0o3 | ||||
| sGFMVkNDKkCE24BVkUfNyKUxLQWMknw3B4bmhrC8ZQPRk069ERV0ZR6eB2/9EG9s | ||||
| Pzy4JbMwWrP5c0UIMJRk3w8ev9FXrsKwG6VhIPnvAdbJEis+7eDmYgpvmsbsYRmG | ||||
| cqJcWvDKffki52Gbr9WgxLpqCGc2XMGr1Y1jU73Y4zmOeNLiU6HRKimNtGjqx/Tx | ||||
| QoGVTNwki4TQTwQIyJ+HOj0c49IDJ93GbW5aymOT/e1IXDe07e9yg1r80bdFn23X | ||||
| 9bmRagT1/qu8lXfOpQA0foYeSJRSN7gITPmo7G2ogGVr6dZwhAHDYYy2pwW32j7o | ||||
| -----END CERTIFICATE----- | ||||
							
								
								
									
										27
									
								
								test/compatibility/python/websockets/trusted-client-key.pem
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								test/compatibility/python/websockets/trusted-client-key.pem
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| -----BEGIN RSA PRIVATE KEY----- | ||||
| MIIEpAIBAAKCAQEAxQoqUOjiCV9eZ9qJB8bkpL4rs3B86GBMz4RekF8yhWyobs6e | ||||
| INJjDlz7wykBPvncnBpupdcoNaVLjSjcWIw1nEqjiKrw2jr/Q5CQgjV6QBm4dQlJ | ||||
| hnZqeB78K80iJ/t7P3pwvs2rXJ8IazsiZPJP/VaipbfrwdfvlAEFdXkl+2nW/wXp | ||||
| qMjILgEPHnQJbCIlUkax0Uch8vfI/e48V+ZSHaAtRTL+04+LLiQO8L0x5at3JaSy | ||||
| /LencNQwJgcmykoVIPUgv09O1idnDqPMJGvqe0v25YfKmcCMu5E4AiPkmIEXxDgP | ||||
| eLvQPZg6qdveYQwoITdlHVN4YdZO0goSP6MC6QIDAQABAoIBAGMCJ58+Vg5FmKdw | ||||
| vThmLY/GaykgVfNiKFaB+g5rd3Rp0/zR3804SkP2Xx+CpDijzsG12nGEupSyOVN1 | ||||
| +7qWwX2GV8QduSa/THMD2klDW+mHwxM0Fnj1WayATVApJIeYqyaLfMmziO7ijpVr | ||||
| Qm4dACqZdOL2lwVxXtYs6TRNKtO4SIzmeVS39hmV2zeGmhUzI4hbirLOWBtbsPpl | ||||
| qi5wyVkHoEVLnY376TOFc8u5+636yh6G2yqa/zsv9BBXG77DKWl659Fsd4DaUcRG | ||||
| sk6CTH+I99aE0wrzSUuQmDR/IflxT+DP2ceNrCIc1h1oFzrBKh3fpFR3+D6SSGMn | ||||
| r9Nk7LECgYEA/8CHrh2LLjqsLbqBoMUXthPwPrVGlK+KGb14+S8Pbfa2hDFWhoif | ||||
| /FBWAD7GSXedjL3kxFSfmFxsDGPSyqqLRuZNaNs8Ar7vage6FYT6Vfh/8TYOToNr | ||||
| 8AHmhgQCg4luC8VGedCeEDVmUgkdJd/baoY8r3LKXaqsLxyBQN1Hzi0CgYEAxTsQ | ||||
| jMFwACIdZHJKgUAdEA6PJM0HCS45F4116yqum99S4H10O1VdWK/vKeb13PK//25X | ||||
| liXhjNHqcVLX08meqs561nKBWhbA72UU3oBAF4RNLHkbZMh1HtZGfBCfJ/Kmq12/ | ||||
| ZmGCwggUHhwnKD02hIGdffc+0eLTeCQL8HKi+S0CgYEA59+MpAXRHDbByCviPvqy | ||||
| hrgJBzGfLksAsFmihnluScp2q993jT3tnvrPHiXL7OvwAZxg/seicqbIp2sRwAFj | ||||
| iQJgiILMI8kskzsyMTSBKtTEWtMhoXlxsQZoFHUqOkutZCqVvPexdwyTGil9LcuJ | ||||
| yUivWHqAku+ccJItdbup0HkCgYEAswkZzdvucoCFU+AX19o+R4wfzpU7FM9bzhCA | ||||
| gTgehqojzlqzfwTPlqkmHlBk0Oue9BzS7x5172HCQpqkBsGYAY8rnK0W1JOhEe8d | ||||
| EZk0FOTpNTy+bC83egWiuA5Sm22+dALGswZDLyUsNeTyeqmOapxKPcWJxfb0ZbO7 | ||||
| DsrRPAUCgYAzJm79VvEeRtwKhm0AcDSikJgNKojm6T6BIi/9QJyMTYlvGpBEwPBt | ||||
| iqmqCqXGmUYafFApTUPyzmyDUsLfeHRwylvPn4UtYXPJ1UKGCVY3SWiJQi2CHSvC | ||||
| gGSIifjzyeSjhw1cqzS2jHfu4lu6p2GBv/fyXLRVS7x6xY7OBinmvg== | ||||
| -----END RSA PRIVATE KEY----- | ||||
		Reference in New Issue
	
	Block a user