def establish_new_proxy(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) rsp = EstablishProxyRsp() def check_parameters(): if not cmd.targetHostname: raise ConsoleProxyError('targetHostname cannot be null') if not cmd.targetPort: raise ConsoleProxyError('targetPort cannot be null') if not cmd.token: raise ConsoleProxyError('token cannot be null') if not cmd.proxyHostname: raise ConsoleProxyError('proxyHostname cannot be null') try: check_parameters() except ConsoleProxyError as e: err = linux.get_exception_stacktrace() logger.warn(err) rsp.error = str(e) rsp.success = False return jsonobject.dumps(rsp) proxyPort = linux.get_free_port() token_file = os.path.join(self.TOKEN_FILE_DIR, self._make_token_file_name(cmd)) with open(token_file, 'w') as fd: fd.write('%s: %s:%s' % (cmd.token, cmd.targetHostname, cmd.targetPort)) timeout = cmd.idleTimeout if not timeout: timeout = 600 log_file = os.path.join(self.PROXY_LOG_DIR, self._make_proxy_log_file_name(cmd)) proxy_cmd = '''python -c "from zstacklib.utils import log; import websockify; log.configure_log('%s'); websockify.websocketproxy.websockify_init()" %s:%s -D --target-config=%s --idle-timeout=%s''' % ( log_file, cmd.proxyHostname, proxyPort, token_file, timeout) logger.debug(proxy_cmd) shell.call(proxy_cmd) info = { 'proxyHostname': cmd.proxyHostname, 'proxyPort': cmd.proxyPort, 'targetHostname': cmd.targetHostname, 'targetPort': cmd.targetPort, 'token': cmd.token, 'logFile': log_file, 'tokenFile': token_file } info_str = jsonobject.dumps(info) self.db.set(cmd.token, info_str) rsp.proxyPort = proxyPort logger.debug('successfully establish new proxy%s' % info_str) return jsonobject.dumps(rsp)
def establish_new_proxy(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) rsp = EstablishProxyRsp() def check_parameters(): if not cmd.targetHostname: raise ConsoleProxyError('targetHostname cannot be null') if not cmd.targetPort: raise ConsoleProxyError('targetPort cannot be null') if not cmd.token: raise ConsoleProxyError('token cannot be null') if not cmd.proxyHostname: raise ConsoleProxyError('proxyHostname cannot be null') try: check_parameters() except ConsoleProxyError as e: err = linux.get_exception_stacktrace() logger.warn(err) rsp.error = str(e) rsp.success = False return jsonobject.dumps(rsp) proxyPort = linux.get_free_port() token_file = os.path.join(self.TOKEN_FILE_DIR, self._make_token_file_name(cmd)) with open(token_file, 'w') as fd: fd.write('%s: %s:%s' % (cmd.token, cmd.targetHostname, cmd.targetPort)) timeout = cmd.idleTimeout if not timeout: timeout = 600 log_file = os.path.join(self.PROXY_LOG_DIR, self._make_proxy_log_file_name(cmd)) proxy_cmd = '''python -c "from zstacklib.utils import log; import websockify; log.configure_log('%s'); websockify.websocketproxy.websockify_init()" %s:%s -D --target-config=%s --idle-timeout=%s''' % (log_file, cmd.proxyHostname, proxyPort, token_file, timeout) logger.debug(proxy_cmd) shell.call(proxy_cmd) shell.call("iptables-save | grep -- '-A INPUT -p tcp -m tcp --dport %s' > /dev/null || iptables -I INPUT -p tcp -m tcp --dport %s -j ACCEPT" % (proxyPort, proxyPort)) info = { 'proxyHostname': cmd.proxyHostname, 'proxyPort' : cmd.proxyPort, 'targetHostname' : cmd.targetHostname, 'targetPort': cmd.targetPort, 'token': cmd.token, 'logFile': log_file, 'tokenFile': token_file } info_str = jsonobject.dumps(info) self.db.set(cmd.token, info_str) rsp.proxyPort = proxyPort logger.debug('successfully establish new proxy%s' % info_str) return jsonobject.dumps(rsp)
def start_proxy(): proxyPort = linux.get_free_port() proxy_cmd = '''python -c "from zstacklib.utils import log; import websockify; log.configure_log('%s'); websockify.websocketproxy.websockify_init()" %s:%s -D --target-config=%s --idle-timeout=%s''' % (log_file, cmd.proxyHostname, proxyPort, token_file, timeout) logger.debug(proxy_cmd) proxy_cmd = shell.ShellCmd(proxy_cmd) proxy_cmd(False) if proxy_cmd.return_code != 0 and "Cannot assign requested address" not in proxy_cmd.stderr: proxy_cmd.raise_error() elif proxy_cmd.return_code != 0 and "Cannot assign requested address" in proxy_cmd.stderr: return None else: shell.call("iptables-save | grep -- '-A INPUT -p tcp -m tcp --dport %s' > /dev/null || iptables -I INPUT -p tcp -m tcp --dport %s -j ACCEPT" % (proxyPort, proxyPort)) return proxyPort
def start_proxy(): proxyPort = linux.get_free_port() proxy_cmd = '''python -c "from zstacklib.utils import log; import websockify; log.configure_log('%s'); websockify.websocketproxy.websockify_init()" %s:%s -D --target-config=%s --idle-timeout=%s''' % ( log_file, cmd.proxyHostname, proxyPort, token_file, timeout) logger.debug(proxy_cmd) proxy_cmd = shell.ShellCmd(proxy_cmd) proxy_cmd(False) if proxy_cmd.return_code != 0 and "Cannot assign requested address" not in proxy_cmd.stderr: proxy_cmd.raise_error() elif proxy_cmd.return_code != 0 and "Cannot assign requested address" in proxy_cmd.stderr: return None else: shell.call( "iptables-save | grep -- '-A INPUT -p tcp -m tcp --dport %s' > /dev/null || iptables -I INPUT -p tcp -m tcp --dport %s -j ACCEPT" % (proxyPort, proxyPort)) return proxyPort