Beispiel #1
0
def __start_service(mode, debug):
    if not debug:
        pid = os.fork()
        if pid != 0: sys.exit(0)

        os.setsid()
        os.umask(0)
        pid = os.fork()

        if pid != 0: sys.exit(0)
        proc.write_pid(PID_FILE)

    config_path = "%s/fdslight_etc/fn_client.ini" % BASE_DIR

    configs = configfile.ini_parse_from_file(config_path)

    cls = _fdslight_client()

    if debug:
        cls.ioloop(mode, debug, configs)
        return
    try:
        cls.ioloop(mode, debug, configs)
    except:
        logging.print_error()
Beispiel #2
0
    def create_convert_client(self):
        configs = cfg.ini_parse_from_file(self.__cfg_path)

        serv_cfg = configs.get("server_connection", {})
        if not serv_cfg:
            raise SystemError("s2hsc.ini configure file failed")
        enable_ipv6 = bool(int(serv_cfg.get("enable_ipv6", 0)))

        host = serv_cfg.get("host", "")
        port = int(serv_cfg.get("port", 443))
        if port < 0 or port > 65535:
            raise ValueError("wrong port number from s2hsc.ini")

        conn_timeout = int(serv_cfg.get("conn_timeout", 100))
        self.__client_conn_timeout = conn_timeout

        if conn_timeout < 1:
            raise ValueError("wrong conn_timeout value from s2hsc.ini")

        heartbeat_timeout = int(serv_cfg.get("heartbeat_timeout", 30))

        if heartbeat_timeout < 1:
            raise ValueError("wrong heartbeat_time value from s2hsc.ini")

        self.__client_heartbeat_time = heartbeat_timeout

        path = serv_cfg.get("http_path", "/")
        user = serv_cfg.get("user", "")
        passwd = serv_cfg.get("passwd", "")

        self.__convert_fd = self.create_handler(-1, socks2https_client.convert_client, (host, port), path, user, passwd,
                                                is_ipv6=enable_ipv6)
Beispiel #3
0
    def create_socks_http_service(self):
        config = cfg.ini_parse_from_file(self.__cfg_path)

        c = config.get("socks5_http_listen", {})
        enable_ipv6 = bool(int(c.get("enable_ipv6", 0)))
        listen_ip = c.get("listen_ip", "0.0.0.0")
        listen_ipv6 = c.get("listen_ipv6", "::")
        port = int(c.get("port", 8800))

        self.__socks5_bind_ip = listen_ip
        self.__socks5_bind_ipv6 = listen_ipv6

        if port < 0 or port > 65535:
            raise ValueError("wrong port number from s2hsc.ini")

        conn_timeout = int(c.get("conn_timeout", 60))
        if conn_timeout < 1:
            raise ValueError("wrong conn_timeout value from s2hsc.ini")

        self.__socks5http_conn_timeout = conn_timeout

        self.__socks5http_listen_fd = self.create_handler(
            -1, socks5http.http_socks5_listener, (listen_ip, port), is_ipv6=False
        )
        if enable_ipv6:
            self.__socks5http_listen_fd6 = self.create_handler(
                -1, socks5http.http_socks5_listener, (listen_ipv6, port), is_ipv6=True
            )
Beispiel #4
0
def __start_service(mode, debug):
    if not debug:
        pid = os.fork()
        if pid != 0: sys.exit(0)

        os.setsid()
        os.umask(0)
        pid = os.fork()

        if pid != 0: sys.exit(0)
        proc.write_pid(PID_FILE)

    config_path = "%s/fdslight_etc/fn_client.ini" % BASE_DIR

    configs = configfile.ini_parse_from_file(config_path)

    cls = _fdslight_client()

    if debug:
        cls.ioloop(mode, debug, configs)
        return
    try:
        cls.ioloop(mode, debug, configs)
    except:
        logging.print_error()
Beispiel #5
0
def __start_service(debug, enable_nat_module):
    if not debug and os.path.isfile(PID_FILE):
        print("the fdsl_server process exists")
        return

    if not debug:
        pid = os.fork()
        if pid != 0: sys.exit(0)

        os.setsid()
        os.umask(0)
        pid = os.fork()

        if pid != 0: sys.exit(0)
        proc.write_pid(PID_FILE)

    configs = configfile.ini_parse_from_file("%s/fdslight_etc/fn_server.ini" %
                                             BASE_DIR)
    cls = _fdslight_server()

    if debug:
        cls.ioloop(debug, configs, enable_nat_module=enable_nat_module)
        return
    try:
        cls.ioloop(debug, configs, enable_nat_module=enable_nat_module)
    except:
        logging.print_error()

    os.remove(PID_FILE)
Beispiel #6
0
def __start_service(debug):
    if not debug and os.path.isfile(PID_FILE):
        print("the proxy server process exists")
        return

    if not debug:
        pid = os.fork()
        if pid != 0: sys.exit(0)

        os.setsid()
        os.umask(0)
        pid = os.fork()

        if pid != 0: sys.exit(0)
        proc.write_pid(PID_FILE)

    configs = configfile.ini_parse_from_file("%s/ixc_configs/config.ini" %
                                             BASE_DIR)
    cls = proxyd()

    if debug:
        cls.ioloop(debug, configs)
        return
    try:
        cls.ioloop(debug, configs)
    except:
        logging.print_error()

    os.remove(PID_FILE)
    sys.exit(0)
Beispiel #7
0
def __start_service(debug):
    if not debug and os.path.isfile(PID_FILE):
        print("the fdsl_pm_client process exists")
        return

    if not debug:
        pid = os.fork()
        if pid != 0: sys.exit(0)

        os.setsid()
        os.umask(0)
        pid = os.fork()

        if pid != 0: sys.exit(0)
        proc.write_pid(PID_FILE)

    config_path = "%s/fdslight_etc/fn_pm_client.ini" % BASE_DIR

    configs = configfile.ini_parse_from_file(config_path)

    cls = _fdslight_pm_client()

    if debug:
        cls.ioloop(debug, configs)
        return
    try:
        cls.ioloop(debug, configs)
    except:
        logging.print_error()

    os.remove(PID_FILE)
Beispiel #8
0
    def create_connections(self):
        cfgs = cfg.ini_parse_from_file(CFG_FILE)

        for name in cfgs:
            rs = self.__create_conn(name, cfgs[name])
            if not rs:
                self.release()
                break
            ''''''
        self.__configs = cfgs
Beispiel #9
0
    def create_services(self):
        cfgs = cfg.ini_parse_from_file(CFG_FILE)

        for name in cfgs:
            if name == "listen": continue
            configs = cfgs[name]
            if not self.__create_service(name, configs):
                self.release()
                sys.stderr.write("wrong WANd configure file name:listen")
                return
Beispiel #10
0
    def init_func(self, debug):
        if not debug:
            sys.stdout = open(LOG_FILE, "w")
            sys.stderr = open(ERR_FILE, "w")

        self.__debug = debug
        self.__fwd_tb = {}
        self.__fwd_tb_reverse = {}

        self.__configs = configfile.ini_parse_from_file(
            "%s/ixc_configs/udp_n2n_server.ini" % BASE_DIR)
        self.create_poll()
        self.create()
Beispiel #11
0
 def create_relay_service(self):
     configs = cfg.ini_parse_from_file(self.__cfg_relay_path)
     for name in configs:
         o = self.parse_relay_config(name, configs)
         if not o:
             sys.stderr.write("wrong config name about %s" % name)
             continue
         listen_ip = o["listen_ip"]
         port = o["port"]
         is_ipv6 = o["is_ipv6"]
         timeout = o["conn_timeout"]
         redir_host = o["redirect_host"]
         redir_port = o["redirect_port"]
         fd = self.create_handler(-1, socks2https_relay.listener, (listen_ip, port), name, conn_timeout=timeout,
                                  is_ipv6=is_ipv6)
         self.__relay_info[name] = [fd, (redir_host, redir_port,)]
Beispiel #12
0
    def create_dns_service(self):
        config = cfg.ini_parse_from_file(self.__cfg_path)
        c = config.get("dns_listen", {})

        try:
            enable_ipv6 = bool(int(c.get("enable_ipv6", 0)))
        except ValueError:
            sys.stderr.write("wrong dns config A")
            sys.stderr.flush()
            return

        listen_ip = c.get("listen_ip", "0.0.0.0")
        listen_ipv6 = c.get("listen_ipv6", "::")

        ns_no_proxy_v4 = c.get("nameserver_no_proxy_v4", "223.5.5.5")
        ns_with_proxy_v4 = c.get("nameserver_with_proxy_v4", "8.8.8.8")

        ns_no_proxy_v6 = c.get("nameserver_no_proxy_v6",
                               "2001:4860:4860::8888")
        ns_with_proxy_v6 = c.get("nameserver_with_proxy_v6",
                                 "2001:4860:4860::8844")

        if not utils.is_ipv4_address(listen_ip) or not utils.is_ipv4_address(
                ns_no_proxy_v4) or not utils.is_ipv4_address(ns_with_proxy_v4):
            sys.stderr.write("wrong dns config B")
            sys.stderr.flush()
            return

        if not utils.is_ipv6_address(listen_ipv6) or not utils.is_ipv6_address(
                ns_no_proxy_v6) or not utils.is_ipv6_address(ns_with_proxy_v6):
            sys.stderr.write("wrong dns config C")
            sys.stderr.flush()
            return

        self.__dnsserver_fd = self.create_handler(-1,
                                                  socks2https_dns.dns_proxy, (
                                                      listen_ip,
                                                      53,
                                                  ), ns_no_proxy_v4,
                                                  ns_with_proxy_v4)
        if enable_ipv6:
            self.__dnsserver_fd6 = self.create_handler(
                -1, socks2https_dns.dns_proxy, (
                    listen_ipv6,
                    53,
                ), ns_no_proxy_v6, ns_with_proxy_v6)
Beispiel #13
0
    def init_func(self, mode, with_dnsserver=False, debug=True):
        self.__packet_id_map = {}
        self.__relay_info = {}
        self.__cfg_path = "%s/fdslight_etc/s2hsc.ini" % BASE_DIR
        self.__host_rules_path = "%s/fdslight_etc/host_rules.txt" % BASE_DIR
        self.__ip_rules_path = "%s/fdslight_etc/ip_rules.txt" % BASE_DIR
        self.__udp_src_proxy_path = "%s/fdslight_etc/udp_src_proxy.txt" % BASE_DIR
        self.__cfg_relay_path = "%s/fdslight_etc/s2hsr.ini" % BASE_DIR

        self.__debug = debug

        self.__socks5http_listen_fd = -1
        self.__socks5http_listen_fd6 = -1

        self.__dnsserver_fd = -1
        self.__dnsserver_fd6 = -1

        self.__convert_fd = -1

        self.__debug = debug

        self.create_poll()

        if not debug:
            signal.signal(signal.SIGINT, self.__exit)
            sys.stdout = open(LOG_FILE, "a+")
            sys.stderr = open(ERR_FILE, "a+")

        self.__configs = cfg.ini_parse_from_file(self.__cfg_path)
        self.__mode = mode

        if mode == "relay":
            self.create_relay_service()

        if mode == "proxy":
            if not debug: signal.signal(signal.SIGUSR1, self.__update_rules)
            self.__domain_match = host_match.host_match()
            self.__ip_match = ip_match.ip_match()
            self.__udp_src_match = ip_match.ip_match()
            # 首先第一次先更新规则
            self.__update_rules(None, None)
            if with_dnsserver: self.create_dns_service()
            self.create_socks_http_service()
Beispiel #14
0
    def create_service(self):
        configs = cfg.ini_parse_from_file(self.__cfg_path)

        listen = configs.get("listen", {})

        enable_ipv6 = bool(int(listen.get("enable_ipv6", 0)))
        listen_ip = listen.get("listen_ip", "0.0.0.0")
        listen_ipv6 = listen.get("listen_ip", "::")
        port = int(listen.get("port", 8900))
        conn_timeout = int(listen.get("conn_timeout", 60))
        heartbeat_timeout = int(listen.get("heartbeat_timeout", 20))

        self.__conn_timeout = conn_timeout
        self.__heartbeat_timeout = heartbeat_timeout
        self.__listen_ip = listen_ip
        self.__listen_ipv6 = listen_ipv6
        self.__enable_ipv6 = enable_ipv6

        self.__listen_fd = self.create_handler(-1, socks2https_server.listener, (listen_ip, port))
        if enable_ipv6:
            self.__listen_fd6 = self.create_handler(-1, socks2https_server.listener, (listen_ipv6, port), is_ipv6=True)
Beispiel #15
0
def __start_service(debug):
    if not debug:
        pid = os.fork()
        if pid != 0: sys.exit(0)

        os.setsid()
        os.umask(0)
        pid = os.fork()

        if pid != 0: sys.exit(0)
        proc.write_pid(PID_FILE)

    configs = configfile.ini_parse_from_file("fdslight_etc/fn_server.ini")
    cls = _fdslight_server()

    if debug:
        cls.ioloop(debug, configs)
        return
    try:
        cls.ioloop(debug, configs)
    except:
        logging.print_error()