From 9219786f2dbb6e661bc60357a85541fd4c55e867 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AB=E5=8D=83=E6=B5=81?= <40739051+jym503558564@users.noreply.github.com> Date: Mon, 15 Jul 2019 14:42:54 +0800 Subject: [PATCH 1/7] =?UTF-8?q?[Update]=20=E5=88=9B=E5=BB=BA/=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=20=E8=BF=9C=E7=A8=8B=E5=BA=94=E7=94=A8=20=E4=BD=BF?= =?UTF-8?q?=E7=94=A8api=20(#2940)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Update] 创建/更新 远程应用 使用api * [Update] 优化 params * [Update] 修改小问题 --- .../remote_app_create_update.html | 36 ++++++++++++++++++- apps/applications/views/remote_app.py | 2 ++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/apps/applications/templates/applications/remote_app_create_update.html b/apps/applications/templates/applications/remote_app_create_update.html index ecd7254a1..fe6b231da 100644 --- a/apps/applications/templates/applications/remote_app_create_update.html +++ b/apps/applications/templates/applications/remote_app_create_update.html @@ -107,6 +107,18 @@ function hiddenFields(){ }); $('.' + app_type + '-fields').removeClass('hidden'); } +function constructParams(obj) { + var type = ['chrome', 'mysql_workbench', 'vmware_client', 'custom']; + var params = {}; + type.forEach(function (attr) { + if (obj.type === attr){ + for (var k in obj){ + if (k.startsWith(obj.type)){params[k] = obj[k]} + } + } + }); + return params +} $(document).ready(function () { $('.select2').select2({ closeOnSelect: true @@ -118,6 +130,28 @@ $(document).ready(function () { .on('change', app_type_id, function(){ hiddenFields(); setDefaultValue(); -}); +}) +.on("submit", "form", function (evt) { + evt.preventDefault(); + var the_url = '{% url "api-applications:remote-app-list" %}'; + var redirect_to = '{% url "applications:remote-app-list" %}'; + var method = "POST"; + {% if type == "update" %} + the_url = '{% url "api-applications:remote-app-detail" object.id %}'; + method = "PUT"; + {% endif %} + var form = $("form"); + var data = form.serializeObject(); + data["params"] = constructParams(data); + var props = { + url: the_url, + data: data, + method: method, + form: form, + redirect_to: redirect_to + }; + formSubmit(props); + }) +; {% endblock %} \ No newline at end of file diff --git a/apps/applications/views/remote_app.py b/apps/applications/views/remote_app.py index 5576ed3bb..e7f6f0ccd 100644 --- a/apps/applications/views/remote_app.py +++ b/apps/applications/views/remote_app.py @@ -46,6 +46,7 @@ class RemoteAppCreateView(PermissionsMixin, SuccessMessageMixin, CreateView): context = { 'app': _('Applications'), 'action': _('Create RemoteApp'), + 'type': 'create' } kwargs.update(context) return super().get_context_data(**kwargs) @@ -68,6 +69,7 @@ class RemoteAppUpdateView(PermissionsMixin, SuccessMessageMixin, UpdateView): context = { 'app': _('Applications'), 'action': _('Update RemoteApp'), + 'type': 'update' } kwargs.update(context) return super().get_context_data(**kwargs) From 92aeecbc3e0edb58338300221c909a44e5a87c17 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Mon, 15 Jul 2019 14:57:57 +0800 Subject: [PATCH 2/7] =?UTF-8?q?[Update]=20=E4=BC=98=E5=8C=96=E5=88=9B?= =?UTF-8?q?=E5=BB=BARemoteApp=E5=89=8D=E7=AB=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote_app_create_update.html | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/applications/templates/applications/remote_app_create_update.html b/apps/applications/templates/applications/remote_app_create_update.html index fe6b231da..897126f98 100644 --- a/apps/applications/templates/applications/remote_app_create_update.html +++ b/apps/applications/templates/applications/remote_app_create_update.html @@ -107,17 +107,20 @@ function hiddenFields(){ }); $('.' + app_type + '-fields').removeClass('hidden'); } -function constructParams(obj) { - var type = ['chrome', 'mysql_workbench', 'vmware_client', 'custom']; +function constructParams(data) { + var typeList = ['chrome', 'mysql_workbench', 'vmware_client', 'custom']; var params = {}; - type.forEach(function (attr) { - if (obj.type === attr){ - for (var k in obj){ - if (k.startsWith(obj.type)){params[k] = obj[k]} + for (var type in typeList){ + if (data.type === type){ + for (var k in data){ + if (k.startsWith(data.type)){ + params[k] = data[k] + } } + break } - }); - return params + } + return params; } $(document).ready(function () { $('.select2').select2({ From 9d54baac09ec004b438a98bc27511a0bcd81ca90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E5=B9=BF?= Date: Mon, 15 Jul 2019 15:11:01 +0800 Subject: [PATCH 3/7] Secure (#2946) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Update] 修改assets * [Update] 添加关闭terminal注册的设置 * [Update] 去掉sql打印 --- apps/jumpserver/conf.py | 1 + apps/jumpserver/settings.py | 2 +- apps/locale/zh/LC_MESSAGES/django.mo | Bin 77406 -> 77648 bytes apps/locale/zh/LC_MESSAGES/django.po | 394 +++++++++++------------ apps/settings/forms.py | 5 + apps/terminal/serializers_v2/terminal.py | 4 + 6 files changed, 207 insertions(+), 199 deletions(-) diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 17d660be8..ce43c13b1 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -359,6 +359,7 @@ defaults = { 'TERMINAL_TELNET_REGEX': '', 'TERMINAL_COMMAND_STORAGE': {}, 'SECURITY_MFA_AUTH': False, + 'SECURITY_SERVICE_ACCOUNT_REGISTRATION': True, 'SECURITY_LOGIN_LIMIT_COUNT': 7, 'SECURITY_LOGIN_LIMIT_TIME': 30, 'SECURITY_MAX_IDLE_TIME': 30, diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index 35ffebc25..6ee9f7a74 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -568,7 +568,7 @@ SECURITY_PASSWORD_RULES = [ 'SECURITY_PASSWORD_SPECIAL_CHAR' ] SECURITY_MFA_VERIFY_TTL = CONFIG.SECURITY_MFA_VERIFY_TTL - +SECURITY_SERVICE_ACCOUNT_REGISTRATION = CONFIG.SECURITY_SERVICE_ACCOUNT_REGISTRATION TERMINAL_PASSWORD_AUTH = CONFIG.TERMINAL_PASSWORD_AUTH TERMINAL_PUBLIC_KEY_AUTH = CONFIG.TERMINAL_PUBLIC_KEY_AUTH TERMINAL_HEARTBEAT_INTERVAL = CONFIG.TERMINAL_HEARTBEAT_INTERVAL diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index c702b74b11afc1edab7a3ebae020e5bf22ca9dd3..9dc31d0c8a0ac28755cc69794b4aa36137412452 100644 GIT binary patch delta 23088 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 delta 22853 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 PkR%}N2mY\n" "Language-Team: Jumpserver team\n" @@ -76,8 +76,8 @@ msgstr "运行参数" #: applications/templates/applications/remote_app_list.html:22 #: applications/templates/applications/user_remote_app_list.html:18 #: assets/forms/domain.py:15 assets/forms/label.py:13 -#: assets/models/asset.py:342 assets/models/authbook.py:24 -#: assets/serializers/admin_user.py:35 assets/serializers/asset_user.py:81 +#: assets/models/asset.py:319 assets/models/authbook.py:24 +#: assets/serializers/admin_user.py:32 assets/serializers/asset_user.py:81 #: assets/serializers/system_user.py:30 #: assets/templates/assets/admin_user_list.html:47 #: assets/templates/assets/domain_detail.html:60 @@ -86,7 +86,7 @@ msgstr "运行参数" #: assets/templates/assets/system_user_list.html:55 audits/models.py:19 #: audits/templates/audits/ftp_log_list.html:41 #: audits/templates/audits/ftp_log_list.html:71 -#: perms/forms/asset_permission.py:68 perms/models/asset_permission.py:76 +#: perms/forms/asset_permission.py:69 perms/models/asset_permission.py:78 #: perms/templates/perms/asset_permission_create_update.html:45 #: perms/templates/perms/asset_permission_list.html:48 #: perms/templates/perms/asset_permission_list.html:117 @@ -112,11 +112,11 @@ msgstr "资产" #: applications/templates/applications/remote_app_detail.html:61 #: applications/templates/applications/remote_app_list.html:23 #: applications/templates/applications/user_remote_app_list.html:19 -#: assets/models/user.py:160 assets/templates/assets/user_asset_list.html:172 +#: assets/models/user.py:150 assets/templates/assets/user_asset_list.html:52 #: audits/models.py:20 audits/templates/audits/ftp_log_list.html:49 #: audits/templates/audits/ftp_log_list.html:72 -#: perms/forms/asset_permission.py:74 perms/models/asset_permission.py:78 -#: perms/models/asset_permission.py:103 +#: perms/forms/asset_permission.py:75 perms/models/asset_permission.py:80 +#: perms/models/asset_permission.py:114 #: perms/templates/perms/asset_permission_detail.html:140 #: perms/templates/perms/asset_permission_list.html:50 #: perms/templates/perms/asset_permission_list.html:71 @@ -126,6 +126,7 @@ msgstr "资产" #: terminal/templates/terminal/command_list.html:67 #: terminal/templates/terminal/session_list.html:29 #: terminal/templates/terminal/session_list.html:73 +#: users/templates/users/_granted_assets.html:26 #: xpack/plugins/orgs/templates/orgs/org_list.html:19 msgid "System user" msgstr "系统用户" @@ -166,7 +167,7 @@ msgstr "系统用户" #: settings/templates/settings/terminal_setting.html:105 terminal/models.py:22 #: terminal/models.py:258 terminal/templates/terminal/terminal_detail.html:43 #: terminal/templates/terminal/terminal_list.html:29 users/models/group.py:14 -#: users/models/user.py:64 users/templates/users/_select_user_modal.html:13 +#: users/models/user.py:324 users/templates/users/_select_user_modal.html:13 #: users/templates/users/user_detail.html:63 #: users/templates/users/user_group_detail.html:55 #: users/templates/users/user_group_list.html:35 @@ -205,7 +206,7 @@ msgstr "参数" #: applications/models/remote_app.py:43 #: applications/templates/applications/remote_app_detail.html:77 -#: assets/models/asset.py:221 assets/models/base.py:36 +#: assets/models/asset.py:198 assets/models/base.py:36 #: assets/models/cluster.py:28 assets/models/cmd_filter.py:25 #: assets/models/cmd_filter.py:58 assets/models/group.py:21 #: assets/templates/assets/admin_user_detail.html:68 @@ -214,10 +215,10 @@ msgstr "参数" #: assets/templates/assets/domain_detail.html:72 #: assets/templates/assets/system_user_detail.html:100 #: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:14 -#: perms/models/asset_permission.py:106 perms/models/base.py:41 +#: perms/models/asset_permission.py:117 perms/models/base.py:41 #: perms/templates/perms/asset_permission_detail.html:98 #: perms/templates/perms/remote_app_permission_detail.html:90 -#: users/models/user.py:105 users/serializers/v1.py:116 +#: users/models/user.py:365 users/serializers/v1.py:120 #: users/templates/users/user_detail.html:111 #: xpack/plugins/change_auth_plan/models.py:106 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:113 @@ -229,7 +230,7 @@ msgstr "创建者" # msgstr "创建者" #: applications/models/remote_app.py:46 #: applications/templates/applications/remote_app_detail.html:73 -#: assets/models/asset.py:222 assets/models/base.py:34 +#: assets/models/asset.py:199 assets/models/base.py:34 #: assets/models/cluster.py:26 assets/models/domain.py:23 #: assets/models/group.py:22 assets/models/label.py:25 #: assets/templates/assets/admin_user_detail.html:64 @@ -237,7 +238,7 @@ msgstr "创建者" #: assets/templates/assets/domain_detail.html:68 #: assets/templates/assets/system_user_detail.html:96 #: ops/templates/ops/adhoc_detail.html:90 ops/templates/ops/task_detail.html:64 -#: orgs/models.py:15 perms/models/asset_permission.py:107 +#: orgs/models.py:15 perms/models/asset_permission.py:118 #: perms/models/base.py:42 #: perms/templates/perms/asset_permission_detail.html:94 #: perms/templates/perms/remote_app_permission_detail.html:86 @@ -257,7 +258,7 @@ msgstr "创建日期" #: applications/templates/applications/remote_app_detail.html:81 #: applications/templates/applications/remote_app_list.html:24 #: applications/templates/applications/user_remote_app_list.html:20 -#: assets/models/asset.py:223 assets/models/base.py:33 +#: assets/models/asset.py:200 assets/models/base.py:33 #: assets/models/cluster.py:29 assets/models/cmd_filter.py:22 #: assets/models/cmd_filter.py:55 assets/models/domain.py:21 #: assets/models/domain.py:53 assets/models/group.py:23 @@ -271,15 +272,14 @@ msgstr "创建日期" #: assets/templates/assets/domain_gateway_list.html:72 #: assets/templates/assets/domain_list.html:28 #: assets/templates/assets/system_user_detail.html:104 -#: assets/templates/assets/system_user_list.html:59 -#: assets/templates/assets/user_asset_list.html:175 ops/models/adhoc.py:43 -#: orgs/models.py:16 perms/models/asset_permission.py:108 +#: assets/templates/assets/system_user_list.html:59 ops/models/adhoc.py:43 +#: orgs/models.py:16 perms/models/asset_permission.py:119 #: perms/models/base.py:43 #: perms/templates/perms/asset_permission_detail.html:102 #: perms/templates/perms/remote_app_permission_detail.html:94 #: settings/models.py:34 terminal/models.py:32 #: terminal/templates/terminal/terminal_detail.html:63 users/models/group.py:15 -#: users/models/user.py:97 users/templates/users/user_detail.html:127 +#: users/models/user.py:357 users/templates/users/user_detail.html:127 #: users/templates/users/user_group_detail.html:67 #: users/templates/users/user_group_list.html:37 #: users/templates/users/user_profile.html:134 @@ -522,8 +522,7 @@ msgstr "创建远程应用" #: assets/templates/assets/domain_gateway_list.html:73 #: assets/templates/assets/domain_list.html:29 #: assets/templates/assets/label_list.html:17 -#: assets/templates/assets/system_user_list.html:60 -#: assets/templates/assets/user_asset_list.html:48 audits/models.py:38 +#: assets/templates/assets/system_user_list.html:60 audits/models.py:38 #: audits/templates/audits/operate_log_list.html:41 #: audits/templates/audits/operate_log_list.html:67 #: ops/templates/ops/adhoc_history.html:59 ops/templates/ops/task_adhoc.html:64 @@ -537,6 +536,7 @@ msgstr "创建远程应用" #: settings/templates/settings/terminal_setting.html:107 #: terminal/templates/terminal/session_list.html:36 #: terminal/templates/terminal/terminal_list.html:36 +#: users/templates/users/_granted_assets.html:28 #: users/templates/users/user_group_list.html:38 #: users/templates/users/user_list.html:41 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:60 @@ -549,8 +549,8 @@ msgid "Action" msgstr "动作" #: applications/templates/applications/user_remote_app_list.html:57 -#: assets/templates/assets/user_asset_list.html:100 -#: perms/models/asset_permission.py:28 +#: assets/templates/assets/user_asset_list.html:31 +#: perms/models/asset_permission.py:30 msgid "Connect" msgstr "连接" @@ -603,7 +603,6 @@ msgstr "不可达" #: assets/const.py:78 assets/models/utils.py:44 #: assets/templates/assets/asset_list.html:99 -#: users/templates/users/user_group_granted_asset.html:47 msgid "Reachable" msgstr "可连接" @@ -612,24 +611,23 @@ msgstr "可连接" msgid "Unknown" msgstr "未知" -#: assets/forms/asset.py:24 assets/models/asset.py:187 +#: assets/forms/asset.py:24 assets/models/asset.py:164 #: assets/models/domain.py:50 #: assets/templates/assets/domain_gateway_list.html:69 -#: assets/templates/assets/user_asset_list.html:168 #: settings/templates/settings/replay_storage_create.html:59 msgid "Port" msgstr "端口" -#: assets/forms/asset.py:45 assets/models/asset.py:192 +#: assets/forms/asset.py:45 assets/models/asset.py:169 #: assets/models/user.py:107 assets/templates/assets/asset_detail.html:190 #: assets/templates/assets/asset_detail.html:198 #: assets/templates/assets/system_user_assets.html:83 -#: perms/models/asset_permission.py:77 +#: perms/models/asset_permission.py:79 #: xpack/plugins/change_auth_plan/models.py:72 msgid "Nodes" msgstr "节点" -#: assets/forms/asset.py:48 assets/forms/asset.py:83 assets/models/asset.py:196 +#: assets/forms/asset.py:48 assets/forms/asset.py:83 assets/models/asset.py:173 #: assets/models/cluster.py:19 assets/models/user.py:65 #: assets/templates/assets/asset_detail.html:76 templates/_nav.html:24 #: xpack/plugins/cloud/models.py:124 @@ -642,24 +640,24 @@ msgstr "管理用户" #: assets/templates/assets/asset_create.html:48 #: assets/templates/assets/asset_create.html:50 #: assets/templates/assets/asset_list.html:85 -#: assets/templates/assets/user_asset_list.html:33 +#: users/templates/users/_granted_assets.html:16 #: xpack/plugins/orgs/templates/orgs/org_list.html:20 msgid "Label" msgstr "标签" -#: assets/forms/asset.py:54 assets/forms/asset.py:89 assets/models/asset.py:191 +#: assets/forms/asset.py:54 assets/forms/asset.py:89 assets/models/asset.py:168 #: assets/models/domain.py:26 assets/models/domain.py:52 #: assets/templates/assets/asset_detail.html:80 -#: assets/templates/assets/user_asset_list.html:173 +#: assets/templates/assets/user_asset_list.html:53 #: xpack/plugins/orgs/templates/orgs/org_list.html:17 msgid "Domain" msgstr "网域" #: assets/forms/asset.py:58 assets/forms/asset.py:80 assets/forms/asset.py:93 -#: assets/forms/asset.py:128 assets/models/node.py:254 +#: assets/forms/asset.py:128 assets/models/node.py:253 #: assets/templates/assets/asset_create.html:42 -#: perms/forms/asset_permission.py:71 perms/forms/asset_permission.py:78 -#: perms/models/asset_permission.py:101 +#: perms/forms/asset_permission.py:72 perms/forms/asset_permission.py:79 +#: perms/models/asset_permission.py:112 #: perms/templates/perms/asset_permission_list.html:49 #: perms/templates/perms/asset_permission_list.html:70 #: perms/templates/perms/asset_permission_list.html:120 @@ -691,13 +689,13 @@ msgstr "如果有多个的互相隔离的网络,设置资产属于的网域, #: assets/forms/asset.py:108 assets/forms/asset.py:112 #: assets/forms/domain.py:17 assets/forms/label.py:15 -#: perms/templates/perms/asset_permission_asset.html:88 +#: perms/templates/perms/asset_permission_asset.html:78 #: xpack/plugins/change_auth_plan/forms.py:106 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:84 msgid "Select assets" msgstr "选择资产" -#: assets/forms/cmd_filter.py:37 assets/serializers/cmd_filter.py:34 +#: assets/forms/cmd_filter.py:37 assets/serializers/cmd_filter.py:40 msgid "Content should not be contain: {}" msgstr "内容不能包含: {}" @@ -726,7 +724,7 @@ msgstr "SSH网关,支持代理SSH,RDP和VNC" #: perms/templates/perms/asset_permission_user.html:55 #: perms/templates/perms/remote_app_permission_user.html:54 #: settings/templates/settings/_ldap_list_users_modal.html:37 users/forms.py:14 -#: users/models/user.py:62 users/templates/users/_select_user_modal.html:14 +#: users/models/user.py:322 users/templates/users/_select_user_modal.html:14 #: users/templates/users/user_detail.html:67 #: users/templates/users/user_list.html:36 #: users/templates/users/user_profile.html:47 @@ -765,7 +763,7 @@ msgstr "密码" #: assets/forms/user.py:29 assets/serializers/asset_user.py:70 #: assets/templates/assets/_asset_user_auth_update_modal.html:27 -#: users/models/user.py:91 +#: users/models/user.py:351 msgid "Private key" msgstr "ssh私钥" @@ -805,134 +803,129 @@ msgstr "如果选择手动登录模式,用户名和密码可以不填写" msgid "Use comma split multi command, ex: /bin/whoami,/bin/ifconfig" msgstr "使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig" -#: assets/models/asset.py:182 assets/models/domain.py:49 +#: assets/models/asset.py:159 assets/models/domain.py:49 #: assets/serializers/asset_user.py:28 #: assets/templates/assets/_asset_list_modal.html:46 #: assets/templates/assets/_asset_user_list.html:15 #: assets/templates/assets/asset_detail.html:64 #: assets/templates/assets/asset_list.html:97 #: assets/templates/assets/domain_gateway_list.html:68 -#: assets/templates/assets/user_asset_list.html:45 -#: assets/templates/assets/user_asset_list.html:167 +#: assets/templates/assets/user_asset_list.html:49 #: audits/templates/audits/login_log_list.html:54 -#: perms/templates/perms/asset_permission_asset.html:55 settings/forms.py:140 -#: users/templates/users/user_granted_asset.html:45 -#: users/templates/users/user_group_granted_asset.html:45 +#: perms/templates/perms/asset_permission_asset.html:58 settings/forms.py:140 +#: users/templates/users/_granted_assets.html:25 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:51 msgid "IP" msgstr "IP" -#: assets/models/asset.py:183 assets/serializers/asset_user.py:27 +#: assets/models/asset.py:160 assets/serializers/asset_user.py:27 #: assets/templates/assets/_asset_list_modal.html:45 #: assets/templates/assets/_asset_user_auth_update_modal.html:9 #: assets/templates/assets/_asset_user_auth_view_modal.html:15 #: assets/templates/assets/_asset_user_list.html:14 #: assets/templates/assets/asset_detail.html:60 #: assets/templates/assets/asset_list.html:96 -#: assets/templates/assets/user_asset_list.html:44 -#: assets/templates/assets/user_asset_list.html:166 -#: perms/templates/perms/asset_permission_asset.html:54 +#: assets/templates/assets/user_asset_list.html:48 +#: perms/templates/perms/asset_permission_asset.html:57 #: perms/templates/perms/asset_permission_list.html:69 settings/forms.py:139 -#: users/templates/users/user_granted_asset.html:44 -#: users/templates/users/user_group_granted_asset.html:44 +#: users/templates/users/_granted_assets.html:24 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:50 msgid "Hostname" msgstr "主机名" -#: assets/models/asset.py:186 assets/models/domain.py:51 +#: assets/models/asset.py:163 assets/models/domain.py:51 #: assets/models/user.py:110 assets/templates/assets/asset_detail.html:72 #: assets/templates/assets/domain_gateway_list.html:70 #: assets/templates/assets/system_user_detail.html:70 #: assets/templates/assets/system_user_list.html:53 -#: assets/templates/assets/user_asset_list.html:169 #: terminal/templates/terminal/session_list.html:31 msgid "Protocol" msgstr "协议" -#: assets/models/asset.py:189 assets/serializers/asset.py:63 +#: assets/models/asset.py:166 assets/serializers/asset.py:63 #: assets/templates/assets/asset_create.html:24 +#: assets/templates/assets/user_asset_list.html:50 +#: perms/serializers/user_permission.py:38 msgid "Protocols" msgstr "协议组" -#: assets/models/asset.py:190 assets/templates/assets/asset_detail.html:104 -#: assets/templates/assets/user_asset_list.html:170 +#: assets/models/asset.py:167 assets/templates/assets/asset_detail.html:104 +#: assets/templates/assets/user_asset_list.html:51 msgid "Platform" msgstr "系统平台" -#: assets/models/asset.py:193 assets/models/cmd_filter.py:21 +#: assets/models/asset.py:170 assets/models/cmd_filter.py:21 #: assets/models/domain.py:54 assets/models/label.py:22 #: assets/templates/assets/asset_detail.html:112 -#: assets/templates/assets/user_asset_list.html:174 msgid "Is active" msgstr "激活" -#: assets/models/asset.py:199 assets/templates/assets/asset_detail.html:68 +#: assets/models/asset.py:176 assets/templates/assets/asset_detail.html:68 msgid "Public IP" msgstr "公网IP" -#: assets/models/asset.py:200 assets/templates/assets/asset_detail.html:120 +#: assets/models/asset.py:177 assets/templates/assets/asset_detail.html:120 msgid "Asset number" msgstr "资产编号" -#: assets/models/asset.py:203 assets/templates/assets/asset_detail.html:84 +#: assets/models/asset.py:180 assets/templates/assets/asset_detail.html:84 msgid "Vendor" msgstr "制造商" -#: assets/models/asset.py:204 assets/templates/assets/asset_detail.html:88 +#: assets/models/asset.py:181 assets/templates/assets/asset_detail.html:88 msgid "Model" msgstr "型号" -#: assets/models/asset.py:205 assets/templates/assets/asset_detail.html:116 +#: assets/models/asset.py:182 assets/templates/assets/asset_detail.html:116 msgid "Serial number" msgstr "序列号" -#: assets/models/asset.py:207 +#: assets/models/asset.py:184 msgid "CPU model" msgstr "CPU型号" -#: assets/models/asset.py:208 +#: assets/models/asset.py:185 #: xpack/plugins/license/templates/license/license_detail.html:80 msgid "CPU count" msgstr "CPU数量" -#: assets/models/asset.py:209 +#: assets/models/asset.py:186 msgid "CPU cores" msgstr "CPU核数" -#: assets/models/asset.py:210 +#: assets/models/asset.py:187 msgid "CPU vcpus" msgstr "CPU总数" -#: assets/models/asset.py:211 assets/templates/assets/asset_detail.html:96 +#: assets/models/asset.py:188 assets/templates/assets/asset_detail.html:96 msgid "Memory" msgstr "内存" -#: assets/models/asset.py:212 +#: assets/models/asset.py:189 msgid "Disk total" msgstr "硬盘大小" -#: assets/models/asset.py:213 +#: assets/models/asset.py:190 msgid "Disk info" msgstr "硬盘信息" -#: assets/models/asset.py:215 assets/templates/assets/asset_detail.html:108 -#: assets/templates/assets/user_asset_list.html:171 +#: assets/models/asset.py:192 assets/templates/assets/asset_detail.html:108 msgid "OS" msgstr "操作系统" -#: assets/models/asset.py:216 +#: assets/models/asset.py:193 msgid "OS version" msgstr "系统版本" -#: assets/models/asset.py:217 +#: assets/models/asset.py:194 msgid "OS arch" msgstr "系统架构" -#: assets/models/asset.py:218 +#: assets/models/asset.py:195 msgid "Hostname raw" msgstr "主机名原始" -#: assets/models/asset.py:220 assets/templates/assets/asset_create.html:46 +#: assets/models/asset.py:197 assets/templates/assets/asset_create.html:46 #: assets/templates/assets/asset_detail.html:227 templates/_nav.html:26 msgid "Labels" msgstr "标签管理" @@ -976,7 +969,7 @@ msgstr "带宽" msgid "Contact" msgstr "联系人" -#: assets/models/cluster.py:22 users/models/user.py:83 +#: assets/models/cluster.py:22 users/models/user.py:343 #: users/templates/users/user_detail.html:76 msgid "Phone" msgstr "手机" @@ -1002,7 +995,7 @@ msgid "Default" msgstr "默认" #: assets/models/cluster.py:36 assets/models/label.py:14 -#: users/models/user.py:453 +#: users/models/user.py:451 msgid "System" msgstr "系统" @@ -1109,7 +1102,7 @@ msgstr "默认资产组" #: audits/templates/audits/password_change_log_list.html:50 #: ops/templates/ops/command_execution_list.html:35 #: ops/templates/ops/command_execution_list.html:60 -#: perms/forms/asset_permission.py:62 perms/forms/remote_app_permission.py:31 +#: perms/forms/asset_permission.py:63 perms/forms/remote_app_permission.py:31 #: perms/models/base.py:36 #: perms/templates/perms/asset_permission_create_update.html:41 #: perms/templates/perms/asset_permission_list.html:46 @@ -1121,8 +1114,8 @@ msgstr "默认资产组" #: terminal/templates/terminal/command_list.html:65 #: terminal/templates/terminal/session_list.html:27 #: terminal/templates/terminal/session_list.html:71 users/forms.py:316 -#: users/models/user.py:38 users/models/user.py:441 users/serializers/v1.py:105 -#: users/templates/users/user_group_detail.html:78 +#: users/models/user.py:121 users/models/user.py:439 +#: users/serializers/v1.py:109 users/templates/users/user_group_detail.html:78 #: users/templates/users/user_group_list.html:36 users/views/user.py:251 #: xpack/plugins/orgs/forms.py:26 #: xpack/plugins/orgs/templates/orgs/org_detail.html:113 @@ -1130,7 +1123,7 @@ msgstr "默认资产组" msgid "User" msgstr "用户" -#: assets/models/label.py:19 assets/models/node.py:245 +#: assets/models/label.py:19 assets/models/node.py:244 #: assets/templates/assets/label_list.html:15 settings/models.py:30 msgid "Value" msgstr "值" @@ -1139,11 +1132,11 @@ msgstr "值" msgid "Category" msgstr "分类" -#: assets/models/node.py:244 +#: assets/models/node.py:243 msgid "Key" msgstr "键" -#: assets/models/node.py:302 +#: assets/models/node.py:301 msgid "New node" msgstr "新节点" @@ -1165,13 +1158,13 @@ msgstr "手动登录" #: assets/views/asset.py:57 assets/views/asset.py:106 assets/views/asset.py:133 #: assets/views/asset.py:173 assets/views/asset.py:203 #: assets/views/cmd_filter.py:31 assets/views/cmd_filter.py:48 -#: assets/views/cmd_filter.py:65 assets/views/cmd_filter.py:82 -#: assets/views/cmd_filter.py:102 assets/views/cmd_filter.py:136 -#: assets/views/cmd_filter.py:170 assets/views/domain.py:30 -#: assets/views/domain.py:47 assets/views/domain.py:64 -#: assets/views/domain.py:78 assets/views/domain.py:104 -#: assets/views/domain.py:133 assets/views/domain.py:153 -#: assets/views/label.py:27 assets/views/label.py:45 assets/views/label.py:72 +#: assets/views/cmd_filter.py:66 assets/views/cmd_filter.py:84 +#: assets/views/cmd_filter.py:104 assets/views/cmd_filter.py:138 +#: assets/views/cmd_filter.py:173 assets/views/domain.py:30 +#: assets/views/domain.py:47 assets/views/domain.py:65 +#: assets/views/domain.py:80 assets/views/domain.py:106 +#: assets/views/domain.py:135 assets/views/domain.py:156 +#: assets/views/label.py:27 assets/views/label.py:45 assets/views/label.py:73 #: assets/views/system_user.py:29 assets/views/system_user.py:46 #: assets/views/system_user.py:63 assets/views/system_user.py:79 #: templates/_nav.html:19 xpack/plugins/change_auth_plan/models.py:68 @@ -1228,7 +1221,7 @@ msgid "Backend" msgstr "后端" #: assets/serializers/asset_user.py:66 users/forms.py:263 -#: users/models/user.py:94 users/templates/users/first_login.html:42 +#: users/models/user.py:354 users/templates/users/first_login.html:42 #: users/templates/users/user_password_update.html:46 #: users/templates/users/user_profile.html:68 #: users/templates/users/user_profile_update.html:43 @@ -1363,8 +1356,6 @@ msgstr "选择资产" #: assets/templates/assets/_asset_group_bulk_update_modal.html:21 #: assets/templates/assets/cmd_filter_detail.html:89 #: assets/templates/assets/cmd_filter_list.html:26 -#: assets/templates/assets/user_asset_list.html:47 -#: users/templates/users/user_granted_asset.html:47 msgid "System users" msgstr "系统用户" @@ -1574,7 +1565,7 @@ msgid "Replace node assets admin user with this" msgstr "替换资产的管理员" #: assets/templates/assets/admin_user_detail.html:91 -#: perms/templates/perms/asset_permission_asset.html:116 +#: perms/templates/perms/asset_permission_asset.html:103 #: xpack/plugins/change_auth_plan/forms.py:110 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:112 msgid "Select nodes" @@ -1705,8 +1696,7 @@ msgid "Date joined" msgstr "创建日期" #: assets/templates/assets/asset_detail.html:150 -#: assets/templates/assets/user_asset_list.html:46 -#: perms/models/asset_permission.py:104 perms/models/base.py:38 +#: perms/models/asset_permission.py:115 perms/models/base.py:38 #: perms/templates/perms/asset_permission_create_update.html:55 #: perms/templates/perms/asset_permission_detail.html:120 #: perms/templates/perms/remote_app_permission_create_update.html:54 @@ -1714,8 +1704,6 @@ msgstr "创建日期" #: terminal/templates/terminal/terminal_list.html:34 #: users/templates/users/_select_user_modal.html:18 #: users/templates/users/user_detail.html:144 -#: users/templates/users/user_granted_asset.html:46 -#: users/templates/users/user_group_granted_asset.html:46 #: users/templates/users/user_profile.html:63 msgid "Active" msgstr "激活中" @@ -1881,7 +1869,7 @@ msgid "Create command filter" msgstr "创建命令过滤器" #: assets/templates/assets/cmd_filter_rule_list.html:33 -#: assets/views/cmd_filter.py:103 +#: assets/views/cmd_filter.py:105 msgid "Command filter rule list" msgstr "命令过滤器规则列表" @@ -1908,7 +1896,7 @@ msgid "Gateway list" msgstr "网关列表" #: assets/templates/assets/domain_gateway_list.html:56 -#: assets/views/domain.py:134 +#: assets/views/domain.py:136 msgid "Create gateway" msgstr "创建网关" @@ -2056,19 +2044,19 @@ msgstr "批量更新资产" msgid "Command filter list" msgstr "命令过滤器列表" -#: assets/views/cmd_filter.py:66 +#: assets/views/cmd_filter.py:67 msgid "Update command filter" msgstr "更新命令过滤器" -#: assets/views/cmd_filter.py:83 +#: assets/views/cmd_filter.py:85 msgid "Command filter detail" msgstr "命令过滤器详情" -#: assets/views/cmd_filter.py:137 +#: assets/views/cmd_filter.py:139 msgid "Create command filter rule" msgstr "创建命令过滤器规则" -#: assets/views/cmd_filter.py:171 +#: assets/views/cmd_filter.py:174 msgid "Update command filter rule" msgstr "更新命令过滤器规则" @@ -2076,19 +2064,19 @@ msgstr "更新命令过滤器规则" msgid "Domain list" msgstr "网域列表" -#: assets/views/domain.py:65 +#: assets/views/domain.py:66 msgid "Update domain" msgstr "更新网域" -#: assets/views/domain.py:79 +#: assets/views/domain.py:81 msgid "Domain detail" msgstr "网域详情" -#: assets/views/domain.py:105 +#: assets/views/domain.py:107 msgid "Domain gateway list" msgstr "域网关列表" -#: assets/views/domain.py:154 +#: assets/views/domain.py:157 msgid "Update gateway" msgstr "创建网关" @@ -2096,11 +2084,11 @@ msgstr "创建网关" msgid "Label list" msgstr "标签列表" -#: assets/views/label.py:55 +#: assets/views/label.py:56 msgid "Tips: Avoid using label names reserved internally: {}" msgstr "提示: 请避免使用内部预留标签名: {}" -#: assets/views/label.py:73 +#: assets/views/label.py:74 msgid "Update label" msgstr "更新标签" @@ -2218,7 +2206,7 @@ msgstr "Agent" #: audits/models.py:99 audits/templates/audits/login_log_list.html:56 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 -#: users/forms.py:175 users/models/user.py:86 +#: users/forms.py:175 users/models/user.py:346 #: users/templates/users/first_login.html:45 msgid "MFA" msgstr "MFA" @@ -2431,7 +2419,7 @@ msgstr "代码错误" #: authentication/templates/authentication/login.html:27 #: authentication/templates/authentication/login_otp.html:27 #: users/templates/users/reset_password.html:25 -#: xpack/plugins/interface/models.py:39 +#: xpack/plugins/interface/models.py:36 msgid "Welcome to the Jumpserver open source fortress" msgstr "欢迎使用Jumpserver开源堡垒机" @@ -2996,71 +2984,71 @@ msgstr "命令执行" msgid "Organization" msgstr "组织" -#: perms/api/user_permission.py:206 +#: perms/api/mixin.py:128 msgid "ungrouped" msgstr "未分组" -#: perms/api/user_permission.py:211 +#: perms/api/mixin.py:133 msgid "empty" msgstr "空" -#: perms/forms/asset_permission.py:65 perms/forms/remote_app_permission.py:34 -#: perms/models/asset_permission.py:102 perms/models/base.py:37 +#: perms/forms/asset_permission.py:66 perms/forms/remote_app_permission.py:34 +#: perms/models/asset_permission.py:113 perms/models/base.py:37 #: perms/templates/perms/asset_permission_list.html:47 #: perms/templates/perms/asset_permission_list.html:67 #: perms/templates/perms/asset_permission_list.html:114 #: perms/templates/perms/remote_app_permission_list.html:16 #: templates/_nav.html:14 users/forms.py:286 users/models/group.py:26 -#: users/models/user.py:70 users/templates/users/_select_user_modal.html:16 +#: users/models/user.py:330 users/templates/users/_select_user_modal.html:16 #: users/templates/users/user_detail.html:213 #: users/templates/users/user_list.html:38 #: xpack/plugins/orgs/templates/orgs/org_list.html:15 msgid "User group" msgstr "用户组" -#: perms/forms/asset_permission.py:81 +#: perms/forms/asset_permission.py:82 msgid "" "Tips: The RDP protocol does not support separate controls for uploading or " "downloading files" msgstr "提示:RDP 协议不支持单独控制上传或下载文件" -#: perms/forms/asset_permission.py:91 perms/forms/remote_app_permission.py:47 +#: perms/forms/asset_permission.py:92 perms/forms/remote_app_permission.py:47 msgid "User or group at least one required" msgstr "用户和用户组至少选一个" -#: perms/forms/asset_permission.py:100 +#: perms/forms/asset_permission.py:101 msgid "Asset or group at least one required" msgstr "资产和节点至少选一个" -#: perms/models/asset_permission.py:27 settings/forms.py:143 +#: perms/models/asset_permission.py:29 settings/forms.py:143 msgid "All" msgstr "全部" -#: perms/models/asset_permission.py:29 +#: perms/models/asset_permission.py:31 msgid "Upload file" msgstr "上传文件" -#: perms/models/asset_permission.py:30 +#: perms/models/asset_permission.py:32 msgid "Download file" msgstr "下载文件" -#: perms/models/asset_permission.py:31 +#: perms/models/asset_permission.py:33 msgid "Upload download" msgstr "上传下载" -#: perms/models/asset_permission.py:80 +#: perms/models/asset_permission.py:82 msgid "Actions" msgstr "动作" -#: perms/models/asset_permission.py:84 perms/models/asset_permission.py:114 +#: perms/models/asset_permission.py:86 perms/models/asset_permission.py:125 #: templates/_nav.html:44 msgid "Asset permission" msgstr "资产授权" -#: perms/models/asset_permission.py:105 perms/models/base.py:40 +#: perms/models/asset_permission.py:116 perms/models/base.py:40 #: perms/templates/perms/asset_permission_detail.html:90 #: perms/templates/perms/remote_app_permission_detail.html:82 -#: users/models/user.py:102 users/templates/users/user_detail.html:107 +#: users/models/user.py:362 users/templates/users/user_detail.html:107 #: users/templates/users/user_profile.html:116 msgid "Date expired" msgstr "失效日期" @@ -3087,11 +3075,11 @@ msgstr "用户或用户组" msgid "Assets and node" msgstr "资产或节点" -#: perms/templates/perms/asset_permission_asset.html:80 +#: perms/templates/perms/asset_permission_asset.html:70 msgid "Add asset to this permission" msgstr "添加资产" -#: perms/templates/perms/asset_permission_asset.html:97 +#: perms/templates/perms/asset_permission_asset.html:84 #: perms/templates/perms/asset_permission_detail.html:157 #: perms/templates/perms/asset_permission_user.html:97 #: perms/templates/perms/asset_permission_user.html:125 @@ -3107,11 +3095,11 @@ msgstr "添加资产" msgid "Add" msgstr "添加" -#: perms/templates/perms/asset_permission_asset.html:108 +#: perms/templates/perms/asset_permission_asset.html:95 msgid "Add node to this permission" msgstr "添加节点" -#: perms/templates/perms/asset_permission_asset.html:125 +#: perms/templates/perms/asset_permission_asset.html:112 #: users/templates/users/user_detail.html:230 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:121 msgid "Join" @@ -3208,13 +3196,13 @@ msgstr "添加用户组" #: perms/views/asset_permission.py:33 perms/views/asset_permission.py:64 #: perms/views/asset_permission.py:81 perms/views/asset_permission.py:98 -#: perms/views/asset_permission.py:135 perms/views/asset_permission.py:168 +#: perms/views/asset_permission.py:135 perms/views/asset_permission.py:169 #: perms/views/remote_app_permission.py:33 #: perms/views/remote_app_permission.py:49 -#: perms/views/remote_app_permission.py:65 -#: perms/views/remote_app_permission.py:79 -#: perms/views/remote_app_permission.py:106 -#: perms/views/remote_app_permission.py:143 templates/_nav.html:41 +#: perms/views/remote_app_permission.py:66 +#: perms/views/remote_app_permission.py:81 +#: perms/views/remote_app_permission.py:108 +#: perms/views/remote_app_permission.py:145 templates/_nav.html:41 #: xpack/plugins/orgs/templates/orgs/org_list.html:21 msgid "Perms" msgstr "权限管理" @@ -3239,7 +3227,7 @@ msgstr "资产授权详情" msgid "Asset permission user list" msgstr "资产授权用户列表" -#: perms/views/asset_permission.py:169 +#: perms/views/asset_permission.py:170 msgid "Asset permission asset list" msgstr "资产授权资产列表" @@ -3251,19 +3239,19 @@ msgstr "远程应用授权列表" msgid "Create RemoteApp permission" msgstr "创建远程应用授权规则" -#: perms/views/remote_app_permission.py:66 +#: perms/views/remote_app_permission.py:67 msgid "Update RemoteApp permission" msgstr "更新远程应用授权规则" -#: perms/views/remote_app_permission.py:80 +#: perms/views/remote_app_permission.py:82 msgid "RemoteApp permission detail" msgstr "远程应用授权详情" -#: perms/views/remote_app_permission.py:107 +#: perms/views/remote_app_permission.py:109 msgid "RemoteApp permission user list" msgstr "远程应用授权用户列表" -#: perms/views/remote_app_permission.py:144 +#: perms/views/remote_app_permission.py:146 msgid "RemoteApp permission RemoteApp list" msgstr "远程应用授权远程应用列表" @@ -3466,35 +3454,45 @@ msgstr "批量命令" msgid "Allow user batch execute commands" msgstr "允许用户批量执行命令" -#: settings/forms.py:198 +#: settings/forms.py:196 +msgid "Service account registration" +msgstr "终端注册" + +#: settings/forms.py:197 +msgid "" +"Allow using bootstrap token register service account, when terminal setup, " +"can disable it" +msgstr "允许使用bootstrap token注册终端, 当终端注册成功后可以禁止" + +#: settings/forms.py:203 msgid "Limit the number of login failures" msgstr "限制登录失败次数" -#: settings/forms.py:202 +#: settings/forms.py:207 msgid "No logon interval" msgstr "禁止登录时间间隔" -#: settings/forms.py:204 +#: settings/forms.py:209 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 "" "提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录" -#: settings/forms.py:211 +#: settings/forms.py:216 msgid "Connection max idle time" msgstr "SSH最大空闲时间" -#: settings/forms.py:213 +#: settings/forms.py:218 msgid "" "If idle time more than it, disconnect connection(only ssh now) Unit: minute" msgstr "提示:(单位:分)如果超过该配置没有操作,连接会被断开(仅ssh)" -#: settings/forms.py:219 +#: settings/forms.py:224 msgid "Password expiration time" msgstr "密码过期时间" -#: settings/forms.py:221 +#: settings/forms.py:226 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 " @@ -3504,81 +3502,81 @@ msgstr "" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提醒邮件将在密码过期前5天内由系统(每天)自动发送给用户" -#: settings/forms.py:230 +#: settings/forms.py:235 msgid "Password minimum length" msgstr "密码最小长度 " -#: settings/forms.py:234 +#: settings/forms.py:239 msgid "Must contain capital letters" msgstr "必须包含大写字母" -#: settings/forms.py:236 +#: settings/forms.py:241 msgid "" "After opening, the user password changes and resets must contain uppercase " "letters" msgstr "开启后,用户密码修改、重置必须包含大写字母" -#: settings/forms.py:241 +#: settings/forms.py:246 msgid "Must contain lowercase letters" msgstr "必须包含小写字母" -#: settings/forms.py:242 +#: settings/forms.py:247 msgid "" "After opening, the user password changes and resets must contain lowercase " "letters" msgstr "开启后,用户密码修改、重置必须包含小写字母" -#: settings/forms.py:247 +#: settings/forms.py:252 msgid "Must contain numeric characters" msgstr "必须包含数字字符" -#: settings/forms.py:248 +#: settings/forms.py:253 msgid "" "After opening, the user password changes and resets must contain numeric " "characters" msgstr "开启后,用户密码修改、重置必须包含数字字符" -#: settings/forms.py:253 +#: settings/forms.py:258 msgid "Must contain special characters" msgstr "必须包含特殊字符" -#: settings/forms.py:254 +#: settings/forms.py:259 msgid "" "After opening, the user password changes and resets must contain special " "characters" msgstr "开启后,用户密码修改、重置必须包含特殊字符" -#: settings/forms.py:261 +#: settings/forms.py:266 msgid "Create user email subject" msgstr "创建用户邮件的主题" -#: settings/forms.py:262 +#: settings/forms.py:267 msgid "" "Tips: When creating a user, send the subject of the email (eg:Create account " "successfully)" msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)" -#: settings/forms.py:266 +#: settings/forms.py:271 msgid "Create user honorific" msgstr "创建用户邮件的敬语" -#: settings/forms.py:267 +#: settings/forms.py:272 msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)" msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 您好)" -#: settings/forms.py:272 +#: settings/forms.py:277 msgid "Create user email content" msgstr "创建用户邮件的内容" -#: settings/forms.py:273 +#: settings/forms.py:278 msgid "Tips:When creating a user, send the content of the email" msgstr "提示: 创建用户时,发送设置密码邮件的内容" -#: settings/forms.py:276 +#: settings/forms.py:281 msgid "Signature" msgstr "署名" -#: settings/forms.py:277 +#: settings/forms.py:282 msgid "Tips: Email signature (eg:jumpserver)" msgstr "提示: 邮件的署名 (例如: jumpserver)" @@ -3596,7 +3594,7 @@ msgid "Please submit the LDAP configuration before import" msgstr "请先提交LDAP配置再进行导入" #: settings/templates/settings/_ldap_list_users_modal.html:39 -#: users/models/user.py:66 users/templates/users/user_detail.html:71 +#: users/models/user.py:326 users/templates/users/user_detail.html:71 #: users/templates/users/user_profile.html:59 msgid "Email" msgstr "邮件" @@ -3930,7 +3928,7 @@ msgstr "" " " #: templates/_nav.html:10 users/views/group.py:28 users/views/group.py:45 -#: users/views/group.py:62 users/views/group.py:79 users/views/group.py:96 +#: users/views/group.py:63 users/views/group.py:81 users/views/group.py:98 #: users/views/login.py:154 users/views/user.py:68 users/views/user.py:85 #: users/views/user.py:129 users/views/user.py:196 users/views/user.py:218 #: users/views/user.py:270 users/views/user.py:311 @@ -4384,7 +4382,7 @@ msgstr "你没有权限" msgid "Could not reset self otp, use profile reset instead" msgstr "不能再该页面重置MFA, 请去个人信息页面重置" -#: users/forms.py:33 users/models/user.py:74 +#: users/forms.py:33 users/models/user.py:334 #: users/templates/users/_select_user_modal.html:15 #: users/templates/users/user_detail.html:87 #: users/templates/users/user_list.html:37 @@ -4412,7 +4410,7 @@ msgstr "添加到用户组" msgid "Public key should not be the same as your old one." msgstr "不能和原来的密钥相同" -#: users/forms.py:91 users/forms.py:252 users/serializers/v1.py:91 +#: users/forms.py:91 users/forms.py:252 users/serializers/v1.py:95 msgid "Not a valid ssh public key" msgstr "ssh密钥不合法" @@ -4497,57 +4495,57 @@ msgstr "复制你的公钥到这里" msgid "Select users" msgstr "选择用户" -#: users/models/user.py:37 users/models/user.py:449 +#: users/models/user.py:50 users/templates/users/user_update.html:22 +#: users/views/login.py:46 users/views/login.py:107 users/views/user.py:283 +msgid "User auth from {}, go there change password" +msgstr "用户认证源来自 {}, 请去相应系统修改密码" + +#: users/models/user.py:120 users/models/user.py:447 msgid "Administrator" msgstr "管理员" -#: users/models/user.py:39 +#: users/models/user.py:122 msgid "Application" msgstr "应用程序" -#: users/models/user.py:40 +#: users/models/user.py:123 msgid "Auditor" msgstr "审计员" -#: users/models/user.py:43 users/templates/users/user_profile.html:92 +#: users/models/user.py:281 users/templates/users/user_profile.html:92 #: users/templates/users/user_profile.html:159 #: users/templates/users/user_profile.html:162 msgid "Disable" msgstr "禁用" -#: users/models/user.py:44 users/templates/users/user_profile.html:90 +#: users/models/user.py:282 users/templates/users/user_profile.html:90 #: users/templates/users/user_profile.html:166 msgid "Enable" msgstr "启用" -#: users/models/user.py:45 users/templates/users/user_profile.html:88 +#: users/models/user.py:283 users/templates/users/user_profile.html:88 msgid "Force enable" msgstr "强制启用" -#: users/models/user.py:77 +#: users/models/user.py:337 msgid "Avatar" msgstr "头像" -#: users/models/user.py:80 users/templates/users/user_detail.html:82 +#: users/models/user.py:340 users/templates/users/user_detail.html:82 msgid "Wechat" msgstr "微信" -#: users/models/user.py:109 users/templates/users/user_detail.html:103 +#: users/models/user.py:369 users/templates/users/user_detail.html:103 #: users/templates/users/user_list.html:39 #: users/templates/users/user_profile.html:100 msgid "Source" msgstr "用户来源" -#: users/models/user.py:113 +#: users/models/user.py:373 msgid "Date password last updated" msgstr "最后更新密码日期" -#: users/models/user.py:139 users/templates/users/user_update.html:22 -#: users/views/login.py:46 users/views/login.py:107 users/views/user.py:283 -msgid "User auth from {}, go there change password" -msgstr "用户认证源来自 {}, 请去相应系统修改密码" - -#: users/models/user.py:452 +#: users/models/user.py:450 msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" @@ -4583,7 +4581,7 @@ msgstr "头像路径" msgid "Role limit to {}" msgstr "角色只能为 {}" -#: users/serializers/v1.py:63 +#: users/serializers/v1.py:67 msgid "Password does not match security rules" msgstr "密码不满足安全规则" @@ -4628,7 +4626,7 @@ msgid "Import user groups" msgstr "导入用户组" #: users/templates/users/_user_groups_update_modal.html:4 -#: users/views/group.py:63 +#: users/views/group.py:64 msgid "Update user group" msgstr "更新用户组" @@ -4715,14 +4713,14 @@ msgid "Reset password" msgstr "重置密码" #: users/templates/users/reset_password.html:59 -#: users/templates/users/user_create.html:15 +#: users/templates/users/user_create.html:13 #: users/templates/users/user_password_update.html:61 #: users/templates/users/user_update.html:13 msgid "Your password must satisfy" msgstr "您的密码必须满足:" #: users/templates/users/reset_password.html:60 -#: users/templates/users/user_create.html:16 +#: users/templates/users/user_create.html:14 #: users/templates/users/user_password_update.html:62 #: users/templates/users/user_update.html:14 msgid "Password strength" @@ -4733,42 +4731,42 @@ msgid "Password again" msgstr "再次输入密码" #: users/templates/users/reset_password.html:105 -#: users/templates/users/user_create.html:35 +#: users/templates/users/user_create.html:33 #: users/templates/users/user_password_update.html:99 #: users/templates/users/user_update.html:46 msgid "Very weak" msgstr "很弱" #: users/templates/users/reset_password.html:106 -#: users/templates/users/user_create.html:36 +#: users/templates/users/user_create.html:34 #: users/templates/users/user_password_update.html:100 #: users/templates/users/user_update.html:47 msgid "Weak" msgstr "弱" #: users/templates/users/reset_password.html:107 -#: users/templates/users/user_create.html:37 +#: users/templates/users/user_create.html:35 #: users/templates/users/user_password_update.html:101 #: users/templates/users/user_update.html:48 msgid "Normal" msgstr "正常" #: users/templates/users/reset_password.html:108 -#: users/templates/users/user_create.html:38 +#: users/templates/users/user_create.html:36 #: users/templates/users/user_password_update.html:102 #: users/templates/users/user_update.html:49 msgid "Medium" msgstr "一般" #: users/templates/users/reset_password.html:109 -#: users/templates/users/user_create.html:39 +#: users/templates/users/user_create.html:37 #: users/templates/users/user_password_update.html:103 #: users/templates/users/user_update.html:50 msgid "Strong" msgstr "强" #: users/templates/users/reset_password.html:110 -#: users/templates/users/user_create.html:40 +#: users/templates/users/user_create.html:38 #: users/templates/users/user_password_update.html:104 #: users/templates/users/user_update.html:51 msgid "Very strong" @@ -4880,7 +4878,7 @@ msgstr "重置用户MFA成功" #: users/templates/users/user_group_detail.html:22 #: users/templates/users/user_group_granted_asset.html:18 -#: users/views/group.py:80 +#: users/views/group.py:82 msgid "User group detail" msgstr "用户组详情" @@ -5222,7 +5220,7 @@ msgstr "密码或密钥不合法" msgid "User group list" msgstr "用户组列表" -#: users/views/group.py:97 +#: users/views/group.py:99 msgid "User group granted asset" msgstr "用户组授权资产" diff --git a/apps/settings/forms.py b/apps/settings/forms.py index 78fab4801..c6f51e646 100644 --- a/apps/settings/forms.py +++ b/apps/settings/forms.py @@ -192,6 +192,11 @@ class SecuritySettingForm(BaseForm): required=False, label=_("Batch execute commands"), help_text=_("Allow user batch execute commands") ) + SECURITY_SERVICE_ACCOUNT_REGISTRATION = forms.BooleanField( + required=False, label=_("Service account registration"), + help_text=_("Allow using bootstrap token register service account, " + "when terminal setup, can disable it") + ) # limit login count SECURITY_LOGIN_LIMIT_COUNT = forms.IntegerField( min_value=3, max_value=99999, diff --git a/apps/terminal/serializers_v2/terminal.py b/apps/terminal/serializers_v2/terminal.py index 2ecb4e1ee..c7ebe682c 100644 --- a/apps/terminal/serializers_v2/terminal.py +++ b/apps/terminal/serializers_v2/terminal.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # +from django.conf import settings from rest_framework import serializers from common.utils import get_request_ip @@ -27,6 +28,9 @@ class TerminalSerializer(serializers.ModelSerializer): valid = super().is_valid(raise_exception=raise_exception) if not valid: return valid + if not settings.SECURITY_SERVICE_ACCOUNT_REGISTRATION: + error = {"error": "service account registration disabled"} + raise serializers.ValidationError(error) data = {'name': self.validated_data.get('name')} kwargs = {'data': data} if self.instance and self.instance.user: From 6cf11ab411dfae2bcf144fdd039d041ce4d8df9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AB=E5=8D=83=E6=B5=81?= <40739051+jym503558564@users.noreply.github.com> Date: Mon, 15 Jul 2019 15:38:34 +0800 Subject: [PATCH 4/7] =?UTF-8?q?[Update]=20=E4=BC=98=E5=8C=96mfa=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E8=BA=AB=E4=BB=BD=E9=A1=B5=E9=9D=A2=E6=B0=B4=E5=B9=B3?= =?UTF-8?q?=E7=BA=BF=E5=9C=A8=E5=A4=A7=E5=B1=8F=E5=B9=95=E6=97=A0=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=AF=B9=E5=85=B6=E9=97=AE=E9=A2=98=20(#2948)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Update] 优化mfa验证身份页面水平线在大屏幕无自动对其问题 * [Update] 修改小问题 --- apps/users/templates/users/_base_otp.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/users/templates/users/_base_otp.html b/apps/users/templates/users/_base_otp.html index b45758afc..0bb257239 100644 --- a/apps/users/templates/users/_base_otp.html +++ b/apps/users/templates/users/_base_otp.html @@ -42,8 +42,7 @@
{% trans 'Security token validation' %}  {% trans 'Account' %} {{ user.username }}  {% trans 'Follow these steps to complete the binding operation' %}
-
- +
{% block content %} {% endblock %}
From a884d0d53196df2ba92d68768c4f64915496fe9a Mon Sep 17 00:00:00 2001 From: BaiJiangJie <32935519+BaiJiangJie@users.noreply.github.com> Date: Mon, 15 Jul 2019 18:47:17 +0800 Subject: [PATCH 5/7] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E6=94=B9Bug=20(#2952)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Bugfix] 取消管理用户列表按资产数量字段排序 * [Bugfix] 修复后去用户资产权限动作的Bug --- apps/assets/templates/assets/admin_user_list.html | 2 +- apps/perms/api/user_permission.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/assets/templates/assets/admin_user_list.html b/apps/assets/templates/assets/admin_user_list.html index 61389ad08..2212fd82f 100644 --- a/apps/assets/templates/assets/admin_user_list.html +++ b/apps/assets/templates/assets/admin_user_list.html @@ -115,7 +115,7 @@ function initTable() { }}], ajax_url: '{% url "api-assets:admin-user-list" %}', columns: [ - {data: function(){return ""}}, {data: "name"}, {data: "username" }, {data: "assets_amount" }, + {data: function(){return ""}}, {data: "name"}, {data: "username" }, {data: "assets_amount", orderable: false}, {#{data: "connectivity_amount"}, {data: "connectivity_amount"}, {data: "connectivity_amount"},#} {data: "comment"}, {data: "id"} ] diff --git a/apps/perms/api/user_permission.py b/apps/perms/api/user_permission.py index 0e67e2747..0746252cb 100644 --- a/apps/perms/api/user_permission.py +++ b/apps/perms/api/user_permission.py @@ -344,6 +344,12 @@ class GetUserAssetPermissionActionsApi(UserPermissionCacheMixin, RetrieveAPIView user_id = self.request.query_params.get('user_id', '') asset_id = self.request.query_params.get('asset_id', '') system_id = self.request.query_params.get('system_user_id', '') + try: + user_id = uuid.UUID(user_id) + asset_id = uuid.UUID(asset_id) + system_id = uuid.UUID(system_id) + except ValueError: + return Response({'msg': False}, status=403) user = get_object_or_404(User, id=user_id) From 6f2f025b04804020cf55df5f8dcb8b9672a4cded Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Mon, 15 Jul 2019 19:02:00 +0800 Subject: [PATCH 6/7] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E6=94=B9=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E5=88=97=E8=A1=A8=E6=95=B0=E9=87=8F=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/asset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/assets/api/asset.py b/apps/assets/api/asset.py index 2d22dd41b..bdf5b8d89 100644 --- a/apps/assets/api/asset.py +++ b/apps/assets/api/asset.py @@ -85,7 +85,7 @@ class AssetViewSet(LabelFilter, OrgBulkModelViewSet): queryset = queryset.filter( nodes__key__regex='^{}(:[0-9]+)*$'.format(node.key), ) - return queryset + return queryset.distinct() def filter_admin_user_id(self, queryset): admin_user_id = self.request.query_params.get('admin_user_id') From ab520ee345c91189ab10709b15bab47df94c4ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AB=E5=8D=83=E6=B5=81?= <40739051+jym503558564@users.noreply.github.com> Date: Tue, 16 Jul 2019 10:03:00 +0800 Subject: [PATCH 7/7] =?UTF-8?q?[Bugfix]=20=E7=BC=BA=E5=B0=91=E5=BC=95?= =?UTF-8?q?=E5=85=A5=E7=BF=BB=E8=AF=91=20(#2956)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/forms/cmd_filter.py | 1 + apps/assets/serializers/cmd_filter.py | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/assets/forms/cmd_filter.py b/apps/assets/forms/cmd_filter.py index 308a008d0..cd7df89e8 100644 --- a/apps/assets/forms/cmd_filter.py +++ b/apps/assets/forms/cmd_filter.py @@ -2,6 +2,7 @@ # from django import forms from django.core.exceptions import ValidationError +from django.utils.translation import ugettext_lazy as _ import re from orgs.mixins import OrgModelForm diff --git a/apps/assets/serializers/cmd_filter.py b/apps/assets/serializers/cmd_filter.py index dfdff2cdb..6be0eb466 100644 --- a/apps/assets/serializers/cmd_filter.py +++ b/apps/assets/serializers/cmd_filter.py @@ -2,6 +2,7 @@ # import re from rest_framework import serializers +from django.utils.translation import ugettext_lazy as _ from common.fields import ChoiceDisplayField from common.serializers import AdaptedBulkListSerializer