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()
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)
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 )
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()
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)
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)
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)
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
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
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()
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,)]
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)
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()
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)
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()