pull/167/head
liuzheng712 2016-03-25 23:52:48 +08:00
parent 1084be4712
commit 9b43c6c238
5 changed files with 34 additions and 29 deletions

View File

@ -16,15 +16,15 @@ class Log(models.Model):
''' '''
add by liuzheng add by liuzheng
''' '''
userMM = models.ManyToManyField(User) # userMM = models.ManyToManyField(User)
logPath = models.TextField() # logPath = models.TextField()
filename = models.CharField(max_length=40) # filename = models.CharField(max_length=40)
logPWD = models.TextField() # log zip file's # logPWD = models.TextField() # log zip file's
nick = models.TextField(null=True) # log's nick name # nick = models.TextField(null=True) # log's nick name
log = models.TextField(null=True) # log = models.TextField(null=True)
history = models.TextField(null=True) # history = models.TextField(null=True)
timestamp = models.IntegerField(default=int(time.time())) # timestamp = models.IntegerField(default=int(time.time()))
datetimestamp = models.DateTimeField(auto_now_add=True) # datetimestamp = models.DateTimeField(auto_now_add=True)
def __unicode__(self): def __unicode__(self):

View File

@ -7,7 +7,7 @@ from jperm.perm_api import user_have_perm
from django.http import HttpResponseNotFound from django.http import HttpResponseNotFound
from jlog.log_api import renderTemplate from jlog.log_api import renderTemplate
from jlog.models import Log, ExecLog, FileLog from jlog.models import Log, ExecLog, FileLog,TermLog
from jumpserver.settings import LOG_DIR from jumpserver.settings import LOG_DIR
import zipfile import zipfile
import json import json
@ -136,9 +136,9 @@ def log_record(request):
elif request.method == "POST": elif request.method == "POST":
log_id = request.REQUEST.get('id', None) log_id = request.REQUEST.get('id', None)
if log_id: if log_id:
logs = TermLogRecorder(request.user) TermL = TermLogRecorder(request.user)
log = Log.objects.get(id=int(log_id)) log = TermLog.objects.get(id=int(log_id))
return HttpResponse(logs.load_full_log(log.filename)) return HttpResponse(TermL.load_full_log(log.filename))
else: else:
return HttpResponse("ERROR") return HttpResponse("ERROR")
else: else:
@ -261,16 +261,16 @@ class TermLogRecorder(object):
zf.setpassword(password) zf.setpassword(password)
zf.writestr(filename, json.dumps(self.log)) zf.writestr(filename, json.dumps(self.log))
zf.close() zf.close()
record = Log.objects.create(logPath=filepath, logPWD=password, filename=filename, record = TermLog.objects.create(logPath=filepath, logPWD=password, filename=filename,
history=json.dumps(self.CMD), timestamp=int(self.recoderStartTime)) history=json.dumps(self.CMD), timestamp=int(self.recoderStartTime))
if self.user: if self.user:
record.userMM.add(self.user) record.user.add(self.user)
except: except:
record = Log.objects.create(logPath='locale', logPWD=password, log=json.dumps(self.log), record = TermLog.objects.create(logPath='locale', logPWD=password, log=json.dumps(self.log),
filename=filename, history=json.dumps(self.CMD), filename=filename, history=json.dumps(self.CMD),
timestamp=int(self.recoderStartTime)) timestamp=int(self.recoderStartTime))
if self.user: if self.user:
record.userMM.add(self.user) record.user.add(self.user)
def list(self, user=None, uid=None): def list(self, user=None, uid=None):
tmp = [] tmp = []
@ -281,7 +281,7 @@ class TermLogRecorder(object):
else: else:
user = self.user user = self.user
if user: if user:
self._lists = Log.objects.filter(user=user.id) self._lists = TermLog.objects.filter(user=user.id)
for i in self._lists.all(): for i in self._lists.all():
tmp.append( tmp.append(
{'filename': i.filename, 'locale': i.logPath == 'locale', 'nick': i.nick, 'timestamp': i.timestamp, {'filename': i.filename, 'locale': i.logPath == 'locale', 'nick': i.nick, 'timestamp': i.timestamp,
@ -299,7 +299,7 @@ class TermLogRecorder(object):
if self._lists: if self._lists:
self.file = self._lists.get(filename=filename) self.file = self._lists.get(filename=filename)
else: else:
self.file = Log.objects.get(user=user.id, filename=filename) self.file = TermLog.objects.get(user=user.id, filename=filename)
if self.file.logPath == 'locale': if self.file.logPath == 'locale':
return self.file.log return self.file.log
else: else:
@ -323,7 +323,7 @@ class TermLogRecorder(object):
if self._lists: if self._lists:
self.file = self._lists.get(filename=filename) self.file = self._lists.get(filename=filename)
else: else:
self.file = Log.objects.get(user=user.id, filename=filename) self.file = TermLog.objects.get(user=user.id, filename=filename)
return self.file.history return self.file.history
return 'ERROR User(None)' return 'ERROR User(None)'
@ -335,7 +335,7 @@ class TermLogRecorder(object):
else: else:
pass pass
if user: if user:
Log.objects.get(filename=filename).userMM.add(user) TermLog.objects.get(filename=filename).user.add(user)
return True return True
return False return False
@ -347,6 +347,6 @@ class TermLogRecorder(object):
else: else:
pass pass
if user: if user:
Log.objects.get(filename=filename).userMM.remove(user) TermLog.objects.get(filename=filename).user.remove(user)
return True return True
return False return False

View File

@ -103,17 +103,17 @@ NgApp.controller('TerminalRecordCtrl', function ($scope, $http) {
}; };
var term = new Terminal({ var term = new Terminal({
rows: 80, rows: 24,
cols: 24, cols: 80,
useStyle: true, useStyle: true,
screenKeys: true screenKeys: true
}); });
var timelist = []; var timelist = [];
for (var i in data) { for (var i in data) {
totalTime = totalTime > i ? totalTime : i; totalTime = Math.max(totalTime, i);
timelist.push(i); timelist.push(i);
} }
timelist = timelist.sort(); timelist = timelist.sort(function(a, b){return a-b});
totalTime = totalTime * 1000; totalTime = totalTime * 1000;
document.getElementById("afterScrubberText").innerHTML = buildTimeString(totalTime); document.getElementById("afterScrubberText").innerHTML = buildTimeString(totalTime);
term.open(document.getElementById('terminal')); term.open(document.getElementById('terminal'));

View File

@ -8,6 +8,11 @@
{% include 'nav_cat_bar.html' %} {% include 'nav_cat_bar.html' %}
<style> <style>
iframe {
overflow:hidden;
}
.bootstrap-dialog-body { .bootstrap-dialog-body {
background-color: rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 0);
} }
@ -157,7 +162,7 @@
title: title, title: title,
maxmin: true, maxmin: true,
shade: false, shade: false,
area: ['800px', '520px'], area: ['620px', '450px'],
content: url content: url
}); });
return false; return false;

View File

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html ng-app="NgApp"> <html ng-app="NgApp" style=" overflow:hidden;">
<head lang="en"> <head lang="en">
<title>Jumpserver 录像回放</title> <title>Jumpserver 录像回放</title>
<script type="application/javascript" src='/static/js/jquery-2.1.1.js'></script> <script type="application/javascript" src='/static/js/jquery-2.1.1.js'></script>