示例#1
1
    def init_func(self, creator_fd, dns_fd, whitelist, debug=False):
        taddr = fnc_config.configs["tcp_server_address"]
        s = socket.socket()

        self.set_socket(s)
        self.connect(taddr, 6)

        crypto_info = fnc_config.configs["tcp_crypto_module"]
        name = crypto_info["name"]
        args = crypto_info["args"]
        name = "freenet.lib.crypto.%s" % name

        __import__(name)
        m = sys.modules[name]

        self.__encrypt = m.encrypt(*args)
        self.__decrypt = m.decrypt(*args)
        self.__debug = debug
        self.__static_nat = static_nat.nat()
        self.__dns_fd = dns_fd
        self.__traffic_send_fd = self.create_handler(self.fileno, traffic_pass.traffic_send)
        self.__timer = timer.timer()
        self.__udp_proxy_map = {}

        # 如果是非全局UDP代理,那么开启UDP白名单模式
        if not fnc_config.configs["udp_global"]:
            self.__udp_whitelist = udp_whitelist.whitelist()
            for subn, mask in whitelist: self.__udp_whitelist.add_rule(subn, mask)

        if not self.__debug:
            sys.stdout = open(fnc_config.configs["access_log"], "a+")
            sys.stderr = open(fnc_config.configs["error_log"], "a+")

        return self.fileno
示例#2
0
    def init_func(self,
                  creator,
                  address,
                  host_match,
                  debug=False,
                  server_side=False,
                  is_ipv6=False):
        if is_ipv6:
            fa = socket.AF_INET6
        else:
            fa = socket.AF_INET

        self.__is_ipv6 = is_ipv6

        s = socket.socket(fa, socket.SOCK_DGRAM)

        if server_side and is_ipv6:
            s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 1)

        self.set_socket(s)
        self.__server_side = server_side

        if server_side:
            self.bind((address, 53))
        else:
            self.connect((address, 53))

        self.__debug = debug
        self.__host_match = host_match
        self.__timer = timer.timer()
        self.set_timeout(self.fileno, self.__LOOP_TIMEOUT)
        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        return self.fileno
    def init_func(self,
                  creator_fd,
                  address,
                  packet_id,
                  is_udplite=False,
                  is_ipv6=False):
        self.__creator = creator_fd
        self.__packet_id = packet_id
        self.__time = time.time()
        self.__access = {}
        self.__timer = timer.timer()
        self.__is_udplite = is_udplite

        if not self.dispatcher.enable_ipv6 and is_ipv6: return -1

        if is_ipv6:
            fa = socket.AF_INET6
            listen_ip = "::"
            self.__addr_type = socks2https.ADDR_TYPE_IPv6
        else:
            self.__addr_type = socks2https.ADDR_TYPE_IP
            fa = socket.AF_INET
            listen_ip = "0.0.0.0"
        s = socket.socket(fa, socket.SOCK_DGRAM)
        self.set_socket(s)
        self.bind((listen_ip, 0))

        self.get_handler(self.__creator).tell_conn_ok(self.__packet_id)
        self.register(self.fileno)
        self.add_evt_read(self.fileno)
        self.set_timeout(self.fileno, 10)

        return self.fileno
示例#4
0
 def __init__(self):
     """
     :param max_size: 组包之后数据的最大大小,单位为字节
     """
     self.__frag_data = {}
     self.__timer = timer.timer()
     self.__ok_packets = []
示例#5
0
    def init_func(self, creator_fd, dns_fd, whitelist, debug=False):
        taddr = fnc_config.configs["tcp_server_address"]
        s = socket.socket()

        self.set_socket(s)
        self.connect(taddr, 6)

        crypto_info = fnc_config.configs["tcp_crypto_module"]
        name = crypto_info["name"]
        args = crypto_info["args"]
        name = "freenet.lib.crypto.%s" % name

        __import__(name)
        m = sys.modules[name]

        self.__encrypt = m.encrypt(*args)
        self.__decrypt = m.decrypt(*args)
        self.__debug = debug
        self.__static_nat = static_nat.nat()
        self.__dns_fd = dns_fd
        self.__traffic_send_fd = self.create_handler(self.fileno, traffic_pass.traffic_send)
        self.__timer = timer.timer()
        self.__udp_proxy_map = {}

        # 如果是非全局UDP代理,那么开启UDP白名单模式
        if not fnc_config.configs["udp_global"]:
            self.__udp_whitelist = udp_whitelist.whitelist()
            for subn, mask in whitelist: self.__udp_whitelist.add_rule(subn, mask)

        if not self.__debug:
            sys.stdout = open(fnc_config.configs["access_log"], "a+")
            sys.stderr = open(fnc_config.configs["error_log"], "a+")

        return self.fileno
示例#6
0
    def __init__(self, serviced):
        self.__map_info = {}
        self.__timer = timer.timer()
        self.__sessions = {}
        self.__serviced = serviced

        self.myinit()
示例#7
0
    def init_func(self,
                  creator_fd,
                  address,
                  dnsserver,
                  proxy_dnsserver,
                  is_ipv6=False):
        self.__query_timer = timer.timer()
        self.__dnsserver = dnsserver
        self.__proxy_dnsserver = proxy_dnsserver
        self.__dns_client = -1
        self.__cur_max_dns_id = 1
        self.__empty_ids = []
        self.__packet_id = -1
        self.__is_ipv6 = is_ipv6
        self.__is_sent_handshake = False
        self.__conn_ok = False
        self.__dns_map = {}

        if is_ipv6:
            fa = socket.AF_INET6
        else:
            fa = socket.AF_INET

        s = socket.socket(fa, socket.SOCK_DGRAM)

        if is_ipv6: s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 1)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        self.set_socket(s)
        self.bind(address)
        self.register(self.fileno)
        self.add_evt_read(self.fileno)
        self.set_timeout(self.fileno, 10)

        return self.fileno
示例#8
0
    def __init__(self):
        super(fdslightgw, self).__init__()
        self.set_mode("gateway")
        self.__timer = timer.timer()
        self.__routers = {}

        account = fngw_config.configs["account"]
        self.__session_id = proto_utils.gen_session_id(account["username"],
                                                       account["password"])
示例#9
0
    def init_func(self, creator_fd, dns_fd, raw_socket_fd, whitelist, debug=False):
        self.__nat = static_nat.nat()
        self.__server = fnc_config.configs["udp_server_address"]

        name = "freenet.lib.crypto.%s" % fnc_config.configs["udp_crypto_module"]["name"]
        __import__(name)
        m = sys.modules.get(name, None)

        crypto_args = fnc_config.configs["udp_crypto_module"].get("args", ())
        self.__encrypt_m = m.encrypt(*crypto_args)
        self.__decrypt_m = m.decrypt(*crypto_args)

        self.__debug = debug
        self.__timer = timer.timer()

        self.__traffic_send_fd = raw_socket_fd

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        self.set_socket(s)
        self.__dns_fd = dns_fd

        try:
            self.connect(self.__server)
        except socket.gaierror:
            self.dispatcher.ctunnel_fail()
            return -1

        ipaddr, _ = s.getpeername()

        self.__server_ipaddr = ipaddr

        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.__udp_proxy_map = {}
        # 如果是非全局UDP代理,那么开启UDP白名单模式
        if not fnc_config.configs["udp_global"]:
            self.__udp_whitelist = udp_whitelist.whitelist()
            for subn, mask in whitelist: self.__udp_whitelist.add_rule(subn, mask)

        if not self.__debug:
            sys.stdout = open(fnc_config.configs["access_log"], "a+")
            sys.stderr = open(fnc_config.configs["error_log"], "a+")

        self.__force_udp_global_clients = {}
        for client_ip in fnc_config.configs["udp_force_global_clients"]:
            saddr = socket.inet_aton(client_ip)
            self.__force_udp_global_clients[saddr] = None

        self.fn_init()
        self.fn_auth_request()
        self.set_timeout(self.fileno, self.__TIMEOUT_NO_AUTH)

        return self.fileno
示例#10
0
    def init_func(self, creator_fd, dns_fd, whitelist, debug=False):
        self.__nat = static_nat.nat()
        self.__server = fnc_config.configs["udp_server_address"]

        name = "freenet.lib.crypto.%s" % fnc_config.configs[
            "udp_crypto_module"]["name"]
        __import__(name)
        m = sys.modules.get(name, None)

        crypto_args = fnc_config.configs["udp_crypto_module"].get("args", ())
        self.__encrypt_m = m.encrypt(*crypto_args)
        self.__decrypt_m = m.decrypt(*crypto_args)

        self.__debug = debug
        self.__timer = timer.timer()

        self.__traffic_send_fd = self.create_handler(self.fileno,
                                                     traffic_pass.traffic_send)

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        self.set_socket(s)
        self.__dns_fd = dns_fd

        try:
            self.connect(self.__server)
        except socket.gaierror:
            self.dispatcher.ctunnel_fail()
            return -1

        ipaddr, _ = s.getpeername()

        self.__server_ipaddr = ipaddr

        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.__udp_proxy_map = {}
        # 如果是非全局UDP代理,那么开启UDP白名单模式
        if not fnc_config.configs["udp_global"]:
            self.__udp_whitelist = udp_whitelist.whitelist()
            for subn, mask in whitelist:
                self.__udp_whitelist.add_rule(subn, mask)

        if not self.__debug:
            sys.stdout = open(fnc_config.configs["access_log"], "a+")
            sys.stderr = open(fnc_config.configs["error_log"], "a+")

        self.fn_init()
        self.fn_auth_request()
        self.set_timeout(self.fileno, self.__TIMEOUT_NO_AUTH)

        return self.fileno
示例#11
0
    def init_func(self,
                  creator_fd,
                  tun_fd,
                  tun6_fd,
                  dns_fd,
                  auth_module,
                  debug=True,
                  is_ipv6=False):
        self.__debug = debug
        config = fns_config.configs

        self.__SESSION_TIMEOUT = int(config["timeout"])

        # 导入加入模块
        name = "freenet.lib.crypto.%s" % config["udp_crypto_module"]["name"]

        __import__(name)
        m = sys.modules.get(name, None)

        crypto_config = config["udp_crypto_module"]["configs"]

        self.__encrypt = m.encrypt()
        self.__decrypt = m.decrypt()

        self.__encrypt.config(crypto_config)
        self.__decrypt.config(crypto_config)

        self.__timer = timer.timer()
        self.__debug = debug
        self.__sessions = {}
        self.__auth_module = auth_module

        if is_ipv6:
            bind_address = fns_config.configs["udp6_listen"]
        else:
            bind_address = fns_config.configs["udp_listen"]

        if is_ipv6:
            s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
        else:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        self.set_socket(s)
        self.bind(bind_address)
        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.set_timeout(self.fileno, self.__LOOP_TIMEOUT)

        self.__tun_fd = tun_fd
        self.__tun6_fd = tun6_fd
        self.__dns_fd = dns_fd

        return self.fileno
示例#12
0
    def init_func(self, creator_fd, dns_server):
        self.__timer = timer.timer()
        self.__creator_fd = creator_fd

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        self.set_socket(s)
        self.connect((dns_server, 53))
        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.set_timeout(self.fileno, self.__TIMEOUT)
        return self.fileno
示例#13
0
    def init_func(self, creator_fd, dns_server):
        self.__timer = timer.timer()
        self.__creator_fd = creator_fd

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        self.set_socket(s)
        self.connect((dns_server, 53))
        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.set_timeout(self.fileno, self.__TIMEOUT)
        return self.fileno
示例#14
0
    def init_func(self, debug, configs):
        self.create_poll()

        signal.signal(signal.SIGINT, self.__exit)

        self.__routes = {}
        self.__configs = configs

        self.__mbuf = utils.mbuf()
        self.__debug = debug
        self.__tundev_fileno = self.create_handler(-1, tundev.tundevc,
                                                   self.__DEVNAME)

        self.__port_mapv4 = port_map.port_map(is_ipv6=False)
        self.__port_mapv6 = port_map.port_map(is_ipv6=True)

        self.__ROUTE_TIMEOUT = 1200
        self.__route_timer = timer.timer()

        conn = configs["connection"]

        m = "freenet.lib.crypto.noany"
        try:
            self.__tcp_crypto = importlib.import_module("%s.noany_tcp" % m)
            self.__udp_crypto = importlib.import_module("%s.noany_udp" % m)
        except ImportError:
            print("cannot found tcp or udp crypto module")
            sys.exit(-1)

        crypto_fpath = "%s/fdslight_etc/noany.json" % BASE_DIR

        if not os.path.isfile(crypto_fpath):
            print("crypto configfile not exists")
            sys.exit(-1)

        try:
            crypto_configs = proto_utils.load_crypto_configfile(crypto_fpath)
        except:
            print("crypto configfile should be json file")
            sys.exit(-1)

        self.__crypto_configs = crypto_configs

        if not debug:
            sys.stdout = open(LOG_FILE, "a+")
            sys.stderr = open(ERR_FILE, "a+")
        ''''''
示例#15
0
    def init_func(self, creator_fd, dns_server, is_ipv6=False):
        self.__timer = timer.timer()

        if is_ipv6:
            fa = socket.AF_INET6
        else:
            fa = socket.AF_INET

        s = socket.socket(fa, socket.SOCK_DGRAM)

        self.set_socket(s)
        self.connect((dns_server, 53))
        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.set_timeout(self.fileno, self.__LOOP_TIMEOUT)
        return self.fileno
示例#16
0
    def init_func(self,
                  creator_fd,
                  tun_fd,
                  dns_fd,
                  raw_socket_fd,
                  ip_pool,
                  debug=True):
        self.__debug = debug
        config = fns_config.configs

        # 导入加入模块
        name = "freenet.lib.crypto.%s" % config["udp_crypto_module"]["name"]
        __import__(name)
        m = sys.modules.get(name, None)

        self.__crypto = m

        self.__empty_sessions = []
        self.__client_info_by_v_ip = {}
        self.__timer = timer.timer()
        self.__debug = debug
        self.__sessions = {}

        self.__ipalloc = ip_pool
        bind_address = fns_config.configs["udp_listen"]

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        self.set_socket(s)
        self.bind(bind_address)
        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.set_timeout(self.fileno, self.__TIMEOUT)

        self.__tun_fd = tun_fd
        self.__dns_fd = dns_fd
        self.__raw_socket_fd = raw_socket_fd

        if not self.__debug:
            sys.stdout = open(fns_config.configs["access_log"], "a+")
            sys.stderr = open(fns_config.configs["error_log"], "a+")

        self.fn_init()

        return self.fileno
    def init_func(self,
                  creator_fd,
                  client_ip,
                  client_port,
                  upper_proxy=False,
                  is_ipv6=False):
        self.__creator = creator_fd
        self.__time = time.time()
        self.__client_ip = client_ip
        self.__client_port = client_port
        self.__is_ipv6 = is_ipv6
        self.__access_list = {}
        self.__timer = timer.timer()
        self.__upper_proxy = upper_proxy

        if is_ipv6:
            listen_ip = self.dispatcher.socks5_listen_ipv6
        else:
            listen_ip = self.dispatcher.socks5_listen_ip

        self.__listen_ip = listen_ip
        if is_ipv6:
            fa = socket.AF_INET6
        else:
            fa = socket.AF_INET
        s = socket.socket(fa, socket.SOCK_DGRAM)

        self.set_socket(s)
        self.bind((listen_ip, 0))
        self.register(self.fileno)
        self.add_evt_read(self.fileno)
        self.set_timeout(self.fileno, 10)

        if self.__upper_proxy:
            self.__packet_id = self.dispatcher.alloc_packet_id()
            if is_ipv6:
                addr_type = socks2https.ADDR_TYPE_IPv6
            else:
                addr_type = socks2https.ADDR_TYPE_IP
            self.dispatcher.send_conn_frame(socks2https.FRAME_TYPE_UDP_CONN,
                                            self.__packet_id, client_ip,
                                            client_port, addr_type)

        return self.fileno
示例#18
0
    def ioloop(self, *args, **kwargs):
        """
        :param args: 传递给self.init_func的参数
        :param kwargs: 传递给self.init_func的参数
        :return:
        """

        self.__timer = timer.timer()
        self.init_func(*args, **kwargs)

        while 1:
            wait_time = self.__timer.get_min_time()
            if wait_time < 1: wait_time = 10
            event_set = self.__poll.poll(wait_time)
            self.__handle_events(event_set)
            self.__handle_timeout()
            self.myloop()

        return
示例#19
0
    def init_func(self,
                  creator,
                  virtual_nameserver,
                  remote_nameserver,
                  debug=False):
        self.__match = _host_match()
        self.__virt_ns_naddr = socket.inet_aton(virtual_nameserver)
        self.__dns_map = {}
        self.__debug = debug
        self.__timer = timer.timer()

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        self.set_socket(s)
        self.connect((remote_nameserver, 53))
        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        return self.fileno
示例#20
0
    def ioloop(self, *args, **kwargs):
        """
        :param args: 传递给self.init_func的参数
        :param kwargs: 传递给self.init_func的参数
        :return:
        """

        self.__timer = timer.timer()
        self.init_func(*args, **kwargs)

        while 1:
            wait_time = self.__timer.get_min_time()
            if wait_time < 1: wait_time = 10
            event_set = self.__poll.poll(wait_time)
            self.__handle_events(event_set)
            self.__handle_timeout()
            self.myloop()

        return
示例#21
0
    def init_func(self, creator_fd, raw_socket_fd, vlan_address, session_uniq_id):
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        self.__creator_fd = creator_fd
        self.set_socket(s)
        self.bind(("0.0.0.0", 0))
        self.__bind_address = self.getsockname()
        self.__internet_ip = {}
        self.__raw_socket_fd = raw_socket_fd

        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.set_timeout(self.fileno, self.__TIMEOUT)
        self.__timer = timer.timer()
        self.__lan_address = vlan_address
        self.__session_uniq_id = session_uniq_id

        return self.fileno
示例#22
0
    def init_func(self, creator_fd, tun_fd, dns_fd, raw_socket_fd, ip_pool, debug=True):
        self.__debug = debug
        config = fns_config.configs

        # 导入加入模块
        name = "freenet.lib.crypto.%s" % config["udp_crypto_module"]["name"]
        __import__(name)
        m = sys.modules.get(name, None)

        self.__crypto = m

        self.__empty_sessions = []
        self.__client_info_by_v_ip = {}
        self.__timer = timer.timer()
        self.__debug = debug
        self.__sessions = {}

        self.__ipalloc = ip_pool
        bind_address = fns_config.configs["udp_listen"]

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        self.set_socket(s)
        self.bind(bind_address)
        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        self.set_timeout(self.fileno, self.__TIMEOUT)

        self.__tun_fd = tun_fd
        self.__dns_fd = dns_fd
        self.__raw_socket_fd = raw_socket_fd

        if not self.__debug:
            sys.stdout = open(fns_config.configs["access_log"], "a+")
            sys.stderr = open(fns_config.configs["error_log"], "a+")

        self.fn_init()

        return self.fileno
示例#23
0
    def init_func(self, creator_fd, host_rules, debug=False):
        self.__transparent_dns = fn_config.configs["dns"]

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        self.set_socket(s)
        self.__debug = debug

        self.bind((fn_config.configs["dns_bind"], 53))
        self.set_timeout(self.fileno, self.__TIMEOUT)

        self.__host_match = _host_match()
        self.__timer = timer.timer()
        self.__blacklist_ips = {}
        self.__dns_flags = {}

        for rule in host_rules: self.__host_match.add_rule(rule)

        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        return self.fileno
示例#24
0
    def init_func(self, creator_fd, host_rules, debug=False):
        self.__transparent_dns = fn_config.configs["dns"]

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        self.set_socket(s)
        self.__debug = debug

        self.bind((fn_config.configs["dns_bind"], 53))
        self.set_timeout(self.fileno, self.__TIMEOUT)

        self.__host_match = _host_match()
        self.__timer = timer.timer()
        self.__blacklist_ips = {}
        self.__dns_flags = {}

        for rule in host_rules: self.__host_match.add_rule(rule)

        self.register(self.fileno)
        self.add_evt_read(self.fileno)

        return self.fileno
示例#25
0
 def __init__(self):
     self.__ok_packets = []
     self.__timer = timer.timer()
     self.__fragdata = {}
示例#26
0
 def __init__(self):
     self.__tree = {}
     self.__timer = timer.timer()
     self.__cache = {}
示例#27
0
    def init_func(self, mode, debug, configs):
        self.create_poll()

        signal.signal(signal.SIGINT, self.__exit)

        self.__route_timer = timer.timer()
        self.__routes = {}
        self.__configs = configs

        if mode == "local":
            self.__mode = _MODE_LOCAL
        else:
            self.__mode = _MODE_GW

        self.__mbuf = utils.mbuf()
        self.__debug = debug

        self.__tundev_fileno = self.create_handler(-1, tundev.tundevc, self.__DEVNAME)

        public = configs["public"]
        gateway = configs["gateway"]

        self.__enable_ipv6_traffic = bool(int(public["enable_ipv6_traffic"]))

        is_ipv6 = utils.is_ipv6_address(public["remote_dns"])

        if self.__mode == _MODE_GW:
            self.__dns_fileno = self.create_handler(-1, dns_proxy.dnsc_proxy, gateway["dnsserver_bind"], debug=debug,
                                                    server_side=True, is_ipv6=False)
            self.get_handler(self.__dns_fileno).set_parent_dnsserver(public["remote_dns"], is_ipv6=is_ipv6)

            if self.__enable_ipv6_traffic:
                self.__dns_listen6 = self.create_handler(-1, dns_proxy.dnsc_proxy, gateway["dnsserver_bind6"],
                                                         debug=debug, server_side=True, is_ipv6=True)
                self.get_handler(self.__dns_listen6).set_parent_dnsserver(public["remote_dns"], is_ipv6=is_ipv6)
        else:
            self.__dns_fileno = self.create_handler(-1, dns_proxy.dnsc_proxy, public["remote_dns"], debug=debug,
                                                    server_side=False)

        self.__set_host_rules(None, None)

        if self.__mode == _MODE_GW:
            self.__load_kernel_mod()
            udp_global = bool(int(gateway["dgram_global_proxy"]))
            if udp_global:
                self.__dgram_fetch_fileno = self.create_handler(-1, traffic_pass.traffic_read,
                                                                self.__configs["gateway"],
                                                                enable_ipv6=self.__enable_ipv6_traffic)
            ''''''
        else:
            local = configs["local"]
            vir_dns = local["virtual_dns"]
            vir_dns6 = local["virtual_dns6"]

            self.set_route(vir_dns, is_ipv6=False, is_dynamic=False)
            if self.__enable_ipv6_traffic: self.set_route(vir_dns6, is_ipv6=True, is_dynamic=False)

        conn = configs["connection"]

        m = "freenet.lib.crypto.%s" % conn["crypto_module"]
        try:
            self.__tcp_crypto = importlib.import_module("%s.%s_tcp" % (m, conn["crypto_module"]))
            self.__udp_crypto = importlib.import_module("%s.%s_udp" % (m, conn["crypto_module"]))
        except ImportError:
            print("cannot found tcp or udp crypto module")
            sys.exit(-1)

        crypto_fpath = "%s/fdslight_etc/%s" % (BASE_DIR, conn["crypto_configfile"])

        if not os.path.isfile(crypto_fpath):
            print("crypto configfile not exists")
            sys.exit(-1)

        try:
            crypto_configs = proto_utils.load_crypto_configfile(crypto_fpath)
        except:
            print("crypto configfile should be json file")
            sys.exit(-1)

        self.__crypto_configs = crypto_configs

        if not debug:
            sys.stdout = open(LOG_FILE, "a+")
            sys.stderr = open(ERR_FILE, "a+")
        ''''''

        signal.signal(signal.SIGUSR1, self.__set_host_rules)
示例#28
0
 def __init__(self):
     self.__dst_nat_table = {}
     self.__src_nat_table = {}
     self.__virtual_ips = []
     self.__timer = timer.timer()
示例#29
0
 def __init__(self):
     self.__tree = {}
     self.__timer = timer.timer()
     self.__cache = {}
示例#30
0
    def __init__(self, dispatcher):
        self.__timer = timer.timer()
        self.__sessions = {}
        self.__dispatcher = dispatcher

        self.init()
示例#31
0
 def dev_init(self, tun_devname, subnet):
     self.register(self.fileno)
     self.add_evt_read(self.fileno)
     self.__add_route(tun_devname, subnet)
     self.__timer = timer.timer()
     self.__map = {}
示例#32
0
 def __init__(self):
     self.__ok_packets = []
     self.__timer = timer.timer()
     self.__fragdata = {}
示例#33
0
 def __init__(self):
     super(fdslightlc, self).__init__()
     self.set_mode("local")
     self.__timer = timer.timer()
     self.__routers = {}
示例#34
0
 def __init__(self):
     super(udp_handler, self).__init__()
     self.__timer = timer.timer()
示例#35
0
    def __init__(self, dispatcher):
        self.__timer = timer.timer()
        self.__sessions = {}
        self.__dispatcher = dispatcher

        self.init()
示例#36
0
 def __init__(self):
     self.__ip_rules = []
     self.__ipv6_rules = []
     self.__ip_hosts = {}
     self.__host_timer = timer.timer()
示例#37
0
 def __init__(self, subnet):
     super(nat, self).__init__()
     self.__ip_alloc = ipaddr.ip4addr(*subnet)
     self.__timer = timer.timer()
示例#38
0
 def dev_init(self, tun_devname, subnet):
     self.register(self.fileno)
     self.add_evt_read(self.fileno)
     self.__add_route(tun_devname, subnet)
     self.__timer = timer.timer()
     self.__map = {}
示例#39
0
    def init_func(self, mode, debug, configs):
        self.create_poll()

        signal.signal(signal.SIGINT, self.__exit)

        self.__router_timer = timer.timer()
        self.__routers = {}
        self.__configs = configs

        if mode == "local":
            self.__mode = _MODE_LOCAL
        else:
            self.__mode = _MODE_GW

        self.__mbuf = utils.mbuf()
        self.__debug = debug

        self.__tundev_fileno = self.create_handler(-1, tundev.tundevc,
                                                   self.__DEVNAME)

        public = configs["public"]
        gateway = configs["gateway"]

        self.__enable_ipv6_traffic = bool(int(public["enable_ipv6_traffic"]))

        is_ipv6 = utils.is_ipv6_address(public["remote_dns"])

        if self.__mode == _MODE_GW:
            self.__dns_fileno = self.create_handler(-1,
                                                    dns_proxy.dnsc_proxy,
                                                    gateway["dnsserver_bind"],
                                                    debug=debug,
                                                    server_side=True,
                                                    is_ipv6=False)
            self.get_handler(self.__dns_fileno).set_parent_dnsserver(
                public["remote_dns"], is_ipv6=is_ipv6)

            if self.__enable_ipv6_traffic:
                self.__dns_listen6 = self.create_handler(
                    -1,
                    dns_proxy.dnsc_proxy,
                    gateway["dnsserver_bind6"],
                    debug=debug,
                    server_side=True,
                    is_ipv6=True)
                self.get_handler(self.__dns_listen6).set_parent_dnsserver(
                    public["remote_dns"], is_ipv6=is_ipv6)
        else:
            self.__dns_fileno = self.create_handler(-1,
                                                    dns_proxy.dnsc_proxy,
                                                    public["remote_dns"],
                                                    debug=debug,
                                                    server_side=False)

        self.__set_host_rules(None, None)

        if self.__mode == _MODE_GW:
            self.__load_kernel_mod()
            udp_global = bool(int(gateway["dgram_global_proxy"]))
            if udp_global:
                self.__dgram_fetch_fileno = self.create_handler(
                    -1,
                    traffic_pass.traffic_read,
                    self.__configs["gateway"],
                    enable_ipv6=self.__enable_ipv6_traffic)
            ''''''
        else:
            local = configs["local"]
            vir_dns = local["virtual_dns"]
            vir_dns6 = local["virtual_dns6"]

            self.set_router(vir_dns, is_ipv6=False, is_dynamic=False)
            if self.__enable_ipv6_traffic:
                self.set_router(vir_dns6, is_ipv6=True, is_dynamic=False)

        conn = configs["connection"]

        m = "freenet.lib.crypto.%s" % conn["crypto_module"]
        try:
            self.__tcp_crypto = importlib.import_module(
                "%s.%s_tcp" % (m, conn["crypto_module"]))
            self.__udp_crypto = importlib.import_module(
                "%s.%s_udp" % (m, conn["crypto_module"]))
        except ImportError:
            print("cannot found tcp or udp crypto module")
            sys.exit(-1)

        crypto_fpath = "%s/fdslight_etc/%s" % (BASE_DIR,
                                               conn["crypto_configfile"])

        if not os.path.isfile(crypto_fpath):
            print("crypto configfile not exists")
            sys.exit(-1)

        try:
            crypto_configs = proto_utils.load_crypto_configfile(crypto_fpath)
        except:
            print("crypto configfile should be json file")
            sys.exit(-1)

        self.__crypto_configs = crypto_configs

        if not debug:
            sys.stdout = open(LOG_FILE, "a+")
            sys.stderr = open(ERR_FILE, "a+")
        ''''''

        signal.signal(signal.SIGUSR1, self.__set_host_rules)
示例#40
0
文件: nat.py 项目: fdslight/fdslight
    def __init__(self, subnet, is_ipv6=False):
        super(nat, self).__init__()

        self.__is_ipv6 = is_ipv6
        self.__ip_alloc = ipaddr.ipalloc(*subnet, is_ipv6=is_ipv6)
        self.__timer = timer.timer()
示例#41
0
    def __init__(self, subnet, is_ipv6=False):
        super(nat, self).__init__()

        self.__is_ipv6 = is_ipv6
        self.__ip_alloc = ipaddr.ipalloc(*subnet, is_ipv6=is_ipv6)
        self.__timer = timer.timer()
示例#42
0
 def __init__(self):
     super(udp_handler, self).__init__()
     self.__timer = timer.timer()