Beispiel #1
0
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()
Beispiel #2
0
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()
Beispiel #3
0
    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')
Beispiel #4
0
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()
Beispiel #5
0
    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])
Beispiel #6
0
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")
Beispiel #7
0
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: