mirror of
https://github.com/arvidn/libtorrent.git
synced 2026-07-26 14:01:13 -04:00
60 lines
1.5 KiB
Python
Executable File
60 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
import ssl
|
|
import json
|
|
import asyncio
|
|
import logging
|
|
from datetime import datetime
|
|
|
|
# Remove '.' from sys.path or we try to import the http.py module
|
|
sys.path = sys.path[1:]
|
|
|
|
import websockets
|
|
|
|
logger = logging.getLogger('websockets')
|
|
logger.setLevel(logging.INFO)
|
|
logger.addHandler(logging.StreamHandler(sys.stdout))
|
|
|
|
|
|
async def handle(websocket):
|
|
try:
|
|
while True:
|
|
message = await websocket.recv()
|
|
|
|
print('{} - [{}] WS "{}..."'.format(
|
|
websocket.remote_address[0],
|
|
datetime.now().strftime("%d/%m/%Y %H:%M:%S"),
|
|
message[:33]),
|
|
file=sys.stderr)
|
|
|
|
request = json.loads(message)
|
|
response = {}
|
|
response["info_hash"] = request["info_hash"]
|
|
response["interval"] = 120
|
|
response["min_interval"] = 60
|
|
|
|
await websocket.send(json.dumps(response))
|
|
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
|
|
async def main() -> None:
|
|
port = int(sys.argv[1])
|
|
use_ssl = sys.argv[2] != '0'
|
|
print('python version: %s' % sys.version_info.__str__())
|
|
|
|
if use_ssl:
|
|
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
|
|
ssl_context.load_cert_chain('../ssl/server.pem')
|
|
else:
|
|
ssl_context = None
|
|
|
|
await websockets.serve(handle, '127.0.0.1', port, ssl=ssl_context)
|
|
|
|
if __name__ == '__main__':
|
|
loop = asyncio.new_event_loop()
|
|
loop.run_until_complete(main())
|
|
loop.run_forever()
|