Example #1
0
def main():
    try:
        cfg = LocalConfigManager.get_config()

        logging_init(cfg)
        daemon = MiserableDaemon(cfg['daemon'], cfg['pid-file'], cfg['user'])
        daemon.execute()
        INFO('starting local at %s:%d' %
             (cfg['local_address'].ipaddr, cfg['local_address'].port))

        loop = MainLoop()

        dns_resolver = DNSResolver(loop)
        tcp_proxy = TCPProxy(dns_resolver, loop)
        udp_proxy = UDPProxy(dns_resolver, loop)

        def sigint_handler(signum, _):
            DEBUG('received SIGINT, doing graceful shutting down..')
            tcp_proxy.close()
            udp_proxy.close()
            loop.stop()

        signal.signal(signal.SIGINT, sigint_handler)

        loop.run()
    except OSError as e:
        ERROR(e)
    except Exception as e:
        import traceback
        traceback.print_exc()
Example #2
0
def main():
    try:
        cfg = LocalConfigManager.get_config()

        logging_init(cfg)
        daemon = MiserableDaemon(cfg['daemon'], cfg['pid-file'], cfg['user'])
        daemon.execute()
        INFO('starting local at %s:%d' %
             (cfg['local_address'].ipaddr, cfg['local_address'].port))

        loop = MainLoop()

        dns_resolver = DNSResolver(loop)
        tcp_proxy = TCPProxy(dns_resolver, loop)
        udp_proxy = UDPProxy(dns_resolver, loop)

        def sigint_handler(signum, _):
            DEBUG('received SIGINT, doing graceful shutting down..')
            tcp_proxy.close()
            udp_proxy.close()
            loop.stop()
        signal.signal(signal.SIGINT, sigint_handler)

        loop.run()
    except OSError as e:
        ERROR(e)
    except Exception as e:
        import traceback
        traceback.print_exc()
Example #3
0
    def __init__(self, dns_resolver, loop):
        cfg = LocalConfigManager.get_config()
        laddr = cfg['local_address']

        sock = socket.socket(laddr.family, socket.SOCK_STREAM, socket.SOL_TCP)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.bind((laddr.compressed, laddr.port))
        sock.setblocking(False)

        if cfg['fast_open']:
            try:
                sock.setsockopt(socket.SOL_SOCKET, socket.TCP_FASTOPEN, 5)
            except (OSError, AttributeError) as e:
                raise UnsupportFeatureException('TCP Fast Open')
            VERBOSE('fast open enabled!')
        sock.listen(1024)

        self._dns_resolver = dns_resolver
        self._laddr = laddr
        self._socket = sock
        self._loop = loop
        self._timeout = cfg['timeout']
        self._transfers = []

        self._register_to_loop()
Example #4
0
    def __init__(self, loop, sock, addr, dns_resolver):
        cfg = LocalConfigManager.get_config()

        self._encryptor = Encryptor(cfg['password'], cfg['method'])
        self._loop = loop
        self._client = Client(sock, addr, loop, self._encryptor)
        self._remote = None
        self._dns_resolver = dns_resolver
        self._last_active = time.time()
        self._raddr = cfg['remote_address']
        self._laddr = cfg['local_address']
        self._saddr = None
Example #5
0
    def __init__(self, loop, caddr, saddr, dns_resolver):
        cfg = LocalConfigManager.get_config()

        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP)
        self._socket = sock
        self._loop = loop
        self._caddr = caddr
        self._saddr = saddr
        self._dns_resolver = dns_resolver
        self._last_active = time.time()
        self._raddr = cfg['remote_address']
        self._password = cfg['password']
        self._method = cfg['method']
        self._pending = []
Example #6
0
    def __init__(self, loop, caddr, saddr, dns_resolver):
        cfg = LocalConfigManager.get_config()

        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP)
        self._socket = sock
        self._loop = loop
        self._caddr = caddr
        self._saddr = saddr
        self._dns_resolver = dns_resolver
        self._last_active = time.time()
        self._raddr = cfg['remote_address']
        self._password = cfg['password']
        self._method = cfg['method']
        self._pending = []
Example #7
0
    def __init__(self, dns_resolver, loop):
        cfg = LocalConfigManager.get_config()
        laddr = cfg['local_address']

        sock = socket.socket(laddr.family, socket.SOCK_DGRAM, socket.SOL_UDP)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.bind((laddr.compressed, laddr.port))
        sock.setblocking(False)

        self._loop = loop
        self._closed = False
        self._laddr = laddr
        self._dns_resolver = dns_resolver
        self._socket = sock
        self._timeout = cfg['timeout']
        self._transfers = set()

        self._register_to_loop()
Example #8
0
    def __init__(self, dns_resolver, loop):
        cfg = LocalConfigManager.get_config()
        laddr = cfg['local_address']

        sock = socket.socket(laddr.family, socket.SOCK_DGRAM, socket.SOL_UDP)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.bind((laddr.compressed, laddr.port))
        sock.setblocking(False)

        self._loop = loop
        self._closed = False
        self._laddr = laddr
        self._dns_resolver = dns_resolver
        self._socket = sock
        self._timeout = cfg['timeout']
        self._transfers = set()

        self._register_to_loop()