From d05e9d0b45ac135729e2b2f433c3eccc96320189 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 9 May 2016 18:53:04 +0800 Subject: [PATCH 1/4] =?UTF-8?q?modify(jperm)=20=E6=8E=88=E6=9D=83=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=A8=A1=E7=B3=8A=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改授权规则搜索为模糊搜索 --- jperm/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jperm/views.py b/jperm/views.py index 6e7036098..f546079c2 100644 --- a/jperm/views.py +++ b/jperm/views.py @@ -38,7 +38,7 @@ def perm_rule_list(request): rules_list = rules_list.filter(id=rule_id) if keyword: - rules_list = rules_list.filter(Q(name=keyword)) + rules_list = rules_list.filter(Q(name__icontains=keyword)) rules_list, p, rules, page_range, current_page, show_first, show_end = pages(rules_list, request) From fed00d04a6e28b24b0363cf22eb35b4f2c35d941 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 9 May 2016 20:19:01 +0800 Subject: [PATCH 2/4] fix(cli nav align) Max Hostname length 30, else will be truncate. --- connect.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/connect.py b/connect.py index bb7af929c..ac8010c32 100755 --- a/connect.py +++ b/connect.py @@ -508,16 +508,30 @@ class Nav(object): # 如果没有输入就展现所有 self.search_result = self.perm_assets + @staticmethod + def truncate_str(str_, length=30): + str_ = str_.decode('utf-8') + if len(str_) > length: + return str_[:14] + '..' + str_[-14:] + else: + return str_ + + @staticmethod + def get_max_asset_property_length(assets, property_='hostname'): + return max([len(getattr(asset, property_)) for asset in assets]) + def print_search_result(self): - color_print('[%-3s] %-12s %-15s %-5s %-10s %s' % ('ID', '主机名', 'IP', '端口', '系统用户', '备注'), 'title') + hostname_max_length = self.get_max_asset_property_length(self.search_result) + line = '[%-3s] %-16s %-5s %-' + str(hostname_max_length) + 's %-10s %s' + color_print(line % ('ID', 'IP', 'Port', 'Hostname', 'SysUser', 'Comment'), 'title') if hasattr(self.search_result, '__iter__'): for index, asset in enumerate(self.search_result): # 获取该资产信息 asset_info = get_asset_info(asset) # 获取该资产包含的角色 role = [str(role.name) for role in self.user_perm.get('asset').get(asset).get('role')] - print '[%-3s] %-15s %-15s %-5s %-10s %s' % (index, asset.hostname, asset.ip, asset_info.get('port'), - role, asset.comment) + print line % (index, asset.ip, asset_info.get('port'), + self.truncate_str(asset.hostname), str(role).replace("'", ''), asset.comment) print def try_connect(self): From 5fab276c2695dd9986955d74beb2049c4cecd373 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 10 May 2016 12:19:54 +0800 Subject: [PATCH 3/4] fix(jperm) fix jperm role detail list. * 1. Add a window to list pushed error asset * 2. Fix old bug for pagninator --- jperm/views.py | 3 + templates/jperm/perm_role_detail.html | 310 ++++++++++++++++---------- templates/jperm/perm_role_list.html | 4 +- templates/jperm/perm_rule_list.html | 2 +- templates/jperm/perm_sudo_list.html | 2 +- 5 files changed, 197 insertions(+), 124 deletions(-) diff --git a/jperm/views.py b/jperm/views.py index f546079c2..a8941af30 100644 --- a/jperm/views.py +++ b/jperm/views.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals from django.db.models import Q from django.http import HttpResponseBadRequest, HttpResponseNotAllowed from paramiko import SSHException +from collections import OrderedDict from jperm.perm_api import * from juser.models import User, UserGroup @@ -16,6 +17,7 @@ from jperm.ansible_api import MyTask from jperm.perm_api import get_role_info, get_role_push_host from jumpserver.api import my_render, get_object, CRYPTOR + # 设置PERM APP Log from jumpserver.api import logger #logger = set_log(LOG_LEVEL, filename='jumpserver_perm.log') @@ -416,6 +418,7 @@ def perm_role_detail(request): users = role_info.get("users") user_groups = role_info.get("user_groups") pushed_asset, need_push_asset = get_role_push_host(get_object(PermRole, id=role_id)) + except ServerError, e: logger.warning(e) diff --git a/templates/jperm/perm_role_detail.html b/templates/jperm/perm_role_detail.html index ad21cc928..168fb2adf 100644 --- a/templates/jperm/perm_role_detail.html +++ b/templates/jperm/perm_role_detail.html @@ -30,13 +30,15 @@
- - - +
时间名称
+ + {% for rule in rules %} - - + + {% endfor %}
时间名称
{{ rule.date_added | date:"Y-m-d H:i:s"}} {{ rule.name }} {{ rule.date_added | date:"Y-m-d H:i:s" }} {{ rule.name }} +
@@ -44,8 +46,7 @@
- -
+
授权用户/用户组 @@ -68,37 +69,39 @@
-
- - - - - - -
用户用户组
- +
+
+ + + + - + +
用户用户组
+ {% for user in users %} - + {% endfor %} -
{{ user.name }} + {{ user.name }} +
-
- +
+
+ {% for group in user_groups %} - + {% endfor %} -
{{ group.name }} + {{ group.name }} +
-
+
-
+ + +
- - -
+
授权主机组/主机组 @@ -122,26 +125,30 @@
- +
@@ -150,9 +157,70 @@ - -
-
+
+
+
+ {{ role.name }} - 推送失败主机 + +
+
+
+
+
主机 主机组
- {% for asset in assets %} - - - - {% endfor %} + {% for asset in assets %} + + + + {% endfor %}
{{ asset.ip }}
+ {{ asset.ip }} +
- {% for group in asset_groups %} - - - - {% endfor %} + {% for group in asset_groups %} + + + + {% endfor %}
{{ group.name }}
+ {{ group.name }} +
+ 删除 + 重新推送 + + + + + + + + + + + {% for asset, info in pushed_asset.items %} + {% if not info.success %} + + + + + {% if info.success %} + + {% else %} + + {% endif %} + + + {% endif %} + {% endfor %} + +
+ + 主机密钥结果操作
+ + {{ asset.hostname }} {{ info.key | yesno:"是,否,未知" }} {{ info.success | yesno:"成功,失败,未知" }} {{ info.success | yesno:"成功,失败,未知" }}
+
+
+
+ + +
{{ role.name }} - 推送主机 @@ -177,20 +245,20 @@
- +
删除 重新推送 - - - - - - - - + + + + + + + {% for asset, info in pushed_asset.items %} @@ -200,13 +268,19 @@ - {% if info.success %} - + {% else %} - + {% endif %} - + {% endfor %} @@ -215,9 +289,7 @@ - -
{{ role.name }} - 未推送主机 @@ -236,16 +308,17 @@
-
- - 主机密钥密码结果操作
+ + 主机密钥结果操作
{{ asset.hostname }} {{ info.key | yesno:"是,否,未知" }} {{ info.password | yesno:"是,否,未知" }} {{ info.success | yesno:"成功,失败,未知" }} {{ info.success | yesno:"成功,失败,未知" }} {{ info.success | yesno:"成功,失败,未知" }} {{ info.success | yesno:"成功,失败,未知" }} + + +
+
推送 - - - - - + + + + + {% for asset in need_push_asset %} @@ -272,66 +345,65 @@ {% endblock %} {% block self_footer_js %} - + }) + {% endblock %} \ No newline at end of file diff --git a/templates/jperm/perm_role_list.html b/templates/jperm/perm_role_list.html index b371880ac..ff8883176 100644 --- a/templates/jperm/perm_role_list.html +++ b/templates/jperm/perm_role_list.html @@ -70,7 +70,7 @@
- Showing {{ users.start_index }} to {{ users.end_index }} of {{ p.count }} entries + Showing {{ roles.start_index }} to {{ roles.end_index }} of {{ p.count }} entries
{% include 'paginator.html' %} @@ -80,8 +80,6 @@
- -
- - 主机IP
+ + 主机IP