diff --git a/jasset/views.py b/jasset/views.py
index 64d5b848c..a33c6cfa9 100644
--- a/jasset/views.py
+++ b/jasset/views.py
@@ -13,9 +13,7 @@ from juser.models import UserGroup, DEPT
from connect import PyCrypt, KEY
from jlog.models import Log
from jumpserver.views import jasset_host_edit, pages
-from jumpserver.api import asset_perm_api, validate
-from jumpserver.api import require_login, require_super_user, \
- require_admin, is_group_admin, is_super_user, is_common_user, get_user_dept
+from jumpserver.api import *
cryptor = PyCrypt(KEY)
@@ -201,7 +199,11 @@ def list_host(request):
contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
elif is_common_user(request):
- pass
+ user_id = request.session.get('user_id')
+ username = User.objects.get(id=user_id).name
+ posts = user_perm_asset_api(username)
+ contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
+ print posts, username
return render_to_response('jasset/host_list.html', locals(), context_instance=RequestContext(request))
@@ -212,6 +214,7 @@ def host_del(request, offset):
for i in range(int(len_list)):
key = "id_list[" + str(i) + "]"
jid = request.POST.get(key)
+ print jid
if is_group_admin(request) and not validate(request, asset=[jid]):
emg = u'删除失败,您无权操作!'
return HttpResponseRedirect('/jasset/host_list/')
diff --git a/jlog/views.py b/jlog/views.py
index 59a448b93..33d32b83c 100644
--- a/jlog/views.py
+++ b/jlog/views.py
@@ -45,7 +45,12 @@ def log_list_online(request):
contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
elif is_common_user(request):
- posts = Log.objects.filter(is_finished=0).filter(user=username).order_by('-start_time')
+ if keyword:
+ posts = Log.objects.filter(user=username).filter(Q(user__contains=keyword) | Q(host__contains=keyword))\
+ .filter(is_finished=0).order_by('-start_time')
+ else:
+ posts = Log.objects.filter(is_finished=0).filter(user=username).order_by('-start_time')
+ contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
return render_to_response('jlog/log_online.html', locals(), context_instance=RequestContext(request))
@@ -75,8 +80,12 @@ def log_list_offline(request):
contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
elif is_common_user(request):
- posts = Log.objects.filter(is_finished=1).filter(user=username).order_by('-start_time')
-
+ if keyword:
+ posts = Log.objects.filter(user=username).filter(Q(user__contains=keyword) | Q(host__contains=keyword))\
+ .filter(is_finished=1).order_by('-start_time')
+ else:
+ posts = Log.objects.filter(is_finished=1).filter(user=username).order_by('-start_time')
+ contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
return render_to_response('jlog/log_offline.html', locals(), context_instance=RequestContext(request))
@@ -105,6 +114,8 @@ def log_search(request):
env = request.GET.get('env')
dept_id = get_user_dept(request)
dept_name = DEPT.objects.get(id=dept_id).name
+ user_id = request.session.get('user_id')
+ username = User.objects.get(id=user_id).username
if is_super_user(request):
if env == 'online':
posts = contact_list = Log.objects.filter(Q(user__contains=keyword) | Q(host__contains=keyword)) \
@@ -122,4 +133,13 @@ def log_search(request):
posts = contact_list = Log.objects.filter(Q(user__contains=keyword) | Q(host__contains=keyword)) \
.filter(is_finished=1).filter(dept_name=dept_name).order_by('-start_time')
contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
+
+ elif is_common_user(request):
+ if env == 'online':
+ posts = contact_list = Log.objects.filter(Q(user__contains=keyword) | Q(host__contains=keyword)) \
+ .filter(is_finished=0).filter(user=username).order_by('-start_time')
+ elif env == 'offline':
+ posts = contact_list = Log.objects.filter(Q(user__contains=keyword) | Q(host__contains=keyword)) \
+ .filter(is_finished=1).filter(user=username).order_by('-start_time')
+ 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/jperm/models.py b/jperm/models.py
index 624df9743..6cfcceb76 100644
--- a/jperm/models.py
+++ b/jperm/models.py
@@ -1,3 +1,5 @@
+import datetime
+
from django.db import models
from juser.models import UserGroup, DEPT
from jasset.models import Asset, BisGroup
@@ -30,4 +32,18 @@ class SudoPerm(models.Model):
comment = models.CharField(max_length=30, null=True, blank=True)
def __unicode__(self):
- return self.name
\ No newline at end of file
+ return self.name
+
+
+class Apply(models.Model):
+ applyer = models.CharField(max_length=20)
+ approver = models.CharField(max_length=20)
+ dept = models.CharField(max_length=20)
+ bisgroup = models.CharField(max_length=500)
+ asset = models.CharField(max_length=500)
+ comment = models.TextField(blank=True, null=True)
+ date_add = models.DateTimeField(default=datetime.datetime.now(), null=True)
+ date_end = models.DateTimeField(null=True)
+
+ def __unicode__(self):
+ return self.applyer
diff --git a/jperm/urls.py b/jperm/urls.py
index 624f0bcca..9a840afe4 100644
--- a/jperm/urls.py
+++ b/jperm/urls.py
@@ -24,4 +24,6 @@ urlpatterns = patterns('jperm.views',
(r'^cmd_list/$', 'cmd_list'),
(r'^cmd_del/$', 'cmd_del'),
(r'^cmd_edit/$', 'cmd_edit'),
+ (r'^apply/$', 'perm_apply'),
+ (r'^apply/online/$', 'perm_apply_log'),
)
diff --git a/jperm/views.py b/jperm/views.py
index 99a39f33b..0308af278 100644
--- a/jperm/views.py
+++ b/jperm/views.py
@@ -5,7 +5,7 @@ from django.http import HttpResponseRedirect, HttpResponse
from django.template import RequestContext
from juser.models import User, UserGroup, DEPT
from jasset.models import Asset, BisGroup
-from jperm.models import Perm, SudoPerm, CmdGroup
+from jperm.models import Perm, SudoPerm, CmdGroup, Apply
from django.core.paginator import Paginator, EmptyPage, InvalidPage
from django.db.models import Q
from jumpserver.views import LDAP_ENABLE, ldap_conn, CONF, page_list_return, pages
@@ -525,3 +525,60 @@ def cmd_del(request):
if cmd_group:
cmd_group[0].delete()
return HttpResponseRedirect('/jperm/cmd_list/')
+
+
+@require_login
+def perm_apply(request):
+ header_title, path1, path2 = u'主机权限申请', u'权限管理', u'申请主机'
+ user_id = request.session.get('user_id')
+ username = User.objects.get(id=user_id).username
+ dept_id = get_user_dept(request)
+ deptname = DEPT.objects.get(id=dept_id).name
+ dept = DEPT.objects.get(id=dept_id)
+ posts = Asset.objects.filter(dept=dept)
+ egroup = dept.bisgroup_set.all()
+
+ if request.method == 'POST':
+ applyer = request.POST.get('applyer')
+ dept = request.POST.get('dept')
+ group = request.POST.getlist('group')
+ hosts = request.POST.getlist('hosts')
+ comment = request.POST.get('comment')
+
+ Apply.objects.create(applyer=applyer, dept=dept, bisgroup=group, asset=hosts, comment=comment)
+ print applyer, dept, group, hosts, comment
+ return render_to_response('jperm/perm_apply.html', locals(), context_instance=RequestContext(request))
+ return render_to_response('jperm/perm_apply.html', locals(), context_instance=RequestContext(request))
+
+
+def perm_apply_log(request):
+ header_title, path1, path2 = u'权限申请记录', u'权限管理', u'申请记录'
+ keyword = request.GET.get('keyword')
+ dept_id = get_user_dept(request)
+ dept_name = DEPT.objects.get(id=dept_id).name
+ user_id = request.session.get('user_id')
+ username = User.objects.get(id=user_id).username
+ if is_super_user(request):
+ if keyword:
+ posts = Log.objects.filter(Q(user__contains=keyword) | Q(host__contains=keyword)) \
+ .filter(is_finished=1).order_by('-start_time')
+ else:
+ posts = Log.objects.filter(is_finished=1).order_by('-start_time')
+ contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
+
+ elif is_group_admin(request):
+ if keyword:
+ posts = Log.objects.filter(Q(user__contains=keyword) | Q(host__contains=keyword)) \
+ .filter(is_finished=1).filter(dept_name=dept_name).order_by('-start_time')
+ else:
+ posts = Log.objects.filter(is_finished=1).filter(dept_name=dept_name).order_by('-start_time')
+ contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
+
+ elif is_common_user(request):
+ if keyword:
+ posts = Apply.objects.filter(applyer=username).filter(Q(applyer__contains=keyword) | Q(asset__contains=keyword))\
+ .order_by('-date_add')
+ else:
+ posts = Apply.objects.filter(applyer=username).order_by('-date_add')
+ contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
+ return render_to_response('jperm/perm_log.html', locals(), context_instance=RequestContext(request))
diff --git a/templates/jasset/host_list.html b/templates/jasset/host_list.html
index cb75b3c3d..c57546abf 100644
--- a/templates/jasset/host_list.html
+++ b/templates/jasset/host_list.html
@@ -76,8 +76,10 @@
{{ post.comment }} |
详情
- 编辑
- 删除
+ {% ifnotequal session_role_id 0 %}
+ 编辑
+ 删除
+ {% endifnotequal %}
|
{% endfor %}
diff --git a/templates/jlog/log_offline.html b/templates/jlog/log_offline.html
index 970f8ac6d..c859024d0 100644
--- a/templates/jlog/log_offline.html
+++ b/templates/jlog/log_offline.html
@@ -80,7 +80,9 @@
所属部门 |
登录主机 |
来源IP |
- 命令统计 |
+ {% ifnotequal session_role_id 0 %}
+ 命令统计 |
+ {% endifnotequal %}
登录时间 |
结束时间 |
@@ -93,7 +95,9 @@
{{ post.dept_name }} |
{{ post.host }} |
{{ post.remote_ip }} |
- 命令统计 |
+ {% ifnotequal session_role_id 0 %}
+ 命令统计 |
+ {% endifnotequal %}
{{ post.start_time|date:"Y-m-d H:i:s"}} |
{{ post.end_time|date:"Y-m-d H:i:s" }} |
diff --git a/templates/jlog/log_online.html b/templates/jlog/log_online.html
index 6945e60b3..c63408ac2 100644
--- a/templates/jlog/log_online.html
+++ b/templates/jlog/log_online.html
@@ -80,8 +80,10 @@
所属部门 |
登录主机 |
来源IP |
- 实时监控 |
- 阻断 |
+ {% ifnotequal session_role_id 0 %}
+ 实时监控 |
+ 阻断 |
+ {% endifnotequal %}
登录时间 |
@@ -93,8 +95,10 @@
{{ post.dept_name }} |
{{ post.host }} |
{{ post.remote_ip }} |
- 监控 |
- |
+ {% ifnotequal session_role_id 0 %}
+ 监控 |
+ |
+ {% endifnotequal %}
{{ post.start_time|date:"Y-m-d H:i:s" }} |
{% endfor %}
diff --git a/templates/jlog/user_history.html b/templates/jlog/user_history.html
new file mode 100644
index 000000000..4e166b52e
--- /dev/null
+++ b/templates/jlog/user_history.html
@@ -0,0 +1,163 @@
+{% extends 'base.html' %}
+{% block content %}
+{% include 'nav_cat_bar.html' %}
+
+
+
+
+
+
+
+
用户{{ username }}日志详细信息列表
+
+
+
+
+
+
+
+
+
+
+ 用户名 |
+ 所属部门 |
+ 登录主机 |
+ 来源IP |
+
+ 登录时间 |
+ 结束时间 |
+
+
+
+
+ {% for post in contacts.object_list %}
+
+ {{ post.user }} |
+ {{ post.dept_name }} |
+ {{ post.host }} |
+ {{ post.remote_ip }} |
+
+ {{ post.start_time|date:"Y-m-d H:i:s"}} |
+ {{ post.end_time|date:"Y-m-d H:i:s" }} |
+
+ {% endfor %}
+
+
+
+
+
+ {% include 'paginator.html' %}
+
+
+
+
+
+
+
+
+
+{##}
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_apply.html b/templates/jperm/perm_apply.html
new file mode 100644
index 000000000..181e176cf
--- /dev/null
+++ b/templates/jperm/perm_apply.html
@@ -0,0 +1,127 @@
+{% extends 'base.html' %}
+{% block content %}
+{% include 'nav_cat_bar.html' %}
+
+
+
+
+
+
+
+
+ {% if emg %}
+
{{ emg }}
+ {% endif %}
+ {% if smg %}
+
{{ smg }}
+ {% endif %}
+
+
+
+
+
+
+
+{% endblock content %}
\ No newline at end of file
diff --git a/templates/jperm/perm_log.html b/templates/jperm/perm_log.html
new file mode 100644
index 000000000..3b71002e6
--- /dev/null
+++ b/templates/jperm/perm_log.html
@@ -0,0 +1,93 @@
+{% extends 'base.html' %}
+{% block content %}
+{% include 'nav_cat_bar.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请人 |
+ 所属部门 |
+ 申请主机组 |
+ 申请主机 |
+ 申请时间 |
+ 批准时间 |
+ 备注 |
+
+
+
+
+ {% for post in contacts.object_list %}
+
+ {{ post.applyer }} |
+ {{ post.dept }} |
+ {{ post.bisgroup }} |
+ {{ post.asset }} |
+
+
+
+ {{ post.date_add|date:"Y-m-d H:i:s"}} |
+ {{ post.date_end|date:"Y-m-d H:i:s" }} |
+ {{ post.comment }} |
+
+ {% endfor %}
+
+
+
+
+
+ {% include 'paginator.html' %}
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/nav.html b/templates/nav.html
index b3aecd104..93cb66523 100644
--- a/templates/nav.html
+++ b/templates/nav.html
@@ -137,14 +137,18 @@
个人信息
-
- 查看主机
+
+ 查看主机
-
- 申请主机
+
+ 权限申请
+
-
- 登录历史
+
+ 登录历史