add reference ssl echo server using websockets and nginx reverse proxy to terminate ssl
This commit is contained in:
parent
40e344a958
commit
c10ff1d210
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 asyncio
|
||||||
import websockets
|
import websockets
|
||||||
|
|
||||||
async def hello(websocket, path):
|
|
||||||
await websocket.send(f"> Welcome !")
|
|
||||||
|
|
||||||
name = await websocket.recv()
|
async def echo(websocket, path):
|
||||||
print(f"< {name}")
|
msg = await websocket.recv()
|
||||||
|
print(f'Received {len(msg)} bytes')
|
||||||
|
await websocket.send(msg)
|
||||||
|
|
||||||
greeting = f"Hello {name}!"
|
|
||||||
|
|
||||||
await websocket.send(greeting)
|
print('Serving on localhost:8766')
|
||||||
print(f"> {greeting}")
|
start_server = websockets.serve(echo, 'localhost', 8766, max_size=2 ** 25)
|
||||||
|
|
||||||
start_server = websockets.serve(hello, 'localhost', 8765)
|
|
||||||
|
|
||||||
asyncio.get_event_loop().run_until_complete(start_server)
|
asyncio.get_event_loop().run_until_complete(start_server)
|
||||||
asyncio.get_event_loop().run_forever()
|
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
|
.PHONY: docker
|
||||||
|
|
||||||
NAME := bsergean/ws_proxy
|
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-----
|
Loading…
x
Reference in New Issue
Block a user