jumpserver/jlog/views.py

130 lines
5.0 KiB
Python

# coding:utf-8
from django.db.models import Q
from django.template import RequestContext
from django.shortcuts import render_to_response
from jumpserver.api import *
from django.http import HttpResponseNotFound
CONF = ConfigParser()
CONF.read('%s/jumpserver.conf' % BASE_DIR)
from jlog.models import Log
from jlog.log_api import renderTemplate
# def get_user_info(request, offset):
# """ 获取用户信息及环境 """
# env_dic = {'online': 0, 'offline': 1}
# env = env_dic[offset]
# keyword = request.GET.get('keyword', '')
# user_info = get_session_user_info(request)
# user_id, username = user_info[0:2]
# dept_id, dept_name = user_info[3:5]
# ret = [request, keyword, env, username, dept_name]
#
# return ret
#
#
# def get_user_log(ret_list):
# """ 获取不同类型用户日志记录 """
# request, keyword, env, username, dept_name = ret_list
# post_all = Log.objects.filter(is_finished=env).order_by('-start_time')
# post_keyword_all = Log.objects.filter(Q(user__contains=keyword) |
# Q(host__contains=keyword)) \
# .filter(is_finished=env).order_by('-start_time')
#
# if keyword:
# posts = post_keyword_all
# else:
# posts = post_all
#
# return posts
def log_list(request, offset):
""" 显示日志 """
header_title, path1, path2 = u'查看日志', u'查看日志', u'在线用户'
keyword = request.GET.get('keyword', None)
# posts = get_user_log(get_user_info(request, offset))
if offset == 'online':
web_socket_host = CONF.get('websocket', 'web_socket_host')
posts = Log.objects.filter(is_finished=False).order_by('-start_time')
else:
posts = Log.objects.filter(is_finished=True).order_by('-start_time')
if keyword is not None:
date_seven_day = request.GET.get('start')
date_now_str = request.GET.get('end')
datetime_start = datetime.datetime.strptime(date_seven_day, '%m/%d/%Y')
datetime_end = datetime.datetime.strptime(date_now_str, '%m/%d/%Y')
print datetime_start, datetime_end
posts = posts.filter(start_time__gte=datetime_start).filter(start_time__lte=datetime_end).filter(
Q(user__icontains=keyword) | Q(host__icontains=keyword) | Q(remote_ip__icontains=keyword))
else:
date_now = datetime.datetime.now()
date_now_str = date_now.strftime('%m/%d/%Y')
date_seven_day = (date_now + datetime.timedelta(days=-7)).strftime('%m/%d/%Y')
contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
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_history(request):
""" 命令历史记录 """
log_id = request.GET.get('id', 0)
tty_logs = TtyLog.objects.filter(log_id=int(log_id)).order_by('datetime')
if tty_logs:
content = ''
for tty_log in tty_logs:
content += '%s: %s\n' % (tty_log.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), tty_log.cmd)
return HttpResponse(content)
else:
return HttpResponse('无日志记录, 请查看日志处理脚本是否开启!')
def log_record(request):
log_id = request.GET.get('id', 0)
log = Log.objects.filter(id=int(log_id))
if log:
log = log[0]
log_file = log.log_path + '.log'
log_time = log.log_path + '.time'
if os.path.isfile(log_file) and os.path.isfile(log_time):
content = renderTemplate(log_file, log_time)
return HttpResponse(content)
else:
return HttpResponse('无日志记录, 请查看日志处理脚本是否开启!')
def log_search(request):
print request.GET
return render_to_response('jlog/log_filter.html', locals())
# 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))