diff --git a/run_server.py b/run_server.py index 0823ebd8c..b1df25e39 100755 --- a/run_server.py +++ b/run_server.py @@ -37,7 +37,7 @@ os.environ['DJANGO_SETTINGS_MODULE'] = 'jumpserver.settings' from jumpserver.settings import IP, PORT define("port", default=PORT, help="run on the given port", type=int) define("host", default=IP, help="run port on given host", type=str) - +from jlog.views import TermLogRecorder def django_request_support(func): @functools.wraps(func) @@ -63,6 +63,7 @@ def require_auth(role='user'): logger.debug('Websocket: session: %s' % session) if session and datetime.datetime.now() < session.expire_date: user_id = session.get_decoded().get('_auth_user_id') + request.user_id = user_id user = get_object(User, id=user_id) if user: logger.debug('Websocket: user [ %s ] request websocket' % user.username) @@ -311,6 +312,7 @@ class WebTerminalHandler(tornado.websocket.WebSocketHandler): role_name = self.get_argument('role', 'sb') asset_id = self.get_argument('id', 9999) asset = get_object(Asset, id=asset_id) + self.termlog = TermLogRecorder(User.objects.get(id=self.user_id)) if asset: roles = user_have_perm(self.user, asset) logger.debug(roles) @@ -361,6 +363,7 @@ class WebTerminalHandler(tornado.websocket.WebSocketHandler): jsondata.get('data').get('resize').get('rows', 24) ) elif jsondata.get('data'): + self.termlog.recoder = True self.term.input_mode = True if str(jsondata['data']) in ['\r', '\n', '\r\n']: if self.term.vim_flag: @@ -383,6 +386,8 @@ class WebTerminalHandler(tornado.websocket.WebSocketHandler): def on_close(self): logger.debug('Websocket: Close request') + print self.termlog.CMD + self.termlog.save() if self in WebTerminalHandler.clients: WebTerminalHandler.clients.remove(self) try: @@ -413,6 +418,8 @@ class WebTerminalHandler(tornado.websocket.WebSocketHandler): self.term.vim_data += recv try: self.write_message(data.decode('utf-8', 'replace')) + self.termlog.write(data) + self.termlog.recoder = False now_timestamp = time.time() self.log_time_f.write('%s %s\n' % (round(now_timestamp-pre_timestamp, 4), len(data))) self.log_file_f.write(data)