def main(): serverhelper = ServerHelper() serverhelper.refresh_server_keys() if serverhelper.ntpv4_server: host = serverhelper.ntpv4_server.strip() else: host = '' if serverhelper.ntpv4_port: port = int(serverhelper.ntpv4_port) else: port = NTPV4_DEFAULT_PORT if len(sys.argv) > 1: port = int(sys.argv[1]) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((host, port)) sys.stdout.flush() while 1: try: data, addr = sock.recvfrom(65536) except socket.timeout: print("timeout") continue except KeyboardInterrupt: break except Exception: traceback.print_exc() print("RECV", repr(addr), len(data), repr(data[:10])) keys = serverhelper.get_server_keys() try: req = NTSServerPacketHelper.unpack(data, keys=dict(keys)) print(req) print() resp = handle(req, server_key=keys[-1]) buf = resp.pack() print("RESP", repr(addr), len(buf), repr(buf[:10])) print(resp) sock.sendto(buf, addr) except KeyboardInterrupt: break except Exception: traceback.print_exc() open("dump/dump-%s-%.3f.bin" % (addr[0], time.time()), 'wb').write(data) print() sys.stdout.flush()
class NTSKEServer(ChosenTCPServer): allow_reuse_address = True address_family = socket.AF_INET6 request_queue_size = 200 def __init__(self, config_path): self.helper = ServerHelper(config_path) host = '' port = int(self.helper.ntske_port) super(NTSKEServer, self).__init__((host, port), NTSKEHandler) self.ntpv4_server = self.helper.ntpv4_server self.ntpv4_port = self.helper.ntpv4_port self.key_label = self.helper.key_label self.syslog = self.helper.syslog if self.syslog: syslog.openlog('ntske-server') def serve_forever(self): self.refresh_wrapper() return super().serve_forever() def sighup(self, signalnumber, frame): print("pid %u received SIGHUP, refreshing" % os.getpid()) self.refresh() def refresh_wrapper(self): self.refresh() t = Timer(60, self.refresh_wrapper) t.daemon = True t.start() def refresh(self): try: wrapper = SSLWrapper() if self.helper.allow_tlsv1_2: print("Enabling TLSv1.2") wrapper.enable_tlsv1_2() wrapper.server(self.helper.ntske_server_cert, self.helper.ntske_server_key) wrapper.set_alpn_protocols([NTS_ALPN_PROTO]) self.wrapper = wrapper except Exception: traceback.print_exc() try: self.helper.load_server_keys() except Exception: traceback.print_exc()
def __init__(self, config_path): self.helper = ServerHelper(config_path) host = '' port = int(self.helper.ntske_port) super(NTSKEServer, self).__init__((host, port), NTSKEHandler) self.ntpv4_server = self.helper.ntpv4_server self.ntpv4_port = self.helper.ntpv4_port self.key_label = self.helper.key_label self.syslog = self.helper.syslog if self.syslog: syslog.openlog('ntske-server')
def main(): serverhelper = ServerHelper() if serverhelper.ntpv4_server: host = serverhelper.ntpv4_server.strip() else: host = '' if serverhelper.ntpv4_port: port = int(serverhelper.ntpv4_port) else: port = NTPV4_DEFAULT_PORT sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((host, port)) while 1: try: data, addr = sock.recvfrom(65536) except socket.timeout: print("timeout") continue except KeyboardInterrupt: break except Exception: traceback.print_exc() print("RECV", repr(addr), len(data), repr(data[:10])) keys = serverhelper.get_master_keys() try: req = NTSServerPacket.unpack(data, keys = dict(keys)) print(req) print() resp = handle(req, master_key = keys[-1]) buf = resp.pack() print("RESP", repr(addr), len(buf), repr(buf[:10])) print(resp) sock.sendto(buf, addr) except KeyboardInterrupt: break except Exception: traceback.print_exc() print()
def __init__(self, config_path): self.helper = ServerHelper(config_path) host = '' port = int(self.helper.ntske_port) super(NTSKEServer, self).__init__((host, port), NTSKEHandler) self.ntpv4_server = self.helper.ntpv4_server self.ntpv4_port = self.helper.ntpv4_port self.key_label = self.helper.key_label self.wrapper = SSLWrapper() self.wrapper.server(self.helper.ntske_root_ca, self.helper.ntske_server_cert, self.helper.ntske_server_key) self.wrapper.set_alpn_protocols([NTS_ALPN_PROTO])
def main(): config_path = 'server.ini' if len(sys.argv) > 2: print("Usage: %s [server.ini]" % sys.argv[0], file = sys.stderr) sys.exit(1) if len(sys.argv) > 1: config_path = sys.argv[1] serverhelper = ServerHelper(config_path) server = NTSKEServer() server.ntpv4_server = serverhelper.ntpv4_server server.ntpv4_port = serverhelper.ntpv4_port server.key_label = serverhelper.key_label def alpn_select_callback(ssl, options): return NTS_ALPN_PROTO def verify_callback(ssl, cert, errno, depth, result): if result == 0: return False if depth == 0: #FIXME: check hostname pass return True ctx = SSL.Context(SSL.TLSv1_2_METHOD) ctx.set_options(SSL.OP_NO_SSLv2 | SSL.OP_NO_SSLv3 | SSL.OP_NO_TLSv1 | SSL.OP_NO_TLSv1_1) print(list(map(str, CIPHERS))) ctx.set_cipher_list(':'.join(CIPHERS).encode('ASCII')) ctx.load_verify_locations(serverhelper.ntske_root_ca) ctx.use_certificate_file(serverhelper.ntske_server_cert) ctx.use_privatekey_file(serverhelper.ntske_server_key) ctx.set_verify(SSL.VERIFY_PEER, verify_callback) ctx.set_alpn_select_callback(alpn_select_callback) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) ssl_server = SSL.Connection(ctx, sock) ssl_server.bind(('', int(serverhelper.ntske_port))) ssl_server.listen(3) while True: try: ssl, addr = ssl_server.accept() except KeyboardInterrupt: break except Exception: traceback.print_exc() keyid, key = serverhelper.get_master_key() try: handle(server, ssl, addr, keyid, key) except KeyboardInterrupt: break except Exception: traceback.print_exc() finally: ssl.shutdown() ssl.close() print() print("Shutting down")
from flask import g, Flask, render_template, request, redirect, jsonify, send_file, send_from_directory, safe_join, abort from flask_cors import CORS import json import os import youtube_dl from youtubesearchpython import VideosSearch from server_helper import ServerHelper from psycopg2.extras import RealDictCursor import traceback app = Flask(__name__) serverHelper = ServerHelper() CORS(app) @app.before_request def activate_job(): try: if not hasattr(g, 'db_conn'): g.db_conn = serverHelper.connect_db() except Exception as e: print(e) print('Connection to the database failed') @app.route('/download', methods=['GET']) def download(): try: