diff --git a/jlog/urls.py b/jlog/urls.py index 785a83a9c..f813c1afe 100644 --- a/jlog/urls.py +++ b/jlog/urls.py @@ -6,8 +6,6 @@ urlpatterns = patterns('', url(r'^$', log_list), url(r'^log_list/(\w+)/$', log_list), url(r'^history/$', log_history), - # url(r'^log_kill/', log_kill), + url(r'^log_kill/', log_kill), url(r'^record/$', log_record), - url(r'^search/$', log_search), - url(r'^monitor/$', log_monitor), ) \ No newline at end of file diff --git a/jlog/views.py b/jlog/views.py index 98ab38edf..9cad5010f 100644 --- a/jlog/views.py +++ b/jlog/views.py @@ -11,10 +11,12 @@ from models import Log from jumpserver.settings import web_socket_host +web_socket_host = 'ws://j:8080/monitor' + + def log_list(request, offset): """ 显示日志 """ header_title, path1, path2 = u'查看日志', u'查看日志', u'在线用户' - # posts = get_user_log(get_user_info(request, offset)) date_seven_day = request.GET.get('start', '') date_now_str = request.GET.get('end', '') username_list = request.GET.getlist('username', []) @@ -29,22 +31,18 @@ def log_list(request, offset): ip_all = set([log.host for log in Log.objects.all()]) if date_seven_day and date_now_str: - datetime_start = datetime.datetime.strptime(date_seven_day, '%m/%d/%Y %H:%M:%S') - datetime_end = datetime.datetime.strptime(date_now_str, '%m/%d/%Y %H:%M:%S') + datetime_start = datetime.datetime.strptime(date_seven_day + ' 00:00:01', '%m/%d/%Y %H:%M:%S') + datetime_end = datetime.datetime.strptime(date_now_str + ' 23:59:59', '%m/%d/%Y %H:%M:%S') posts = posts.filter(start_time__gte=datetime_start).filter(start_time__lte=datetime_end) if username_list: - print username_list posts = posts.filter(user__in=username_list) if host_list: posts = posts.filter(host__in=host_list) - print posts if cmd: log_id_list = set([log.log_id for log in TtyLog.objects.filter(cmd__contains=cmd)]) - print [post.id for post in posts] posts = posts.filter(id__in=log_id_list) - print posts else: date_now = datetime.datetime.now() date_now_str = date_now.strftime('%m/%d/%Y') @@ -52,27 +50,24 @@ def log_list(request, offset): contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request) + web_socket_uri = web_socket_host return render_to_response('jlog/log_%s.html' % offset, locals(), context_instance=RequestContext(request)) -# -# def log_kill(request): -# """ 杀掉connect进程 """ -# pid = request.GET.get('id', '') -# log = Log.objects.filter(pid=pid) -# if log: -# log = log[0] -# dept_name = log.dept_name -# deptname = get_session_user_info(request)[4] -# if is_group_admin(request) and dept_name != deptname: -# return httperror(request, u'Kill失败, 您无权操作!') -# try: -# os.kill(int(pid), 9) -# except OSError: -# pass -# Log.objects.filter(pid=pid).update(is_finished=1, end_time=datetime.datetime.now()) -# return render_to_response('jlog/log_offline.html', locals(), context_instance=RequestContext(request)) -# else: -# return HttpResponseNotFound(u'没有此进程!') + +def log_kill(request): + """ 杀掉connect进程 """ + pid = request.GET.get('id', '') + log = Log.objects.filter(pid=pid) + if log: + log = log[0] + try: + os.kill(int(pid), 9) + except OSError: + pass + Log.objects.filter(pid=pid).update(is_finished=1, end_time=datetime.datetime.now()) + return render_to_response('jlog/log_offline.html', locals(), context_instance=RequestContext(request)) + else: + return HttpResponseNotFound(u'没有此进程!') def log_history(request): @@ -106,19 +101,4 @@ def log_record(request): return HttpResponse('无日志记录, 请查看日志处理脚本是否开启!') -def log_search(request): - print request.GET - return render_to_response('jlog/log_filter.html', locals()) - -def log_monitor(request): - return my_render('jlog/log_monitor.html', locals(), request) - - -# def log_search(request): -# """ 日志搜索 """ -# offset = request.GET.get('env', '') -# keyword = request.GET.get('keyword', '') -# posts = get_user_log(get_user_info(request, offset)) -# contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request) -# return render_to_response('jlog/log_search.html', locals(), context_instance=RequestContext(request)) diff --git a/templates/jlog/log_offline.html b/templates/jlog/log_offline.html index c460af865..ecf791b7a 100644 --- a/templates/jlog/log_offline.html +++ b/templates/jlog/log_offline.html @@ -12,7 +12,7 @@ background-color: rgba(0, 0, 0, 0); } .bootstrap-dialog-message { - background-color: rgba(0, 0, 0, 0); + color: #00FF00; } .modal-content { background-color: rgba(0, 0, 0, 0.6); @@ -27,9 +27,7 @@ .modal-header { background-color: #FFFFFF; } - .bootstrap-dialog-message { - color: #00FF00; - } +
diff --git a/templates/jlog/log_online.html b/templates/jlog/log_online.html index 090776723..2122e500e 100644 --- a/templates/jlog/log_online.html +++ b/templates/jlog/log_online.html @@ -6,7 +6,7 @@ background-color: rgba(0, 0, 0, 0); } .bootstrap-dialog-message { - background-color: rgba(0, 0, 0, 0); + color: #00FF00; } .pre-class { background-color: rgba(0, 0, 0, 1); @@ -80,7 +80,7 @@ 监控 {% endifnotequal %} - {{ post.start_time|date:"Y-m-d H:i:s" }} + {{ post.start_time|date:"Y-m-d H:i:s" }} {% endfor %} @@ -108,8 +108,8 @@ function init(obj){ var file_path = obj.attr('file_path'); - console.log(file_path); - var socket = new WebSocket('ws://j:8080/monitor?file_path='+file_path); + var wsUri = '{{ web_socket_uri }}'; + var socket = new WebSocket(wsUri + '?file_path=' + file_path); socket.onopen = function(evt){ socket.send(file_path) }; @@ -159,30 +159,16 @@ $(document).ready(function(){ $('.monitor').click(function(){ init($(this)) - }) - }); - - function log_search(){ - $.ajax({ - type: "GET", - url: "/jlog/search/?env=online", - data: $("#search_form").serialize(), - success: function (data) { - $(".tab-content").html(data); - } }); - } - $(document).ready(function(){ - $('.log_command').on('click',function(){ + $('.log_command').on('click',function(){ var url = $(this).attr('href'); - var username = $('#username')[0].innerText; - var ip = $('#ip')[0].innerText; - var start_time = $('#start_time')[0].innerText; - var end_time = $('#end_time')[0].innerText; + var username = $(this).closest('tr').find('#username').text(); + var ip = $(this).closest('tr').find('#ip').text(); + var start_time = $(this).closest('tr').find('#start_time').text(); var div_username = ' 用户名: '+''+username+'' + ''; var div_ip = ' 主机: '+'' + ip + ''; - var div_time = ' 开始时间: ' + ''+start_time +'' + ' 结束时间: ' +'' + end_time + ''; + var div_time = ' 开始时间: ' + ''+start_time +'' + ''; var title = 'JumpServer命令统计 '+ div_username + div_ip + div_time; $.ajax({url:url, success:function(data){ @@ -191,16 +177,18 @@ }}); return false; }); - - $("#search_input").keydown(function(e){ - if(e.keyCode==13){ - log_search() - } - }); - - $('') }); +{# function log_search(){#} +{# $.ajax({#} +{# type: "GET",#} +{# url: "/jlog/search/?env=online",#} +{# data: $("#search_form").serialize(),#} +{# success: function (data) {#} +{# $(".tab-content").html(data);#} +{# }#} +{# });#} +{# }#} function cut(num){ @@ -209,7 +197,6 @@ type: "GET", url: g_url, success: window.open("/jlog/log_list/online/", "_self") -// error: window.open(g_url, "_self") }); }