def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) web_control.confirm_ossftp_exit() module_init.start_all_auto() web_control.start() if has_desktop and config.get(["modules", "launcher", "popup_webui"], 1) == 1: webbrowser.open("http://127.0.0.1:8192/") if config.get(["modules", "launcher", "show_systray"], 1): sys_tray.serve_forever() else: while True: time.sleep(100) module_init.stop_all() sys.exit()
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) launcher_log.info("start XX-Net %s", update_from_github.current_version()) web_control.confirm_xxnet_exit() setup_win_python.check_setup() module_init.start_all_auto() web_control.start() if has_desktop and config.get(["modules", "launcher", "popup_webui"], 1) == 1: host_port = config.get(["modules", "launcher", "control_port"], 8085) webbrowser.open("http://127.0.0.1:%s/" % host_port) update.start() if config.get(["modules", "launcher", "show_systray"], 1): sys_tray.serve_forever() else: while True: time.sleep(100) module_init.stop_all() sys.exit()
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) web_control.confirm_xxnet_exit() setup_win_python.check_setup() module_init.start_all_auto() web_control.start() if config.get(["modules", "launcher", "show_systray"], 1): sys_tray.serve_forever() else: while True: time.sleep(100) module_init.stop_all() sys.exit()
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) web_control.confirm_xxnet_exit() setup_win_python.check_setup() module_init.start_all_auto() web_control.start() #config.load() if config.get(["modules", "launcher", "popup_webui"], 1) == 1: webbrowser.open("http://127.0.0.1:8085/") update.start() sys_tray.serve_forever() module_init.stop_all() sys.exit()
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, "readlink", lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) web_control.confirm_xxnet_exit() setup_win_python.check_setup() module_init.start_all_auto() web_control.start() if has_desktop and config.get(["modules", "launcher", "popup_webui"], 1) == 1: webbrowser.open("http://127.0.0.1:8085/") update.start() if config.get(["modules", "launcher", "show_systray"], 1): sys_tray.serve_forever() else: while True: time.sleep(100) module_init.stop_all() sys.exit()
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) if sys.platform == "win32" and config.get(["show_compat_suggest"], 1): import win_compat_suggest win_compat_suggest.main() current_version = update_from_github.current_version() xlog.info("start XX-Net %s", current_version) web_control.confirm_xxnet_not_running() setup_win_python.check_setup() import post_update post_update.check() allow_remote = 0 if len(sys.argv) > 1: for s in sys.argv[1:]: xlog.info("command args:%s", s) if s == "-allow_remote": allow_remote = 1 module_init.xargs["allow_remote"] = 1 if os.path.isfile(running_file): restart_from_except = True else: restart_from_except = False module_init.start_all_auto() web_control.start(allow_remote) if has_desktop and config.get(["modules", "launcher", "popup_webui"], 1) == 1 and not restart_from_except: host_port = config.get(["modules", "launcher", "control_port"], 8085) import webbrowser webbrowser.open("http://localhost:%s/" % host_port) if has_desktop : import webbrowser webbrowser.open("https://www.bannedbook.org/bnews/fq/?utm_source=XX-Net") update.start() download_modules.start_download() update_from_github.cleanup() if config.get(["modules", "launcher", "show_systray"], 1): sys_tray.serve_forever() else: while True: time.sleep(1)
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) current_version = update_from_github.current_version() xlog.info("start XX-Net %s", current_version) web_control.confirm_xxnet_exit() setup_win_python.check_setup() last_run_version = config.get(["modules", "launcher", "last_run_version"], "0.0.0") if last_run_version != current_version: import post_update post_update.run(last_run_version) config.set(["modules", "launcher", "last_run_version"], current_version) config.save() allow_remote = 0 if len(sys.argv) > 1: for s in sys.argv[1:]: xlog.info("command args:%s", s) if s == "-allow_remote": allow_remote = 1 module_init.xargs["allow_remote"] = 1 module_init.start_all_auto() web_control.start(allow_remote) if has_desktop and config.get(["modules", "launcher", "popup_webui"], 1) == 1: host_port = config.get(["modules", "launcher", "control_port"], 8085) import webbrowser webbrowser.open("http://127.0.0.1:%s/" % host_port) update.start() update_from_github.delete_to_save_disk() if config.get(["modules", "launcher", "show_systray"], 1): sys_tray.serve_forever() else: while True: time.sleep(100) module_init.stop_all() sys.exit()
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) if sys.platform == "win32" and config.get(["show_compat_suggest"], 1): import win_compat_suggest win_compat_suggest.main() current_version = update_from_github.current_version() xlog.info("start XX-Net %s", current_version) web_control.confirm_xxnet_not_running() setup_win_python.check_setup() import post_update post_update.check() allow_remote = 0 if len(sys.argv) > 1: for s in sys.argv[1:]: xlog.info("command args:%s", s) if s == "-allow_remote": allow_remote = 1 module_init.xargs["allow_remote"] = 1 module_init.start_all_auto() web_control.start(allow_remote) if has_desktop and config.get(["modules", "launcher", "popup_webui"], 1) == 1: host_port = config.get(["modules", "launcher", "control_port"], 8085) import webbrowser webbrowser.open("http://localhost:%s/" % host_port) update.start() update_from_github.cleanup() if config.get(["modules", "launcher", "show_systray"], 1): sys_tray.serve_forever() else: while True: time.sleep(1)
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) current_version = update_from_github.current_version() xlog.info("start XX-Net %s", current_version) web_control.confirm_xxnet_not_running() setup_win_python.check_setup() import post_update post_update.check() allow_remote = 0 if len(sys.argv) > 1: for s in sys.argv[1:]: xlog.info("command args:%s", s) if s == "-allow_remote": allow_remote = 1 module_init.xargs["allow_remote"] = 1 module_init.start_all_auto() web_control.start(allow_remote) if has_desktop and config.get(["modules", "launcher", "popup_webui"], 1) == 1: host_port = config.get(["modules", "launcher", "control_port"], 8085) import webbrowser webbrowser.open("http://localhost:%s/" % host_port) update.start() update_from_github.cleanup() if config.get(["modules", "launcher", "show_systray"], 1): threading.Thread(target=sys_tray.serve_forever).start() while True: time.sleep(1)
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) allow_remote = 0 no_mess_system = 0 module_init.xargs["no_mess_system"] = 1 restart_from_except = False module_init.start_all_auto() while True: time.sleep(1)
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) module_init.start_all_auto() web_control.start() webbrowser.open("http://127.0.0.1:8085/") update.start() sys_tray.serve_forever() module_init.stop_all() sys.exit()
def req_config_handler(self): req = urlparse.urlparse(self.path).query reqs = urlparse.parse_qs(req, keep_blank_values=True) data = '' if reqs['cmd'] == ['get_config']: config.load() check_update = config.get(["update", "check_update"], "notice-stable") if module_init.xargs.get("allow_remote", 0): allow_remote_connect = 1 else: allow_remote_connect = config.get( ["modules", "launcher", "allow_remote_connect"], 0) dat = { "check_update": check_update, "language": config.get(["language"], i18n_translator.lang), "popup_webui": config.get(["modules", "launcher", "popup_webui"], 1), "allow_remote_connect": allow_remote_connect, "allow_remote_switch": config.get(["modules", "launcher", "allow_remote_connect"], 0), "show_systray": config.get(["modules", "launcher", "show_systray"], 1), "auto_start": config.get(["modules", "launcher", "auto_start"], 0), "show_detail": config.get(["modules", "gae_proxy", "show_detail"], 0), "gae_proxy_enable": config.get(["modules", "gae_proxy", "show_detail"], 0), "x_tunnel_enable": config.get(["modules", "x_tunnel", "auto_start"], 0), "smart_router_enable": config.get(["modules", "smart_router", "auto_start"], 0), "no_mess_system": config.get(["no_mess_system"], 0) } data = json.dumps(dat) if reqs['cmd'] == ['get_version']: current_version = update_from_github.current_version() data = '{"current_version":"%s"}' % (current_version) elif reqs['cmd'] == ['set_config']: if 'skip_version' in reqs: skip_version = reqs['skip_version'][0] skip_version_type = reqs['skip_version_type'][0] if skip_version_type not in ["stable", "test"]: data = '{"res":"fail"}' else: config.set( ["update", "skip_%s_version" % skip_version_type], skip_version) config.save() if skip_version in update_from_github.update_info: update_from_github.update_info = '' data = '{"res":"success"}' elif 'check_update' in reqs: check_update = reqs['check_update'][0] if check_update not in [ "dont-check", "stable", "notice-stable", "test", "notice-test" ]: data = '{"res":"fail, check_update:%s"}' % check_update else: if config.get(["update", "check_update"]) != check_update: update_from_github.init_update_info(check_update) config.set(["update", "check_update"], check_update) config.save() data = '{"res":"success"}' elif 'language' in reqs: language = reqs['language'][0] if language not in i18n_translator.get_valid_languages(): data = '{"res":"fail, language:%s"}' % language else: config.set(["language"], language) config.save() i18n_translator.lang = language self.load_module_menus() data = '{"res":"success"}' elif 'popup_webui' in reqs: popup_webui = int(reqs['popup_webui'][0]) if popup_webui != 0 and popup_webui != 1: data = '{"res":"fail, popup_webui:%s"}' % popup_webui else: config.set(["modules", "launcher", "popup_webui"], popup_webui) config.save() data = '{"res":"success"}' elif 'allow_remote_switch' in reqs: allow_remote_switch = int(reqs['allow_remote_switch'][0]) if allow_remote_switch != 0 and allow_remote_switch != 1: data = '{"res":"fail, allow_remote_connect:%s"}' % allow_remote_switch else: config.set(["modules", "launcher", "allow_remote_connect"], allow_remote_switch) config.save() try: del module_init.xargs["allow_remote"] except: pass if allow_remote_switch: module_init.call_each_module("set_bind_ip", {"ip": "0.0.0.0"}) else: module_init.call_each_module("set_bind_ip", {"ip": "127.0.0.1"}) data = '{"res":"success"}' xlog.debug("restart web control.") stop() module_init.stop_all() time.sleep(1) start() module_init.start_all_auto() xlog.debug("launcher web control restarted.") elif 'show_systray' in reqs: show_systray = int(reqs['show_systray'][0]) if show_systray != 0 and show_systray != 1: data = '{"res":"fail, show_systray:%s"}' % show_systray else: config.set(["modules", "launcher", "show_systray"], show_systray) config.save() data = '{"res":"success"}' elif 'no_mess_system' in reqs: no_mess_system = int(reqs['no_mess_system'][0]) if no_mess_system != 0 and no_mess_system != 1: data = '{"res":"fail, show_systray:%s"}' % no_mess_system else: config.set(["no_mess_system"], no_mess_system) config.save() data = '{"res":"success"}' elif 'auto_start' in reqs: auto_start = int(reqs['auto_start'][0]) if auto_start != 0 and auto_start != 1: data = '{"res":"fail, auto_start:%s"}' % auto_start else: if auto_start: autorun.enable() else: autorun.disable() config.set(["modules", "launcher", "auto_start"], auto_start) config.save() data = '{"res":"success"}' elif 'show_detail' in reqs: show_detail = int(reqs['show_detail'][0]) if show_detail != 0 and show_detail != 1: data = '{"res":"fail, show_detail:%s"}' % show_detail else: config.set(["modules", "gae_proxy", "show_detail"], show_detail) config.save() data = '{"res":"success"}' elif 'gae_proxy_enable' in reqs: gae_proxy_enable = int(reqs['gae_proxy_enable'][0]) if gae_proxy_enable != 0 and gae_proxy_enable != 1: data = '{"res":"fail, gae_proxy_enable:%s"}' % gae_proxy_enable else: config.set(["modules", "gae_proxy", "auto_start"], gae_proxy_enable) config.save() if gae_proxy_enable: module_init.start("gae_proxy") else: module_init.stop("gae_proxy") self.load_module_menus() data = '{"res":"success"}' elif 'x_tunnel_enable' in reqs: x_tunnel_enable = int(reqs['x_tunnel_enable'][0]) if x_tunnel_enable != 0 and x_tunnel_enable != 1: data = '{"res":"fail, x_tunnel_enable:%s"}' % x_tunnel_enable else: config.set(["modules", "x_tunnel", "auto_start"], x_tunnel_enable) config.save() if x_tunnel_enable: module_init.start("x_tunnel") else: module_init.stop("x_tunnel") self.load_module_menus() data = '{"res":"success"}' elif 'smart_router_enable' in reqs: smart_router_enable = int(reqs['smart_router_enable'][0]) if smart_router_enable != 0 and smart_router_enable != 1: data = '{"res":"fail, smart_router_enable:%s"}' % smart_router_enable else: config.set(["modules", "smart_router", "auto_start"], smart_router_enable) config.save() if smart_router_enable: module_init.start("smart_router") else: module_init.stop("smart_router") self.load_module_menus() data = '{"res":"success"}' else: data = '{"res":"fail"}' self.send_response('text/html', data)
def on_restart_goagent(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto()
def on_restart_ossftp_proxy(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto()
def restartEachModule_(self, _): module_init.stop_all() module_init.start_all_auto()
def req_config_handler(self): req = urlparse.urlparse(self.path).query reqs = urlparse.parse_qs(req, keep_blank_values=True) data = '' if reqs['cmd'] == ['get_config']: config.load() if module_init.xargs.get("allow_remote", 0): allow_remote_connect = 1 else: allow_remote_connect = config.get(["modules", "launcher", "allow_remote_connect"], 0) dat = { "check_update": config.get(["update", "check_update"], "notice-stable"), "language": config.get(["language"], i18n_translator.lang), "popup_webui": config.get(["modules", "launcher", "popup_webui"], 1), "allow_remote_connect": allow_remote_connect, "allow_remote_switch": config.get(["modules", "launcher", "allow_remote_connect"], 0), "show_systray": config.get(["modules", "launcher", "show_systray"], 1), "auto_start": config.get(["modules", "launcher", "auto_start"], 0), "show_detail": config.get(["modules", "gae_proxy", "show_detail"], 0), "gae_proxy_enable": config.get(["modules", "gae_proxy", "auto_start"], 0), "x_tunnel_enable": config.get(["modules", "x_tunnel", "auto_start"], 0), "smart_router_enable": config.get(["modules", "smart_router", "auto_start"], 0), "system-proxy": config.get(["modules", "launcher", "proxy"], "smart_router"), "show-compat-suggest": config.get(["show_compat_suggest"], 1), "no_mess_system": config.get(["no_mess_system"], 0), "keep_old_ver_num": config.get(["modules", "launcher", "keep_old_ver_num"], -1), # -1 means not set yet "postUpdateStat": config.get(["update", "postUpdateStat"], "noChange"), } data = json.dumps(dat) elif reqs['cmd'] == ['set_config']: if 'skip_version' in reqs: skip_version = reqs['skip_version'][0] skip_version_type = reqs['skip_version_type'][0] if skip_version_type not in ["stable", "test"]: data = '{"res":"fail"}' else: config.set(["update", "skip_%s_version" % skip_version_type], skip_version) config.save() if skip_version in update_from_github.update_info: update_from_github.update_info = '' data = '{"res":"success"}' elif 'check_update' in reqs: check_update = reqs['check_update'][0] if check_update not in ["dont-check", "stable", "notice-stable", "test", "notice-test"]: data = '{"res":"fail, check_update:%s"}' % check_update else: if config.get(["update", "check_update"]) != check_update: update_from_github.init_update_info(check_update) config.set(["update", "check_update"], check_update) config.save() data = '{"res":"success"}' elif 'language' in reqs: language = reqs['language'][0] if language not in i18n_translator.get_valid_languages(): data = '{"res":"fail, language:%s"}' % language else: config.set(["language"], language) config.save() i18n_translator.lang = language self.load_module_menus() data = '{"res":"success"}' elif 'popup_webui' in reqs: popup_webui = int(reqs['popup_webui'][0]) if popup_webui != 0 and popup_webui != 1: data = '{"res":"fail, popup_webui:%s"}' % popup_webui else: config.set(["modules", "launcher", "popup_webui"], popup_webui) config.save() data = '{"res":"success"}' elif 'allow_remote_switch' in reqs: allow_remote_switch = int(reqs['allow_remote_switch'][0]) if allow_remote_switch != 0 and allow_remote_switch != 1: data = '{"res":"fail, allow_remote_connect:%s"}' % allow_remote_switch else: config.set(["modules", "launcher", "allow_remote_connect"], allow_remote_switch) config.save() try: del module_init.xargs["allow_remote"] except: pass if allow_remote_switch: module_init.call_each_module("set_bind_ip", { "ip": "0.0.0.0" }) else: module_init.call_each_module("set_bind_ip", { "ip": "127.0.0.1" }) data = '{"res":"success"}' xlog.debug("restart web control.") stop() module_init.stop_all() time.sleep(1) start() module_init.start_all_auto() xlog.debug("launcher web control restarted.") elif 'show_systray' in reqs: show_systray = int(reqs['show_systray'][0]) if show_systray != 0 and show_systray != 1: data = '{"res":"fail, show_systray:%s"}' % show_systray else: config.set(["modules", "launcher", "show_systray"], show_systray) config.save() data = '{"res":"success"}' elif 'show_compat_suggest' in reqs: show_compat_suggest = int(reqs['show_compat_suggest'][0]) if show_compat_suggest != 0 and show_compat_suggest != 1: data = '{"res":"fail, show_compat_suggest:%s"}' % show_compat_suggest else: config.set(["show_compat_suggest"], show_compat_suggest) config.save() data = '{"res":"success"}' elif 'no_mess_system' in reqs: no_mess_system = int(reqs['no_mess_system'][0]) if no_mess_system != 0 and no_mess_system != 1: data = '{"res":"fail, no_mess_system:%s"}' % no_mess_system else: config.set(["no_mess_system"], no_mess_system) config.save() data = '{"res":"success"}' elif 'keep_old_ver_num' in reqs: keep_old_ver_num = int(reqs['keep_old_ver_num'][0]) if keep_old_ver_num < 0 or keep_old_ver_num > 99: data = '{"res":"fail, keep_old_ver_num:%s not in range 0 to 99"}' % keep_old_ver_num else: config.set(["modules", "launcher", "keep_old_ver_num"], keep_old_ver_num) config.save() data = '{"res":"success"}' elif 'auto_start' in reqs: auto_start = int(reqs['auto_start'][0]) if auto_start != 0 and auto_start != 1: data = '{"res":"fail, auto_start:%s"}' % auto_start else: if auto_start: autorun.enable() else: autorun.disable() config.set(["modules", "launcher", "auto_start"], auto_start) config.save() data = '{"res":"success"}' elif 'show_detail' in reqs: show_detail = int(reqs['show_detail'][0]) if show_detail != 0 and show_detail != 1: data = '{"res":"fail, show_detail:%s"}' % show_detail else: config.set(["modules", "gae_proxy", "show_detail"], show_detail) config.save() data = '{"res":"success"}' elif 'gae_proxy_enable' in reqs: gae_proxy_enable = int(reqs['gae_proxy_enable'][0]) if gae_proxy_enable != 0 and gae_proxy_enable != 1: data = '{"res":"fail, gae_proxy_enable:%s"}' % gae_proxy_enable else: config.set(["modules", "gae_proxy", "auto_start"], gae_proxy_enable) config.save() if gae_proxy_enable: module_init.start("gae_proxy") else: module_init.stop("gae_proxy") self.load_module_menus() data = '{"res":"success"}' elif 'x_tunnel_enable' in reqs: x_tunnel_enable = int(reqs['x_tunnel_enable'][0]) if x_tunnel_enable != 0 and x_tunnel_enable != 1: data = '{"res":"fail, x_tunnel_enable:%s"}' % x_tunnel_enable else: config.set(["modules", "x_tunnel", "auto_start"], x_tunnel_enable) config.save() if x_tunnel_enable: module_init.start("x_tunnel") else: module_init.stop("x_tunnel") self.load_module_menus() data = '{"res":"success"}' elif 'smart_router_enable' in reqs: smart_router_enable = int(reqs['smart_router_enable'][0]) if smart_router_enable != 0 and smart_router_enable != 1: data = '{"res":"fail, smart_router_enable:%s"}' % smart_router_enable else: config.set(["modules", "smart_router", "auto_start"], smart_router_enable) config.save() if smart_router_enable: module_init.start("smart_router") else: module_init.stop("smart_router") self.load_module_menus() data = '{"res":"success"}' elif 'postUpdateStat' in reqs: postUpdateStat = reqs['postUpdateStat'][0] if postUpdateStat not in ["noChange", "isNew", "isPostUpdate"]: data = '{"res":"fail, postUpdateStat:%s"}' % postUpdateStat else: config.set(["update", "postUpdateStat"], postUpdateStat) config.save() data = '{"res":"success"}' else: data = '{"res":"fail"}' elif reqs['cmd'] == ['get_version']: current_version = update_from_github.current_version() data = '{"current_version":"%s"}' % current_version self.send_response('text/html', data)
def req_config_handler(self): req = urlparse(self.path).query reqs = parse_qs(req, keep_blank_values=True) data = '' if reqs['cmd'] == ['get_config']: if module_init.xargs.get("allow_remote", 0): allow_remote_connect = 1 else: allow_remote_connect = config.allow_remote_connect dat = { "check_update": config.check_update, "language": config.language or i18n_translator.lang, "popup_webui": config.popup_webui, "allow_remote_connect": allow_remote_connect, "allow_remote_switch": config.allow_remote_connect, "show_systray": config.show_systray, "auto_start": config.auto_start, "show_detail": config.gae_show_detail, "gae_proxy_enable": config.enable_gae_proxy, "x_tunnel_enable": config.enable_x_tunnel, "smart_router_enable": config.enable_smart_router, "system-proxy": config.os_proxy_mode, "show-compat-suggest": config.show_compat_suggest, "no_mess_system": config.no_mess_system, "keep_old_ver_num": config.keep_old_ver_num, "postUpdateStat": config.postUpdateStat, } data = json.dumps(dat) elif reqs['cmd'] == ['set_config']: if 'skip_version' in reqs: skip_version = reqs['skip_version'][0] skip_version_type = reqs['skip_version_type'][0] if skip_version_type not in ["stable", "test"]: data = '{"res":"fail"}' else: setattr(config, "skip_%s_version" % skip_version_type, skip_version) config.save() if skip_version in update_from_github.update_info: update_from_github.update_info = '' data = '{"res":"success"}' elif 'check_update' in reqs: check_update = reqs['check_update'][0] if check_update not in [ "dont-check", "stable", "notice-stable", "test", "notice-test" ]: data = '{"res":"fail, check_update:%s"}' % check_update else: if config.check_update != check_update: update_from_github.init_update_info(check_update) config.check_update = check_update config.save() data = '{"res":"success"}' elif 'language' in reqs: language = reqs['language'][0] if language not in valid_language: data = '{"res":"fail, language:%s"}' % language else: config.language = language config.save() i18n_translator.lang = language self.load_module_menus() data = '{"res":"success"}' elif 'popup_webui' in reqs: popup_webui = int(reqs['popup_webui'][0]) if popup_webui != 0 and popup_webui != 1: data = '{"res":"fail, popup_webui:%s"}' % popup_webui else: config.popup_webui = popup_webui config.save() data = '{"res":"success"}' elif 'allow_remote_switch' in reqs: allow_remote_switch = int(reqs['allow_remote_switch'][0]) if allow_remote_switch != 0 and allow_remote_switch != 1: data = '{"res":"fail, allow_remote_connect:%s"}' % allow_remote_switch else: try: del module_init.xargs["allow_remote"] except: pass if allow_remote_switch: module_init.call_each_module("set_bind_ip", {"ip": "0.0.0.0"}) else: module_init.call_each_module("set_bind_ip", {"ip": "127.0.0.1"}) config.allow_remote_connect = allow_remote_switch config.save() xlog.debug("restart web control.") stop() module_init.stop_all() time.sleep(1) start(allow_remote_switch) module_init.start_all_auto() xlog.debug("launcher web control restarted.") data = '{"res":"success"}' elif 'show_systray' in reqs: show_systray = int(reqs['show_systray'][0]) if show_systray != 0 and show_systray != 1: data = '{"res":"fail, show_systray:%s"}' % show_systray else: config.show_systray = show_systray config.save() data = '{"res":"success"}' elif 'show_compat_suggest' in reqs: show_compat_suggest = int(reqs['show_compat_suggest'][0]) if show_compat_suggest != 0 and show_compat_suggest != 1: data = '{"res":"fail, show_compat_suggest:%s"}' % show_compat_suggest else: config.show_compat_suggest = show_compat_suggest config.save() data = '{"res":"success"}' elif 'no_mess_system' in reqs: no_mess_system = int(reqs['no_mess_system'][0]) if no_mess_system != 0 and no_mess_system != 1: data = '{"res":"fail, no_mess_system:%s"}' % no_mess_system else: config.no_mess_system = no_mess_system config.save() data = '{"res":"success"}' elif 'keep_old_ver_num' in reqs: keep_old_ver_num = int(reqs['keep_old_ver_num'][0]) if keep_old_ver_num < 0 or keep_old_ver_num > 99: data = '{"res":"fail, keep_old_ver_num:%s not in range 0 to 99"}' % keep_old_ver_num else: config.keep_old_ver_num = keep_old_ver_num config.save() data = '{"res":"success"}' elif 'auto_start' in reqs: auto_start = int(reqs['auto_start'][0]) if auto_start != 0 and auto_start != 1: data = '{"res":"fail, auto_start:%s"}' % auto_start else: if auto_start: autorun.enable() else: autorun.disable() config.auto_start = auto_start config.save() data = '{"res":"success"}' elif 'show_detail' in reqs: show_detail = int(reqs['show_detail'][0]) if show_detail != 0 and show_detail != 1: data = '{"res":"fail, show_detail:%s"}' % show_detail else: config.gae_show_detail = show_detail config.save() data = '{"res":"success"}' elif 'gae_proxy_enable' in reqs: gae_proxy_enable = int(reqs['gae_proxy_enable'][0]) if gae_proxy_enable != 0 and gae_proxy_enable != 1: data = '{"res":"fail, gae_proxy_enable:%s"}' % gae_proxy_enable else: config.enable_gae_proxy = gae_proxy_enable config.save() if gae_proxy_enable: module_init.start("gae_proxy") else: module_init.stop("gae_proxy") self.load_module_menus() data = '{"res":"success"}' elif 'x_tunnel_enable' in reqs: x_tunnel_enable = int(reqs['x_tunnel_enable'][0]) if x_tunnel_enable != 0 and x_tunnel_enable != 1: data = '{"res":"fail, x_tunnel_enable:%s"}' % x_tunnel_enable else: config.enable_x_tunnel = x_tunnel_enable config.save() if x_tunnel_enable: module_init.start("x_tunnel") else: module_init.stop("x_tunnel") self.load_module_menus() data = '{"res":"success"}' elif 'smart_router_enable' in reqs: smart_router_enable = int(reqs['smart_router_enable'][0]) if smart_router_enable != 0 and smart_router_enable != 1: data = '{"res":"fail, smart_router_enable:%s"}' % smart_router_enable else: config.enable_smart_router = smart_router_enable config.save() if smart_router_enable: module_init.start("smart_router") else: module_init.stop("smart_router") self.load_module_menus() data = '{"res":"success"}' elif 'postUpdateStat' in reqs: postUpdateStat = reqs['postUpdateStat'][0] if postUpdateStat not in ["noChange", "isNew", "isPostUpdate"]: data = '{"res":"fail, postUpdateStat:%s"}' % postUpdateStat else: config.postUpdateStat = postUpdateStat config.save() data = '{"res":"success"}' else: data = '{"res":"fail"}' elif reqs['cmd'] == ['get_version']: current_version = update_from_github.current_version() data = '{"current_version":"%s"}' % current_version self.send_response('text/html', data)
def on_restart_each_module(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto()
def on_reset(self, _): module_init.stop_all() module_init.start_all_auto()
def do_GET(self): try: refer = self.headers.getheader('Referer') netloc = urlparse.urlparse(refer).netloc if not netloc.startswith("127.0.0.1") and not netloc.startswitch("localhost"): launcher_log.warn("web control ref:%s refuse", netloc) return except: pass # check for '..', which will leak file if re.search(r'(\.{2})', self.path) is not None: self.wfile.write(b'HTTP/1.1 404\r\n\r\n') launcher_log.warn('%s %s %s haking', self.address_string(), self.command, self.path ) return url_path = urlparse.urlparse(self.path).path if url_path == '/': return self.req_index_handler() url_path_list = self.path.split('/') if len(url_path_list) >= 3 and url_path_list[1] == "module": module = url_path_list[2] if len(url_path_list) >= 4 and url_path_list[3] == "control": if module not in module_init.proc_handler: launcher_log.warn("request %s no module in path", url_path) self.send_not_found() return path = '/' + '/'.join(url_path_list[4:]) controler = module_init.proc_handler[module]["imp"].local.web_control.ControlHandler(self.client_address, self.headers, self.command, path, self.rfile, self.wfile) controler.do_GET() return else: file_path = os.path.join(root_path, module, url_path_list[3:].join('/')) else: file_path = os.path.join(current_path, 'web_ui' + url_path) launcher_log.debug ('launcher web_control %s %s %s ', self.address_string(), self.command, self.path) if os.path.isfile(file_path): if file_path.endswith('.js'): mimetype = 'application/javascript' elif file_path.endswith('.css'): mimetype = 'text/css' elif file_path.endswith('.html'): mimetype = 'text/html' elif file_path.endswith('.jpg'): mimetype = 'image/jpeg' elif file_path.endswith('.png'): mimetype = 'image/png' else: mimetype = 'text/plain' self.send_file(file_path, mimetype) elif url_path == '/config': self.req_config_handler() elif url_path == '/log': self.req_log_handler() elif url_path == '/download': self.req_download_handler() elif url_path == '/init_module': self.req_init_module_handler() elif url_path == '/quit': self.send_response('text/html', '{"status":"success"}') module_init.stop_all() os._exit(0) elif url_path == '/restart': self.send_response('text/html', '{"status":"success"}') module_init.stop_all() module_init.start_all_auto() else: self.wfile.write(b'HTTP/1.1 404\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n404 Not Found') launcher_log.info('%s "%s %s HTTP/1.1" 404 -', self.address_string(), self.command, self.path)
def main(): # change path to launcher global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) if sys.platform == "win32": import win_compat_suggest if config.show_compat_suggest: win_compat_suggest.main() ports_resolve_solution = win_compat_suggest.Win10PortReserveSolution() if not ports_resolve_solution.check_and_resolve(): return web_control.confirm_xxnet_not_running() import post_update post_update.check() allow_remote = 0 no_mess_system = 0 if len(sys.argv) > 1: for s in sys.argv[1:]: xlog.info("command args:%s", s) if s == "-allow_remote": allow_remote = 1 elif s == "-no_mess_system": no_mess_system = 1 if allow_remote or config.allow_remote_connect: xlog.info("start with allow remote connect.") module_init.xargs["allow_remote"] = 1 if os.getenv("NOT_MESS_SYSTEM", "0") != "0" or no_mess_system or config.no_mess_system: xlog.info("start with no_mess_system, no CA will be imported to system.") module_init.xargs["no_mess_system"] = 1 if os.path.isfile(running_file): restart_from_except = True else: restart_from_except = False module_init.start_all_auto() web_control.start(allow_remote) if has_desktop and config.popup_webui == 1 and not restart_from_except: host_port = config.control_port import webbrowser webbrowser.open("http://localhost:%s/" % host_port) update.start() if has_desktop: download_modules.start_download() update_from_github.cleanup() if config.show_systray: sys_platform.show_systray() else: while True: time.sleep(1)
def on_restart_gae_proxy(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto()
def do_GET(self): try: refer = self.headers.getheader('Referer') netloc = urlparse(refer).netloc if not netloc.startswith("127.0.0.1") and not netloc.startswitch( "localhost"): launcher_log.warn("web control ref:%s refuse", netloc) return except: pass # check for '..', which will leak file if re.search(r'(\.{2})', self.path) is not None: self.wfile.write(b'HTTP/1.1 404\r\n\r\n') launcher_log.warn('%s %s %s haking', self.address_string(), self.command, self.path) return url_path = urlparse(self.path).path if url_path == '/': return self.req_index_handler() url_path_list = self.path.split('/') if len(url_path_list) >= 3 and url_path_list[1] == "module": module = url_path_list[2] if len(url_path_list) >= 4 and url_path_list[3] == "control": if module not in module_init.proc_handler: launcher_log.warn("request %s no module in path", url_path) self.send_not_found() return path = '/' + '/'.join(url_path_list[4:]) controler = module_init.proc_handler[module][ "imp"].local.web_control.ControlHandler( self.client_address, self.headers, self.command, path, self.rfile, self.wfile) controler.do_GET() return else: file_path = os.path.join(root_path, module, url_path_list[3:].join('/')) else: file_path = os.path.join(current_path, 'web_ui' + url_path) launcher_log.debug('launcher web_control %s %s %s ', self.address_string(), self.command, self.path) if os.path.isfile(file_path): if file_path.endswith('.js'): mimetype = 'application/javascript' elif file_path.endswith('.css'): mimetype = 'text/css' elif file_path.endswith('.html'): mimetype = 'text/html' elif file_path.endswith('.jpg'): mimetype = 'image/jpeg' elif file_path.endswith('.png'): mimetype = 'image/png' else: mimetype = 'text/plain' self.send_file(file_path, mimetype) elif url_path == '/config': self.req_config_handler() elif url_path == '/log': self.req_log_handler() elif url_path == '/download': self.req_download_handler() elif url_path == '/init_module': self.req_init_module_handler() elif url_path == '/quit': self.send_response('text/html', '{"status":"success"}') module_init.stop_all() os._exit(0) elif url_path == '/restart': self.send_response('text/html', '{"status":"success"}') module_init.stop_all() module_init.start_all_auto() else: self.wfile.write( b'HTTP/1.1 404\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n404 Not Found' ) launcher_log.info('%s "%s %s HTTP/1.1" 404 -', self.address_string(), self.command, self.path)
def main(): if not os.path.exists(ca_cert): import platform import subprocess import hashlib def runcmd(cmd): p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = p.communicate() return (stdout, stderr, p.returncode) commonname = 'GoAgent-XX-Net-mini-4.5.3' sn = '0x%s' % hashlib.md5( (commonname + str(datetime.now())).encode("utf-8")).hexdigest() cmd = "openssl req -x509 -newkey rsa:2048 -sha256 -days 3650 -set_serial " + sn + " -nodes -keyout CA.key -out " + ca_cert + " -extensions v3_req -config " + ca_openssl_cfg runcmd(cmd) cmd = "openssl genrsa -out p.key 2048" runcmd(cmd) cmd = "openssl rsa -in p.key -pubout -out pub.key" runcmd(cmd) filenames = [ca_cert, 'CA.key'] with open(ca_key, 'wb') as outfile: for fname in filenames: with open(fname, 'rb') as infile: outfile.write(infile.read()) filenames = ['p.key', 'pub.key'] with open(cert_keyfile, 'wb') as outfile: for fname in filenames: with open(fname, 'rb') as infile: outfile.write(infile.read()) os.remove('CA.key') os.remove('p.key') os.remove('pub.key') if (platform.system() == 'Windows'): cmd = "certmgr /c /add " + ca_cert + " /s root" runcmd(cmd) elif (platform.system() == 'Linux'): cmd = 'certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n ' + commonname + ' -i ' + ca_cert runcmd(cmd) else: pass global __file__ __file__ = os.path.abspath(__file__) if os.path.islink(__file__): __file__ = getattr(os, 'readlink', lambda x: x)(__file__) os.chdir(os.path.dirname(os.path.abspath(__file__))) allow_remote = 0 no_mess_system = 0 module_init.xargs["no_mess_system"] = 1 restart_from_except = False module_init.start_all_auto() while True: time.sleep(1)