diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index 4295b2618..052d70e31 100644 --- a/apps/assets/api/node.py +++ b/apps/assets/api/node.py @@ -34,7 +34,7 @@ __all__ = [ 'NodeAddAssetsApi', 'NodeRemoveAssetsApi', 'NodeReplaceAssetsApi', 'NodeAddChildrenApi', 'RefreshNodeHardwareInfoApi', 'TestNodeConnectiveApi', 'NodeListAsTreeApi', - 'NodeChildrenAsTreeApi', + 'NodeChildrenAsTreeApi', 'RefreshAssetsAmount', ] @@ -275,3 +275,12 @@ class TestNodeConnectiveApi(APIView): task_name = _("Test if the assets under the node are connectable: {}".format(node.name)) task = test_asset_connectivity_util.delay(assets, task_name=task_name) return Response({"task": task.id}) + + +class RefreshAssetsAmount(APIView): + permission_classes = (IsOrgAdmin,) + model = Node + + def get(self, request, *args, **kwargs): + self.model.expire_nodes_assets_amount() + return Response("Ok") diff --git a/apps/assets/templates/assets/asset_create.html b/apps/assets/templates/assets/asset_create.html index 40af1b5f3..7a32264cc 100644 --- a/apps/assets/templates/assets/asset_create.html +++ b/apps/assets/templates/assets/asset_create.html @@ -95,9 +95,12 @@ $(document).ready(function () { if(protocol === 'rdp'){ port = 3389; } - if(protocol === 'telnet (beta)'){ + else if(protocol === 'telnet (beta)'){ port = 23; } + else if(protocol === 'vnc'){ + port = 5901; + } $("#id_port").val(port); }); }) diff --git a/apps/assets/templates/assets/asset_list.html b/apps/assets/templates/assets/asset_list.html index c3c3a7ede..c560c8e6b 100644 --- a/apps/assets/templates/assets/asset_list.html +++ b/apps/assets/templates/assets/asset_list.html @@ -133,6 +133,8 @@
  • + +
  • {#
  • {% trans 'Refresh' %}
  • #} @@ -558,6 +560,15 @@ $(document).ready(function(){ hideRMenu(); }) +.on('click', '#menu_refresh_assets_amount', function () { + hideRMenu(); + var url = "{% url 'api-assets:refresh-assets-amount' %}"; + APIUpdateAttr({ + 'url': url, + 'method': 'GET' + }); + window.location.reload(); +}) .on('click', '.btn_asset_delete', function () { var $this = $(this); var $data_table = $("#asset_list_table").DataTable(); @@ -724,6 +735,7 @@ $(document).ready(function(){ }).on('click', '#menu_asset_move', function () { update_node_action = "move" }) + {% endblock %} \ No newline at end of file diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py index ca426a833..4aceda2e8 100644 --- a/apps/assets/urls/api_urls.py +++ b/apps/assets/urls/api_urls.py @@ -74,6 +74,8 @@ urlpatterns = [ api.RefreshNodeHardwareInfoApi.as_view(), name='node-refresh-hardware-info'), path('nodes//test-connective/', api.TestNodeConnectiveApi.as_view(), name='node-test-connective'), + path('nodes/refresh-assets-amount/', + api.RefreshAssetsAmount.as_view(), name='refresh-assets-amount'), path('gateway//test-connective/', api.GatewayTestConnectionApi.as_view(), name='test-gateway-connective'), diff --git a/apps/common/api.py b/apps/common/api.py index d0512ebca..4aa8f82ce 100644 --- a/apps/common/api.py +++ b/apps/common/api.py @@ -104,7 +104,11 @@ class ReplayStorageCreateAPI(APIView): data = {storage_name: storage_data} if not self.is_valid(storage_data): - return Response({"error": _("Error: Account invalid")}, status=401) + return Response({ + "error": _("Error: Account invalid (Please make sure the " + "information such as Access key or Secret key is correct)")}, + status=401 + ) Setting.save_storage('TERMINAL_REPLAY_STORAGE', data) return Response({"msg": _('Create succeed')}, status=200) @@ -136,7 +140,11 @@ class CommandStorageCreateAPI(APIView): storage_name = storage_data.pop('NAME') data = {storage_name: storage_data} if not self.is_valid(storage_data): - return Response({"error": _("Error: Account invalid")}, status=401) + return Response( + {"error": _("Error: Account invalid (Please make sure the " + "information such as Access key or Secret key is correct)")}, + status=401 + ) Setting.save_storage('TERMINAL_COMMAND_STORAGE', data) return Response({"msg": _('Create succeed')}, status=200) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 154e0a521..a6518874e 100644 Binary files a/apps/locale/zh/LC_MESSAGES/django.mo and b/apps/locale/zh/LC_MESSAGES/django.mo differ diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 667dc3922..a4cc97988 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-12-19 18:28+0800\n" +"POT-Creation-Date: 2018-12-26 13:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -32,8 +32,8 @@ msgstr "测试节点下资产是否可连接: {}" msgid "Nodes" msgstr "节点管理" -#: assets/forms/asset.py:30 assets/forms/asset.py:69 assets/forms/asset.py:112 -#: assets/forms/asset.py:116 assets/models/asset.py:84 +#: assets/forms/asset.py:30 assets/forms/asset.py:66 assets/forms/asset.py:105 +#: assets/forms/asset.py:109 assets/models/asset.py:84 #: assets/models/cluster.py:19 assets/models/user.py:91 #: assets/templates/assets/asset_detail.html:77 templates/_nav.html:24 #: xpack/plugins/cloud/models.py:124 @@ -42,7 +42,7 @@ msgstr "节点管理" msgid "Admin user" msgstr "管理用户" -#: assets/forms/asset.py:33 assets/forms/asset.py:72 assets/forms/asset.py:128 +#: assets/forms/asset.py:33 assets/forms/asset.py:69 assets/forms/asset.py:121 #: assets/templates/assets/asset_create.html:36 #: assets/templates/assets/asset_create.html:38 #: assets/templates/assets/asset_list.html:81 @@ -53,7 +53,7 @@ msgstr "管理用户" msgid "Label" msgstr "标签" -#: assets/forms/asset.py:37 assets/forms/asset.py:76 assets/models/asset.py:79 +#: assets/forms/asset.py:37 assets/forms/asset.py:73 assets/models/asset.py:79 #: assets/models/domain.py:26 assets/models/domain.py:52 #: assets/templates/assets/asset_detail.html:81 #: assets/templates/assets/user_asset_list.html:157 @@ -61,11 +61,11 @@ msgstr "标签" msgid "Domain" msgstr "网域" -#: assets/forms/asset.py:41 assets/forms/asset.py:66 assets/forms/asset.py:80 -#: assets/forms/asset.py:131 assets/models/node.py:31 +#: assets/forms/asset.py:41 assets/forms/asset.py:63 assets/forms/asset.py:77 +#: assets/forms/asset.py:124 assets/models/node.py:31 #: assets/templates/assets/asset_create.html:30 -#: assets/templates/assets/asset_update.html:35 perms/forms.py:37 -#: perms/forms.py:44 perms/models.py:79 +#: assets/templates/assets/asset_update.html:35 perms/forms.py:45 +#: perms/forms.py:52 perms/models.py:79 #: perms/templates/perms/asset_permission_list.html:57 #: perms/templates/perms/asset_permission_list.html:117 #: xpack/plugins/cloud/models.py:123 @@ -74,7 +74,7 @@ msgstr "网域" msgid "Node" msgstr "节点" -#: assets/forms/asset.py:48 assets/forms/asset.py:88 +#: assets/forms/asset.py:45 assets/forms/asset.py:81 msgid "" "root or other NOPASSWD sudo privilege user existed in asset,If asset is " "windows or other set any one, more see admin user left menu" @@ -82,28 +82,28 @@ msgstr "" "root或其他拥有NOPASSWD: ALL权限的用户, 如果是windows或其它硬件可以随意设置一" "个, 更多信息查看左侧 `管理用户` 菜单" -#: assets/forms/asset.py:51 assets/forms/asset.py:91 +#: assets/forms/asset.py:48 assets/forms/asset.py:84 msgid "Windows 2016 RDP protocol is different, If is window 2016, set it" msgstr "Windows 2016的RDP协议与之前不同,如果是请设置" -#: assets/forms/asset.py:52 assets/forms/asset.py:92 +#: assets/forms/asset.py:49 assets/forms/asset.py:85 msgid "" "If your have some network not connect with each other, you can set domain" msgstr "如果有多个的互相隔离的网络,设置资产属于的网域,使用网域网关跳转登录" -#: assets/forms/asset.py:99 assets/forms/asset.py:103 assets/forms/domain.py:17 +#: assets/forms/asset.py:92 assets/forms/asset.py:96 assets/forms/domain.py:17 #: assets/forms/label.py:15 #: perms/templates/perms/asset_permission_asset.html:88 msgid "Select assets" msgstr "选择资产" -#: assets/forms/asset.py:108 assets/models/asset.py:77 +#: assets/forms/asset.py:101 assets/models/asset.py:77 #: assets/models/domain.py:50 assets/templates/assets/admin_user_assets.html:50 #: assets/templates/assets/asset_detail.html:69 #: assets/templates/assets/domain_gateway_list.html:58 #: assets/templates/assets/system_user_asset.html:52 #: assets/templates/assets/user_asset_list.html:152 -#: common/templates/common/replay_storage_create.html:60 +#: common/templates/common/replay_storage_create.html:59 msgid "Port" msgstr "端口" @@ -114,9 +114,9 @@ msgstr "端口" #: assets/templates/assets/label_list.html:16 #: assets/templates/assets/system_user_list.html:33 audits/models.py:18 #: audits/templates/audits/ftp_log_list.html:41 -#: audits/templates/audits/ftp_log_list.html:71 perms/forms.py:34 +#: audits/templates/audits/ftp_log_list.html:71 perms/forms.py:42 #: perms/models.py:31 -#: perms/templates/perms/asset_permission_create_update.html:40 +#: perms/templates/perms/asset_permission_create_update.html:45 #: perms/templates/perms/asset_permission_list.html:56 #: perms/templates/perms/asset_permission_list.html:114 #: terminal/backends/command/models.py:13 terminal/models.py:140 @@ -130,11 +130,11 @@ msgstr "端口" msgid "Asset" msgstr "资产" -#: assets/forms/domain.py:46 +#: assets/forms/domain.py:51 msgid "Password should not contain special characters" msgstr "不能包含特殊字符" -#: assets/forms/domain.py:63 assets/forms/user.py:80 assets/forms/user.py:146 +#: assets/forms/domain.py:70 assets/forms/user.py:80 assets/forms/user.py:142 #: assets/models/base.py:22 assets/models/cluster.py:18 #: assets/models/cmd_filter.py:20 assets/models/domain.py:20 #: assets/models/group.py:20 assets/models/label.py:18 @@ -176,7 +176,7 @@ msgstr "不能包含特殊字符" msgid "Name" msgstr "名称" -#: assets/forms/domain.py:64 assets/forms/user.py:81 assets/forms/user.py:147 +#: assets/forms/domain.py:71 assets/forms/user.py:81 assets/forms/user.py:143 #: assets/models/base.py:23 assets/templates/assets/admin_user_detail.html:60 #: assets/templates/assets/admin_user_list.html:27 #: assets/templates/assets/domain_gateway_list.html:60 @@ -221,21 +221,21 @@ msgstr "ssh密钥不合法" msgid "Password and private key file must be input one" msgstr "密码和私钥, 必须输入一个" -#: assets/forms/user.py:134 +#: assets/forms/user.py:130 msgid "* Automatic login mode must fill in the username." msgstr "自动登录模式,必须填写用户名" -#: assets/forms/user.py:149 assets/models/user.py:141 +#: assets/forms/user.py:145 assets/models/user.py:141 #: assets/templates/assets/_system_user.html:66 #: assets/templates/assets/system_user_detail.html:165 msgid "Command filter" msgstr "命令过滤器" -#: assets/forms/user.py:154 +#: assets/forms/user.py:149 msgid "Auto push system user to asset" msgstr "自动推送系统用户到资产" -#: assets/forms/user.py:155 +#: assets/forms/user.py:150 msgid "" "1-100, High level will be using login asset as default, if user was granted " "more than 2 system user" @@ -243,7 +243,7 @@ msgstr "" "1-100, 1最低优先级,100最高优先级。授权多个用户时,高优先级的系统用户将会作为" "默认登录用户" -#: assets/forms/user.py:157 +#: assets/forms/user.py:152 msgid "" "If you choose manual login mode, you do not need to fill in the username and " "password." @@ -628,16 +628,16 @@ msgstr "默认资产组" #: audits/templates/audits/password_change_log_list.html:33 #: audits/templates/audits/password_change_log_list.html:50 #: ops/templates/ops/command_execution_list.html:34 -#: ops/templates/ops/command_execution_list.html:59 perms/forms.py:28 +#: ops/templates/ops/command_execution_list.html:59 perms/forms.py:36 #: perms/models.py:29 -#: perms/templates/perms/asset_permission_create_update.html:36 +#: perms/templates/perms/asset_permission_create_update.html:41 #: perms/templates/perms/asset_permission_list.html:54 #: perms/templates/perms/asset_permission_list.html:108 templates/index.html:87 #: terminal/backends/command/models.py:12 terminal/models.py:139 #: terminal/templates/terminal/command_list.html:32 #: terminal/templates/terminal/command_list.html:72 #: terminal/templates/terminal/session_list.html:33 -#: terminal/templates/terminal/session_list.html:71 users/forms.py:314 +#: terminal/templates/terminal/session_list.html:71 users/forms.py:303 #: users/models/user.py:33 users/models/user.py:420 #: users/templates/users/user_group_detail.html:78 #: users/templates/users/user_group_list.html:13 users/views/user.py:386 @@ -715,7 +715,7 @@ msgstr "登录模式" #: assets/models/user.py:247 assets/templates/assets/user_asset_list.html:156 #: audits/models.py:19 audits/templates/audits/ftp_log_list.html:49 -#: audits/templates/audits/ftp_log_list.html:72 perms/forms.py:40 +#: audits/templates/audits/ftp_log_list.html:72 perms/forms.py:48 #: perms/models.py:33 perms/models.py:81 #: perms/templates/perms/asset_permission_detail.html:140 #: perms/templates/perms/asset_permission_list.html:58 @@ -734,68 +734,68 @@ msgstr "系统用户" msgid "%(value)s is not an even number" msgstr "%(value)s is not an even number" -#: assets/tasks.py:33 +#: assets/tasks.py:31 msgid "Asset has been disabled, skipped: {}" msgstr "资产或许不支持ansible, 跳过: {}" -#: assets/tasks.py:37 +#: assets/tasks.py:35 msgid "Asset may not be support ansible, skipped: {}" msgstr "资产或许不支持ansible, 跳过: {}" -#: assets/tasks.py:42 +#: assets/tasks.py:40 msgid "No assets matched, stop task" msgstr "没有匹配到资产,结束任务" -#: assets/tasks.py:67 +#: assets/tasks.py:65 msgid "Get asset info failed: {}" msgstr "获取资产信息失败:{}" -#: assets/tasks.py:117 +#: assets/tasks.py:115 msgid "Update some assets hardware info" msgstr "更新资产硬件信息" -#: assets/tasks.py:136 +#: assets/tasks.py:134 msgid "Update asset hardware info: {}" msgstr "更新资产硬件信息: {}" -#: assets/tasks.py:161 +#: assets/tasks.py:159 msgid "Test assets connectivity" msgstr "测试资产可连接性" -#: assets/tasks.py:185 +#: assets/tasks.py:183 msgid "Test assets connectivity: {}" msgstr "测试资产可连接性: {}" -#: assets/tasks.py:218 +#: assets/tasks.py:222 msgid "Test admin user connectivity period: {}" msgstr "定期测试管理账号可连接性: {}" -#: assets/tasks.py:224 +#: assets/tasks.py:228 msgid "Test admin user connectivity: {}" msgstr "测试管理行号可连接性: {}" -#: assets/tasks.py:262 +#: assets/tasks.py:266 msgid "Test system user connectivity: {}" msgstr "测试系统用户可连接性: {}" -#: assets/tasks.py:269 +#: assets/tasks.py:273 msgid "Test system user connectivity: {} => {}" msgstr "测试系统用户可连接性: {} => {}" -#: assets/tasks.py:282 +#: assets/tasks.py:286 msgid "Test system user connectivity period: {}" msgstr "定期测试系统用户可连接性: {}" -#: assets/tasks.py:354 +#: assets/tasks.py:358 msgid "" "Push system user task skip, auto push not enable or protocol is not ssh: {}" msgstr "推送系统用户任务跳过,自动推送没有打开,或协议不是ssh: {}" -#: assets/tasks.py:374 assets/tasks.py:388 +#: assets/tasks.py:378 assets/tasks.py:392 msgid "Push system users to assets: {}" msgstr "推送系统用户到入资产: {}" -#: assets/tasks.py:380 +#: assets/tasks.py:384 msgid "Push system users to asset: {} => {}" msgstr "推送系统用户到入资产: {} => {}" @@ -858,7 +858,7 @@ msgstr "资产列表" #: assets/templates/assets/asset_create.html:16 #: assets/templates/assets/asset_update.html:21 #: assets/templates/assets/gateway_create_update.html:37 -#: perms/templates/perms/asset_permission_create_update.html:33 +#: perms/templates/perms/asset_permission_create_update.html:38 msgid "Basic" msgstr "基本" @@ -878,7 +878,7 @@ msgstr "自动生成密钥" #: assets/templates/assets/asset_create.html:60 #: assets/templates/assets/asset_update.html:64 #: assets/templates/assets/gateway_create_update.html:53 -#: perms/templates/perms/asset_permission_create_update.html:45 +#: perms/templates/perms/asset_permission_create_update.html:50 #: terminal/templates/terminal/terminal_update.html:42 msgid "Other" msgstr "其它" @@ -894,13 +894,13 @@ msgstr "其它" #: assets/templates/assets/gateway_create_update.html:58 #: assets/templates/assets/label_create_update.html:18 #: common/templates/common/basic_setting.html:61 -#: common/templates/common/command_storage_create.html:80 +#: common/templates/common/command_storage_create.html:79 #: common/templates/common/email_setting.html:62 #: common/templates/common/ldap_setting.html:62 -#: common/templates/common/replay_storage_create.html:139 +#: common/templates/common/replay_storage_create.html:138 #: common/templates/common/security_setting.html:70 #: common/templates/common/terminal_setting.html:68 -#: perms/templates/perms/asset_permission_create_update.html:75 +#: perms/templates/perms/asset_permission_create_update.html:80 #: terminal/templates/terminal/terminal_update.html:47 #: users/templates/users/_user.html:50 #: users/templates/users/user_bulk_update.html:23 @@ -927,13 +927,13 @@ msgstr "重置" #: assets/templates/assets/gateway_create_update.html:59 #: assets/templates/assets/label_create_update.html:19 #: common/templates/common/basic_setting.html:62 -#: common/templates/common/command_storage_create.html:81 +#: common/templates/common/command_storage_create.html:80 #: common/templates/common/email_setting.html:63 #: common/templates/common/ldap_setting.html:63 -#: common/templates/common/replay_storage_create.html:140 +#: common/templates/common/replay_storage_create.html:139 #: common/templates/common/security_setting.html:71 #: common/templates/common/terminal_setting.html:70 -#: perms/templates/perms/asset_permission_create_update.html:76 +#: perms/templates/perms/asset_permission_create_update.html:81 #: terminal/templates/terminal/command_list.html:103 #: terminal/templates/terminal/session_list.html:127 #: terminal/templates/terminal/terminal_update.html:48 @@ -1008,7 +1008,7 @@ msgstr "测试" #: assets/templates/assets/admin_user_detail.html:24 #: assets/templates/assets/admin_user_list.html:88 #: assets/templates/assets/asset_detail.html:24 -#: assets/templates/assets/asset_list.html:175 +#: assets/templates/assets/asset_list.html:177 #: assets/templates/assets/cmd_filter_detail.html:29 #: assets/templates/assets/cmd_filter_list.html:57 #: assets/templates/assets/cmd_filter_rule_list.html:86 @@ -1040,7 +1040,7 @@ msgstr "更新" #: assets/templates/assets/admin_user_detail.html:28 #: assets/templates/assets/admin_user_list.html:89 #: assets/templates/assets/asset_detail.html:28 -#: assets/templates/assets/asset_list.html:176 +#: assets/templates/assets/asset_list.html:178 #: assets/templates/assets/cmd_filter_detail.html:33 #: assets/templates/assets/cmd_filter_list.html:58 #: assets/templates/assets/cmd_filter_rule_list.html:87 @@ -1082,7 +1082,7 @@ msgstr "选择节点" #: assets/templates/assets/admin_user_detail.html:100 #: assets/templates/assets/asset_detail.html:208 -#: assets/templates/assets/asset_list.html:624 +#: assets/templates/assets/asset_list.html:635 #: assets/templates/assets/cmd_filter_detail.html:106 #: assets/templates/assets/system_user_asset.html:112 #: assets/templates/assets/system_user_detail.html:182 @@ -1166,7 +1166,7 @@ msgstr "快速修改" #: assets/templates/assets/asset_detail.html:151 #: assets/templates/assets/user_asset_list.html:47 perms/models.py:34 #: perms/models.py:82 -#: perms/templates/perms/asset_permission_create_update.html:47 +#: perms/templates/perms/asset_permission_create_update.html:52 #: perms/templates/perms/asset_permission_detail.html:120 #: perms/templates/perms/asset_permission_list.html:59 #: terminal/templates/terminal/terminal_list.html:34 @@ -1272,34 +1272,38 @@ msgid "Test node connective" msgstr "测试节点资产可连接性" #: assets/templates/assets/asset_list.html:136 +msgid "Refresh all node assets amount" +msgstr "刷新所有节点资产数量" + +#: assets/templates/assets/asset_list.html:138 msgid "Display only current node assets" msgstr "仅显示当前节点资产" -#: assets/templates/assets/asset_list.html:137 +#: assets/templates/assets/asset_list.html:139 msgid "Displays all child node assets" msgstr "显示所有子节点资产" -#: assets/templates/assets/asset_list.html:214 +#: assets/templates/assets/asset_list.html:216 msgid "Create node failed" msgstr "创建节点失败" -#: assets/templates/assets/asset_list.html:226 +#: assets/templates/assets/asset_list.html:228 msgid "Have child node, cancel" msgstr "存在子节点,不能删除" -#: assets/templates/assets/asset_list.html:228 +#: assets/templates/assets/asset_list.html:230 msgid "Have assets, cancel" msgstr "存在资产,不能删除" -#: assets/templates/assets/asset_list.html:299 +#: assets/templates/assets/asset_list.html:301 msgid "Rename success" msgstr "重命名成功" -#: assets/templates/assets/asset_list.html:300 +#: assets/templates/assets/asset_list.html:302 msgid "Rename failed, do not change the root node name" msgstr "重命名失败,不能更改root节点的名称" -#: assets/templates/assets/asset_list.html:618 +#: assets/templates/assets/asset_list.html:629 #: assets/templates/assets/system_user_list.html:137 #: users/templates/users/user_detail.html:380 #: users/templates/users/user_detail.html:406 @@ -1309,11 +1313,11 @@ msgstr "重命名失败,不能更改root节点的名称" msgid "Are you sure?" msgstr "你确认吗?" -#: assets/templates/assets/asset_list.html:619 +#: assets/templates/assets/asset_list.html:630 msgid "This will delete the selected assets !!!" msgstr "删除选择资产" -#: assets/templates/assets/asset_list.html:622 +#: assets/templates/assets/asset_list.html:633 #: assets/templates/assets/system_user_list.html:141 #: common/templates/common/terminal_setting.html:163 #: users/templates/users/user_detail.html:384 @@ -1326,16 +1330,16 @@ msgstr "删除选择资产" msgid "Cancel" msgstr "取消" -#: assets/templates/assets/asset_list.html:628 +#: assets/templates/assets/asset_list.html:639 msgid "Asset Deleted." msgstr "已被删除" -#: assets/templates/assets/asset_list.html:629 -#: assets/templates/assets/asset_list.html:634 +#: assets/templates/assets/asset_list.html:640 +#: assets/templates/assets/asset_list.html:645 msgid "Asset Delete" msgstr "删除" -#: assets/templates/assets/asset_list.html:633 +#: assets/templates/assets/asset_list.html:644 msgid "Asset Deleting failed." msgstr "删除失败" @@ -1738,7 +1742,7 @@ msgstr "Agent" msgid "City" msgstr "城市" -#: audits/templates/audits/login_log_list.html:54 users/forms.py:172 +#: audits/templates/audits/login_log_list.html:54 users/forms.py:162 #: users/models/authentication.py:82 users/models/user.py:75 #: users/templates/users/first_login.html:45 msgid "MFA" @@ -1812,15 +1816,17 @@ msgstr "在ou:{}中没有匹配条目" msgid "Match {} s users" msgstr "匹配 {} 个用户" -#: common/api.py:107 common/api.py:139 -msgid "Error: Account invalid" -msgstr "" +#: common/api.py:108 common/api.py:144 +msgid "" +"Error: Account invalid (Please make sure the information such as Access key " +"or Secret key is correct)" +msgstr "错误:账户无效 (请确保 Access key 或 Secret key 等信息正确)" -#: common/api.py:110 common/api.py:142 +#: common/api.py:114 common/api.py:150 msgid "Create succeed" msgstr "创建成功" -#: common/api.py:128 common/api.py:162 +#: common/api.py:132 common/api.py:170 #: common/templates/common/terminal_setting.html:151 msgid "Delete succeed" msgstr "删除成功" @@ -1964,23 +1970,23 @@ msgstr "密钥认证" msgid "Heartbeat interval" msgstr "心跳间隔" -#: common/forms.py:148 ops/models/adhoc.py:38 +#: common/forms.py:149 ops/models/adhoc.py:38 msgid "Units: seconds" msgstr "单位: 秒" -#: common/forms.py:151 +#: common/forms.py:152 msgid "List sort by" msgstr "资产列表排序" -#: common/forms.py:154 +#: common/forms.py:155 msgid "List page size" msgstr "资产分页每页数量" -#: common/forms.py:157 +#: common/forms.py:158 msgid "Session keep duration" msgstr "会话保留时长" -#: common/forms.py:158 +#: common/forms.py:159 msgid "" "Units: days, Session, record, command will be delete if more than duration, " "only in database" @@ -1998,35 +2004,35 @@ msgid "" "for all users, including administrators)" msgstr "开启后,用户登录必须使用MFA二次认证(对所有用户有效,包括管理员)" -#: common/forms.py:180 +#: common/forms.py:179 msgid "Limit the number of login failures" msgstr "限制登录失败次数" -#: common/forms.py:185 +#: common/forms.py:183 msgid "No logon interval" msgstr "禁止登录时间间隔" -#: common/forms.py:187 +#: common/forms.py:185 msgid "" "Tip: (unit/minute) if the user has failed to log in for a limited number of " "times, no login is allowed during this time interval." msgstr "" "提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录" -#: common/forms.py:194 +#: common/forms.py:191 msgid "Connection max idle time" msgstr "SSH最大空闲时间" -#: common/forms.py:196 +#: common/forms.py:193 msgid "" "If idle time more than it, disconnect connection(only ssh now) Unit: minute" msgstr "提示:(单位:分)如果超过该配置没有操作,连接会被断开(仅ssh)" -#: common/forms.py:202 +#: common/forms.py:199 msgid "Password expiration time" msgstr "密码过期时间" -#: common/forms.py:205 +#: common/forms.py:202 msgid "" "Tip: (unit: day) If the user does not update the password during the time, " "the user password will expire failure;The password expiration reminder mail " @@ -2036,45 +2042,45 @@ msgstr "" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提醒邮件将在密码过期前5天内由系统(每天)自动发送给用户" -#: common/forms.py:214 +#: common/forms.py:211 msgid "Password minimum length" msgstr "密码最小长度 " -#: common/forms.py:220 +#: common/forms.py:215 msgid "Must contain capital letters" msgstr "必须包含大写字母" -#: common/forms.py:222 +#: common/forms.py:217 msgid "" "After opening, the user password changes and resets must contain uppercase " "letters" msgstr "开启后,用户密码修改、重置必须包含大写字母" -#: common/forms.py:228 +#: common/forms.py:222 msgid "Must contain lowercase letters" msgstr "必须包含小写字母" -#: common/forms.py:229 +#: common/forms.py:223 msgid "" "After opening, the user password changes and resets must contain lowercase " "letters" msgstr "开启后,用户密码修改、重置必须包含小写字母" -#: common/forms.py:235 +#: common/forms.py:228 msgid "Must contain numeric characters" msgstr "必须包含数字字符" -#: common/forms.py:236 +#: common/forms.py:229 msgid "" "After opening, the user password changes and resets must contain numeric " "characters" msgstr "开启后,用户密码修改、重置必须包含数字字符" -#: common/forms.py:242 +#: common/forms.py:234 msgid "Must contain special characters" msgstr "必须包含特殊字符" -#: common/forms.py:243 +#: common/forms.py:235 msgid "" "After opening, the user password changes and resets must contain special " "characters" @@ -2135,63 +2141,63 @@ msgstr "终端设置" msgid "Security setting" msgstr "安全设置" -#: common/templates/common/command_storage_create.html:50 +#: common/templates/common/command_storage_create.html:49 #: ops/models/adhoc.py:161 ops/templates/ops/adhoc_detail.html:53 #: ops/templates/ops/command_execution_list.html:58 #: ops/templates/ops/task_adhoc.html:59 ops/templates/ops/task_list.html:38 msgid "Hosts" msgstr "主机" -#: common/templates/common/command_storage_create.html:53 +#: common/templates/common/command_storage_create.html:52 msgid "Tips: If there are multiple hosts, separate them with a comma (,)" msgstr "提示: 如果有多台主机,请使用逗号 ( , ) 进行分割" -#: common/templates/common/command_storage_create.html:64 +#: common/templates/common/command_storage_create.html:63 msgid "Index" msgstr "索引" -#: common/templates/common/command_storage_create.html:71 +#: common/templates/common/command_storage_create.html:70 msgid "Doc type" msgstr "文档类型" -#: common/templates/common/replay_storage_create.html:53 +#: common/templates/common/replay_storage_create.html:52 #: ops/models/adhoc.py:162 templates/index.html:91 msgid "Host" msgstr "主机" -#: common/templates/common/replay_storage_create.html:67 +#: common/templates/common/replay_storage_create.html:66 msgid "Bucket" msgstr "桶名称" -#: common/templates/common/replay_storage_create.html:74 +#: common/templates/common/replay_storage_create.html:73 msgid "Access key" msgstr "" -#: common/templates/common/replay_storage_create.html:81 +#: common/templates/common/replay_storage_create.html:80 msgid "Secret key" msgstr "" -#: common/templates/common/replay_storage_create.html:88 +#: common/templates/common/replay_storage_create.html:87 msgid "Container name" msgstr "容器名称" -#: common/templates/common/replay_storage_create.html:95 +#: common/templates/common/replay_storage_create.html:94 msgid "Account name" msgstr "账户名称" -#: common/templates/common/replay_storage_create.html:102 +#: common/templates/common/replay_storage_create.html:101 msgid "Account key" msgstr "账户密钥" -#: common/templates/common/replay_storage_create.html:109 +#: common/templates/common/replay_storage_create.html:108 msgid "Endpoint" msgstr "端点" -#: common/templates/common/replay_storage_create.html:116 +#: common/templates/common/replay_storage_create.html:115 msgid "Endpoint suffix" msgstr "端点后缀" -#: common/templates/common/replay_storage_create.html:130 +#: common/templates/common/replay_storage_create.html:129 #: xpack/plugins/cloud/models.py:186 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:83 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:64 @@ -2313,36 +2319,36 @@ msgstr "Become" msgid "Create by" msgstr "创建者" -#: ops/models/adhoc.py:321 +#: ops/models/adhoc.py:324 msgid "Start time" msgstr "开始时间" -#: ops/models/adhoc.py:322 +#: ops/models/adhoc.py:325 msgid "End time" msgstr "完成时间" -#: ops/models/adhoc.py:323 ops/templates/ops/adhoc_history.html:57 +#: ops/models/adhoc.py:326 ops/templates/ops/adhoc_history.html:57 #: ops/templates/ops/task_history.html:63 ops/templates/ops/task_list.html:41 msgid "Time" msgstr "时间" -#: ops/models/adhoc.py:324 ops/templates/ops/adhoc_detail.html:106 +#: ops/models/adhoc.py:327 ops/templates/ops/adhoc_detail.html:106 #: ops/templates/ops/adhoc_history.html:55 #: ops/templates/ops/adhoc_history_detail.html:69 #: ops/templates/ops/task_detail.html:84 ops/templates/ops/task_history.html:61 msgid "Is finished" msgstr "是否完成" -#: ops/models/adhoc.py:325 ops/templates/ops/adhoc_history.html:56 +#: ops/models/adhoc.py:328 ops/templates/ops/adhoc_history.html:56 #: ops/templates/ops/task_history.html:62 msgid "Is success" msgstr "是否成功" -#: ops/models/adhoc.py:326 +#: ops/models/adhoc.py:329 msgid "Adhoc raw result" msgstr "结果" -#: ops/models/adhoc.py:327 +#: ops/models/adhoc.py:330 msgid "Adhoc result summary" msgstr "汇总" @@ -2553,10 +2559,10 @@ msgstr "命令执行" msgid "Organization" msgstr "组织管理" -#: perms/forms.py:31 perms/models.py:30 perms/models.py:80 +#: perms/forms.py:39 perms/models.py:30 perms/models.py:80 #: perms/templates/perms/asset_permission_list.html:55 #: perms/templates/perms/asset_permission_list.html:111 templates/_nav.html:14 -#: users/forms.py:284 users/models/group.py:26 users/models/user.py:59 +#: users/forms.py:273 users/models/group.py:26 users/models/user.py:59 #: users/templates/users/_select_user_modal.html:16 #: users/templates/users/user_detail.html:211 #: users/templates/users/user_list.html:26 @@ -2564,11 +2570,11 @@ msgstr "组织管理" msgid "User group" msgstr "用户组" -#: perms/forms.py:53 +#: perms/forms.py:61 msgid "User or group at least one required" msgstr "用户和用户组至少选一个" -#: perms/forms.py:62 +#: perms/forms.py:70 msgid "Asset or group at least one required" msgstr "资产和节点至少选一个" @@ -2608,7 +2614,7 @@ msgstr "添加节点" msgid "Join" msgstr "加入" -#: perms/templates/perms/asset_permission_create_update.html:53 +#: perms/templates/perms/asset_permission_create_update.html:58 msgid "Validity period" msgstr "有效期" @@ -2698,7 +2704,7 @@ msgstr "文档" msgid "Commercial support" msgstr "商业支持" -#: templates/_header_bar.html:89 templates/_nav_user.html:14 users/forms.py:151 +#: templates/_header_bar.html:89 templates/_nav_user.html:14 users/forms.py:141 #: users/templates/users/_user.html:43 #: users/templates/users/first_login.html:39 #: users/templates/users/user_password_update.html:40 @@ -3319,11 +3325,11 @@ msgstr "MFA 验证码" msgid "Role" msgstr "角色" -#: users/forms.py:55 users/forms.py:230 +#: users/forms.py:55 users/forms.py:220 msgid "ssh public key" msgstr "ssh公钥" -#: users/forms.py:56 users/forms.py:231 +#: users/forms.py:56 users/forms.py:221 msgid "ssh-rsa AAAA..." msgstr "" @@ -3331,19 +3337,19 @@ msgstr "" msgid "Paste user id_rsa.pub here." msgstr "复制用户公钥到这里" -#: users/forms.py:76 users/templates/users/user_detail.html:219 +#: users/forms.py:71 users/templates/users/user_detail.html:219 msgid "Join user groups" msgstr "添加到用户组" -#: users/forms.py:110 users/forms.py:245 +#: users/forms.py:105 users/forms.py:235 msgid "Public key should not be the same as your old one." msgstr "不能和原来的密钥相同" -#: users/forms.py:114 users/forms.py:249 users/serializers/v1.py:38 +#: users/forms.py:109 users/forms.py:239 users/serializers/v1.py:38 msgid "Not a valid ssh public key" msgstr "ssh密钥不合法" -#: users/forms.py:157 +#: users/forms.py:147 msgid "" "Tip: when enabled, you will enter the MFA binding process the next time you " "log in. you can also directly bind in \"personal information -> quick " @@ -3352,11 +3358,11 @@ msgstr "" "提示:启用之后您将会在下次登录时进入MFA绑定流程;您也可以在(个人信息->快速修" "改->更改MFA设置)中直接绑定!" -#: users/forms.py:167 +#: users/forms.py:157 msgid "* Enable MFA authentication to make the account more secure." msgstr "* 启用MFA认证,使账号更加安全." -#: users/forms.py:177 +#: users/forms.py:167 msgid "" "In order to protect you and your company, please keep your account, password " "and key sensitive information properly. (for example: setting complex " @@ -3365,41 +3371,41 @@ msgstr "" "为了保护您和公司的安全,请妥善保管您的账户、密码和密钥等重要敏感信息;(如:" "设置复杂密码,启用MFA认证)" -#: users/forms.py:184 users/templates/users/first_login.html:48 +#: users/forms.py:174 users/templates/users/first_login.html:48 #: users/templates/users/first_login.html:107 #: users/templates/users/first_login.html:130 msgid "Finish" msgstr "完成" -#: users/forms.py:190 +#: users/forms.py:180 msgid "Old password" msgstr "原来密码" -#: users/forms.py:195 +#: users/forms.py:185 msgid "New password" msgstr "新密码" -#: users/forms.py:200 +#: users/forms.py:190 msgid "Confirm password" msgstr "确认密码" -#: users/forms.py:210 +#: users/forms.py:200 msgid "Old password error" msgstr "原来密码错误" -#: users/forms.py:218 +#: users/forms.py:208 msgid "Password does not match" msgstr "密码不一致" -#: users/forms.py:228 +#: users/forms.py:218 msgid "Automatically configure and download the SSH key" msgstr "自动配置并下载SSH密钥" -#: users/forms.py:232 +#: users/forms.py:222 msgid "Paste your id_rsa.pub here." msgstr "复制你的公钥到这里" -#: users/forms.py:260 users/models/user.py:83 +#: users/forms.py:250 users/models/user.py:83 #: users/templates/users/first_login.html:42 #: users/templates/users/user_password_update.html:46 #: users/templates/users/user_profile.html:68 @@ -3408,7 +3414,7 @@ msgstr "复制你的公钥到这里" msgid "Public key" msgstr "ssh公钥" -#: users/forms.py:267 users/forms.py:272 users/forms.py:318 +#: users/forms.py:256 users/forms.py:261 users/forms.py:307 #: xpack/plugins/orgs/forms.py:30 msgid "Select users" msgstr "选择用户" @@ -4623,6 +4629,9 @@ msgstr "创建组织" msgid "Update org" msgstr "更新组织" +#~ msgid "Error: Account invalid" +#~ msgstr "错误: 账户无效" + #~ msgid "Asset has been disabled, skip: {}" #~ msgstr "资产被禁用,跳过:{}" diff --git a/apps/perms/templates/perms/asset_permission_create_update.html b/apps/perms/templates/perms/asset_permission_create_update.html index 337b24de2..b6789abbf 100644 --- a/apps/perms/templates/perms/asset_permission_create_update.html +++ b/apps/perms/templates/perms/asset_permission_create_update.html @@ -29,6 +29,11 @@
    + {% if form.non_field_errors %} +
    + {{ form.non_field_errors }} +
    + {% endif %} {% csrf_token %}

    {% trans 'Basic' %}

    {% bootstrap_field form.name layout="horizontal" %} diff --git a/apps/terminal/migrations/0014_auto_20181226_1441.py b/apps/terminal/migrations/0014_auto_20181226_1441.py new file mode 100644 index 000000000..fa890365a --- /dev/null +++ b/apps/terminal/migrations/0014_auto_20181226_1441.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1 on 2018-12-26 06:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('terminal', '0013_auto_20181123_1113'), + ] + + operations = [ + migrations.AlterField( + model_name='session', + name='protocol', + field=models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp'), ('vnc', 'vnc')], default='ssh', max_length=8), + ), + ] diff --git a/apps/terminal/models.py b/apps/terminal/models.py index 6491bdf35..880637efe 100644 --- a/apps/terminal/models.py +++ b/apps/terminal/models.py @@ -132,7 +132,8 @@ class Session(OrgModelMixin): ) PROTOCOL_CHOICES = ( ('ssh', 'ssh'), - ('rdp', 'rdp') + ('rdp', 'rdp'), + ('vnc', 'vnc') ) id = models.UUIDField(default=uuid.uuid4, primary_key=True)