############################################################################## # ---------- config log/debug functions configLoggingModule(args.debug) # ---------- load and parse configuration file config = Configuration(open(os.path.join(PATH, 'config.json'), 'r').read()) coreConfig = config.getCoreInitParameters(MODE) # ---------- initialize IPC and ProcessManager ipc = InternalSocketServer(coreConfig.key) processes = ProcessManager() # ---------- config TUN device and start up if "client" == args.mode: info("Running as client.") else: info("Running as server.") tun = VirtualNetworkInterface(coreConfig.localIP, coreConfig.remoteIP) tun.netmask = "255.255.255.0" tun.mtu = MTU tun.up() info("%s: up now." % tun.name) # ----------- prepare info for IPC clients(part of each proxy process)
if not queried: error("Configuration timed out. Exit.") ipc.close() sys.exit(1) ############################################################################## debug("Drop privilege to %s:%s" % queried["user"]) dropRoot(*queried["user"]) ############################################################################## # start shadowsocks process procmgr = ProcessManager() sharedsecret= hmac.HMAC( str(ipc.name + '-shadowsocks'), queried["key"], hashlib.sha256 ).digest().encode('base64').strip() proxyConfig = queried["config"] forwardToPort = proxyConfig["server"]["forward-to"] # exit port at server if 'c' == queried["mode"]: # CLIENT mode if proxyConfig["client"].has_key("proxy"): connectIP = proxyConfig["client"]["proxy"]["ip"] connectPort = proxyConfig["client"]["proxy"]["port"] else: