From e2f540a1f4c1d64497ac321220b1ced1dedb3b3a Mon Sep 17 00:00:00 2001 From: xinwen Date: Tue, 27 Oct 2020 19:54:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(assets):=20=E7=BD=91=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E4=B8=8D=E8=83=BD=E5=8C=85=E5=90=AB=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E5=AD=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/models/domain.py | 5 +- apps/assets/serializers/domain.py | 5 +- apps/common/utils/strings.py | 5 ++ apps/common/validators.py | 14 ++++- apps/locale/zh/LC_MESSAGES/django.mo | Bin 59261 -> 59297 bytes apps/locale/zh/LC_MESSAGES/django.po | 88 ++++++++++++++------------- 6 files changed, 70 insertions(+), 47 deletions(-) create mode 100644 apps/common/utils/strings.py diff --git a/apps/assets/models/domain.py b/apps/assets/models/domain.py index 296e4cd18..a307b2d81 100644 --- a/apps/assets/models/domain.py +++ b/apps/assets/models/domain.py @@ -9,6 +9,7 @@ import paramiko from django.db import models from django.utils.translation import ugettext_lazy as _ +from common.utils.strings import no_special_chars from orgs.mixins.models import OrgModelMixin from .base import BaseUser @@ -64,8 +65,8 @@ class Gateway(BaseUser): def test_connective(self, local_port=None): if local_port is None: local_port = self.port - if self.password and not re.match(r'\w+$', self.password): - return False, _("Password should not contain special characters") + if self.password and not no_special_chars(self.password): + return False, _("Password should not contains special characters") client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) diff --git a/apps/assets/serializers/domain.py b/apps/assets/serializers/domain.py index 64c5eae66..8cb103962 100644 --- a/apps/assets/serializers/domain.py +++ b/apps/assets/serializers/domain.py @@ -4,7 +4,7 @@ from rest_framework import serializers from common.serializers import AdaptedBulkListSerializer from orgs.mixins.serializers import BulkOrgResourceModelSerializer - +from common.validators import NoSpecialChars from ..models import Domain, Gateway from .base import AuthSerializerMixin @@ -47,6 +47,9 @@ class GatewaySerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): 'private_key', 'public_key', 'domain', 'is_active', 'date_created', 'date_updated', 'created_by', 'comment', ] + extra_kwargs = { + 'password': {'validators': [NoSpecialChars()]} + } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/apps/common/utils/strings.py b/apps/common/utils/strings.py new file mode 100644 index 000000000..f6dcdef18 --- /dev/null +++ b/apps/common/utils/strings.py @@ -0,0 +1,5 @@ +import re + + +def no_special_chars(s): + return bool(re.match(r'\w+$', s)) diff --git a/apps/common/validators.py b/apps/common/validators.py index 8106f27bd..a1c513637 100644 --- a/apps/common/validators.py +++ b/apps/common/validators.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- # from django.core.validators import RegexValidator -from django.utils.translation import ugettext_lazy as _ - +from django.utils.translation import ugettext as _ from rest_framework.validators import ( UniqueTogetherValidator, ValidationError ) +from rest_framework import serializers + +from common.utils.strings import no_special_chars alphanumeric = RegexValidator(r'^[0-9a-zA-Z_@\-\.]*$', _('Special char not allowed')) @@ -22,3 +24,11 @@ class ProjectUniqueValidator(UniqueTogetherValidator): continue errors[field] = _('This field must be unique.') raise ValidationError(errors) + + +class NoSpecialChars: + def __call__(self, value): + if not no_special_chars(value): + raise serializers.ValidationError( + _("Should not contains special characters") + ) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index ec010369a35867c7460010c64fe990374d8796e1..a2129531563d90d1057251ebbdb9d64e204bdf92 100644 GIT binary patch delta 16131 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 1c3dbd821..90af880a6 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: 2020-10-21 14:31+0800\n" +"POT-Creation-Date: 2020-10-27 20:00+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -24,7 +24,7 @@ msgstr "自定义" #: applications/models/database_app.py:18 applications/models/k8s_app.py:11 #: applications/models/remote_app.py:21 assets/models/asset.py:149 #: assets/models/base.py:232 assets/models/cluster.py:18 -#: assets/models/cmd_filter.py:21 assets/models/domain.py:20 +#: assets/models/cmd_filter.py:21 assets/models/domain.py:21 #: assets/models/group.py:20 assets/models/label.py:18 ops/mixin.py:24 #: orgs/models.py:23 perms/models/base.py:48 settings/models.py:27 #: terminal/models.py:27 terminal/models.py:348 terminal/models.py:380 @@ -59,7 +59,7 @@ msgid "Host" msgstr "主机" #: applications/models/database_app.py:27 assets/models/asset.py:195 -#: assets/models/domain.py:51 +#: assets/models/domain.py:52 msgid "Port" msgstr "端口" @@ -74,8 +74,8 @@ msgstr "数据库" #: applications/models/remote_app.py:45 assets/models/asset.py:154 #: assets/models/asset.py:230 assets/models/base.py:237 #: assets/models/cluster.py:29 assets/models/cmd_filter.py:23 -#: assets/models/cmd_filter.py:57 assets/models/domain.py:21 -#: assets/models/domain.py:54 assets/models/group.py:23 +#: assets/models/cmd_filter.py:57 assets/models/domain.py:22 +#: assets/models/domain.py:55 assets/models/group.py:23 #: assets/models/label.py:23 ops/models/adhoc.py:37 orgs/models.py:26 #: perms/models/base.py:56 settings/models.py:32 terminal/models.py:37 #: terminal/models.py:387 terminal/models.py:424 tickets/models/ticket.py:43 @@ -125,7 +125,7 @@ msgstr "Kubernetes应用" #: users/templates/users/user_asset_permission.html:40 #: users/templates/users/user_asset_permission.html:70 #: users/templates/users/user_granted_remote_app.html:36 -#: xpack/plugins/change_auth_plan/models.py:282 +#: xpack/plugins/change_auth_plan/models.py:283 #: xpack/plugins/cloud/models.py:275 msgid "Asset" msgstr "资产" @@ -159,7 +159,7 @@ msgstr "创建者" # msgstr "创建者" #: applications/models/remote_app.py:42 assets/models/asset.py:229 #: assets/models/base.py:238 assets/models/cluster.py:26 -#: assets/models/domain.py:23 assets/models/gathered_user.py:19 +#: assets/models/domain.py:24 assets/models/gathered_user.py:19 #: assets/models/group.py:22 assets/models/label.py:25 common/db/models.py:69 #: common/mixins/models.py:50 ops/models/adhoc.py:38 ops/models/command.py:27 #: orgs/models.py:25 orgs/models.py:398 perms/models/base.py:55 @@ -222,7 +222,7 @@ msgstr "内部的" msgid "Platform" msgstr "系统平台" -#: assets/models/asset.py:190 assets/models/domain.py:50 +#: assets/models/asset.py:190 assets/models/domain.py:51 #: assets/serializers/asset_user.py:46 settings/serializers/settings.py:52 #: users/templates/users/_granted_assets.html:26 #: users/templates/users/user_asset_permission.html:156 @@ -237,7 +237,7 @@ msgstr "IP" msgid "Hostname" msgstr "主机名" -#: assets/models/asset.py:194 assets/models/domain.py:52 +#: assets/models/asset.py:194 assets/models/domain.py:53 #: assets/models/user.py:97 terminal/serializers/session.py:29 msgid "Protocol" msgstr "协议" @@ -247,8 +247,8 @@ msgstr "协议" msgid "Protocols" msgstr "协议组" -#: assets/models/asset.py:198 assets/models/domain.py:26 -#: assets/models/domain.py:53 +#: assets/models/asset.py:198 assets/models/domain.py:27 +#: assets/models/domain.py:54 msgid "Domain" msgstr "网域" @@ -260,7 +260,7 @@ msgid "Nodes" msgstr "节点" #: assets/models/asset.py:200 assets/models/cmd_filter.py:22 -#: assets/models/domain.py:55 assets/models/label.py:22 +#: assets/models/domain.py:56 assets/models/label.py:22 #: authentication/models.py:48 msgid "Is active" msgstr "激活" @@ -365,7 +365,7 @@ msgstr "" #: users/templates/users/user_list.html:15 #: users/templates/users/user_profile.html:47 #: xpack/plugins/change_auth_plan/models.py:47 -#: xpack/plugins/change_auth_plan/models.py:278 +#: xpack/plugins/change_auth_plan/models.py:279 msgid "Username" msgstr "用户名" @@ -381,20 +381,20 @@ msgstr "用户名" #: users/templates/users/user_pubkey_update.html:41 #: users/templates/users/user_update.html:20 #: xpack/plugins/change_auth_plan/models.py:68 -#: xpack/plugins/change_auth_plan/models.py:190 -#: xpack/plugins/change_auth_plan/models.py:285 +#: xpack/plugins/change_auth_plan/models.py:191 +#: xpack/plugins/change_auth_plan/models.py:286 msgid "Password" msgstr "密码" #: assets/models/base.py:235 xpack/plugins/change_auth_plan/models.py:72 -#: xpack/plugins/change_auth_plan/models.py:197 -#: xpack/plugins/change_auth_plan/models.py:292 +#: xpack/plugins/change_auth_plan/models.py:198 +#: xpack/plugins/change_auth_plan/models.py:293 msgid "SSH private key" msgstr "SSH密钥" #: assets/models/base.py:236 xpack/plugins/change_auth_plan/models.py:75 -#: xpack/plugins/change_auth_plan/models.py:193 -#: xpack/plugins/change_auth_plan/models.py:288 +#: xpack/plugins/change_auth_plan/models.py:194 +#: xpack/plugins/change_auth_plan/models.py:289 msgid "SSH public key" msgstr "SSH公钥" @@ -506,13 +506,13 @@ msgstr "动作" msgid "Command filter rule" msgstr "命令过滤规则" -#: assets/models/domain.py:62 +#: assets/models/domain.py:63 msgid "Gateway" msgstr "网关" -#: assets/models/domain.py:68 -msgid "Password should not contain special characters" -msgstr "不能包含特殊字符" +#: assets/models/domain.py:69 +msgid "Password should not contains special characters" +msgstr "密码不能包含特殊字符" #: assets/models/gathered_user.py:16 msgid "Present" @@ -937,7 +937,7 @@ msgstr "成功" #: audits/models.py:43 ops/models/command.py:28 perms/models/base.py:52 #: terminal/models.py:200 tickets/serializers/request_asset_perm.py:29 #: xpack/plugins/change_auth_plan/models.py:177 -#: xpack/plugins/change_auth_plan/models.py:307 +#: xpack/plugins/change_auth_plan/models.py:308 #: xpack/plugins/gathered_user/models.py:76 msgid "Date start" msgstr "开始日期" @@ -1021,7 +1021,7 @@ msgstr "Agent" msgid "MFA" msgstr "多因子认证" -#: audits/models.py:105 xpack/plugins/change_auth_plan/models.py:303 +#: audits/models.py:105 xpack/plugins/change_auth_plan/models.py:304 #: xpack/plugins/cloud/models.py:223 msgid "Reason" msgstr "原因" @@ -1491,14 +1491,18 @@ msgstr "" msgid "Invalid ip" msgstr "无效IP" -#: common/validators.py:11 +#: common/validators.py:13 msgid "Special char not allowed" msgstr "不能包含特殊字符" -#: common/validators.py:23 +#: common/validators.py:25 msgid "This field must be unique." msgstr "字段必须唯一" +#: common/validators.py:33 +msgid "Should not contains special characters" +msgstr "不能包含特殊字符" + #: jumpserver/conf.py:471 templates/_base_only_msg_content.html:27 #: xpack/plugins/interface/api.py:18 xpack/plugins/interface/models.py:36 msgid "Welcome to the JumpServer open source fortress" @@ -1628,7 +1632,7 @@ msgid "End time" msgstr "完成时间" #: ops/models/adhoc.py:242 xpack/plugins/change_auth_plan/models.py:180 -#: xpack/plugins/change_auth_plan/models.py:310 +#: xpack/plugins/change_auth_plan/models.py:311 #: xpack/plugins/gathered_user/models.py:79 msgid "Time" msgstr "时间" @@ -2590,16 +2594,16 @@ msgstr "请先确认系统用户" msgid "Confirmed system-users changed" msgstr "确认的系统用户变更了" -#: tickets/api/request_asset_perm.py:108 tickets/api/request_asset_perm.py:115 +#: tickets/api/request_asset_perm.py:111 tickets/api/request_asset_perm.py:118 #: xpack/plugins/cloud/models.py:211 msgid "Succeed" msgstr "成功" -#: tickets/api/request_asset_perm.py:123 +#: tickets/api/request_asset_perm.py:125 msgid "From request ticket: {} {}" msgstr "来自工单申请: {} {}" -#: tickets/api/request_asset_perm.py:125 +#: tickets/api/request_asset_perm.py:127 msgid "{} request assets, approved by {}" msgstr "{} 申请资产,通过人 {}" @@ -3858,44 +3862,44 @@ msgstr "所有资产使用不同的随机密码" msgid "Password rules" msgstr "密码规则" -#: xpack/plugins/change_auth_plan/models.py:187 +#: xpack/plugins/change_auth_plan/models.py:188 msgid "Change auth plan snapshot" msgstr "改密计划快照" -#: xpack/plugins/change_auth_plan/models.py:202 -#: xpack/plugins/change_auth_plan/models.py:296 +#: xpack/plugins/change_auth_plan/models.py:203 +#: xpack/plugins/change_auth_plan/models.py:297 msgid "Change auth plan execution" msgstr "改密计划执行" -#: xpack/plugins/change_auth_plan/models.py:269 +#: xpack/plugins/change_auth_plan/models.py:270 msgid "Ready" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:270 +#: xpack/plugins/change_auth_plan/models.py:271 msgid "Preflight check" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:271 +#: xpack/plugins/change_auth_plan/models.py:272 msgid "Change auth" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:272 +#: xpack/plugins/change_auth_plan/models.py:273 msgid "Verify auth" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:273 +#: xpack/plugins/change_auth_plan/models.py:274 msgid "Keep auth" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:274 +#: xpack/plugins/change_auth_plan/models.py:275 msgid "Finished" msgstr "结束" -#: xpack/plugins/change_auth_plan/models.py:300 +#: xpack/plugins/change_auth_plan/models.py:301 msgid "Step" msgstr "步骤" -#: xpack/plugins/change_auth_plan/models.py:317 +#: xpack/plugins/change_auth_plan/models.py:318 msgid "Change auth plan task" msgstr "改密计划任务"