def Process(handler, *args): try: handler.ssid = handler.get_cookie(etc.cookie_ssid) handler.ss_ua = handler.request.handers['User-Agent'] handler.ss_ver = handler.get_cookie(etc.cookie_ver) log.i(handler.request.cookies) if not handler.ssid: log.w('[U-A:%s] no_ssid' % handler.ss_ua) res = {'idx': -1, 'ret': -1, 'msg': etc.err_op_fail, 'res': {}} handler.write(json.dumps(res)) handler.finish() return postData = handler.get_argument('postData', default=None) if postData: paramsJson = json.loads(postData) handler.ss_idx = paramsJson['idx'] if postData else 0 handler.ss_params = paramsJson['params'] if postData else None log.i('[RIP:%s][U-A:%s][ssid:%s][idx:%s][ver:%s][params:-]' %( handler.request.handers['X-Real_Ip'], handler.ss_ua, handler.ssid, handler.ss_idx, handler.ss_ver)) except Exception as e: log.exp(e) res = {'idx': -1, 'ret': -2, 'msg': etc.err_op_fail, 'res': {}} handler.write(json.dumps(res)) handler.finish() return if handler.current_user is None: log.w('[U-A:%s] signin_required' % handler.ss_ua) res = {'idx': -1, 'ret': -3, 'msg': etc.err_signin_requied, 'res': {}} handler.write(json.dumps(res)) handler.finish() return try: request(handler, *args) except Exception as e: log.exp(e) res = {'idx': -1, 'ret': -4, 'msg': etc.err_500, 'res': {}} handler.write(json.dumps(res)) handler.finish() return try: if handler.current_user != None: handler.ss_store.replace(handler.ssid, handler.current_user) except Exception as e: log.exp(e) res = {'idx': -1, 'ret': -4, 'msg': 'etc.err_500', 'res': {}} handler.write(json.dumps(res)) handler.finish() return
def _generate_res(self, ret_num, msg, step_name='', res=None): if res is None: res = {} log.w(step_name) ret = { 'idx': self.ss_idx, 'ret': ret_num, 'res': res, 'msg': msg, } log.i(step_name + 'finish') self.write(json.dumps(ret)) self.finish()
def stop(self): self.__running = False for process in self.__processes: if process.poll() is None: process.terminate() try: process.wait(5) except subprocess.TimeoutExpired: log.w( __name__, "Terminate process PID={} is failed (5 seconds waited). kill this process." .format(process.pid)) process.kill() process.wait()
def get_current_user(self): try: log.i('---------start get_current_user-------------------') cookie_check = self.get_secure_cookie(etc.cookie_check) cookie_verify = self.get_secure_cookie(etc.cookie_verify) if not cookie_check or not cookie_verify: log.i('no cookie check or verify') self.clear_cookie(etc.cookie_check) self.clear_cookie(etc.cookie_verify) return None check_verify = generate_hmac(cookie_check) if cookie_verify != check_verify: log.w("evil session : %s %s" % (cookie_check, cookie_verify)) self.clear_cookie(etc.cookie_check) self.clear_cookie(etc.cookie_verify) return None old_current_user = self.ss_store.get(cookie_check) if old_current_user is None: log.i("session expired") self.clear_cookie(etc.cookie_check) self.clear_cookie(etc.cookie_verify) return None log.i("---------self.current_user=%s -------------" % old_current_user) return old_current_user except Exception as e: log.exp(e) self.clear_cookie(etc.cookie_check) self.clear_cookie(etc.cookie_verify) return None def _generate_res(self, ret_num, msg, step_name='', res=None): if res is None: res = {} log.w(step_name) ret = { 'idx': self.ss_idx, 'ret': ret_num, 'res': res, 'msg': msg, } log.i(step_name + 'finish') self.write(json.dumps(ret)) self.finish()
def monitor(self): while self.__running: args = None for process in self.__processes: code = process.poll() if code is not None and code != 0: log.w( __name__, "Process is dead. PID={0} code={1}".format( process.pid, process.returncode)) args = process.args # print(process.communicate()) self.__processes.remove(process) break time.sleep(1) if args is not None: self.incubate(args) with self.__lock: self.__processes.extend(self.__processes_appended) self.__processes_appended.clear()
def Process(handler, *args): try: handler.ssid = handler.get_cookie(etc.cookie_ssid) handler.ss_ua = handler.request.headers['User-Agent'] handler.ss_ver = handler.get_cookie(etc.cookie_ver) if not handler.ssid: log.w('[U-A:%s] no_ssid' % handler.ss_ua) res = {'idx': -1, 'ret': -1, 'msg': etc.err_op_fail, 'res': {}} handler.write(json.dumps(res)) handler.finish() return postData = handler.get_argument('postData', default=None) if postData: paramsJson = json.loads(postData) handler.ss_idx = paramsJson['idx'] if postData else 0 handler.ss_params = paramsJson['params'] if postData else None log.i('[RIP:%s][U-A:%s][idx:%s][ver:%s][params:-]' % ( handler.request.handers['X-Real-Ip'], handler.ss_ua, handler.ss_ver)) log.i('[ssid:%s] [check:%s] [verify:%s]' % ( handler.ssid, handler.get_secure_cookie(etc.cookie_check), handler.get_secure_cookie(etc.cookie_verify))) except Exception as e: log.exp(e) res = {'idx': -1, 'ret': -2, 'msg': etc.err_op_fail, 'res' {}} handler.write(json.dumps(res)) handler.finish() return try: request(handler, *args) except Exception as e: log.exp(e) res = {'idx': -1, 'ret': -4, 'msg': etc.err_500, 'res': {}} handler.write(json.dumps(res)) handler.finish() return