From dabc9eb09bb07be0a2b62b91e37505b96f3d1e0b Mon Sep 17 00:00:00 2001 From: Bai Date: Fri, 18 Jun 2021 18:10:04 +0800 Subject: [PATCH 01/26] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=B3=BB=E7=BB=9F=E7=94=A8=E6=88=B7=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=97=B6username=E7=9A=84=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=9B=EF=BC=88=E5=8D=95=E7=8B=AC=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E8=BF=87=E7=9A=84=E7=B3=BB=E7=BB=9F=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E4=BF=A1=E6=81=AF=E7=99=BB=E5=BD=95=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E5=A4=B1=E8=B4=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/models/user.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/assets/models/user.py b/apps/assets/models/user.py index b64aeb758..384272af7 100644 --- a/apps/assets/models/user.py +++ b/apps/assets/models/user.py @@ -248,13 +248,16 @@ class SystemUser(BaseUser): if user_id: user = get_object_or_none(User, pk=user_id) + _username = self.username if self.username_same_with_user: if user and not username: - username = user.username + _username = user.username + else: + _username = username # 加载某个资产的特殊配置认证信息 try: - self.load_asset_special_auth(asset, username) + self.load_asset_special_auth(asset, _username) except Exception as e: logger.error('Load special auth Error: ', e) pass From 40eb7c79bb08a6487ad9e5602ba49befcd841593 Mon Sep 17 00:00:00 2001 From: jiangweidong Date: Wed, 16 Jun 2021 10:18:18 +0800 Subject: [PATCH 02/26] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=9D=92?= =?UTF-8?q?=E4=BA=91SDK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements/requirements.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 97dac7a49..94d6f9ea7 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -73,8 +73,8 @@ vine==1.3.0 drf-yasg==1.20.0 Werkzeug==0.15.3 drf-nested-routers==0.91 -aliyun-python-sdk-core-v3==2.9.1 -aliyun-python-sdk-ecs==4.10.1 +aliyun-python-sdk-core-v3==2.9.1 +aliyun-python-sdk-ecs==4.10.1 rest_condition==1.0.3 python-ldap==3.3.1 tencentcloud-sdk-python==3.0.40 @@ -112,3 +112,4 @@ pyvmomi==7.0.1 termcolor==1.1.0 azure-identity==1.5.0 azure-mgmt-subscription==1.0.0 +qingcloud-sdk==1.2.12 From 62eb131f59475a83b2fd8419c462c40fd2bfbcc2 Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 21 Jun 2021 18:36:38 +0800 Subject: [PATCH 03/26] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E7=94=A8=E6=88=B7=E6=97=B6=E5=A6=82=E6=9E=9C=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=9C=A8=E4=BB=BB=E4=BD=95=E7=BB=84=E7=BB=87=E5=86=85?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=B7=BB=E5=8A=A0=E5=88=B0default=E7=BB=84?= =?UTF-8?q?=E7=BB=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/orgs/signals_handler/common.py | 11 +++++++++++ apps/settings/utils/ldap.py | 7 +------ utils/migrate_unorg_users_to_default_org.sh | 9 +++++++++ 3 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 utils/migrate_unorg_users_to_default_org.sh diff --git a/apps/orgs/signals_handler/common.py b/apps/orgs/signals_handler/common.py index fb8b2a2d1..942c82cbb 100644 --- a/apps/orgs/signals_handler/common.py +++ b/apps/orgs/signals_handler/common.py @@ -15,6 +15,7 @@ from orgs.hands import set_current_org, Node, get_current_org from perms.models import (AssetPermission, ApplicationPermission) from users.models import UserGroup, User from common.const.signals import PRE_REMOVE, POST_REMOVE +from common.decorator import on_transaction_commit from common.signals import django_ready from common.utils import get_logger from common.utils.connection import RedisPubSub @@ -167,3 +168,13 @@ def on_org_user_changed(action, instance, reverse, pk_set, **kwargs): leaved_users = set(pk_set) - set(org.members.filter(id__in=user_pk_set).values_list('id', flat=True)) _clear_users_from_org(org, leaved_users) + + +@receiver(post_save, sender=User) +@on_transaction_commit +def on_user_created_set_default_org(sender, instance, created, **kwargs): + if not created: + return + if instance.orgs.count() > 0: + return + Organization.default().members.add(instance) diff --git a/apps/settings/utils/ldap.py b/apps/settings/utils/ldap.py index 6eeab1daa..0cac92a4c 100644 --- a/apps/settings/utils/ldap.py +++ b/apps/settings/utils/ldap.py @@ -365,17 +365,12 @@ class LDAPImportUtil(object): def perform_import(self, users): logger.info('Start perform import ldap users, count: {}'.format(len(users))) errors = [] - instances = [] for user in users: try: - obj, created = self.update_or_create(user) - if created: - instances.append(obj) + self.update_or_create(user) except Exception as e: errors.append({user['username']: str(e)}) logger.error(e) - # 默认添加用户到 Default 组织 - Organization.default().members.add(*instances) logger.info('End perform import ldap users') return errors diff --git a/utils/migrate_unorg_users_to_default_org.sh b/utils/migrate_unorg_users_to_default_org.sh new file mode 100644 index 000000000..e26ca7525 --- /dev/null +++ b/utils/migrate_unorg_users_to_default_org.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# + +python ../apps/manage.py shell << EOF +from users.models import User +from orgs.models import Organization +unorgs_users = [user for user in User.objects.all() if user.orgs.count() == 0] +Organization.default().members.add(*unorgs_users) +EOF From 8d25d0a653b56bd0d08d604b850260410aae30dd Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 18 Jun 2021 19:21:36 +0800 Subject: [PATCH 04/26] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=A1=B5=E9=9D=A2=E7=9A=84=20i18n=20=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/forms.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/authentication/forms.py b/apps/authentication/forms.py index 447d842bd..a4b07700c 100644 --- a/apps/authentication/forms.py +++ b/apps/authentication/forms.py @@ -3,7 +3,7 @@ from django import forms from django.conf import settings -from django.utils.translation import gettext_lazy as _ +from django.utils.translation import ugettext_lazy as _ from captcha.fields import CaptchaField, CaptchaTextInput @@ -23,12 +23,17 @@ class UserLoginForm(forms.Form): max_length=1024, strip=False ) auto_login = forms.BooleanField( - label=_("{} days auto login").format(days_auto_login or 1), - required=False, initial=False, widget=forms.CheckboxInput( + required=False, initial=False, + widget=forms.CheckboxInput( attrs={'disabled': disable_days_auto_login} ) ) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + auto_login_field = self.fields['auto_login'] + auto_login_field.label = _("{} days auto login").format(self.days_auto_login or 1) + def confirm_login_allowed(self, user): if not user.is_staff: raise forms.ValidationError( From 053d958f9a8bd8e0f86f96cdf5d49d2789f320fa Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 17 Jun 2021 13:20:34 +0800 Subject: [PATCH 05/26] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dapp=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E4=B8=8B=E8=BD=BDxrdp=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/api/connection_token.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/authentication/api/connection_token.py b/apps/authentication/api/connection_token.py index 1ac5435be..1e23f36d8 100644 --- a/apps/authentication/api/connection_token.py +++ b/apps/authentication/api/connection_token.py @@ -155,8 +155,14 @@ class UserConnectionTokenViewSet(RootOrgViewMixin, SerializerMixin2, GenericView data = '' for k, v in options.items(): data += f'{k}:{v}\n' + if asset: + name = asset.hostname + elif application: + name = application.name + else: + name = '*' response = HttpResponse(data, content_type='application/octet-stream') - filename = "{}-{}-jumpserver.rdp".format(user.username, asset.hostname) + filename = "{}-{}-jumpserver.rdp".format(user.username, name) filename = urllib.parse.quote(filename) response['Content-Disposition'] = 'attachment; filename*=UTF-8\'\'%s' % filename return response From 2b927caa6085ae5e8d461d815a13a7eabea77864 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 22 Jun 2021 11:00:15 +0800 Subject: [PATCH 06/26] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Doidc=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit .. --- apps/authentication/views/login.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/authentication/views/login.py b/apps/authentication/views/login.py index 083418940..15cb68319 100644 --- a/apps/authentication/views/login.py +++ b/apps/authentication/views/login.py @@ -44,14 +44,15 @@ class UserLoginView(mixins.AuthMixin, FormView): # show jumpserver login page if request http://{JUMP-SERVER}/?admin=1 if self.request.GET.get("admin", 0): return None + next_url = request.GET.get('next') or '' auth_type = '' auth_url = '' if settings.AUTH_OPENID: auth_type = 'OIDC' - auth_url = reverse(settings.AUTH_OPENID_AUTH_LOGIN_URL_NAME) + auth_url = reverse(settings.AUTH_OPENID_AUTH_LOGIN_URL_NAME) + f'?next={next_url}' elif settings.AUTH_CAS: auth_type = 'CAS' - auth_url = reverse(settings.CAS_LOGIN_URL_NAME) + auth_url = reverse(settings.CAS_LOGIN_URL_NAME) + f'?next={next_url}' if not auth_url: return None From 71a7eea8aded64d354ae79f31c5687533ba24077 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 22 Jun 2021 11:10:41 +0800 Subject: [PATCH 07/26] =?UTF-8?q?perf:=20=E4=BF=AE=E5=A4=8Dnext=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E5=8F=AF=E8=83=BD=E4=BC=9A=E5=AF=BC=E8=87=B4=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/views/login.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/authentication/views/login.py b/apps/authentication/views/login.py index 15cb68319..0aa9f90b5 100644 --- a/apps/authentication/views/login.py +++ b/apps/authentication/views/login.py @@ -44,7 +44,7 @@ class UserLoginView(mixins.AuthMixin, FormView): # show jumpserver login page if request http://{JUMP-SERVER}/?admin=1 if self.request.GET.get("admin", 0): return None - next_url = request.GET.get('next') or '' + next_url = request.GET.get('next') or '/' auth_type = '' auth_url = '' if settings.AUTH_OPENID: From a02d80a2aeea95a4dcd34c84a4a72aaff15ba066 Mon Sep 17 00:00:00 2001 From: wojiushixiaobai <296015668@qq.com> Date: Tue, 22 Jun 2021 14:43:39 +0800 Subject: [PATCH 08/26] =?UTF-8?q?feat:=20arm64=20=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements/deb_buster_requirements.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/requirements/deb_buster_requirements.txt b/requirements/deb_buster_requirements.txt index 8177173b2..72cd44b7a 100644 --- a/requirements/deb_buster_requirements.txt +++ b/requirements/deb_buster_requirements.txt @@ -12,7 +12,7 @@ default-mysql-client default-libmysqlclient-dev # Pillow -# libffi-dev +libffi-dev # libfreetype6-dev # libfribidi-dev # libharfbuzz-dev @@ -36,4 +36,3 @@ sqlite # ansible sshpass - From 50bd0b796d40ea9928e6f55924df252ad4e7b32b Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 22 Jun 2021 19:09:34 +0800 Subject: [PATCH 09/26] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9LDAP=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=AF=BC=E5=85=A5=E7=9A=84=E7=BB=84=E7=BB=87=E4=B8=BA?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=BB=84=E7=BB=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/settings/api/ldap.py | 21 ++++++++++++++++----- apps/settings/utils/ldap.py | 8 ++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/apps/settings/api/ldap.py b/apps/settings/api/ldap.py index 0c982d1b1..dd5c15563 100644 --- a/apps/settings/api/ldap.py +++ b/apps/settings/api/ldap.py @@ -7,8 +7,7 @@ from collections.abc import Iterable from smtplib import SMTPSenderRefused from rest_framework import generics from rest_framework.views import Response, APIView -from django.conf import settings -from django.core.mail import send_mail, get_connection +from orgs.models import Organization from django.utils.translation import ugettext_lazy as _ from ..utils import ( @@ -17,11 +16,12 @@ from ..utils import ( ) from ..tasks import sync_ldap_user from common.permissions import IsOrgAdmin, IsSuperUser -from common.utils import get_logger +from common.utils import get_logger, is_uuid from ..serializers import ( MailTestSerializer, LDAPTestConfigSerializer, LDAPUserSerializer, PublicSettingSerializer, LDAPTestLoginSerializer, SettingsSerializer ) +from orgs.utils import current_org from users.models import User logger = get_logger(__file__) @@ -170,6 +170,14 @@ class LDAPUserListApi(generics.ListAPIView): class LDAPUserImportAPI(APIView): permission_classes = (IsSuperUser,) + def get_org(self): + org_id = self.request.data.get('org_id') + if is_uuid(org_id): + org = Organization.objects.get(id=org_id) + else: + org = current_org + return org + def get_ldap_users(self): username_list = self.request.data.get('username_list', []) cache_police = self.request.query_params.get('cache_police', True) @@ -188,12 +196,15 @@ class LDAPUserImportAPI(APIView): if users is None: return Response({'msg': _('Get ldap users is None')}, status=400) - errors = LDAPImportUtil().perform_import(users) + org = self.get_org() + errors = LDAPImportUtil().perform_import(users, org) if errors: return Response({'errors': errors}, status=400) count = users if users is None else len(users) - return Response({'msg': _('Imported {} users successfully').format(count)}) + return Response({ + 'msg': _('Imported {} users successfully (Organization: {})').format(count, org) + }) class LDAPCacheRefreshAPI(generics.RetrieveAPIView): diff --git a/apps/settings/utils/ldap.py b/apps/settings/utils/ldap.py index 0cac92a4c..366d21614 100644 --- a/apps/settings/utils/ldap.py +++ b/apps/settings/utils/ldap.py @@ -362,15 +362,19 @@ class LDAPImportUtil(object): ) return obj, created - def perform_import(self, users): + def perform_import(self, users, org=None): logger.info('Start perform import ldap users, count: {}'.format(len(users))) errors = [] + objs = [] for user in users: try: - self.update_or_create(user) + obj, created = self.update_or_create(user) + objs.append(obj) except Exception as e: errors.append({user['username']: str(e)}) logger.error(e) + if org and not org.is_root(): + org.members.add(*objs) logger.info('End perform import ldap users') return errors From 53eb32e620322b41b7777e1ff39e542016f62ef7 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 22 Jun 2021 19:12:18 +0800 Subject: [PATCH 10/26] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 76419 -> 76610 bytes apps/locale/zh/LC_MESSAGES/django.po | 159 +++++++++++++++------------ 2 files changed, 86 insertions(+), 73 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index c34d92992fb7de8358c9c4c934ca9d7ac1701dd9..15e579624ab5182fea6e09feec7b40a2c87177ef 100644 GIT binary patch delta 22368 zcmZA91(a4*+s5%T3^5EHLk%&&FvQRyFeoL`h=erKjda(Ml5Xjc5CjA%=|+47qyeC+H$n(ZwPwa=mjXkdp{RiP_;*(80 z?;C8|)bq~aB|OCV?ae%Ii|6^?m=>Owk^$vgdfrhwG;Hm8VVJv(=f%acm-HB!MqsN&iN&t zCLV?tuyK3OOO79R@Vq2g9Ye7RCdBq;Z*!PA2@}vh4^wb{Z#k8exC7(ipO^s8p(eUv zKE)KoK^@)BgkfUh^r&&smM?_bu^3E^6)_<;#rXI&s()|vlTz`iXaN&ZSFqSzjk>a} zs0shToOlLx<-uQjUS~{&YX264@jJ|cGcY^uMlJjn@@RQ)u`UL8V*hn-8g_CMjKgHa zvr#KuY4JwXj_gM*^rYo)qb}f$nTXZs*~o~>7r}&B9<|_FmT!$ohSbiny0(YVMANQ%~9$m+z z_zpE7NmsY>oT#_qBTRx-QTMJ9YN0JruWesUjMGpjUW{7!HdMdUsQK@q=6i>l&rjLS zB_dHPim~`}i(8^zqdu4h2U`0yOh>!|b%Nim{k*k5vwVW??w&_r2>qfk5#~c~sqcM4 zC6YuX)Wg>a^I%`pGw>to9H_zp7JdT5^!{I_qI>!RHG$X5O&E&mm<08VWI%0s5!8fVm~~O(zrqaI8nqL{P~(z)EI->`kJV%Y+?2^N0>7)1?@j!a@>hwcpP=_ zZ=&XZWWMgr{woouk84PR>X;U_Raq>~WAR638Pr0mVsZQmwZIvug)c*W0If#t%o)_Y zmr(s~qsG7P!~QFgsIS|SjHuVIIBMm!Pz!8_ny5SK-u5@gU_Rp6m>U1Uw0H&eI=)5i zaKe6WTxQfKU;)%Zi~3Y_k4vH+zN)Ab)kp0>Gt>z?T7Cd#As%M=A5mAb5p}}-s9SK_ z+V7fgP#2o8zuSonsPp(yRCKTMq9!V14Yg1cHbf0}LcZ{$1e-IT-I1)ACRMfqhhni>!Y9Sj?S9Sn3@iEMS z7cm+&S#B(XT4;0Bd~HzuyI?W&Q9HW{{lNQ4MJv0BI&ttfZb1pmG^mNPp%#)CwS{HP zs;DchgSxlPurdxsjXR85&?(dfoJZ~Om2bHJsyrZ}j<2yE#vbgpvN5J7?to=+q{V+= zY2urxaXE*$*Qy}qBrb;9x#p-7c0=9!zNm+JJnCWpeh62rr+EztUHJjjgvZTun1%Q% zYQlI!-P@8H^|0o`C@hbe@M|o9<50I`Cu+y;px(0gs0Ab+=H|=lQ_;OCWR^vBtbtlk zOUrjet+>DC$DyulDr&)VEWgnFhAFF)!bEou3N7@xSQ#qCk^cSc=ce~iG97{d9z zWmI%!Ypug>)V)58aquE)<<~9$FKVKY(QbiZ7>hWUnFn=+`7s15q2{ZJT5wC$L){I1 zRi;w;1UI3c;(t+FoNA1_1-Vd9bpc$CEl>|v;<0Y4bE6ho*y0$A%VIwA6|p+@!Th)n zbxU53wf8^iIJeUDsGZ1$T4`a_)|N%R6-`iA)XnT~4ny7ZahMaQqQ>pSP&|)`@CIrp zpP@eR;*4ki<5P(k?>gqf1jI#93n_zo+P^?eG#s^ni5QJDE&m&4B|eJ5_!KkZ3)Bv$ zp5Tl@&EFXHaJTcRXk}ecTQUd}<5bkZA5d5JJL&`H2x=$pSo=Fv|I8EJGm#(F{}a?L z`OK_>T6hiA0ve!hvEQ1C7SIoMg(EGVf?Ci5)QLBt2A)8j@FGUx1Jt-wlU)DIs2wea zI$>FhtDyRQiMoKMn2_^(-Kiua@eQiOWOFWRg-cOCT5UsZ*$LDF&Y?blZlkt5;beE> zq^J|8Lp=*wkxlZdp)TNW)V#MaO7H($D#=MiPT|4Bq8PYGs0FpdB-jI!;V{&<<}}N% zzzE`P$Q5~iqjumnYN1b23lILz8H$=e8OGN8pMi=d%!0aS#mthZho~Itb!&louLqm6 zFeULi)cAd<3%P*0Wsfi=CYtJQO%_yK-25DUU0Dk%T5)&OC)_~Py&r-aFcS;n�}v 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 delta 22213 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 0df73a8ea..593fea0b1 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 17:47+0800\n" +"POT-Creation-Date: 2021-06-22 19:04+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -184,7 +184,7 @@ msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " #: users/templates/users/_select_user_modal.html:14 #: xpack/plugins/change_auth_plan/models.py:47 #: xpack/plugins/change_auth_plan/models.py:278 -#: xpack/plugins/cloud/serializers.py:51 +#: xpack/plugins/cloud/serializers.py:65 msgid "Username" msgstr "用户名" @@ -304,7 +304,7 @@ msgid "Cluster" msgstr "集群" #: applications/serializers/attrs/application_category/db.py:11 -#: ops/models/adhoc.py:146 xpack/plugins/cloud/serializers.py:49 +#: ops/models/adhoc.py:146 xpack/plugins/cloud/serializers.py:63 msgid "Host" msgstr "主机" @@ -314,7 +314,7 @@ msgstr "主机" #: applications/serializers/attrs/application_type/oracle.py:11 #: applications/serializers/attrs/application_type/pgsql.py:11 #: assets/models/asset.py:188 assets/models/domain.py:53 -#: xpack/plugins/cloud/serializers.py:50 +#: xpack/plugins/cloud/serializers.py:64 msgid "Port" msgstr "端口" @@ -344,7 +344,7 @@ msgstr "目标URL" #: 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/cloud/serializers.py:53 +#: xpack/plugins/cloud/serializers.py:67 msgid "Password" msgstr "密码" @@ -376,7 +376,7 @@ msgstr "不能删除根节点 ({})" msgid "Deletion failed and the node contains assets" msgstr "删除失败,节点包含资产" -#: assets/backends/db.py:110 assets/models/user.py:304 audits/models.py:39 +#: assets/backends/db.py:110 assets/models/user.py:307 audits/models.py:39 #: perms/models/application_permission.py:31 #: perms/models/asset_permission.py:101 templates/_nav.html:45 #: terminal/backends/command/models.py:20 @@ -396,7 +396,7 @@ msgstr "系统用户(动态)" #: assets/backends/db.py:233 assets/models/asset.py:196 #: assets/models/cluster.py:19 assets/models/user.py:67 templates/_nav.html:44 -#: xpack/plugins/cloud/models.py:92 xpack/plugins/cloud/serializers.py:146 +#: xpack/plugins/cloud/models.py:92 xpack/plugins/cloud/serializers.py:181 msgid "Admin user" msgstr "管理用户" @@ -715,7 +715,7 @@ msgstr "ssh私钥" #: users/templates/users/user_asset_permission.html:41 #: users/templates/users/user_asset_permission.html:73 #: users/templates/users/user_asset_permission.html:158 -#: xpack/plugins/cloud/models.py:89 xpack/plugins/cloud/serializers.py:147 +#: xpack/plugins/cloud/models.py:89 xpack/plugins/cloud/serializers.py:182 msgid "Node" msgstr "节点" @@ -1124,7 +1124,7 @@ msgstr "启用" msgid "-" msgstr "" -#: audits/models.py:97 xpack/plugins/cloud/const.py:25 +#: audits/models.py:97 xpack/plugins/cloud/const.py:27 msgid "Failed" msgstr "失败" @@ -1242,7 +1242,7 @@ msgstr "企业微信" msgid "DingTalk" msgstr "钉钉" -#: authentication/api/connection_token.py:249 +#: authentication/api/connection_token.py:255 msgid "Invalid token" msgstr "无效的令牌" @@ -1422,12 +1422,12 @@ msgstr "您的密码已过期,先修改再登录" msgid "Your password is invalid" msgstr "您的密码无效" -#: authentication/forms.py:26 +#: authentication/forms.py:35 msgid "{} days auto login" msgstr "{} 天内自动登录" -#: authentication/forms.py:41 authentication/forms.py:54 -#: authentication/forms.py:56 users/forms/profile.py:27 +#: authentication/forms.py:46 authentication/forms.py:59 +#: authentication/forms.py:61 users/forms/profile.py:27 msgid "MFA code" msgstr "多因子认证验证码" @@ -1632,19 +1632,19 @@ msgstr "请使用密码登录,然后绑定企业微信" msgid "Binding DingTalk failed" msgstr "绑定钉钉失败" -#: authentication/views/login.py:59 +#: authentication/views/login.py:60 msgid "Redirecting" msgstr "跳转中" -#: authentication/views/login.py:60 +#: authentication/views/login.py:61 msgid "Redirecting to {} authentication" msgstr "正在跳转到 {} 认证" -#: authentication/views/login.py:84 +#: authentication/views/login.py:85 msgid "Please enable cookies and try again." msgstr "设置你的浏览器支持cookie" -#: authentication/views/login.py:202 +#: authentication/views/login.py:203 msgid "" "Wait for {} confirm, You also can copy link to her/him
\n" " Don't close this page" @@ -1652,15 +1652,15 @@ msgstr "" "等待 {} 确认, 你也可以复制链接发给他/她
\n" " 不要关闭本页面" -#: authentication/views/login.py:207 +#: authentication/views/login.py:208 msgid "No ticket found" msgstr "没有发现工单" -#: authentication/views/login.py:239 +#: authentication/views/login.py:240 msgid "Logout success" msgstr "退出登录成功" -#: authentication/views/login.py:240 +#: authentication/views/login.py:241 msgid "Logout success, return login page" msgstr "退出登录成功,返回到登录页面" @@ -2195,13 +2195,13 @@ msgstr "欢迎使用JumpServer开源堡垒机" msgid "Test success" msgstr "测试成功" -#: settings/api/ldap.py:189 +#: settings/api/ldap.py:197 msgid "Get ldap users is None" msgstr "获取 LDAP 用户为 None" -#: settings/api/ldap.py:196 -msgid "Imported {} users successfully" -msgstr "导入 {} 个用户成功" +#: settings/api/ldap.py:206 +msgid "Imported {} users successfully (Organization: {})" +msgstr "成功导入 {} 个用户 ( 组织: {} )" #: settings/models.py:123 users/templates/users/reset_password.html:29 msgid "Setting" @@ -2543,100 +2543,100 @@ msgstr "启用企业微信认证" msgid "Enable DingTalk Auth" msgstr "启用钉钉认证" -#: settings/utils/ldap.py:417 +#: settings/utils/ldap.py:416 msgid "Host or port is disconnected: {}" msgstr "主机或端口不可连接: {}" -#: settings/utils/ldap.py:419 +#: settings/utils/ldap.py:418 msgid "The port is not the port of the LDAP service: {}" msgstr "端口不是LDAP服务端口: {}" -#: settings/utils/ldap.py:421 +#: settings/utils/ldap.py:420 msgid "Please add certificate: {}" msgstr "请添加证书" -#: settings/utils/ldap.py:423 settings/utils/ldap.py:450 -#: settings/utils/ldap.py:480 settings/utils/ldap.py:508 +#: settings/utils/ldap.py:422 settings/utils/ldap.py:449 +#: settings/utils/ldap.py:479 settings/utils/ldap.py:507 msgid "Unknown error: {}" msgstr "未知错误: {}" -#: settings/utils/ldap.py:437 +#: settings/utils/ldap.py:436 msgid "Bind DN or Password incorrect" msgstr "绑定DN或密码错误" -#: settings/utils/ldap.py:444 +#: settings/utils/ldap.py:443 msgid "Please enter Bind DN: {}" msgstr "请输入绑定DN: {}" -#: settings/utils/ldap.py:446 +#: settings/utils/ldap.py:445 msgid "Please enter Password: {}" msgstr "请输入密码: {}" -#: settings/utils/ldap.py:448 +#: settings/utils/ldap.py:447 msgid "Please enter correct Bind DN and Password: {}" msgstr "请输入正确的绑定DN和密码: {}" -#: settings/utils/ldap.py:466 +#: settings/utils/ldap.py:465 msgid "Invalid User OU or User search filter: {}" msgstr "不合法的用户OU或用户过滤器: {}" -#: settings/utils/ldap.py:497 +#: settings/utils/ldap.py:496 msgid "LDAP User attr map not include: {}" msgstr "LDAP属性映射没有包含: {}" -#: settings/utils/ldap.py:504 +#: settings/utils/ldap.py:503 msgid "LDAP User attr map is not dict" msgstr "LDAP属性映射不合法" -#: settings/utils/ldap.py:523 +#: settings/utils/ldap.py:522 msgid "LDAP authentication is not enabled" msgstr "LDAP认证没有启用" -#: settings/utils/ldap.py:541 +#: settings/utils/ldap.py:540 msgid "Error (Invalid LDAP server): {}" msgstr "错误 (不合法的LDAP服务器地址): {}" -#: settings/utils/ldap.py:543 +#: settings/utils/ldap.py:542 msgid "Error (Invalid Bind DN): {}" msgstr "错误(不合法的绑定DN): {}" -#: settings/utils/ldap.py:545 +#: settings/utils/ldap.py:544 msgid "Error (Invalid LDAP User attr map): {}" msgstr "错误(不合法的LDAP属性映射): {}" -#: settings/utils/ldap.py:547 +#: settings/utils/ldap.py:546 msgid "Error (Invalid User OU or User search filter): {}" msgstr "错误(不合法的用户OU或用户过滤器): {}" -#: settings/utils/ldap.py:549 +#: settings/utils/ldap.py:548 msgid "Error (Not enabled LDAP authentication): {}" msgstr "错误(没有启用LDAP认证): {}" -#: settings/utils/ldap.py:551 +#: settings/utils/ldap.py:550 msgid "Error (Unknown): {}" msgstr "错误(未知): {}" -#: settings/utils/ldap.py:554 +#: settings/utils/ldap.py:553 msgid "Succeed: Match {} s user" msgstr "成功匹配 {} 个用户" -#: settings/utils/ldap.py:587 +#: settings/utils/ldap.py:586 msgid "Authentication failed (configuration incorrect): {}" msgstr "认证失败(配置错误): {}" -#: settings/utils/ldap.py:589 +#: settings/utils/ldap.py:588 msgid "Authentication failed (before login check failed): {}" msgstr "认证失败(登录前检查失败): {}" -#: settings/utils/ldap.py:591 +#: settings/utils/ldap.py:590 msgid "Authentication failed (username or password incorrect): {}" msgstr "认证失败 (用户名或密码不正确): {}" -#: settings/utils/ldap.py:593 +#: settings/utils/ldap.py:592 msgid "Authentication failed (Unknown): {}" msgstr "认证失败: (未知): {}" -#: settings/utils/ldap.py:596 +#: settings/utils/ldap.py:595 msgid "Authentication success: {}" msgstr "认证成功: {}" @@ -2825,7 +2825,7 @@ msgstr "数据库应用" msgid "Perms" msgstr "权限管理" -#: templates/_nav.html:97 terminal/notifications.py:15 +#: templates/_nav.html:97 terminal/notifications.py:16 msgid "Sessions" msgstr "会话管理" @@ -3280,11 +3280,11 @@ msgstr "命令存储" msgid "Replay storage" msgstr "录像存储" -#: terminal/notifications.py:35 +#: terminal/notifications.py:48 msgid "Danger command alert" msgstr "危险命令告警" -#: terminal/notifications.py:44 +#: terminal/notifications.py:57 #, python-format msgid "" "\n" @@ -3314,18 +3314,18 @@ msgstr "" "
\n" " " -#: terminal/notifications.py:79 +#: terminal/notifications.py:92 #, python-format msgid "" "Insecure Command Alert: [%(name)s->%(login_from)s@%(remote_addr)s] $" "%(command)s" msgstr "危险命令告警: [%(name)s->%(login_from)s@%(remote_addr)s] $%(command)s" -#: terminal/notifications.py:97 +#: terminal/notifications.py:110 msgid "Batch danger command alert" msgstr "批量危险命令告警" -#: terminal/notifications.py:108 +#: terminal/notifications.py:121 #, python-format msgid "" "\n" @@ -3356,7 +3356,7 @@ msgstr "" " ----------------- 命令 ----------------
\n" " " -#: terminal/notifications.py:133 +#: terminal/notifications.py:146 #, python-format msgid "Insecure Web Command Execution Alert: [%(name)s]" msgstr "批量危险命令告警: [%(name)s]" @@ -4057,7 +4057,7 @@ msgid "Security token validation" msgstr "安全令牌验证" #: users/templates/users/_base_otp.html:14 xpack/plugins/cloud/models.py:78 -#: xpack/plugins/cloud/serializers.py:145 +#: xpack/plugins/cloud/serializers.py:180 msgid "Account" msgstr "账户" @@ -4758,31 +4758,39 @@ msgstr "" msgid "Nutanix" msgstr "" -#: xpack/plugins/cloud/const.py:20 +#: xpack/plugins/cloud/const.py:17 +msgid "Huawei Private Cloud" +msgstr "华为私有云" + +#: xpack/plugins/cloud/const.py:18 +msgid "Qingyun Private Cloud" +msgstr "" + +#: xpack/plugins/cloud/const.py:22 msgid "Instance name" msgstr "实例名称" -#: xpack/plugins/cloud/const.py:21 +#: xpack/plugins/cloud/const.py:23 msgid "Instance name and Partial IP" msgstr "实例名称和部分IP" -#: xpack/plugins/cloud/const.py:26 +#: xpack/plugins/cloud/const.py:28 msgid "Succeed" msgstr "成功" -#: xpack/plugins/cloud/const.py:30 +#: xpack/plugins/cloud/const.py:32 msgid "Unsync" msgstr "未同步" -#: xpack/plugins/cloud/const.py:31 +#: xpack/plugins/cloud/const.py:33 msgid "New Sync" msgstr "新同步" -#: xpack/plugins/cloud/const.py:32 +#: xpack/plugins/cloud/const.py:34 msgid "Synced" msgstr "已同步" -#: xpack/plugins/cloud/const.py:33 +#: xpack/plugins/cloud/const.py:35 msgid "Released" msgstr "已释放" @@ -4798,7 +4806,7 @@ msgstr "云服务商" msgid "Cloud account" msgstr "云账号" -#: xpack/plugins/cloud/models.py:81 xpack/plugins/cloud/serializers.py:126 +#: xpack/plugins/cloud/models.py:81 xpack/plugins/cloud/serializers.py:161 msgid "Regions" msgstr "地域" @@ -4806,7 +4814,7 @@ msgstr "地域" msgid "Hostname strategy" msgstr "主机名策略" -#: xpack/plugins/cloud/models.py:95 xpack/plugins/cloud/serializers.py:149 +#: xpack/plugins/cloud/models.py:95 xpack/plugins/cloud/serializers.py:184 msgid "Always update" msgstr "总是更新" @@ -4998,20 +5006,28 @@ msgstr "" msgid "Subscription ID" msgstr "" -#: xpack/plugins/cloud/serializers.py:124 +#: xpack/plugins/cloud/serializers.py:49 +msgid "This field is required" +msgstr "这个字段是必填项" + +#: xpack/plugins/cloud/serializers.py:83 xpack/plugins/cloud/serializers.py:87 +msgid "API Endpoint" +msgstr "API 端点" + +#: xpack/plugins/cloud/serializers.py:159 msgid "History count" msgstr "执行次数" -#: xpack/plugins/cloud/serializers.py:125 +#: xpack/plugins/cloud/serializers.py:160 msgid "Instance count" msgstr "实例个数" -#: xpack/plugins/cloud/serializers.py:148 +#: xpack/plugins/cloud/serializers.py:183 #: xpack/plugins/gathered_user/serializers.py:20 msgid "Periodic display" msgstr "定时执行" -#: xpack/plugins/cloud/utils.py:64 +#: xpack/plugins/cloud/utils.py:65 msgid "Account unavailable" msgstr "账户无效" @@ -5099,8 +5115,5 @@ msgstr "旗舰版" msgid "Community edition" msgstr "社区版" -#~ msgid "This field is required" -#~ msgstr "这个字段是必填项" - #~ msgid "Terminal command alert" #~ msgstr "终端命令告警" From 3ae976c1839399d9e05a2b889726304c57c395c4 Mon Sep 17 00:00:00 2001 From: "fghbng@qq.com" Date: Thu, 3 Jun 2021 11:01:11 +0800 Subject: [PATCH 11/26] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BC=93=E5=AD=98?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=E4=BC=9A=E8=AF=9D=E7=9A=84=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E6=8B=BF=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/orgs/signals_handler/cache.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/orgs/signals_handler/cache.py b/apps/orgs/signals_handler/cache.py index 626975991..20087dfac 100644 --- a/apps/orgs/signals_handler/cache.py +++ b/apps/orgs/signals_handler/cache.py @@ -72,11 +72,17 @@ class OrgResourceStatisticsRefreshUtil: OrgResourceStatisticsCache(Organization.root()).expire(*cache_field_name) -@receiver(pre_save) -def on_post_save_refresh_org_resource_statistics_cache(sender, instance, **kwargs): - OrgResourceStatisticsRefreshUtil.refresh_if_need(instance) +@receiver(post_save) +def on_post_save_refresh_org_resource_statistics_cache(sender, instance, created, **kwargs): + if created: + OrgResourceStatisticsRefreshUtil.refresh_if_need(instance) @receiver(pre_delete) def on_pre_delete_refresh_org_resource_statistics_cache(sender, instance, **kwargs): OrgResourceStatisticsRefreshUtil.refresh_if_need(instance) + + +@receiver(pre_save, sender=Session) +def on_session_changed_refresh_org_resource_statistics_cache(sender, instance, **kwargs): + OrgResourceStatisticsRefreshUtil.refresh_if_need(instance) From 35941ddf7f88299a6d96b3a1e3fc6acb42f88c83 Mon Sep 17 00:00:00 2001 From: "fghbng@qq.com" Date: Thu, 3 Jun 2021 11:44:20 +0800 Subject: [PATCH 12/26] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E7=BC=93?= =?UTF-8?q?=E5=AD=98=EF=BC=8C=E5=B0=86=E4=BC=9A=E8=AF=9D=E7=9A=84=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E6=8B=BF=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/cache.py | 14 ++++++------ apps/orgs/caches.py | 4 ++-- apps/orgs/signals_handler/cache.py | 34 ++++++++++++++++++++++++------ 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/apps/common/cache.py b/apps/common/cache.py index b16d1e7dd..aad069c47 100644 --- a/apps/common/cache.py +++ b/apps/common/cache.py @@ -126,7 +126,7 @@ class Cache(metaclass=CacheType): return data def save_data_to_db(self, data): - logger.info(f'Set data to cache: key={self.key} data={data}') + logger.debug(f'Set data to cache: key={self.key} data={data}') self.redis.hset(self.key, mapping=data) self.load_data_from_db() @@ -143,10 +143,10 @@ class Cache(metaclass=CacheType): def init_all_values(self): t_start = time.time() - logger.info(f'Start init cache: key={self.key}') + logger.debug(f'Start init cache: key={self.key}') data = self.compute_values(*self.field_names) self.save_data_to_db(data) - logger.info(f'End init cache: cost={time.time()-t_start} key={self.key}') + logger.debug(f'End init cache: cost={time.time()-t_start} key={self.key}') return data def refresh(self, *fields): @@ -173,11 +173,11 @@ class Cache(metaclass=CacheType): def expire(self, *fields): self._data = None if not fields: - logger.info(f'Delete cached key: key={self.key}') + logger.debug(f'Delete cached key: key={self.key}') self.redis.delete(self.key) else: self.redis.hdel(self.key, *fields) - logger.info(f'Expire cached fields: key={self.key} fields={fields}') + logger.debug(f'Expire cached fields: key={self.key} fields={fields}') class CacheValueDesc: @@ -201,7 +201,7 @@ class CacheValueDesc: def compute_value(self, instance: Cache): t_start = time.time() - logger.info(f'Start compute cache field: field={self.field_name} key={instance.key}') + logger.debug(f'Start compute cache field: field={self.field_name} key={instance.key}') if self.field_type.queryset is not None: new_value = self.field_type.queryset.count() else: @@ -214,7 +214,7 @@ class CacheValueDesc: new_value = compute_func() new_value = self.field_type.field_type(new_value) - logger.info(f'End compute cache field: cost={time.time()-t_start} field={self.field_name} value={new_value} key={instance.key}') + logger.debug(f'End compute cache field: cost={time.time()-t_start} field={self.field_name} value={new_value} key={instance.key}') return new_value def to_internal_value(self, value): diff --git a/apps/orgs/caches.py b/apps/orgs/caches.py index 5ca445479..cc4f71a2a 100644 --- a/apps/orgs/caches.py +++ b/apps/orgs/caches.py @@ -38,7 +38,7 @@ class OrgRelatedCache(Cache): 在事务提交之后再发送信号,防止因事务的隔离性导致未获得最新的数据 """ def func(): - logger.info(f'CACHE: Send refresh task {self}.{fields}') + logger.debug(f'CACHE: Send refresh task {self}.{fields}') refresh_org_cache_task.delay(self, *fields) on_commit(func) @@ -93,7 +93,7 @@ class OrgResourceStatisticsCache(OrgRelatedCache): return node.assets_amount def compute_total_count_online_users(self): - return len(set(Session.objects.filter(is_finished=False).values_list('user_id', flat=True))) + return Session.objects.filter(is_finished=False).values_list('user_id').distinct().count() def compute_total_count_online_sessions(self): return Session.objects.filter(is_finished=False).count() diff --git a/apps/orgs/signals_handler/cache.py b/apps/orgs/signals_handler/cache.py index 20087dfac..96d2a6186 100644 --- a/apps/orgs/signals_handler/cache.py +++ b/apps/orgs/signals_handler/cache.py @@ -1,5 +1,5 @@ from django.db.models.signals import m2m_changed -from django.db.models.signals import post_save, pre_delete, pre_save +from django.db.models.signals import post_save, pre_delete, pre_save, post_delete from django.dispatch import receiver from orgs.models import Organization, OrganizationMember @@ -60,7 +60,6 @@ class OrgResourceStatisticsRefreshUtil: Node: ['nodes_amount'], Asset: ['assets_amount'], UserGroup: ['groups_amount'], - Session: ['total_count_online_users', 'total_count_online_sessions'] } @classmethod @@ -78,11 +77,34 @@ def on_post_save_refresh_org_resource_statistics_cache(sender, instance, created OrgResourceStatisticsRefreshUtil.refresh_if_need(instance) -@receiver(pre_delete) -def on_pre_delete_refresh_org_resource_statistics_cache(sender, instance, **kwargs): +@receiver(post_delete) +def on_post_delete_refresh_org_resource_statistics_cache(sender, instance, **kwargs): OrgResourceStatisticsRefreshUtil.refresh_if_need(instance) +def _refresh_session_org_resource_statistics_cache(instance: Session): + cache_field_name = ['total_count_online_users', 'total_count_online_sessions'] + + org_cache = OrgResourceStatisticsCache(instance.org) + org_cache.expire(*cache_field_name) + OrgResourceStatisticsCache(Organization.root()).expire(*cache_field_name) + + @receiver(pre_save, sender=Session) -def on_session_changed_refresh_org_resource_statistics_cache(sender, instance, **kwargs): - OrgResourceStatisticsRefreshUtil.refresh_if_need(instance) +def on_session_pre_save(sender, instance: Session, **kwargs): + old = Session.objects.filter(id=instance.id).values_list('is_finished', flat=True) + if old: + instance._signal_old_is_finished = old[0] + else: + instance._signal_old_is_finished = None + + +@receiver(post_save, sender=Session) +def on_session_changed_refresh_org_resource_statistics_cache(sender, instance, created, **kwargs): + if created or instance.is_finished != instance._signal_old_is_finished: + _refresh_session_org_resource_statistics_cache(instance) + + +@receiver(post_delete, sender=Session) +def on_session_deleted_refresh_org_resource_statistics_cache(sender, instance, **kwargs): + _refresh_session_org_resource_statistics_cache(instance) From 6c13fdbc46f165d772696631edc02b7499f9ac3f Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 25 Jun 2021 00:00:12 +0800 Subject: [PATCH 13/26] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit perf: ... --- apps/jumpserver/context_processor.py | 6 +++--- apps/settings/api/common.py | 2 +- apps/static/img/authenticator_iphone.png | Bin 191168 -> 6144 bytes ...ngtalk_log.png => login_dingtalk_logo.png} | Bin apps/static/img/login_image.jpg | Bin 0 -> 66763 bytes apps/static/img/login_image.png | Bin 554182 -> 0 bytes apps/static/img/login_wecom_log.png | Bin 137407 -> 0 bytes apps/static/img/login_wecom_logo.png | Bin 0 -> 5271 bytes apps/static/img/logo_text.png | Bin 11827 -> 5368 bytes 9 files changed, 4 insertions(+), 4 deletions(-) rename apps/static/img/{login_dingtalk_log.png => login_dingtalk_logo.png} (100%) create mode 100644 apps/static/img/login_image.jpg delete mode 100644 apps/static/img/login_image.png delete mode 100644 apps/static/img/login_wecom_log.png create mode 100644 apps/static/img/login_wecom_logo.png diff --git a/apps/jumpserver/context_processor.py b/apps/jumpserver/context_processor.py index fbd7016d3..79b1e450f 100644 --- a/apps/jumpserver/context_processor.py +++ b/apps/jumpserver/context_processor.py @@ -11,11 +11,11 @@ def jumpserver_processor(request): 'DEFAULT_PK': '00000000-0000-0000-0000-000000000000', 'LOGO_URL': static('img/logo.png'), 'LOGO_TEXT_URL': static('img/logo_text.png'), - 'LOGIN_IMAGE_URL': static('img/login_image.png'), + 'LOGIN_IMAGE_URL': static('img/login_image.jpg'), 'FAVICON_URL': static('img/facio.ico'), 'LOGIN_CAS_LOGO_URL': static('img/login_cas_logo.png'), - 'LOGIN_WECOM_LOGO_URL': static('img/login_wecom_log.png'), - 'LOGIN_DINGTALK_LOGO_URL': static('img/login_dingtalk_log.png'), + 'LOGIN_WECOM_LOGO_URL': static('img/login_wecom_logo.png'), + 'LOGIN_DINGTALK_LOGO_URL': static('img/login_dingtalk_logo.png'), 'JMS_TITLE': _('JumpServer Open Source Bastion Host'), 'VERSION': settings.VERSION, 'COPYRIGHT': 'FIT2CLOUD 飞致云' + ' © 2014-2021', diff --git a/apps/settings/api/common.py b/apps/settings/api/common.py index 03c885d78..1cb39e62d 100644 --- a/apps/settings/api/common.py +++ b/apps/settings/api/common.py @@ -81,7 +81,7 @@ class PublicSettingApi(generics.RetrieveAPIView): logo_urls = { 'logo_logout': static('img/logo.png'), 'logo_index': static('img/logo_text.png'), - 'login_image': static('img/login_image.png'), + 'login_image': static('img/login_image.jpg'), 'favicon': static('img/facio.ico') } if not settings.XPACK_ENABLED: diff --git a/apps/static/img/authenticator_iphone.png b/apps/static/img/authenticator_iphone.png index fd5b4e8ebcdd7919fbd582293c716eeff57f1893..ed31d38b3205c7963dde9e51e8aa2a3821e0baf5 100644 GIT binary patch literal 6144 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 WqnUN%kHw(QKCrbUTT~qNiu*5pqW;tX literal 191168 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 ZEG3EFH-lm1|C9g!!0PY*_Zd_l_v9YkR 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 literal 0 HcmV?d00001 diff --git a/apps/static/img/login_image.png b/apps/static/img/login_image.png deleted file mode 100644 index 0273e36697e3df5750dcdfc8ed65d0485fd79874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554182 zcma%hbx>U0vhUy$+!-Xe4`Fb3cXtwOfB|N3hXl9a?rwv-li&~_5MUs9@C1SrLIQz2 zzH`sH_x*9})$6KVd+pWzYgwy%*RH+#@5M%;-8>y%fW^ebUhwh1;O7TDNr1cp;NCX=Ah;Lve>5mUyzD%o?%q&0IKw|0ZEW3q zyrr0)JpHc_VD4I4|E>6cT`d^wpSb=d?d7cx`5!m_S7|T90C&g>eTbKvkEb2vNu2pV z;HS0we;fKo@W~r-9Z%@frr5YDy4m@_AaHLrMJc8y4zE4bUR;z<%%0DV-v-3zASwb9 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�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 z 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 z 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≻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

dg=VRmV9`FLX5ScGGa&Z1&cW)i);{BRi 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�)QNC&!(EYe9DFXWyC0UyYhZsGUF5`; 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 U2k`1?P5%LavVw*@T-GA&e;o?#8vpK;9 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 literal 11827 zcmcI~Wl)^awj~-YIKj1PNN{(DMjD4Efe;`;8i&T+-Q9u)hu|74xFoo{6C_w8!EMOB z@7|fIxv$=@S=H5jzEf-Mv(J{Qu3cZax~e=jCOIYo0s=Nz0i=n5fN1o*HbH;!{N3gt zJoWrT<|M1*1c8}4xf(h^5u{9DMo?O?jiDJ-6KZJUZvPW1ihzK;W1*$vq@$uNYz(tu zH~h8e2h~XpNv|7PevlcxwlM*1|*#pv|YksbVJsHMdakaDYNQ zRJDvftc-a;R22PiEcI}e*NCl?njKR-JcFCRZY7b`6{Cl@yd=ktf3jf+>9k6)NufcC!tcs|X+ z#8g-lB==uuJwJ&7%$=OCXlMj;b`k?Td-~5S*x3EstgYjJh3Pq99Bzho99-<2f3Nfp zqKWapd3MeY*8e!%#FztW4Yh&VIypXbx&F<4j*^PXzv=(ctc}gT*^W+{(Eok6|HyXK za<_wWXhI!f&JM=UNj9bb>z19cj04or3Fe>$gIWJ8;_BuwCzzu-%#KzD!cY4~#n9No z_U{JM|Dk|_44t520B%lhPBu;+HcmdR=lJsov2Y3sb8`NZrvfvvFm?Zbc%1ytJYg=u z|BL#Zc@sk?!~csL7V8+gWlkhLC$^X`Z{#)(e za{ikpVGz{8!Ubv~=K!;z{YNT%J$Jz0<-c3+`QhKq3$=ajScm7=%Nt_oVQ_?^Cv$PX5@0e>$OBHv?p%{3G!OqgWR{WU){+JgF)?L9 ziiNWrAMY-{9|#>B)`d1)ed~ZbS$-d@%T`^>o;!IAx%kkL3^6cZC;p3>P`wYRe-|lX zY^=|~|Df|1fX3=)fUFJwB7DC483Z-Kf5Bjc^$exnzncG1WRxg5YI~&z(H~pwVG7JV ztA%7&RHmkRPlN$ssk=$^nYD!w@)};KMbU$2GK9KeWvsg!=|@$Fne9%}UDjk56OG`u zVsYj{5~Au&WyqWvRdJiCoq^cWg{7#aP~mroi_4&ks>No~NR}oAW(-6zt9F)2R`vaH zQlIKg9~0IMEVn{Bav!kSr7A=iQ38o^7z8}}knnA}W^#`+G4R!k$3uM?&`j`V7b~@m zC;FJoM7AZ1d1KvUJ2JUfnBk(?V>BY0D;H1TWoE34SgMt_B%!=!s26us5=@A!= zA8eBRPz7d~60;`7unAs}YvPyMl+6GrKric#oQs$Dl0q{b{2;66LRa#|lm|&enGUrO zaj02Cb%|}}X3|*Z89WHSwEV6@mNA@Eocr4UwGcEL;^H_+8td405&{tx-Ub&(ISihw zF3j>L%kmk1EEY}9^@JIh%>f{wmjXSkV3kjj`A2Z!m=b@_%(FyDyOSbK&YfS-mD3=1 zv9kT(QDZafS40lz$?9{030@mryKSI_JiSbG7!cYubmJk$lx#O?L-qZ-uy{Obnfkip;~*1>2sGSAF*3-%PvDL;`>vsY zcu(1J5S9=@B}ZxR57}2@&cwf3T4nMS+Ey>FcOLXXE5bJ$s{aD>{oCq{-C@&LmH^x;cdd=HY=TC?3bgT6D5~Y`_;4Y#+GAjny{C8^sB-=AGwimDf?QOUB#^M4@Thn z4x;TFcI^=NPG|FPYS^pTg9ce~o)4d{E6`=F$4&zt=i{!}e$8uK-Mo?ZJnZ!`*x@QF zwxjfnz7jQnm@4-Eh?ojYzT~jX6MiwyHV*7D369O8ErpKv0F#TQ2NGEYPTQ_Z!Bv%r zpr}#K&!EB=W^`z?m;~pjKthhpT#Nxe;8q`y7EgqDM)bJlh0kD(_*IX|l%uLpRsfqd zT@R38o4KNgzD7f!2kx8kaQGb$+d(OIZ7xxdi^e|2P3>|&Z6m2H>+BuU>}JOTJQbQ7 zJDppLTvnC5!8f(gj~kqcCUMCkK0vH-jT9CnoM4O(dKX)uIeh*ovoSsP|?mZnZm+q zT8=OY-oyC6N>hW69e(<-{xW1$i;r6g55N<4ttvRv{xmLjn6zYxK*muNlE1GFg+T%< z-4XCfT3%RVl~R(=3NA&+}WiVP{T`4@^SHZPjrxb z%;=O(xRxXW&lHpC=yKUT!?)tIDAl70r_4nP5EUh6Gu7aiJ0xl0Wd@9AZdcZ<%7r4xUlXsD-I(%yA zHE@f#d#yrhD^~$SlYvTKm%G2%r6F**R|xbJ-Qsa+%(q(>iT3DO3?BRKgT7fsD>b>Y zE>!2BFJ2>WzN)s17KKY2ZDoAK)Qwtr$cFTX_{y2iC3oo-#bSGAlz*p&&RN_W< zDmv_+k+Flnk*pR-$Fp0KHPuY^Da!V0*KW-eCy^VuAqzI)OL$>E#RPaNT-rAHR+?_6 zr+eZ71SVA`mbR{+;!k$tf5BfxV!zU_y)HL(D!Vqci}GwNh(ra(Lhnz;t|Ch(4CJ*T znt~DJE{q6~Dz2{40!~@ixfWrJUwKa~s5^3$zsYM#W?cT{#g~wg_<;(XS#!6uN?2t0 zgB$!A?a6L%4;>fYxqFM4sQrVFOWm`Wv%Uz}uk528yG1hfwnl7)gF@-DER$6o(?r1R^6V@a-z`9Y%GX-E81 zz^RKx%aVs{j_qYdLz!h9zgNTCe zM@^**8GMQI#9YQm40OTCkJ#~ECy*Z8t2K0*#*PA0|BrMV2iNhy6;73>iK6v%$yR!6 zyt#4B&C-1>)5!>7R|pUF+%4H|qIF@mN2mL&L(hO5U%T*y+!IRnswxWt^4^ zv%Lu;*461H*s&x>qvSArLj5iJ!+x@_GhK|=ALjolOA&w~uWUk9aYZYVSVKO?wz2)_ zr*@Y^H`fL8q<$sOiYenHBM|75(3{|-bCh^}yj5c76EJ$hM&Tu-*487Rci2S{wR{qJpK_V-}l4si0hW2X^Y>5_@Aq~x$xkgF;>@4m4a*?9MPv4*;Z?8-6yO+=b*qKxy{;fASvoHS z?ySC#1S9(>OXpr>yd^j5V7Q)!rcKci&y>Ts&4Rs&(m}<$# z5u>)MkL~!%)9lzyIEo7Nfp-#grKIXv+$4ERY&}7p$iYX?Yc-?hh zqxQAz2t(X%4QlqVofiS-Uc<0E{&k%+hBaO}k*j>&_(ir$)W3t6tK&84@|EVTHG9H3Mi>Sw@{L#3jQ7WhiW)BZrF3tpkSeuX&+Zpy zncugH>Ru)$sZkhjxanGbkZT&_OK*K0(Q4s)dR4{9)?`(vaWxkIBhV-f*9G4`?b98z zWb4Z^0p;nn&wVwTYrlXT77^h=F$CgUrTH8qxnDlZ_L>+aV{EdKP%Jy5-M;H5Pm3v; zZ=5c;`24VNpJKGo6wg8|g`VN9HrG(+R~eZN+^z!?GtTQKU^gs|qX=YQ1o*pDZH2|1 z=Pb+Bj|BbBbr$=a)wB=ERy z(>80)9VDa;DG2WecVm@ED|`k{D2Q6N}&*MY4Y7 zkwG4?R;$pPbV+B?ZeurA;U=Ll%TKraDCvkl@oHi8T-R11g8yQp$p6@gSYm~C2%em? zy-W8QG9JX_wRpt)h>p}v(@|A)S)Nr&kLltDlb=|Qe-z31RGpvq-JwdGqSSIu_ zz7Anukwl~Rf-&+u9#~#?eznlijvmXVsC(!}5l)H%#L!LErWXqD)3Xw{*5!UM(o3H; zeBUcPbzu9ph9gLmIH#$9z+WoYPXS~8|MF<_T;%S0bWP#{4!c`yBXI~IYeOB&e zi{#pi{C%lIov$@8tNi@Wj&WUZAA>G&2`!UH47C2$17k~6Y|J$&flH}-sPoZ?QBlitg>ht3Aag!{pid1;ql z-XO`{>cw76Dntalwcj<}@ZKmGkdEC&9+d+1j{xORgGRR*OacImEym@6+a1#Sqvuxtpj8ez`stbti9X_C_Y0#SYtp3_aC@;&P{#W3Zr*UYGs`_U z2>!U5){BjGIi>tADkDru-y~SEtG0h?FTrg=oRH<8`1F4EkP5TS=@&fyAe`-tVY@!>4mi1nlO~|K?=qIOI)W6;O}~pP0F; zPav|pS<7=wxPCqz(pn|k_dC`12; zzkqQpzs)|KDOvxq3G(D6h%8v2qaIS|x8c6O_mo*>W3A#)cAuh}`nHO&Pl44>9c91L zgTKUUy@HsOhWrvf$32z2IZJd7bi3IK2lgHyjgqM{J^G}>`E$lZnEZkaAHOTEX)O79 zCWEHQa+6|2~Bo5TyK`=aJ(QK)1-k39sU{ueqRM5+)R%?H9(d+k0knvLZ# z`fQpI;?KlCYyq}!OfjTFYLKbmj+8|NE=}J>u?0}_0QV_!n^dr(-?IzrKHCXVjy_o7 zIiJuzj9y_1K0>>*%plT~bRyw97I;1*>mtV4>!N|@)%OCW3m$1pty+#Bx{AexHu-)) z2>E{DygS3iXm`D{Ca_PcCdOm9{}6Vt#MKFsw63riRBV#qTnNFCmiTz``>Le98}6UEsjiNHa3!mDm=?Ae7S(7!-+LJarbw z4*7{!(9pwLsD1tF2aS*t{^BfKC(%;qt{D5o)sv#7%wWmR&%5b)4sOwosH}ndEveSD z!4_Q1va>Vn5H?bDii3iiSt>dUE!t%qX{4y?y##(U%qJR|_uBhOB7v%3DoTo6 zZe_N-@a7>h2t>VkD^HQGBAnZ!Z=X_N>X36GxQj@99eZW6#h&L<{RV^;yw>a+H5kZC z$!hxZw+i17jefcoPB6x%A6HkPj`el@hG!<(78!$+;j${gzhNS%_ge%qDco-_GPV%# z2h+Y1&BOe?&?Xg`ALYo^tvOVP4jxky-MVmWFvfzx#UMYCcjkFHz_kb^nY|O%eFfGb z9#h|wM1aX}1W~c4%b6<;J9nCe2konY?`Pgy&8Nb?@W(c;hQnvVx^V-%*oG7d@TKdC zt8u@mww>{o=hY^`Cm5R(^j@|N-nh=0w=(8y@_k+iYE$0vVxX{yS-zfWKw|WmI8ub z5}KQAnVsBQWd&zQ;WqQ{eHH84SusA88%o?-AbY%4YClzHCL5-~N42Hl0zSC13-~RT z9ax69FYKtVjyct-_0p*okdY(@Nffv{w?_t575J7EAGtnH0Vx2>pthiNj(cA?Se6lJ zUM~0}#iCqKYwJWoFg<=tkR{m3oYkf2&TWX6 z0E@-THGZB?)<{|Q`iboP@oFJqpYZWaU38#19R(7j42#kipnqOcjRJS0WA%gtdh-#4 z;B}#_2v7qL8Jzx3JNXp=mr8B^KvGxr#F?vn3K`cvmG>TN3_#!VMNhT6?;;qaiGe;{ zyM>L-&(l#$B>Yscoe9FG?^=H;2Wvxm z>SyzoFYz;2LxWq95JzwGaLdDFOpxw7c?iAafw%pZb^Zyu3JBA=#4$g=8yoqQ$&N_d zJda{CF!AZ-CY_XW8K+h8EsJ(ZyaS))(U;*CZA(btigqDAO(Er1qj5=Nw_n4qSn5Z< zYY^J|R{$c@F|SZ&nJv=;>6eisIZVf$IYG=w1vOqSnFRp$$}qbQqjuzocDw?5UlGB6 zSEJH>lci-o@-(#0Zb}n8tHH@ASvF8@bx92hl72(ukf{(5%Jv}J{3j>myvjisjEmdO?h;*BrYV1Z}qnLU@ z*tV^1RG`TmnbHS9D&psT(>Rjv2&k8~x<^Vkp zO(;@GWAhjzP2jhi(H|9}wr=9Q0lWmf%LYzL%j?2BvPlY@L2MIO5fgOPKaksxaJ^%U z5A1)T$|<(SXyW_hqsp5fCx7v3+XMbMzGQxCk6-M1ql6Vv2t z*s7#lCRM0o@X}sfStzYO=)t+i7D4DxvUn^|qv&pN&wil)+CQG7+nK!xS9lXlS?4+_ z`>Rk)?+2ofKKjk_;H^LCt%&6z$E()dU#_YL*;%x0Wk_A-TM zvtkfnatK}!e?njOa%2s72n>QpmEZH2;Y_0{PmwcjKfq0 zYHw2>WTo89hXt`Ygl{A}$|2?^YoFmulFSa^92GXwIf3Me@Z-d5xE22X9oW)TV{`j_ zlD3^n$VKVRa`hL?411$O7Jfg;n9nYn@e-yYa~B=wtpd9uECA|W@!wZe55Q!fKSh3y z4&a17#5FOMZUJ0@u@> zdWz0+X^3=8M*Ri(gs+O~Kw8ut+IZwYsrk!w;}Au6*N^wekAR)OzE&>N>dWhC7Kb zOeW!NFXyoHn8fdaj6o?x>{EmAcBPQ+cj+!XDdY_?Mwao3<_XktDy^l!j+a!RtC#^e z$K+Xtl%XBPof2iatHqh(&w1Ie$D&g)Nb9;Po-moKPhztpUDN#%##u?`y6q0HY|)1< zstPzIzf&oF(`QPKd$IuW1u14N-RGzt@a}^Q9#B^G8BTCzO4DTDRa~j#Bmt(u5R)bI z$~x`|{uT5OHnXvs@U`i-<()sFNvb4@x1JWCKe6+LZ+R=Y$-4wZmO4|jd=8H?kMs9z zoUONza4cbY@SD;DvQpm5@P6|X|C9u`(dj(j1^1nu@=RUhT;O1dD$GZ-*T<1Z-n9E@ zsB`qvEM@q9WSnsI*SL<{7L36+uc;7KXd(;lrXf;Cn{ZG+F1x#i_uXFsR*M;i;MQ9y zP7QAb#y_qmMu;)4Z9lCQW}K5_wo&i~Oh!6vBx(A6&eMV@ZX%^vV4W!l#5#x$?GRAr zv}+z9AMnL?QDRQLa*9_m7E<3DiRHa||2f?8iNz)TaXQIV^ZTs!S24*7_omtSgkIf* zA0u?O5rp&C$UMs!WmW=dH>C2BPrak+2{q=6)wT?oBZ!N#Q+~y*tkI>^?A0C^ zm%sVADy?=-GaNELwH?b?!Cg|V5Yqo}>&j>_j`|j|fbF|gxcav+F`G%SNA+J#t_2sg z1Psa(5;&1HTrHKXmlvJsC`sNR36*w%KdW@an!lGBS87o}~#O&TQ*~--XO>Iam&ygNx=Im0zj13P%nGo5Oc5>s*MR zsN&~p#8fK2fv5NLjlzeBp3*_0A@3~2Fx{>wM;PkyJY>BL^f9B7i7o>z#6*cUs9)C_ zoar57K8Pd@ZEzq*9-x=DQ0XZ(Zj)$kpur@Sq@u^hR-$Y%tA(V8apJWUW|_*>#Y_%) z+I3vB>x_qS9_d(aymPjeYR^8X?~4*#ARbt5_ffSCDE0Mbkg$J|R3z{4Fo)cV=nr+w zfbt@O*%Bi#%9V{+qEVDxL7%HIzP;OoUyTv@%-%vMOTyE`>q%jB&28(#@K>d6Z1*5> z$VkU z-gV$BA>9Vdi4ZHa-E+7Zu;1x&#MISjA)%4_3=CjgWa&j$uc#mQ4cr(+UqAU1p;(%o zbc{u3uzF*PjKAgGEt;Sy5$WVIJf{>P9p;{D8kPkng(8nO`%AA=-F^ljFP^k4)`SbH z1!P?>3=_?!Ehe4S7!+D`+^|3C6~z~0i$ff13exvSREQdk463}kNUgOUtwq(esdyiP z#pk-RY8sSiUow8KdX1kWm9zCZ-678yXY90_jMDK)Iw{0yA|}Wqvq)o~J%(7^rd5^M zXd(ZLmKBT65C;TbB=+4rvXl1xAz*k&VKbvy4_IAbrf%1r-WqVR<8ni!iP18Y4;NSH zGsYhC40@vJgCBOmyc3b^eOq{nCWUYLR`gkHi!iuTvNly+fDbaTf@yN5u0+X$(x1_I zPuCsn<-d}rn>xb8ZYgb=d^8SGWlzwu5A&hF6fPUL+v6^>hH#uKwPJR3DlBLk7|z4( zr_cB6(ykxLEqz-X%o7C-zFCmHisqfur7ZdR)mV_YG5@C*8{edHeYS0lcj6jfuWYw-p%G!Q8lk15`O%P`&HG;tD`8ro<2`ASER09d+3kOH;DF-(D;qP!ZS@V&FQ?gzNO-U)g6N`+t#s?Z`xwI^pcbzhWo9M*^(z z#-p}FV%WT}-jhn=#>D!49#Aiwyy&O9`SNG5&Xj$EgNr93A<|Wyj5uww@f&0Fp6%L3 zm-c$S6SL(HL`oOzQ#NuNMPA+CYK~WmR@Ex4Qi7LVVU{>+QxV}2H{?vx$ecfwDgqWs ztQL*i%kneu?DY;yKi}AYAqF{(`}6>kaP>gQB>Doe2Wpd#*$l6kKIT%=OX%^Xe5!AFu55 zV0N)+%4bq=Y&ft#GN4|=p;h(3c$M2)*bS>B*2sk&^{-trZ0zn`#Qzev<*17)csgLi z1)t(adboU+G9&H2Q!a!vvDpx^hx0jO7D#Q7FYKf?DXLrZ@MF{$#aVSrEy_;~E+aH| z?M4)ihhd^;{AkNe?`7dyJ8~t!Fm1T2F%FTkVLz#y<(di7KaaC=KIc+3?yjhdE$Zv_ zpWIZ7i+Jl3LAsotRH@=EFJUH=b0>W&iSmNDwT-x|s+9N8*!#BUH}Gq!*JyaaBJj`W zbOs=Mz}w1jdQm;XrPreT@4|ga3u?)~*V_r;vY%FuMif};BJ;hjm4qn1vWKZ2cc+QO zrF*hPFK0~YUT4Jd)L8Z5S+*^mF?gUg0Rj}7=to|g;}=g<#5ex@xZ~ww;Zs?k-J!f+ zIhuk-$Mq}DD`T9&-VOnSrQ~{=MP}40&%#W`+slzr-OyoNw0p87pbckZttFWUGPN#@ zs^^;-%1=WjEn^i>H+hs+WQO_5O0M%1JHc$*nmI37Cz zon#q#EMeR(YDJ+py2>$nxEfbbRAFXk@ORyOk{F)6F5SvkZ+0(f&pn%&-EEP%j>fjY zD1m)sc~x_9B2WgMx8iQ7JFS}T^q5o@N#x*MQyuIB2R3mr=@FD2%%zw{VnH*4 zeSfBV%#_aeccV^oe!2J)%PB}l`HjxdDfKIz5pDc8rc?WvRQSqtlvhmm<{Iyq$oWSO zf_IPB%GW-dlM1U}4z}qmgKe>)W+QOdV%*=i&9PsiU#3PdwEQNRT)7`*;iY>gErrPD z7C*ozOXTyxQL@Km1zZO}Q|i++^IE&3tIW1-yF|rM%LzYq<6R+2EbNY@c*VSF91441-I0sYfu?UTXcH`6o4|P2#u}YNfLpPw^rrGcgYx^b<+;~2oYAsFNcVfv1h=_b zWU)@OIrsOzdz6$Vi?4L|rjngE$mY6U{V_N4c@^q$uNxET}rPGP5Rr2Uk$0Inq$s4tQRmUxr2U= zX%iwi3ve8FFV8LK=usSvQQ^c+h0teaz;a)y3;X=l^B5#(#FXl|qFGEl@hc%0YI?^X zsu7x0nX{>$GLPmUNy;`=O{u6o9|P9A=-D1(^@y zTStdCiFcm}PM9%QdwzFYs?wFY@M(yoPfy&EEr*5n-5H#-tbl6uKyp|mWO!K@-!W?-;NS- zFf?7+yKD55*Wk@<@guEHMEDFf2gK?IkbCS5sEBxfc(7ug@b%ip)ggn%?HH*=cE<|n zjP5HE@_+;qNk&4}g-51W@n|!1W6q|o9|j!Us4|b)qRpzQosPjaL*MbX%4^WQnFzX` zOE2V0Mez=i`$SvHL_}%BAVR@=-+gsHY3+NyUN$5;dM9`HVOue0$9M*<89|oWs27r4 zyCgPeveXvB=qN;S@FE?&B3M#6IxVAg?!Zu0ue>;>_r_VfBGI`4!fk$ktx%>*kr;*9 zCz4Z3qnk)X`~uI0s)cIS(Jtj~c>v@_e3#bK-Q~)Orpbh{UV(64-5gXbIzq?grjo{2 zxKl?FE)8Atlo{5Z=u(-9e|$GR7CY^<`vSe(RD58z#+DmjdnFJvIK9{Z#69?eCkY7w z*)>K>|5JXb|H{FJ$G!qL`xn%6KNsaAyK}LFtJgkTMvX%Rr8+JLjnkM79r@*!&%IiV z!*{(w&P63j#|=JbXid~B{dE;FtwK0Z^#$J08LIVAuHt+Q9FgvZ>({&5j7p_W~xFzo6Ft0qGW^i%jwHCTKnr4=AF>yX3cCu zfnR^%U4&-Ai%2pR?gmI#7(L2dSS%2o%$@V`g=~d$YIx)mrV>YaQbZ8zLNAE8DJG)+ zvRkrU{MTZKLP^@S$KsYC@2?asz3e}BzxxnZ?d?FC5K@(^d0pM=5d|Y-J_!~DSX?OI z7vAXy^DJ2mR4Uoc7y=J%Rc$gxHJBq+;FG?JTUAjt1>0M~hpW`V4J#OA{&!`ekQUy% spg-IFn}Y}O|KDGWjHkNqKtM*|HJR7^*sm=7_cd;?tSYEd`cuIF0_M;;%K!iX From aa6e550ba233b5ca7d5690b326ac349cc596f546 Mon Sep 17 00:00:00 2001 From: xinwen Date: Fri, 18 Jun 2021 10:05:44 +0800 Subject: [PATCH 14/26] =?UTF-8?q?fix:=20=E7=B3=BB=E7=BB=9F=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5=E5=8D=87=E7=BA=A7=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/notifications.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/terminal/notifications.py b/apps/terminal/notifications.py index 088e8ecc0..e9c83135e 100644 --- a/apps/terminal/notifications.py +++ b/apps/terminal/notifications.py @@ -32,14 +32,16 @@ class CommandAlertMixin: db_setting = Setting.objects.filter(name='SECURITY_INSECURE_COMMAND_EMAIL_RECEIVER').first() if db_setting: emails = db_setting.value - emails = emails or settings.SECURITY_INSECURE_COMMAND_EMAIL_RECEIVER + else: + emails = settings.SECURITY_INSECURE_COMMAND_EMAIL_RECEIVER emails = emails.split(',') emails = [email.strip().strip('"') for email in emails] users = User.objects.filter(email__in=emails) - subscription.users.add(*users) - subscription.receive_backends = [BACKEND.EMAIL] - subscription.save() + if users: + subscription.users.add(*users) + subscription.receive_backends = [BACKEND.EMAIL] + subscription.save() class CommandAlertMessage(CommandAlertMixin, SystemMessage): From c0ec0f1343e50dc645227ba69bf879236f0c92a3 Mon Sep 17 00:00:00 2001 From: "Jiangjie.Bai" <32935519+BaiJiangJie@users.noreply.github.com> Date: Mon, 28 Jun 2021 10:32:59 +0800 Subject: [PATCH 15/26] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=BB=98=E8=AE=A4=E5=AD=98=E5=82=A8=EF=BC=88=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E3=80=81=E5=BD=95=E5=83=8F=EF=BC=89=20(#6336)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 修改LDAP用户导入的组织为当前组织 * fix: 修改翻译信息 * feat: 支持设置默认存储 * feat: 支持设置默认存储(2) * feat: 支持设置默认存储(3) --- .../migrations/0009_applicationuser.py | 25 ++++++ apps/locale/zh/LC_MESSAGES/django.mo | Bin 76610 -> 76655 bytes apps/locale/zh/LC_MESSAGES/django.po | 41 ++++----- apps/terminal/api/storage.py | 4 +- apps/terminal/filters.py | 2 +- .../migrations/0037_auto_20210623_1748.py | 37 ++++++++ apps/terminal/models/storage.py | 44 +++++++--- apps/terminal/models/terminal.py | 6 ++ apps/terminal/serializers/storage.py | 79 ++++++++---------- 9 files changed, 158 insertions(+), 80 deletions(-) create mode 100644 apps/applications/migrations/0009_applicationuser.py create mode 100644 apps/terminal/migrations/0037_auto_20210623_1748.py diff --git a/apps/applications/migrations/0009_applicationuser.py b/apps/applications/migrations/0009_applicationuser.py new file mode 100644 index 000000000..7b3368ef9 --- /dev/null +++ b/apps/applications/migrations/0009_applicationuser.py @@ -0,0 +1,25 @@ +# Generated by Django 3.1.6 on 2021-06-23 09:48 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0070_auto_20210426_1515'), + ('applications', '0008_auto_20210104_0435'), + ] + + operations = [ + migrations.CreateModel( + name='ApplicationUser', + fields=[ + ], + options={ + 'proxy': True, + 'indexes': [], + 'constraints': [], + }, + bases=('assets.systemuser',), + ), + ] diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 15e579624ab5182fea6e09feec7b40a2c87177ef..3d1ae71fe44dee0bbd06b8cfe0b813889664bfe3 100644 GIT binary patch delta 21935 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 TU3z!T?7JgYYz%pjz3l%0O}v^Q delta 21892 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 593fea0b1..483f95fa3 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-22 19:04+0800\n" +"POT-Creation-Date: 2021-06-25 17:12+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -23,9 +23,9 @@ msgstr "" #: 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:49 settings/models.py:29 -#: terminal/models/storage.py:23 terminal/models/storage.py:90 -#: terminal/models/task.py:16 terminal/models/terminal.py:100 -#: users/forms/profile.py:32 users/models/group.py:15 users/models/user.py:550 +#: terminal/models/storage.py:23 terminal/models/task.py:16 +#: terminal/models/terminal.py:100 users/forms/profile.py:32 +#: users/models/group.py:15 users/models/user.py:550 #: users/templates/users/_select_user_modal.html:13 #: users/templates/users/user_asset_permission.html:37 #: users/templates/users/user_asset_permission.html:154 @@ -59,11 +59,11 @@ msgstr "激活中" #: assets/models/domain.py:22 assets/models/domain.py:56 #: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37 #: orgs/models.py:26 perms/models/base.py:57 settings/models.py:34 -#: terminal/models/storage.py:29 terminal/models/storage.py:96 -#: terminal/models/terminal.py:114 tickets/models/ticket.py:73 -#: users/models/group.py:16 users/models/user.py:583 -#: xpack/plugins/change_auth_plan/models.py:77 xpack/plugins/cloud/models.py:35 -#: xpack/plugins/cloud/models.py:98 xpack/plugins/gathered_user/models.py:26 +#: terminal/models/storage.py:26 terminal/models/terminal.py:114 +#: tickets/models/ticket.py:73 users/models/group.py:16 +#: users/models/user.py:583 xpack/plugins/change_auth_plan/models.py:77 +#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:98 +#: xpack/plugins/gathered_user/models.py:26 msgid "Comment" msgstr "备注" @@ -257,7 +257,7 @@ msgstr "类别" #: perms/models/application_permission.py:23 #: perms/serializers/application/permission.py:17 #: perms/serializers/application/user_permission.py:34 -#: terminal/models/storage.py:26 terminal/models/storage.py:93 +#: terminal/models/storage.py:47 terminal/models/storage.py:108 #: tickets/models/ticket.py:38 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:27 msgid "Type" @@ -1202,7 +1202,7 @@ msgstr "主机 (显示名称)" msgid "Result" msgstr "结果" -#: audits/serializers.py:92 terminal/serializers/storage.py:189 +#: audits/serializers.py:92 terminal/serializers/storage.py:195 msgid "Hosts" msgstr "主机" @@ -3252,6 +3252,10 @@ msgstr "线程数" msgid "Boot Time" msgstr "运行时间" +#: terminal/models/storage.py:25 +msgid "Default storage" +msgstr "默认存储" + #: terminal/models/task.py:17 msgid "Args" msgstr "参数" @@ -3426,27 +3430,27 @@ msgstr "账户密钥" msgid "Endpoint suffix" msgstr "端点后缀" -#: terminal/serializers/storage.py:166 +#: terminal/serializers/storage.py:172 msgid "The address format is incorrect" msgstr "地址格式不正确" -#: terminal/serializers/storage.py:173 +#: terminal/serializers/storage.py:179 msgid "Host invalid" msgstr "主机无效" -#: terminal/serializers/storage.py:176 +#: terminal/serializers/storage.py:182 msgid "Port invalid" msgstr "端口无效" -#: terminal/serializers/storage.py:192 +#: terminal/serializers/storage.py:198 msgid "Index" msgstr "索引" -#: terminal/serializers/storage.py:194 +#: terminal/serializers/storage.py:200 msgid "Doc type" msgstr "文档类型" -#: terminal/serializers/storage.py:196 +#: terminal/serializers/storage.py:202 msgid "Ignore Certificate Verification" msgstr "忽略证书认证" @@ -5114,6 +5118,3 @@ msgstr "旗舰版" #: xpack/plugins/license/models.py:77 msgid "Community edition" msgstr "社区版" - -#~ msgid "Terminal command alert" -#~ msgstr "终端命令告警" diff --git a/apps/terminal/api/storage.py b/apps/terminal/api/storage.py index 4aa3fecbb..db4470f75 100644 --- a/apps/terminal/api/storage.py +++ b/apps/terminal/api/storage.py @@ -36,7 +36,7 @@ class BaseStorageViewSetMixin: class CommandStorageViewSet(BaseStorageViewSetMixin, viewsets.ModelViewSet): - search_fields = ('name', 'type',) + search_fields = ('name', 'type') queryset = CommandStorage.objects.all() serializer_class = CommandStorageSerializer permission_classes = (IsSuperUser,) @@ -103,7 +103,7 @@ class CommandStorageViewSet(BaseStorageViewSetMixin, viewsets.ModelViewSet): class ReplayStorageViewSet(BaseStorageViewSetMixin, viewsets.ModelViewSet): - filterset_fields = ('name', 'type',) + filterset_fields = ('name', 'type', 'is_default') search_fields = filterset_fields queryset = ReplayStorage.objects.all() serializer_class = ReplayStorageSerializer diff --git a/apps/terminal/filters.py b/apps/terminal/filters.py index a102c149c..81f548162 100644 --- a/apps/terminal/filters.py +++ b/apps/terminal/filters.py @@ -71,7 +71,7 @@ class CommandStorageFilter(filters.FilterSet): class Meta: model = CommandStorage - fields = ['real', 'name', 'type'] + fields = ['real', 'name', 'type', 'is_default'] def filter_real(self, queryset, name, value): if value: diff --git a/apps/terminal/migrations/0037_auto_20210623_1748.py b/apps/terminal/migrations/0037_auto_20210623_1748.py new file mode 100644 index 000000000..fde10b3b7 --- /dev/null +++ b/apps/terminal/migrations/0037_auto_20210623_1748.py @@ -0,0 +1,37 @@ +# Generated by Django 3.1.6 on 2021-06-23 09:48 + +from django.db import migrations, models + + +def set_default_storage(apps, schema_editor): + command_storage_model = apps.get_model("terminal", "CommandStorage") + command_storage = command_storage_model.objects.filter(name='default', type='server').first() + if command_storage: + command_storage.is_default = True + command_storage.save() + replay_storage_model = apps.get_model("terminal", "ReplayStorage") + replay_storage = replay_storage_model.objects.filter(name='default', type='server').first() + if replay_storage: + replay_storage.is_default = True + replay_storage.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('terminal', '0036_auto_20210604_1124'), + ] + + operations = [ + migrations.AddField( + model_name='commandstorage', + name='is_default', + field=models.BooleanField(default=False, verbose_name='Default storage'), + ), + migrations.AddField( + model_name='replaystorage', + name='is_default', + field=models.BooleanField(default=False, verbose_name='Default storage'), + ), + migrations.RunPython(set_default_storage) + ] diff --git a/apps/terminal/models/storage.py b/apps/terminal/models/storage.py index 883e5f67a..7d4efcfbc 100644 --- a/apps/terminal/models/storage.py +++ b/apps/terminal/models/storage.py @@ -19,17 +19,41 @@ from .. import const logger = get_logger(__file__) -class CommandStorage(CommonModelMixin): +class CommonStorageModelMixin(models.Model): name = models.CharField(max_length=128, verbose_name=_("Name"), unique=True) + meta = EncryptJsonDictTextField(default={}) + is_default = models.BooleanField(default=False, verbose_name=_('Default storage')) + comment = models.TextField(default='', blank=True, verbose_name=_('Comment')) + + class Meta: + abstract = True + + def __str__(self): + return self.name + + def set_to_default(self): + self.is_default = True + self.save() + self.__class__.objects.select_for_update()\ + .filter(is_default=True)\ + .exclude(id=self.id)\ + .update(is_default=False) + + @classmethod + def default(cls): + objs = cls.objects.filter(is_default=True) + if not objs: + objs = cls.objects.filter(name='default', type='server') + if not objs: + objs = cls.objects.all() + return objs.first() + + +class CommandStorage(CommonStorageModelMixin, CommonModelMixin): type = models.CharField( max_length=16, choices=const.CommandStorageTypeChoices.choices, default=const.CommandStorageTypeChoices.server.value, verbose_name=_('Type'), ) - meta = EncryptJsonDictTextField(default={}) - comment = models.TextField(default='', blank=True, verbose_name=_('Comment')) - - def __str__(self): - return self.name @property def type_null(self): @@ -86,17 +110,11 @@ class CommandStorage(CommonModelMixin): backend.pre_use_check() -class ReplayStorage(CommonModelMixin): - name = models.CharField(max_length=128, verbose_name=_("Name"), unique=True) +class ReplayStorage(CommonStorageModelMixin, CommonModelMixin): type = models.CharField( max_length=16, choices=const.ReplayStorageTypeChoices.choices, default=const.ReplayStorageTypeChoices.server.value, verbose_name=_('Type') ) - meta = EncryptJsonDictTextField(default={}) - comment = models.TextField(default='', blank=True, verbose_name=_('Comment')) - - def __str__(self): - return self.name @property def type_null(self): diff --git a/apps/terminal/models/terminal.py b/apps/terminal/models/terminal.py index 77c9b1ce8..0c0c36771 100644 --- a/apps/terminal/models/terminal.py +++ b/apps/terminal/models/terminal.py @@ -176,6 +176,12 @@ class Terminal(StorageMixin, TerminalStatusMixin, models.Model): self.save() return + def save(self, **kwargs): + from .storage import CommandStorage, ReplayStorage + self.command_storage = CommandStorage.default().name + self.replay_storage = ReplayStorage.default().name + return super().save(**kwargs) + def __str__(self): status = "Active" if not self.is_accepted: diff --git a/apps/terminal/serializers/storage.py b/apps/terminal/serializers/storage.py index cdd6e75a3..d0f803928 100644 --- a/apps/terminal/serializers/storage.py +++ b/apps/terminal/serializers/storage.py @@ -119,44 +119,6 @@ replay_storage_type_serializer_classes_mapping = { const.ReplayStorageTypeChoices.obs.value: ReplayStorageTypeOBSSerializer } -# ReplayStorageSerializer - - -class ReplayStorageSerializer(serializers.ModelSerializer): - meta = MethodSerializer() - - class Meta: - model = ReplayStorage - fields = ['id', 'name', 'type', 'meta', 'comment'] - - def validate_meta(self, meta): - _meta = self.instance.meta if self.instance else {} - _meta.update(meta) - return _meta - - def get_meta_serializer(self): - default_serializer = serializers.Serializer(read_only=True) - - if isinstance(self.instance, ReplayStorage): - _type = self.instance.type - else: - _type = self.context['request'].query_params.get('type') - - if _type: - serializer_class = replay_storage_type_serializer_classes_mapping.get(_type) - else: - serializer_class = default_serializer - - if not serializer_class: - serializer_class = default_serializer - - if isinstance(serializer_class, type): - serializer = serializer_class() - else: - serializer = serializer_class - return serializer - - # Command storage serializers # --------------------------- @@ -204,15 +166,17 @@ command_storage_type_serializer_classes_mapping = { const.CommandStorageTypeChoices.es.value: CommandStorageTypeESSerializer } -# CommandStorageSerializer + +# BaseStorageSerializer -class CommandStorageSerializer(serializers.ModelSerializer): +class BaseStorageSerializer(serializers.ModelSerializer): + storage_type_serializer_classes_mapping = {} meta = MethodSerializer() class Meta: - model = CommandStorage - fields = ['id', 'name', 'type', 'meta', 'comment'] + model = None + fields = ['id', 'name', 'type', 'meta', 'is_default', 'comment'] def validate_meta(self, meta): _meta = self.instance.meta if self.instance else {} @@ -222,13 +186,13 @@ class CommandStorageSerializer(serializers.ModelSerializer): def get_meta_serializer(self): default_serializer = serializers.Serializer(read_only=True) - if isinstance(self.instance, CommandStorage): + if isinstance(self.instance, self.__class__.Meta.model): _type = self.instance.type else: _type = self.context['request'].query_params.get('type') if _type: - serializer_class = command_storage_type_serializer_classes_mapping.get(_type) + serializer_class = self.storage_type_serializer_classes_mapping.get(_type) else: serializer_class = default_serializer @@ -240,3 +204,30 @@ class CommandStorageSerializer(serializers.ModelSerializer): else: serializer = serializer_class return serializer + + def save(self, **kwargs): + instance = super().save(**kwargs) + if self.validated_data.get('is_default', False): + instance.set_to_default() + return instance + + +# CommandStorageSerializer + + +class CommandStorageSerializer(BaseStorageSerializer): + storage_type_serializer_classes_mapping = command_storage_type_serializer_classes_mapping + + class Meta(BaseStorageSerializer.Meta): + model = CommandStorage + + +# ReplayStorageSerializer + + +class ReplayStorageSerializer(BaseStorageSerializer): + storage_type_serializer_classes_mapping = replay_storage_type_serializer_classes_mapping + + class Meta(BaseStorageSerializer.Meta): + model = ReplayStorage + From 732f0b55dcb6d84f33403d652adaeab03f7cb93d Mon Sep 17 00:00:00 2001 From: xinwen Date: Mon, 28 Jun 2021 15:33:58 +0800 Subject: [PATCH 16/26] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=94=B9=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=B6=88=E6=81=AF=E5=88=9D=E5=A7=8B=E5=8C=96=E7=AD=96?= =?UTF-8?q?=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/notifications/notifications.py | 10 ------- apps/notifications/signals_handler.py | 43 ++++++++++++++++++++++++++- apps/ops/notifications.py | 3 ++ 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/apps/notifications/notifications.py b/apps/notifications/notifications.py index 4c4db11d9..bbf9fe7ee 100644 --- a/apps/notifications/notifications.py +++ b/apps/notifications/notifications.py @@ -32,16 +32,6 @@ class MessageType(type): } if issubclass(clz, SystemMessage): system_msgs.append(msg) - try: - if not SystemMsgSubscription.objects.filter(message_type=message_type).exists(): - sub = SystemMsgSubscription.objects.create(message_type=message_type) - clz.post_insert_to_db(sub) - except ProgrammingError as e: - if e.args[0] == 1146: - # 表不存在 - pass - else: - raise elif issubclass(clz, UserMessage): user_msgs.append(msg) diff --git a/apps/notifications/signals_handler.py b/apps/notifications/signals_handler.py index 13ebdc4bc..451377557 100644 --- a/apps/notifications/signals_handler.py +++ b/apps/notifications/signals_handler.py @@ -1,13 +1,20 @@ import json +from importlib import import_module +import inspect from django.utils.functional import LazyObject from django.db.models.signals import post_save +from django.db.models.signals import post_migrate from django.dispatch import receiver +from django.db.utils import DEFAULT_DB_ALIAS +from django.apps import apps as global_apps +from django.apps import AppConfig from common.utils.connection import RedisPubSub from common.utils import get_logger from common.decorator import on_transaction_commit -from .models import SiteMessage +from .models import SiteMessage, SystemMsgSubscription +from .notifications import SystemMessage logger = get_logger(__name__) @@ -41,3 +48,37 @@ def on_site_message_create(sender, instance, created, **kwargs): } data = json.dumps(data) new_site_msg_chan.publish(data) + + +@receiver(post_migrate, dispatch_uid='notifications.signals_handler.create_system_messages') +def create_system_messages(app_config: AppConfig, **kwargs): + try: + notifications_module = import_module('.notifications', app_config.module.__package__) + + for name, obj in notifications_module.__dict__.items(): + if name.startswith('_'): + continue + + if not inspect.isclass(obj): + continue + + if not issubclass(obj, SystemMessage): + continue + + attrs = obj.__dict__ + if 'message_type_label' not in attrs: + continue + + if 'category' not in attrs: + continue + + if 'category_label' not in attrs: + continue + + message_type = obj.get_message_type() + sub, created = SystemMsgSubscription.objects.get_or_create(message_type=message_type) + if created: + obj.post_insert_to_db(sub) + logger.info(f'Create SystemMsgSubscription: package={app_config.module.__package__} type={message_type}') + except ModuleNotFoundError: + pass diff --git a/apps/ops/notifications.py b/apps/ops/notifications.py index 61e9d5630..4a65d8a4e 100644 --- a/apps/ops/notifications.py +++ b/apps/ops/notifications.py @@ -3,6 +3,7 @@ from django.utils.translation import gettext_lazy as _ from notifications.notifications import SystemMessage from notifications.models import SystemMsgSubscription from users.models import User +from notifications.backends import BACKEND __all__ = ('ServerPerformanceMessage',) @@ -24,3 +25,5 @@ class ServerPerformanceMessage(SystemMessage): def post_insert_to_db(cls, subscription: SystemMsgSubscription): admins = User.objects.filter(role=User.ROLE.ADMIN) subscription.users.add(*admins) + subscription.receive_backends = [BACKEND.EMAIL] + subscription.save() From 4fd7f0e949737dcb2ea353782f861c9cf3462927 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 29 Jun 2021 12:54:25 +0800 Subject: [PATCH 17/26] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=94=9F=E6=88=90=E7=B3=BB=E7=BB=9F=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E4=B8=AD=E5=8C=85=E5=90=AB=20{{=20=E5=8F=8C?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E6=97=B6=E6=B5=8B=E8=AF=95=E5=8F=AF=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E6=80=A7=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/utils/random.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/common/utils/random.py b/apps/common/utils/random.py index a9ef0421f..1a7449ef0 100644 --- a/apps/common/utils/random.py +++ b/apps/common/utils/random.py @@ -6,7 +6,7 @@ import socket import string -string_punctuation = '!#$%&()*+,-.:;<=>?@[]^_{}~' +string_punctuation = '!#$%&()*+,-.:;<=>?@[]^_~' def random_datetime(date_start, date_end): From 8ae6863266257f8f0645389a1d5fae8322df17ab Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 28 Jun 2021 19:36:37 +0800 Subject: [PATCH 18/26] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BB=88?= =?UTF-8?q?=E7=AB=AF=E6=9B=B4=E6=96=B0=E5=AD=98=E5=82=A8=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/models/terminal.py | 6 ------ apps/terminal/serializers/terminal.py | 2 ++ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/apps/terminal/models/terminal.py b/apps/terminal/models/terminal.py index 0c0c36771..77c9b1ce8 100644 --- a/apps/terminal/models/terminal.py +++ b/apps/terminal/models/terminal.py @@ -176,12 +176,6 @@ class Terminal(StorageMixin, TerminalStatusMixin, models.Model): self.save() return - def save(self, **kwargs): - from .storage import CommandStorage, ReplayStorage - self.command_storage = CommandStorage.default().name - self.replay_storage = ReplayStorage.default().name - return super().save(**kwargs) - def __str__(self): status = "Active" if not self.is_accepted: diff --git a/apps/terminal/serializers/terminal.py b/apps/terminal/serializers/terminal.py index e4640e454..44cb2a3a5 100644 --- a/apps/terminal/serializers/terminal.py +++ b/apps/terminal/serializers/terminal.py @@ -119,5 +119,7 @@ class TerminalRegistrationSerializer(serializers.ModelSerializer): instance.remote_addr = get_request_ip(request) sa = self.service_account.save() instance.user = sa + instance.command_storage = CommandStorage.default().name + instance.replay_storage = ReplayStorage.default().name instance.save() return instance From 0fd5ab02e98e5536a5a2af5d856b4010990d7d29 Mon Sep 17 00:00:00 2001 From: xinwen Date: Thu, 1 Jul 2021 10:42:49 +0800 Subject: [PATCH 19/26] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20interval=20?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E4=BB=BB=E5=8A=A1=E4=B8=8D=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/celery/utils.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/ops/celery/utils.py b/apps/ops/celery/utils.py index 959e4c907..c35db0f0e 100644 --- a/apps/ops/celery/utils.py +++ b/apps/ops/celery/utils.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # import json -import os import redis_lock import redis @@ -12,6 +11,7 @@ from django_celery_beat.models import ( PeriodicTask, IntervalSchedule, CrontabSchedule, PeriodicTasks ) +from common.utils.timezone import now from common.utils import get_logger logger = get_logger(__name__) @@ -36,6 +36,8 @@ def create_or_update_celery_periodic_tasks(tasks): for name, detail in tasks.items(): interval = None crontab = None + last_run_at = None + try: IntervalSchedule.objects.all().count() except (ProgrammingError, OperationalError): @@ -50,6 +52,7 @@ def create_or_update_celery_periodic_tasks(tasks): interval = IntervalSchedule.objects.filter(**kwargs).first() if interval is None: interval = IntervalSchedule.objects.create(**kwargs) + last_run_at = now() elif isinstance(detail.get("crontab"), str): try: minute, hour, day, month, week = detail["crontab"].split() @@ -75,7 +78,8 @@ def create_or_update_celery_periodic_tasks(tasks): enabled=detail.get('enabled', True), args=json.dumps(detail.get('args', [])), kwargs=json.dumps(detail.get('kwargs', {})), - description=detail.get('description') or '' + description=detail.get('description') or '', + last_run_at=last_run_at, ) task = PeriodicTask.objects.update_or_create( defaults=defaults, name=name, From c4bbeaaccc8c746637fb839f05c901bd2a679503 Mon Sep 17 00:00:00 2001 From: xinwen Date: Mon, 5 Jul 2021 16:20:42 +0800 Subject: [PATCH 20/26] =?UTF-8?q?feat:=20rdp=20=E6=B7=BB=E5=8A=A0=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E8=BF=87=E6=9C=9F=E8=87=AA=E5=8A=A8=E6=96=AD=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/api/connection_token.py | 21 ++++++++++++--------- apps/authentication/serializers.py | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/apps/authentication/api/connection_token.py b/apps/authentication/api/connection_token.py index 1e23f36d8..d4824c355 100644 --- a/apps/authentication/api/connection_token.py +++ b/apps/authentication/api/connection_token.py @@ -216,6 +216,8 @@ class UserConnectionTokenViewSet(RootOrgViewMixin, SerializerMixin2, GenericView from users.models import User from assets.models import SystemUser, Asset from applications.models import Application + from perms.utils.asset.permission import validate_permission as asset_validate_permission + from perms.utils.application.permission import validate_permission as app_validate_permission key = self.CACHE_KEY_PREFIX.format(token) value = cache.get(key, None) @@ -232,23 +234,24 @@ class UserConnectionTokenViewSet(RootOrgViewMixin, SerializerMixin2, GenericView app = None if value.get('type') == 'asset': asset = get_object_or_404(Asset, id=value.get('asset')) + if not asset.is_active: + raise serializers.ValidationError("Asset disabled") + + has_perm, expired_at = asset_validate_permission(user, asset, system_user, 'connect') else: app = get_object_or_404(Application, id=value.get('application')) + has_perm, expired_at = app_validate_permission(user, app, system_user) - if asset and not asset.is_active: - raise serializers.ValidationError("Asset disabled") - - try: - self.check_resource_permission(user, asset, app, system_user) - except PermissionDenied: + if not has_perm: raise serializers.ValidationError('Permission expired or invalid') - return value, user, system_user, asset, app + + return value, user, system_user, asset, app, expired_at @action(methods=['POST'], detail=False, permission_classes=[IsSuperUserOrAppUser], url_path='secret-info/detail') def get_secret_detail(self, request, *args, **kwargs): token = request.data.get('token', '') try: - value, user, system_user, asset, app = self.valid_token(token) + value, user, system_user, asset, app, expired_at = self.valid_token(token) except serializers.ValidationError as e: post_auth_failed.send( sender=self.__class__, username='', request=self.request, @@ -256,7 +259,7 @@ class UserConnectionTokenViewSet(RootOrgViewMixin, SerializerMixin2, GenericView ) raise e - data = dict(user=user, system_user=system_user) + data = dict(user=user, system_user=system_user, expired_at=expired_at) if asset: asset_detail = self._get_asset_secret_detail(asset, user=user, system_user=system_user) system_user.load_asset_more_auth(asset.id, user.username, user.id) diff --git a/apps/authentication/serializers.py b/apps/authentication/serializers.py index 11381c4cb..e6932388b 100644 --- a/apps/authentication/serializers.py +++ b/apps/authentication/serializers.py @@ -196,6 +196,7 @@ class ConnectionTokenSecretSerializer(serializers.Serializer): system_user = ConnectionTokenSystemUserSerializer(read_only=True) gateway = ConnectionTokenGatewaySerializer(read_only=True) actions = ActionsField() + expired_at = serializers.IntegerField() class RDPFileSerializer(ConnectionTokenSerializer): From a9f814a5153767dad7b762ed12758bd3576f2898 Mon Sep 17 00:00:00 2001 From: xinwen Date: Tue, 6 Jul 2021 19:03:58 +0800 Subject: [PATCH 21/26] =?UTF-8?q?fix:=20=E8=BF=87=E6=9C=9F=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=99=BB=E5=BD=95=E6=8F=90=E7=A4=BA=E4=B8=8D=E6=98=8E?= =?UTF-8?q?=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/backends/api.py | 24 +++++++++++++++++------- apps/authentication/mixins.py | 5 +++++ apps/jumpserver/settings/auth.py | 2 +- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/apps/authentication/backends/api.py b/apps/authentication/backends/api.py index 308c441a2..892ebcc7c 100644 --- a/apps/authentication/backends/api.py +++ b/apps/authentication/backends/api.py @@ -8,7 +8,7 @@ from django.core.cache import cache from django.utils.translation import ugettext as _ from six import text_type from django.contrib.auth import get_user_model -from django.contrib.auth.backends import ModelBackend as DJModelBackend +from django.contrib.auth.backends import ModelBackend from rest_framework import HTTP_HEADER_ENCODING from rest_framework import authentication, exceptions from common.auth import signature @@ -17,6 +17,9 @@ from common.utils import get_object_or_none, make_signature, http_to_unixtime from ..models import AccessKey, PrivateToken +UserModel = get_user_model() + + def get_request_date_header(request): date = request.META.get('HTTP_DATE', b'') if isinstance(date, text_type): @@ -25,9 +28,16 @@ def get_request_date_header(request): return date -class ModelBackend(DJModelBackend): +class JMSModelBackend(ModelBackend): def user_can_authenticate(self, user): - return user.is_valid + return True + + def get_user(self, user_id): + try: + user = UserModel._default_manager.get(pk=user_id) + except UserModel.DoesNotExist: + return None + return user if user.is_valid else None class AccessKeyAuthentication(authentication.BaseAuthentication): @@ -203,7 +213,7 @@ class SignatureAuthentication(signature.SignatureAuthentication): return None, None -class SSOAuthentication(ModelBackend): +class SSOAuthentication(JMSModelBackend): """ 什么也不做呀😺 """ @@ -212,7 +222,7 @@ class SSOAuthentication(ModelBackend): pass -class WeComAuthentication(ModelBackend): +class WeComAuthentication(JMSModelBackend): """ 什么也不做呀😺 """ @@ -221,7 +231,7 @@ class WeComAuthentication(ModelBackend): pass -class DingTalkAuthentication(ModelBackend): +class DingTalkAuthentication(JMSModelBackend): """ 什么也不做呀😺 """ @@ -230,7 +240,7 @@ class DingTalkAuthentication(ModelBackend): pass -class AuthorizationTokenAuthentication(ModelBackend): +class AuthorizationTokenAuthentication(JMSModelBackend): """ 什么也不做呀😺 """ diff --git a/apps/authentication/mixins.py b/apps/authentication/mixins.py index 5eeceb7c3..a05d3926f 100644 --- a/apps/authentication/mixins.py +++ b/apps/authentication/mixins.py @@ -236,6 +236,11 @@ class AuthMixin: ip = self.get_request_ip() request = self.request + if user.is_expired: + self.raise_credential_error(errors.reason_user_expired) + elif not user.is_active: + self.raise_credential_error(errors.reason_user_inactive) + self._set_partial_credential_error(user.username, ip, request) self._check_is_local_user(user) self._check_is_block(user.username) diff --git a/apps/jumpserver/settings/auth.py b/apps/jumpserver/settings/auth.py index a4b2fb296..b3c322799 100644 --- a/apps/jumpserver/settings/auth.py +++ b/apps/jumpserver/settings/auth.py @@ -120,7 +120,7 @@ LOGIN_CONFIRM_ENABLE = CONFIG.LOGIN_CONFIRM_ENABLE OTP_IN_RADIUS = CONFIG.OTP_IN_RADIUS -AUTH_BACKEND_MODEL = 'authentication.backends.api.ModelBackend' +AUTH_BACKEND_MODEL = 'authentication.backends.api.JMSModelBackend' AUTH_BACKEND_PUBKEY = 'authentication.backends.pubkey.PublicKeyAuthBackend' AUTH_BACKEND_LDAP = 'authentication.backends.ldap.LDAPAuthorizationBackend' AUTH_BACKEND_OIDC_PASSWORD = 'jms_oidc_rp.backends.OIDCAuthPasswordBackend' From ec8dca90d6a98e8eebde61390b6b03e7c3fa820b Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Thu, 8 Jul 2021 14:23:18 +0800 Subject: [PATCH 22/26] =?UTF-8?q?refactor:=20=E6=95=B4=E5=90=88=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E7=94=A8=E6=88=B7=E5=92=8C=E7=AE=A1=E7=90=86=E7=94=A8?= =?UTF-8?q?=E6=88=B7=20(#6236)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * perf: 整合系统用户和管理用户 * stash stash perf: 优化系统用户和资产的表结构 * perf: 添加信号 * perf: 添加算法 * perf: 去掉 asset user backends * perf: 整理系统用户api * perfF: 暂存一下 * stash * perf: 暂存一下 * perf: 暂存 * xxx * perf: ... * stash it * xxx * xxx * xxx * xxx * xxx * stash it * 修改Protocols * perf: 修改创建authbook信号 * perf: 添加auth info * .stash * perf: 基本完成 * perf: 修复完成 * perf: 修复更改的id * perf: 修复迁移过去数量不对的问题 * perf: 修改systemuser * fix: 修复批量编辑近期的问题 * fix: 修复authbook加载的问题 * xxx Co-authored-by: ibuler --- apps/acls/serializers/login_asset_acl.py | 2 +- apps/assets/api/__init__.py | 2 +- apps/assets/api/accounts.py | 51 ++ apps/assets/api/admin_user.py | 93 +--- apps/assets/api/asset.py | 5 +- apps/assets/api/asset_user.py | 151 ------ apps/assets/api/cmd_filter.py | 4 +- apps/assets/api/system_user.py | 3 +- apps/assets/api/system_user_relation.py | 12 +- apps/assets/backends/__init__.py | 1 - apps/assets/backends/base.py | 48 -- apps/assets/backends/db.py | 332 ------------ apps/assets/backends/manager.py | 162 ------ apps/assets/backends/utils.py | 7 - apps/assets/backends/vault.py | 4 - .../assets/migrations/0071_systemuser_type.py | 66 +++ .../migrations/0072_historicalauthbook.py | 85 +++ .../migrations/0073_auto_20210606_1142.py | 105 ++++ .../0074_remove_systemuser_assets.py | 27 + .../migrations/0075_auto_20210705_1759.py | 53 ++ apps/assets/models/__init__.py | 1 - apps/assets/models/asset.py | 66 ++- apps/assets/models/asset_user.py | 15 - apps/assets/models/authbook.py | 130 ++--- apps/assets/models/base.py | 129 +---- apps/assets/models/domain.py | 12 +- apps/assets/models/user.py | 505 +++++++++--------- apps/assets/models/utils.py | 73 +-- apps/assets/serializers/__init__.py | 2 +- apps/assets/serializers/account.py | 42 ++ apps/assets/serializers/admin_user.py | 50 +- apps/assets/serializers/asset.py | 63 ++- apps/assets/serializers/asset_user.py | 98 ---- apps/assets/serializers/base.py | 18 - apps/assets/serializers/cmd_filter.py | 3 - apps/assets/serializers/domain.py | 13 - apps/assets/serializers/favorite_asset.py | 2 - apps/assets/serializers/label.py | 2 - apps/assets/serializers/system_user.py | 75 ++- apps/assets/signals_handler/__init__.py | 4 +- apps/assets/signals_handler/asset.py | 128 +++++ apps/assets/signals_handler/authbook.py | 46 ++ apps/assets/signals_handler/common.py | 223 -------- apps/assets/signals_handler/system_user.py | 140 +++++ apps/assets/tasks/__init__.py | 3 +- ...onnectivity.py => account_connectivity.py} | 71 +-- apps/assets/tasks/admin_user_connectivity.py | 69 --- apps/assets/tasks/asset_connectivity.py | 33 +- apps/assets/urls/api_urls.py | 13 +- apps/audits/serializers.py | 2 - apps/authentication/api/connection_token.py | 4 +- apps/authentication/api/mfa.py | 11 +- apps/common/drf/api.py | 10 +- apps/common/mixins/api.py | 42 +- apps/jumpserver/settings/base.py | 2 + apps/locale/zh/LC_MESSAGES/django.mo | Bin 76655 -> 76045 bytes apps/locale/zh/LC_MESSAGES/django.po | 313 ++++++----- apps/ops/inventory.py | 17 +- apps/ops/models/adhoc.py | 6 - apps/orgs/models.py | 4 +- apps/orgs/serializers.py | 2 - apps/orgs/signals_handler/common.py | 31 +- apps/perms/models/asset_permission.py | 4 +- .../application/permission_relation.py | 12 +- .../serializers/asset/permission_relation.py | 14 +- apps/terminal/models/session.py | 6 +- apps/terminal/serializers/session.py | 2 - apps/terminal/serializers/terminal.py | 1 - apps/users/models/user.py | 4 +- apps/users/serializers/group.py | 2 - requirements/requirements.txt | 1 + utils/generate_fake_data/resources/assets.py | 2 +- 72 files changed, 1524 insertions(+), 2210 deletions(-) create mode 100644 apps/assets/api/accounts.py delete mode 100644 apps/assets/api/asset_user.py delete mode 100644 apps/assets/backends/__init__.py delete mode 100644 apps/assets/backends/base.py delete mode 100644 apps/assets/backends/manager.py delete mode 100644 apps/assets/backends/utils.py delete mode 100644 apps/assets/backends/vault.py create mode 100644 apps/assets/migrations/0071_systemuser_type.py create mode 100644 apps/assets/migrations/0072_historicalauthbook.py create mode 100644 apps/assets/migrations/0073_auto_20210606_1142.py create mode 100644 apps/assets/migrations/0074_remove_systemuser_assets.py create mode 100644 apps/assets/migrations/0075_auto_20210705_1759.py delete mode 100644 apps/assets/models/asset_user.py create mode 100644 apps/assets/serializers/account.py delete mode 100644 apps/assets/serializers/asset_user.py create mode 100644 apps/assets/signals_handler/asset.py create mode 100644 apps/assets/signals_handler/authbook.py create mode 100644 apps/assets/signals_handler/system_user.py rename apps/assets/tasks/{asset_user_connectivity.py => account_connectivity.py} (51%) delete mode 100644 apps/assets/tasks/admin_user_connectivity.py diff --git a/apps/acls/serializers/login_asset_acl.py b/apps/acls/serializers/login_asset_acl.py index bbb31af94..df62a04f8 100644 --- a/apps/acls/serializers/login_asset_acl.py +++ b/apps/acls/serializers/login_asset_acl.py @@ -54,7 +54,7 @@ class LoginAssetACLSystemUsersSerializer(serializers.Serializer): protocol_group = serializers.ListField( default=['*'], child=serializers.CharField(max_length=16), label=_('Protocol'), help_text=protocol_group_help_text.format( - ', '.join([SystemUser.PROTOCOL_SSH, SystemUser.PROTOCOL_TELNET]) + ', '.join([SystemUser.Protocol.ssh, SystemUser.Protocol.telnet]) ) ) diff --git a/apps/assets/api/__init__.py b/apps/assets/api/__init__.py index 59cb8e602..3178c8e3f 100644 --- a/apps/assets/api/__init__.py +++ b/apps/assets/api/__init__.py @@ -4,9 +4,9 @@ from .asset import * from .label import * from .system_user import * from .system_user_relation import * +from .accounts import * from .node import * from .domain import * from .cmd_filter import * -from .asset_user import * from .gathered_user import * from .favorite_asset import * diff --git a/apps/assets/api/accounts.py b/apps/assets/api/accounts.py new file mode 100644 index 000000000..ff40d2788 --- /dev/null +++ b/apps/assets/api/accounts.py @@ -0,0 +1,51 @@ +from django.db.models import F +from django.conf import settings +from rest_framework.decorators import action +from rest_framework.response import Response + +from orgs.mixins.api import OrgBulkModelViewSet +from common.permissions import IsOrgAdmin, IsOrgAdminOrAppUser, NeedMFAVerify +from ..tasks.account_connectivity import test_accounts_connectivity_manual +from ..models import AuthBook +from .. import serializers + +__all__ = ['AccountViewSet', 'AccountSecretsViewSet'] + + +class AccountViewSet(OrgBulkModelViewSet): + model = AuthBook + filterset_fields = ("username", "asset", "systemuser") + search_fields = filterset_fields + serializer_classes = { + 'default': serializers.AccountSerializer, + 'verify_account': serializers.AssetTaskSerializer + } + permission_classes = (IsOrgAdmin,) + + def get_queryset(self): + queryset = super().get_queryset()\ + .annotate(ip=F('asset__ip'))\ + .annotate(hostname=F('asset__hostname')) + return queryset + + @action(methods=['post'], detail=True, url_path='verify') + def verify_account(self, request, *args, **kwargs): + account = super().get_object() + task = test_accounts_connectivity_manual.delay([account]) + return Response(data={'task': task.id}) + + +class AccountSecretsViewSet(AccountViewSet): + """ + 因为可能要导出所有账号,所以单独建立了一个 viewset + """ + serializer_classes = { + 'default': serializers.AccountSecretSerializer + } + permission_classes = (IsOrgAdmin, NeedMFAVerify) + http_method_names = ['get'] + + def get_permissions(self): + if not settings.SECURITY_VIEW_AUTH_NEED_MFA: + self.permission_classes = [IsOrgAdminOrAppUser] + return super().get_permissions() diff --git a/apps/assets/api/admin_user.py b/apps/assets/api/admin_user.py index 5ad648635..043a30a1b 100644 --- a/apps/assets/api/admin_user.py +++ b/apps/assets/api/admin_user.py @@ -1,109 +1,28 @@ - - -from django.db import transaction from django.db.models import Count -from django.shortcuts import get_object_or_404 -from django.utils.translation import ugettext as _ -from rest_framework import status -from rest_framework.response import Response -from orgs.mixins.api import OrgBulkModelViewSet -from orgs.mixins import generics +from orgs.mixins.api import OrgBulkModelViewSet from common.utils import get_logger from ..hands import IsOrgAdmin -from ..models import AdminUser, Asset +from ..models import SystemUser from .. import serializers -from ..tasks import test_admin_user_connectivity_manual logger = get_logger(__file__) -__all__ = [ - 'AdminUserViewSet', 'ReplaceNodesAdminUserApi', - 'AdminUserTestConnectiveApi', 'AdminUserAuthApi', - 'AdminUserAssetsListView', -] +__all__ = ['AdminUserViewSet'] +# 兼容一下老的 api class AdminUserViewSet(OrgBulkModelViewSet): """ Admin user api set, for add,delete,update,list,retrieve resource """ - model = AdminUser + model = SystemUser filterset_fields = ("name", "username") search_fields = filterset_fields serializer_class = serializers.AdminUserSerializer permission_classes = (IsOrgAdmin,) - serializer_classes = { - 'default': serializers.AdminUserSerializer, - 'retrieve': serializers.AdminUserDetailSerializer, - } def get_queryset(self): - queryset = super().get_queryset() + queryset = super().get_queryset().filter(type=SystemUser.Type.admin) queryset = queryset.annotate(assets_amount=Count('assets')) return queryset - - def destroy(self, request, *args, **kwargs): - instance = self.get_object() - has_related_asset = instance.assets.exists() - if has_related_asset: - data = {'msg': _('Deleted failed, There are related assets')} - return Response(data=data, status=status.HTTP_400_BAD_REQUEST) - return super().destroy(request, *args, **kwargs) - - -class AdminUserAuthApi(generics.UpdateAPIView): - model = AdminUser - serializer_class = serializers.AdminUserAuthSerializer - permission_classes = (IsOrgAdmin,) - - -class ReplaceNodesAdminUserApi(generics.UpdateAPIView): - model = AdminUser - serializer_class = serializers.ReplaceNodeAdminUserSerializer - permission_classes = (IsOrgAdmin,) - - def update(self, request, *args, **kwargs): - admin_user = self.get_object() - serializer = self.serializer_class(data=request.data) - if serializer.is_valid(): - nodes = serializer.validated_data['nodes'] - assets = [] - for node in nodes: - assets.extend([asset.id for asset in node.get_all_assets()]) - - with transaction.atomic(): - Asset.objects.filter(id__in=assets).update(admin_user=admin_user) - - return Response({"msg": "ok"}) - else: - return Response({'error': serializer.errors}, status=400) - - -class AdminUserTestConnectiveApi(generics.RetrieveAPIView): - """ - Test asset admin user assets_connectivity - """ - model = AdminUser - permission_classes = (IsOrgAdmin,) - serializer_class = serializers.TaskIDSerializer - - def retrieve(self, request, *args, **kwargs): - admin_user = self.get_object() - task = test_admin_user_connectivity_manual.delay(admin_user) - return Response({"task": task.id}) - - -class AdminUserAssetsListView(generics.ListAPIView): - permission_classes = (IsOrgAdmin,) - serializer_class = serializers.AssetSimpleSerializer - filterset_fields = ("hostname", "ip") - search_fields = filterset_fields - - def get_object(self): - pk = self.kwargs.get('pk') - return get_object_or_404(AdminUser, pk=pk) - - def get_queryset(self): - admin_user = self.get_object() - return admin_user.get_related_assets() diff --git a/apps/assets/api/asset.py b/apps/assets/api/asset.py index 2176f97aa..19e3dc9db 100644 --- a/apps/assets/api/asset.py +++ b/apps/assets/api/asset.py @@ -33,8 +33,7 @@ class AssetViewSet(FilterAssetByNodeMixin, OrgBulkModelViewSet): filterset_fields = { 'hostname': ['exact'], 'ip': ['exact'], - 'systemuser__id': ['exact'], - 'admin_user__id': ['exact'], + 'system_users__id': ['exact'], 'platform__base': ['exact'], 'is_active': ['exact'], 'protocols': ['exact', 'icontains'] @@ -43,7 +42,7 @@ class AssetViewSet(FilterAssetByNodeMixin, OrgBulkModelViewSet): ordering_fields = ("hostname", "ip", "port", "cpu_cores") serializer_classes = { 'default': serializers.AssetSerializer, - 'display': serializers.AssetDisplaySerializer, + 'single': serializers.AssetVerboseSerializer, } permission_classes = (IsOrgAdminOrAppUser,) extra_filter_backends = [FilterAssetByNodeFilterBackend, LabelFilterBackend, IpInFilterBackend] diff --git a/apps/assets/api/asset_user.py b/apps/assets/api/asset_user.py deleted file mode 100644 index da0fe8c7e..000000000 --- a/apps/assets/api/asset_user.py +++ /dev/null @@ -1,151 +0,0 @@ -# -*- coding: utf-8 -*- -# -import coreapi -from django.conf import settings -from rest_framework.response import Response -from rest_framework import generics, filters -from rest_framework_bulk import BulkModelViewSet - -from common.permissions import IsOrgAdminOrAppUser, NeedMFAVerify -from common.utils import get_object_or_none, get_logger -from common.mixins import CommonApiMixin -from ..backends import AssetUserManager -from ..models import Node -from .. import serializers -from ..tasks import ( - test_asset_users_connectivity_manual -) - - -__all__ = [ - 'AssetUserViewSet', 'AssetUserAuthInfoViewSet', 'AssetUserTaskCreateAPI', -] - - -logger = get_logger(__name__) - - -class AssetUserFilterBackend(filters.BaseFilterBackend): - def filter_queryset(self, request, queryset, view): - kwargs = {} - for field in view.filterset_fields: - value = request.GET.get(field) - if not value: - continue - if field == "node_id": - value = get_object_or_none(Node, pk=value) - kwargs["node"] = value - continue - elif field == "asset_id": - field = "asset" - kwargs[field] = value - if kwargs: - queryset = queryset.filter(**kwargs) - logger.debug("Filter {}".format(kwargs)) - return queryset - - -class AssetUserSearchBackend(filters.BaseFilterBackend): - def filter_queryset(self, request, queryset, view): - value = request.GET.get('search') - if not value: - return queryset - queryset = queryset.search(value) - return queryset - - -class AssetUserLatestFilterBackend(filters.BaseFilterBackend): - def get_schema_fields(self, view): - return [ - coreapi.Field( - name='latest', location='query', required=False, - type='string', example='1', - description='Only the latest version' - ) - ] - - def filter_queryset(self, request, queryset, view): - latest = request.GET.get('latest') == '1' - if latest: - queryset = queryset.distinct() - return queryset - - -class AssetUserViewSet(CommonApiMixin, BulkModelViewSet): - serializer_classes = { - 'default': serializers.AssetUserWriteSerializer, - 'display': serializers.AssetUserReadSerializer, - 'retrieve': serializers.AssetUserReadSerializer, - } - permission_classes = [IsOrgAdminOrAppUser] - filterset_fields = [ - "id", "ip", "hostname", "username", - "asset_id", "node_id", - "prefer", "prefer_id", - ] - search_fields = ["ip", "hostname", "username"] - filter_backends = [ - AssetUserFilterBackend, AssetUserSearchBackend, - AssetUserLatestFilterBackend, - ] - - def allow_bulk_destroy(self, qs, filtered): - return False - - def get_object(self): - pk = self.kwargs.get("pk") - if pk is None: - return - queryset = self.get_queryset() - obj = queryset.get(id=pk) - return obj - - def perform_destroy(self, instance): - manager = AssetUserManager() - manager.delete(instance) - - def get_queryset(self): - manager = AssetUserManager() - queryset = manager.all() - return queryset - - -class AssetUserAuthInfoViewSet(AssetUserViewSet): - serializer_classes = {"default": serializers.AssetUserAuthInfoSerializer} - http_method_names = ['get', 'post'] - permission_classes = [IsOrgAdminOrAppUser] - - def get_permissions(self): - if settings.SECURITY_VIEW_AUTH_NEED_MFA: - self.permission_classes = [IsOrgAdminOrAppUser, NeedMFAVerify] - return super().get_permissions() - - -class AssetUserTaskCreateAPI(generics.CreateAPIView): - permission_classes = (IsOrgAdminOrAppUser,) - serializer_class = serializers.AssetUserTaskSerializer - filter_backends = AssetUserViewSet.filter_backends - filterset_fields = AssetUserViewSet.filterset_fields - - def get_asset_users(self): - manager = AssetUserManager() - queryset = manager.all() - for cls in self.filter_backends: - queryset = cls().filter_queryset(self.request, queryset, self) - return list(queryset) - - def perform_create(self, serializer): - asset_users = self.get_asset_users() - # action = serializer.validated_data["action"] - # only this - # if action == "test": - task = test_asset_users_connectivity_manual.delay(asset_users) - data = getattr(serializer, '_data', {}) - data["task"] = task.id - setattr(serializer, '_data', data) - return task - - def get_exception_handler(self): - def handler(e, context): - return Response({"error": str(e)}, status=400) - return handler diff --git a/apps/assets/api/cmd_filter.py b/apps/assets/api/cmd_filter.py index 56cbbd6c3..ca22c494f 100644 --- a/apps/assets/api/cmd_filter.py +++ b/apps/assets/api/cmd_filter.py @@ -2,14 +2,12 @@ # from rest_framework.response import Response -from rest_framework.generics import CreateAPIView, RetrieveDestroyAPIView +from rest_framework.generics import CreateAPIView from django.shortcuts import get_object_or_404 from common.utils import reverse from common.utils import lazyproperty from orgs.mixins.api import OrgBulkModelViewSet -from orgs.utils import tmp_to_root_org -from tickets.models import Ticket from tickets.api import GenericTicketStatusRetrieveCloseAPI from ..hands import IsOrgAdmin, IsAppUser from ..models import CommandFilter, CommandFilterRule diff --git a/apps/assets/api/system_user.py b/apps/assets/api/system_user.py index 25c3f58f4..6ffd1c3c5 100644 --- a/apps/assets/api/system_user.py +++ b/apps/assets/api/system_user.py @@ -32,7 +32,8 @@ class SystemUserViewSet(OrgBulkModelViewSet): filterset_fields = { 'name': ['exact'], 'username': ['exact'], - 'protocol': ['exact', 'in'] + 'protocol': ['exact', 'in'], + 'type': ['exact', 'in'], } search_fields = filterset_fields serializer_class = serializers.SystemUserSerializer diff --git a/apps/assets/api/system_user_relation.py b/apps/assets/api/system_user_relation.py index 66b9dc6ee..86037229e 100644 --- a/apps/assets/api/system_user_relation.py +++ b/apps/assets/api/system_user_relation.py @@ -6,6 +6,7 @@ from django.db.models.signals import m2m_changed from django.db.models.functions import Concat from common.permissions import IsOrgAdmin +from common.utils import get_logger from orgs.mixins.api import OrgBulkModelViewSet from orgs.utils import current_org from .. import models, serializers @@ -15,6 +16,8 @@ __all__ = [ 'SystemUserUserRelationViewSet', ] +logger = get_logger(__name__) + class RelationMixin: def get_queryset(self): @@ -24,8 +27,8 @@ class RelationMixin: queryset = queryset.filter(systemuser__org_id=org_id) queryset = queryset.annotate(systemuser_display=Concat( - F('systemuser__name'), Value('('), F('systemuser__username'), - Value(')') + F('systemuser__name'), Value('('), + F('systemuser__username'), Value(')') )) return queryset @@ -41,10 +44,11 @@ class RelationMixin: system_users_objects_map[i.systemuser].append(_id) sender = self.get_sender() - for system_user, objects in system_users_objects_map.items(): + for system_user, object_ids in system_users_objects_map.items(): + logger.debug('System user relation changed, send m2m_changed signals') m2m_changed.send( sender=sender, instance=system_user, action='post_add', - reverse=False, model=model, pk_set=objects + reverse=False, model=model, pk_set=set(object_ids) ) def get_sender(self): diff --git a/apps/assets/backends/__init__.py b/apps/assets/backends/__init__.py deleted file mode 100644 index 9a22a23dd..000000000 --- a/apps/assets/backends/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .manager import AssetUserManager diff --git a/apps/assets/backends/base.py b/apps/assets/backends/base.py deleted file mode 100644 index 17115afaa..000000000 --- a/apps/assets/backends/base.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# -from abc import abstractmethod - -from ..models import Asset - - -class BaseBackend: - @abstractmethod - def all(self): - pass - - @abstractmethod - def filter(self, username=None, hostname=None, ip=None, assets=None, - node=None, prefer_id=None, **kwargs): - pass - - @abstractmethod - def search(self, item): - pass - - @abstractmethod - def get_queryset(self): - pass - - @abstractmethod - def delete(self, union_id): - pass - - @staticmethod - def qs_to_values(qs): - values = qs.values( - 'hostname', 'ip', "asset_id", - 'name', 'username', 'password', 'private_key', 'public_key', - 'score', 'version', - "asset_username", "union_id", - 'date_created', 'date_updated', - 'org_id', 'backend', 'backend_display' - ) - return values - - @staticmethod - def make_assets_as_ids(assets): - if not assets: - return [] - if isinstance(assets[0], Asset): - assets = [a.id for a in assets] - return assets diff --git a/apps/assets/backends/db.py b/apps/assets/backends/db.py index 0e5d288b9..e69de29bb 100644 --- a/apps/assets/backends/db.py +++ b/apps/assets/backends/db.py @@ -1,332 +0,0 @@ -# -*- coding: utf-8 -*- -# -from django.utils.translation import ugettext as _ -from functools import reduce -from django.db.models import F, CharField, Value, IntegerField, Q, Count -from django.db.models.functions import Concat -from rest_framework.exceptions import PermissionDenied - -from common.utils import get_object_or_none -from orgs.utils import current_org -from ..models import AuthBook, SystemUser, Asset, AdminUser -from .base import BaseBackend - - -class DBBackend(BaseBackend): - union_id_length = 2 - - def __init__(self, queryset=None): - if queryset is None: - queryset = self.all() - self.queryset = queryset - - def _clone(self): - return self.__class__(self.queryset) - - def all(self): - return AuthBook.objects.none() - - def count(self): - return self.queryset.count() - - def get_queryset(self): - return self.queryset - - def delete(self, union_id): - cleaned_union_id = union_id.split('_') - # 如果union_id通不过本检查,代表可能不是本backend, 应该返回空 - if not self._check_union_id(union_id, cleaned_union_id): - return - return self._perform_delete_by_union_id(cleaned_union_id) - - def _perform_delete_by_union_id(self, union_id_cleaned): - pass - - def filter(self, assets=None, node=None, prefer=None, prefer_id=None, - union_id=None, id__in=None, **kwargs): - clone = self._clone() - clone._filter_union_id(union_id) - clone._filter_prefer(prefer, prefer_id) - clone._filter_node(node) - clone._filter_assets(assets) - clone._filter_other(kwargs) - clone._filter_id_in(id__in) - return clone - - def _filter_union_id(self, union_id): - if not union_id: - return - cleaned_union_id = union_id.split('_') - # 如果union_id通不过本检查,代表可能不是本backend, 应该返回空 - if not self._check_union_id(union_id, cleaned_union_id): - self.queryset = self.queryset.none() - return - return self._perform_filter_union_id(union_id, cleaned_union_id) - - def _check_union_id(self, union_id, cleaned_union_id): - return union_id and len(cleaned_union_id) == self.union_id_length - - def _perform_filter_union_id(self, union_id, union_id_cleaned): - self.queryset = self.queryset.filter(union_id=union_id) - - def _filter_assets(self, assets): - asset_ids = self.make_assets_as_ids(assets) - if asset_ids: - self.queryset = self.queryset.filter(asset_id__in=asset_ids) - - def _filter_node(self, node): - pass - - def _filter_id_in(self, ids): - if ids and isinstance(ids, list): - self.queryset = self.queryset.filter(union_id__in=ids) - - @staticmethod - def clean_kwargs(kwargs): - return {k: v for k, v in kwargs.items() if v} - - def _filter_other(self, kwargs): - kwargs = self.clean_kwargs(kwargs) - if kwargs: - self.queryset = self.queryset.filter(**kwargs) - - def _filter_prefer(self, prefer, prefer_id): - pass - - def search(self, item): - qs = [] - for i in ['hostname', 'ip', 'username']: - kwargs = {i + '__startswith': item} - qs.append(Q(**kwargs)) - q = reduce(lambda x, y: x | y, qs) - clone = self._clone() - clone.queryset = clone.queryset.filter(q).distinct() - return clone - - -class SystemUserBackend(DBBackend): - model = SystemUser.assets.through - backend = 'system_user' - backend_display = _('System user') - prefer = backend - base_score = 0 - union_id_length = 2 - - def _filter_prefer(self, prefer, prefer_id): - if prefer and prefer != self.prefer: - self.queryset = self.queryset.none() - - if prefer_id: - self.queryset = self.queryset.filter(systemuser__id=prefer_id) - - def _perform_filter_union_id(self, union_id, union_id_cleaned): - system_user_id, asset_id = union_id_cleaned - self.queryset = self.queryset.filter( - asset_id=asset_id, systemuser__id=system_user_id, - ) - - def _perform_delete_by_union_id(self, union_id_cleaned): - system_user_id, asset_id = union_id_cleaned - system_user = get_object_or_none(SystemUser, pk=system_user_id) - asset = get_object_or_none(Asset, pk=asset_id) - if all((system_user, asset)): - system_user.assets.remove(asset) - - def _filter_node(self, node): - if node: - self.queryset = self.queryset.filter(asset__nodes__id=node.id) - - def get_annotate(self): - kwargs = dict( - hostname=F("asset__hostname"), - ip=F("asset__ip"), - name=F("systemuser__name"), - username=F("systemuser__username"), - password=F("systemuser__password"), - private_key=F("systemuser__private_key"), - public_key=F("systemuser__public_key"), - score=F("systemuser__priority") + self.base_score, - version=Value(0, IntegerField()), - date_created=F("systemuser__date_created"), - date_updated=F("systemuser__date_updated"), - asset_username=Concat(F("asset__id"), Value("_"), - F("systemuser__username"), - output_field=CharField()), - union_id=Concat(F("systemuser_id"), Value("_"), F("asset_id"), - output_field=CharField()), - org_id=F("asset__org_id"), - backend=Value(self.backend, CharField()), - backend_display=Value(self.backend_display, CharField()), - ) - return kwargs - - def get_filter(self): - return dict( - systemuser__username_same_with_user=False, - ) - - def all(self): - kwargs = self.get_annotate() - filters = self.get_filter() - qs = self.model.objects.all().annotate(**kwargs) - if not current_org.is_root(): - filters['org_id'] = current_org.org_id() - qs = qs.filter(**filters) - qs = self.qs_to_values(qs) - return qs - - -class DynamicSystemUserBackend(SystemUserBackend): - backend = 'system_user_dynamic' - backend_display = _('System user(Dynamic)') - prefer = 'system_user' - union_id_length = 3 - - def get_annotate(self): - kwargs = super().get_annotate() - kwargs.update(dict( - name=Concat( - F("systemuser__users__name"), Value('('), F("systemuser__name"), Value(')'), - output_field=CharField() - ), - username=F("systemuser__users__username"), - asset_username=Concat( - F("asset__id"), Value("_"), - F("systemuser__users__username"), - output_field=CharField() - ), - union_id=Concat( - F("systemuser_id"), Value("_"), F("asset_id"), - Value("_"), F("systemuser__users__id"), - output_field=CharField() - ), - users_count=Count('systemuser__users'), - )) - return kwargs - - def _perform_filter_union_id(self, union_id, union_id_cleaned): - system_user_id, asset_id, user_id = union_id_cleaned - self.queryset = self.queryset.filter( - asset_id=asset_id, systemuser_id=system_user_id, - union_id=union_id, - ) - - def _perform_delete_by_union_id(self, union_id_cleaned): - system_user_id, asset_id, user_id = union_id_cleaned - system_user = get_object_or_none(SystemUser, pk=system_user_id) - if not system_user: - return - system_user.users.remove(user_id) - if system_user.users.count() == 0: - system_user.assets.remove(asset_id) - - def get_filter(self): - return dict( - users_count__gt=0, - systemuser__username_same_with_user=True - ) - - -class AdminUserBackend(DBBackend): - model = Asset - backend = 'admin_user' - backend_display = _('Admin user') - prefer = backend - base_score = 200 - - def _filter_prefer(self, prefer, prefer_id): - if prefer and prefer != self.backend: - self.queryset = self.queryset.none() - if prefer_id: - self.queryset = self.queryset.filter(admin_user__id=prefer_id) - - def _filter_node(self, node): - if node: - self.queryset = self.queryset.filter(nodes__id=node.id) - - def _perform_filter_union_id(self, union_id, union_id_cleaned): - admin_user_id, asset_id = union_id_cleaned - self.queryset = self.queryset.filter( - id=asset_id, admin_user_id=admin_user_id, - ) - - def _perform_delete_by_union_id(self, union_id_cleaned): - raise PermissionDenied(_("Could not remove asset admin user")) - - def all(self): - qs = self.model.objects.all().annotate( - asset_id=F("id"), - name=F("admin_user__name"), - username=F("admin_user__username"), - password=F("admin_user__password"), - private_key=F("admin_user__private_key"), - public_key=F("admin_user__public_key"), - score=Value(self.base_score, IntegerField()), - version=Value(0, IntegerField()), - date_updated=F("admin_user__date_updated"), - asset_username=Concat(F("id"), Value("_"), F("admin_user__username"), output_field=CharField()), - union_id=Concat(F("admin_user_id"), Value("_"), F("id"), output_field=CharField()), - backend=Value(self.backend, CharField()), - backend_display=Value(self.backend_display, CharField()), - ) - qs = self.qs_to_values(qs) - return qs - - -class AuthbookBackend(DBBackend): - model = AuthBook - backend = 'db' - backend_display = _('Database') - prefer = backend - base_score = 400 - - def _filter_node(self, node): - if node: - self.queryset = self.queryset.filter(asset__nodes__id=node.id) - - def _filter_prefer(self, prefer, prefer_id): - if not prefer or not prefer_id: - return - if prefer.lower() == "admin_user": - model = AdminUser - elif prefer.lower() == "system_user": - model = SystemUser - else: - self.queryset = self.queryset.none() - return - obj = get_object_or_none(model, pk=prefer_id) - if obj is None: - self.queryset = self.queryset.none() - return - username = obj.get_username() - if isinstance(username, str): - self.queryset = self.queryset.filter(username=username) - # dynamic system user return more username - else: - self.queryset = self.queryset.filter(username__in=username) - - def _perform_filter_union_id(self, union_id, union_id_cleaned): - authbook_id, asset_id = union_id_cleaned - self.queryset = self.queryset.filter( - id=authbook_id, asset_id=asset_id, - ) - - def _perform_delete_by_union_id(self, union_id_cleaned): - authbook_id, asset_id = union_id_cleaned - authbook = get_object_or_none(AuthBook, pk=authbook_id) - if authbook.is_latest: - raise PermissionDenied(_("Latest version could not be delete")) - AuthBook.objects.filter(id=authbook_id).delete() - - def all(self): - qs = self.model.objects.all().annotate( - hostname=F("asset__hostname"), - ip=F("asset__ip"), - score=F('version') + self.base_score, - asset_username=Concat(F("asset__id"), Value("_"), F("username"), output_field=CharField()), - union_id=Concat(F("id"), Value("_"), F("asset_id"), output_field=CharField()), - backend=Value(self.backend, CharField()), - backend_display=Value(self.backend_display, CharField()), - ) - qs = self.qs_to_values(qs) - return qs diff --git a/apps/assets/backends/manager.py b/apps/assets/backends/manager.py deleted file mode 100644 index ee6650ed5..000000000 --- a/apps/assets/backends/manager.py +++ /dev/null @@ -1,162 +0,0 @@ -# -*- coding: utf-8 -*- -# -from itertools import chain, groupby -from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist - -from orgs.utils import current_org -from common.utils import get_logger, lazyproperty -from common.struct import QuerySetChain - -from ..models import AssetUser, AuthBook -from .db import ( - AuthbookBackend, SystemUserBackend, AdminUserBackend, - DynamicSystemUserBackend -) - -logger = get_logger(__name__) - - -class NotSupportError(Exception): - pass - - -class AssetUserQueryset: - ObjectDoesNotExist = ObjectDoesNotExist - MultipleObjectsReturned = MultipleObjectsReturned - - def __init__(self, backends=()): - self.backends = backends - self._distinct_queryset = None - - def backends_queryset(self): - return [b.get_queryset() for b in self.backends] - - @lazyproperty - def backends_counts(self): - return [b.count() for b in self.backends] - - def filter(self, hostname=None, ip=None, username=None, - assets=None, asset=None, node=None, - id=None, prefer_id=None, prefer=None, id__in=None): - if not assets and asset: - assets = [asset] - - kwargs = dict( - hostname=hostname, ip=ip, username=username, - assets=assets, node=node, prefer=prefer, prefer_id=prefer_id, - id__in=id__in, union_id=id, - ) - logger.debug("Filter: {}".format(kwargs)) - backends = [] - for backend in self.backends: - clone = backend.filter(**kwargs) - backends.append(clone) - return self._clone(backends) - - def _clone(self, backends=None): - if backends is None: - backends = self.backends - return self.__class__(backends) - - def search(self, item): - backends = [] - for backend in self.backends: - new = backend.search(item) - backends.append(new) - return self._clone(backends) - - def distinct(self): - logger.debug("Distinct asset user queryset") - queryset_chain = chain(*(backend.get_queryset() for backend in self.backends)) - queryset_sorted = sorted( - queryset_chain, - key=lambda item: (item["asset_username"], item["score"]), - reverse=True, - ) - results = groupby(queryset_sorted, key=lambda item: item["asset_username"]) - final = [next(result[1]) for result in results] - self._distinct_queryset = final - return self - - def get(self, latest=False, **kwargs): - queryset = self.filter(**kwargs) - if latest: - queryset = queryset.distinct() - queryset = list(queryset) - count = len(queryset) - if count == 1: - data = queryset[0] - return data - elif count > 1: - msg = 'Should return 1 record, but get {}'.format(count) - raise MultipleObjectsReturned(msg) - else: - msg = 'No record found(org is {})'.format(current_org.name) - raise ObjectDoesNotExist(msg) - - def get_latest(self, **kwargs): - return self.get(latest=True, **kwargs) - - @staticmethod - def to_asset_user(data): - obj = AssetUser() - for k, v in data.items(): - setattr(obj, k, v) - return obj - - @property - def queryset(self): - if self._distinct_queryset is not None: - return self._distinct_queryset - return QuerySetChain(self.backends_queryset()) - - def count(self): - if self._distinct_queryset is not None: - return len(self._distinct_queryset) - else: - return sum(self.backends_counts) - - def __getitem__(self, ndx): - return self.queryset.__getitem__(ndx) - - def __iter__(self): - self._data = iter(self.queryset) - return self - - def __next__(self): - return self.to_asset_user(next(self._data)) - - -class AssetUserManager: - support_backends = ( - ('db', AuthbookBackend), - ('system_user', SystemUserBackend), - ('admin_user', AdminUserBackend), - ('system_user_dynamic', DynamicSystemUserBackend), - ) - - def __init__(self): - self.backends = [backend() for name, backend in self.support_backends] - self._queryset = AssetUserQueryset(self.backends) - - def all(self): - return self._queryset - - def delete(self, obj): - name_backends_map = dict(self.support_backends) - backend_name = obj.backend - backend_cls = name_backends_map.get(backend_name) - union_id = obj.union_id - if backend_cls: - backend_cls().delete(union_id) - else: - raise ObjectDoesNotExist("Not backend found") - - @staticmethod - def create(**kwargs): - # 使用create方法创建AuthBook对象,解决并发创建问题(添加锁机制) - authbook = AuthBook.create(**kwargs) - return authbook - - def __getattr__(self, item): - return getattr(self._queryset, item) diff --git a/apps/assets/backends/utils.py b/apps/assets/backends/utils.py deleted file mode 100644 index fbe190ba3..000000000 --- a/apps/assets/backends/utils.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -# - -# from django.conf import settings - -# from .vault import VaultBackend - diff --git a/apps/assets/backends/vault.py b/apps/assets/backends/vault.py deleted file mode 100644 index f19a64d9a..000000000 --- a/apps/assets/backends/vault.py +++ /dev/null @@ -1,4 +0,0 @@ -# -*- coding: utf-8 -*- -# - - diff --git a/apps/assets/migrations/0071_systemuser_type.py b/apps/assets/migrations/0071_systemuser_type.py new file mode 100644 index 000000000..cb18edc60 --- /dev/null +++ b/apps/assets/migrations/0071_systemuser_type.py @@ -0,0 +1,66 @@ +# Generated by Django 3.1.6 on 2021-06-04 16:46 + +from django.db import migrations, models, transaction + + +def migrate_admin_user_to_system_user(apps, schema_editor): + admin_user_model = apps.get_model("assets", "AdminUser") + system_user_model = apps.get_model("assets", "SystemUser") + db_alias = schema_editor.connection.alias + + admin_users = admin_user_model.objects.using(db_alias).all() + print() + for admin_user in admin_users: + kwargs = {} + for attr in [ + 'id', 'org_id', 'username', 'password', 'private_key', 'public_key', + 'comment', 'date_created', 'date_updated', 'created_by', + ]: + value = getattr(admin_user, attr) + kwargs[attr] = value + + name = admin_user.name + exist = system_user_model.objects.using(db_alias).filter( + name=admin_user.name, org_id=admin_user.org_id + ).exists() + if exist: + name = admin_user.name + '_' + str(admin_user.id)[:5] + kwargs.update({ + 'name': name, + 'type': 'admin', + 'protocol': 'ssh', + 'auto_push': False, + }) + + with transaction.atomic(): + s = system_user_model(**kwargs) + s.save() + print(" Migrate admin user to system user: {} => {}".format(admin_user.name, s.name)) + assets = admin_user.assets.all() + s.assets.set(assets) + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0070_auto_20210426_1515'), + ] + + operations = [ + migrations.AddField( + model_name='systemuser', + name='type', + field=models.CharField(choices=[('common', 'Common user'), ('admin', 'Admin user')], default='common', max_length=16, verbose_name='Type'), + ), + migrations.AlterField( + model_name='systemuser', + name='login_mode', + field=models.CharField(choices=[('auto', 'Automatic managed'), ('manual', 'Manually input')], default='auto', max_length=10, verbose_name='Login mode'), + ), + migrations.AlterField( + model_name='systemuser', + name='protocol', + field=models.CharField(choices=[('ssh', 'SSH'), ('rdp', 'RDP'), ('telnet', 'Telnet'), ('vnc', 'VNC'), ('mysql', 'MySQL'), ('oracle', 'Oracle'), ('mariadb', 'MariaDB'), ('postgresql', 'PostgreSQL'), ('k8s', 'K8S')], default='ssh', max_length=16, verbose_name='Protocol'), + ), + migrations.RunPython(migrate_admin_user_to_system_user) + ] diff --git a/apps/assets/migrations/0072_historicalauthbook.py b/apps/assets/migrations/0072_historicalauthbook.py new file mode 100644 index 000000000..9a55e47f3 --- /dev/null +++ b/apps/assets/migrations/0072_historicalauthbook.py @@ -0,0 +1,85 @@ +# Generated by Django 3.1.6 on 2021-06-05 16:10 + +import common.fields.model +from django.conf import settings +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import simple_history.models +import uuid +from django.utils import timezone +from django.db import migrations, transaction + + +def migrate_old_authbook_to_history(apps, schema_editor): + authbook_model = apps.get_model("assets", "AuthBook") + history_model = apps.get_model("assets", "HistoricalAuthBook") + db_alias = schema_editor.connection.alias + + print() + while True: + authbooks = authbook_model.objects.using(db_alias).filter(is_latest=False)[:20] + if not authbooks: + break + historys = [] + authbook_ids = [] + # Todo: 或许能优化成更新那样 + for authbook in authbooks: + authbook_ids.append(authbook.id) + history = history_model() + + for attr in [ + 'id', 'username', 'password', 'private_key', 'public_key', 'version', + 'comment', 'created_by', 'asset', 'date_created', 'date_updated' + ]: + setattr(history, attr, getattr(authbook, attr)) + history.history_type = '-' + history.history_date = timezone.now() + historys.append(history) + + with transaction.atomic(): + print(" Migrate old auth book to history table: {} items".format(len(authbook_ids))) + history_model.objects.bulk_create(historys, ignore_conflicts=True) + authbook_model.objects.filter(id__in=authbook_ids).delete() + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('assets', '0071_systemuser_type'), + ] + + operations = [ + migrations.CreateModel( + name='HistoricalAuthBook', + fields=[ + ('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')), + ('id', models.UUIDField(db_index=True, default=uuid.uuid4)), + ('name', models.CharField(max_length=128, verbose_name='Name')), + ('username', models.CharField(blank=True, db_index=True, max_length=128, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username')), + ('password', common.fields.model.EncryptCharField(blank=True, max_length=256, null=True, verbose_name='Password')), + ('private_key', common.fields.model.EncryptTextField(blank=True, null=True, verbose_name='SSH private key')), + ('public_key', common.fields.model.EncryptTextField(blank=True, null=True, verbose_name='SSH public key')), + ('comment', models.TextField(blank=True, verbose_name='Comment')), + ('date_created', models.DateTimeField(blank=True, editable=False, verbose_name='Date created')), + ('date_updated', models.DateTimeField(blank=True, editable=False, verbose_name='Date updated')), + ('created_by', models.CharField(max_length=128, null=True, verbose_name='Created by')), + ('version', models.IntegerField(default=1, verbose_name='Version')), + ('is_latest', models.BooleanField(default=False, verbose_name='Latest version')), + ('history_id', models.AutoField(primary_key=True, serialize=False)), + ('history_date', models.DateTimeField()), + ('history_change_reason', models.CharField(max_length=100, null=True)), + ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), + ('asset', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='assets.asset', verbose_name='Asset')), + ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'historical AuthBook', + 'ordering': ('-history_date', '-history_id'), + 'get_latest_by': 'history_date', + }, + bases=(simple_history.models.HistoricalChanges, models.Model), + ), + migrations.RunPython(migrate_old_authbook_to_history) + ] diff --git a/apps/assets/migrations/0073_auto_20210606_1142.py b/apps/assets/migrations/0073_auto_20210606_1142.py new file mode 100644 index 000000000..e3ca122ce --- /dev/null +++ b/apps/assets/migrations/0073_auto_20210606_1142.py @@ -0,0 +1,105 @@ +# Generated by Django 3.1.6 on 2021-06-06 03:42 + +from django.utils import timezone +from django.db import migrations, models, transaction +import django.db.models.deletion + + +def migrate_system_assets_to_authbook(apps, schema_editor): + system_user_model = apps.get_model("assets", "SystemUser") + system_user_asset_model = system_user_model.assets.through + authbook_model = apps.get_model('assets', 'AuthBook') + history_model = apps.get_model("assets", "HistoricalAuthBook") + + print() + system_users = system_user_model.objects.all() + for s in system_users: + while True: + systemuser_asset_relations = system_user_asset_model.objects.filter(systemuser=s)[:20] + if not systemuser_asset_relations: + break + authbooks = [] + relations_ids = [] + historys = [] + for i in systemuser_asset_relations: + authbook = authbook_model(asset=i.asset, systemuser=i.systemuser, org_id=s.org_id) + authbooks.append(authbook) + relations_ids.append(i.id) + + history = history_model( + asset=i.asset, systemuser=i.systemuser, + date_created=timezone.now(), date_updated=timezone.now(), + ) + history.history_type = '-' + history.history_date = timezone.now() + historys.append(history) + + with transaction.atomic(): + print(" Migrate system user assets relations: {} items".format(len(relations_ids))) + authbook_model.objects.bulk_create(authbooks, ignore_conflicts=True) + history_model.objects.bulk_create(historys) + system_user_asset_model.objects.filter(id__in=relations_ids).delete() + + +def migrate_authbook_secret_to_system_user(apps, schema_editor): + authbook_model = apps.get_model('assets', 'AuthBook') + history_model = apps.get_model('assets', 'HistoricalAuthBook') + + print() + authbooks_without_systemuser = authbook_model.objects.filter(systemuser__isnull=True) + for authbook in authbooks_without_systemuser: + matched = authbook_model.objects.filter( + asset=authbook.asset, systemuser__username=authbook.username + ) + if not matched: + continue + historys = [] + for i in matched: + history = history_model( + asset=i.asset, systemuser=i.systemuser, + date_created=timezone.now(), date_updated=timezone.now(), + version=authbook.version + ) + history.history_type = '-' + history.history_date = timezone.now() + historys.append(history) + + with transaction.atomic(): + print(" Migrate secret to system user assets account: {} items".format(len(historys))) + matched.update(password=authbook.password, private_key=authbook.private_key, + public_key=authbook.public_key, version=authbook.version) + history_model.objects.bulk_create(historys) + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0072_historicalauthbook'), + ] + + operations = [ + migrations.AddField( + model_name='authbook', + name='systemuser', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='assets.systemuser', verbose_name='System user'), + ), + migrations.AddField( + model_name='historicalauthbook', + name='systemuser', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='assets.systemuser', verbose_name='System user'), + ), + migrations.AlterUniqueTogether( + name='authbook', + unique_together={('username', 'asset', 'systemuser')}, + ), + migrations.RunPython(migrate_system_assets_to_authbook), + migrations.RunPython(migrate_authbook_secret_to_system_user), + migrations.RemoveField( + model_name='authbook', + name='is_latest', + ), + migrations.RemoveField( + model_name='historicalauthbook', + name='is_latest', + ), + ] diff --git a/apps/assets/migrations/0074_remove_systemuser_assets.py b/apps/assets/migrations/0074_remove_systemuser_assets.py new file mode 100644 index 000000000..c9961f5ad --- /dev/null +++ b/apps/assets/migrations/0074_remove_systemuser_assets.py @@ -0,0 +1,27 @@ +# Generated by Django 3.1.6 on 2021-06-06 03:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0073_auto_20210606_1142'), + ] + + operations = [ + migrations.RemoveField( + model_name='systemuser', + name='assets', + ), + migrations.RenameField( + model_name='asset', + old_name='admin_user', + new_name='_admin_user', + ), + migrations.AddField( + model_name='systemuser', + name='assets', + field=models.ManyToManyField(blank=True, related_name='system_users', through='assets.AuthBook', to='assets.Asset', verbose_name='Assets'), + ), + ] diff --git a/apps/assets/migrations/0075_auto_20210705_1759.py b/apps/assets/migrations/0075_auto_20210705_1759.py new file mode 100644 index 000000000..6e5fdf480 --- /dev/null +++ b/apps/assets/migrations/0075_auto_20210705_1759.py @@ -0,0 +1,53 @@ +# Generated by Django 3.1 on 2021-07-05 09:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0074_remove_systemuser_assets'), + ] + + operations = [ + migrations.AddField( + model_name='asset', + name='connectivity', + field=models.CharField(choices=[('unknown', 'Unknown'), ('ok', 'Ok'), ('failed', 'Failed')], default='unknown', max_length=16, verbose_name='Connectivity'), + ), + migrations.AddField( + model_name='asset', + name='date_verified', + field=models.DateTimeField(null=True), + ), + migrations.AddField( + model_name='authbook', + name='connectivity', + field=models.CharField(choices=[('unknown', 'Unknown'), ('ok', 'Ok'), ('failed', 'Failed')], default='unknown', max_length=16, verbose_name='Connectivity'), + ), + migrations.AddField( + model_name='authbook', + name='date_verified', + field=models.DateTimeField(null=True), + ), + migrations.AddField( + model_name='historicalauthbook', + name='connectivity', + field=models.CharField(choices=[('unknown', 'Unknown'), ('ok', 'Ok'), ('failed', 'Failed')], default='unknown', max_length=16, verbose_name='Connectivity'), + ), + migrations.AddField( + model_name='historicalauthbook', + name='date_verified', + field=models.DateTimeField(null=True), + ), + migrations.AlterField( + model_name='asset', + name='protocol', + field=models.CharField(choices=[('ssh', 'SSH'), ('rdp', 'RDP'), ('telnet', 'Telnet'), ('vnc', 'VNC')], default='ssh', max_length=128, verbose_name='Protocol'), + ), + migrations.AlterField( + model_name='gateway', + name='protocol', + field=models.CharField(choices=[('ssh', 'SSH')], default='ssh', max_length=16, verbose_name='Protocol'), + ), + ] diff --git a/apps/assets/models/__init__.py b/apps/assets/models/__init__.py index 1bed74a16..0f6aec901 100644 --- a/apps/assets/models/__init__.py +++ b/apps/assets/models/__init__.py @@ -2,7 +2,6 @@ from .base import * from .asset import * from .label import Label from .user import * -from .asset_user import * from .cluster import * from .group import * from .domain import * diff --git a/apps/assets/models/asset.py b/apps/assets/models/asset.py index c009d00a1..1e5d82099 100644 --- a/apps/assets/models/asset.py +++ b/apps/assets/models/asset.py @@ -4,18 +4,20 @@ import uuid import logging -import random from functools import reduce from collections import OrderedDict +from django.utils import timezone from django.db import models +from common.db.models import TextChoices from django.utils.translation import ugettext_lazy as _ +from rest_framework.exceptions import ValidationError from common.fields.model import JsonDictTextField from common.utils import lazyproperty from orgs.mixins.models import OrgModelMixin, OrgManager -from .base import ConnectivityMixin -from .utils import Connectivity + +from .base import AbsConnectivity __all__ = ['Asset', 'ProtocolsMixin', 'Platform', 'AssetQuerySet'] logger = logging.getLogger(__name__) @@ -57,16 +59,12 @@ class AssetQuerySet(models.QuerySet): class ProtocolsMixin: protocols = '' - PROTOCOL_SSH = 'ssh' - PROTOCOL_RDP = 'rdp' - PROTOCOL_TELNET = 'telnet' - PROTOCOL_VNC = 'vnc' - PROTOCOL_CHOICES = ( - (PROTOCOL_SSH, 'ssh'), - (PROTOCOL_RDP, 'rdp'), - (PROTOCOL_TELNET, 'telnet'), - (PROTOCOL_VNC, 'vnc'), - ) + + class Protocol(TextChoices): + ssh = 'ssh', 'SSH' + rdp = 'rdp', 'RDP' + telnet = 'telnet', 'Telnet' + vnc = 'vnc', 'VNC' @property def protocols_as_list(self): @@ -167,7 +165,7 @@ class Platform(models.Model): # ordering = ('name',) -class Asset(ProtocolsMixin, NodesRelationMixin, OrgModelMixin): +class Asset(AbsConnectivity, ProtocolsMixin, NodesRelationMixin, OrgModelMixin): # Important PLATFORM_CHOICES = ( ('Linux', 'Linux'), @@ -182,8 +180,8 @@ class Asset(ProtocolsMixin, NodesRelationMixin, OrgModelMixin): id = models.UUIDField(default=uuid.uuid4, primary_key=True) ip = models.CharField(max_length=128, verbose_name=_('IP'), db_index=True) hostname = models.CharField(max_length=128, verbose_name=_('Hostname')) - protocol = models.CharField(max_length=128, default=ProtocolsMixin.PROTOCOL_SSH, - choices=ProtocolsMixin.PROTOCOL_CHOICES, + protocol = models.CharField(max_length=128, default=ProtocolsMixin.Protocol.ssh, + choices=ProtocolsMixin.Protocol.choices, verbose_name=_('Protocol')) port = models.IntegerField(default=22, verbose_name=_('Port')) protocols = models.CharField(max_length=128, default='ssh/22', blank=True, verbose_name=_("Protocols")) @@ -193,7 +191,7 @@ class Asset(ProtocolsMixin, NodesRelationMixin, OrgModelMixin): is_active = models.BooleanField(default=True, verbose_name=_('Is active')) # Auth - admin_user = models.ForeignKey('assets.AdminUser', on_delete=models.PROTECT, null=True, verbose_name=_("Admin user"), related_name='assets') + _admin_user = models.ForeignKey('assets.AdminUser', on_delete=models.PROTECT, null=True, verbose_name=_("Admin user"), related_name='assets') # Some information public_ip = models.CharField(max_length=128, blank=True, null=True, verbose_name=_('Public IP')) @@ -223,11 +221,26 @@ class Asset(ProtocolsMixin, NodesRelationMixin, OrgModelMixin): comment = models.TextField(default='', blank=True, verbose_name=_('Comment')) objects = AssetManager.from_queryset(AssetQuerySet)() - _connectivity = None def __str__(self): return '{0.hostname}({0.ip})'.format(self) + @property + def admin_user(self): + return self.system_users.filter(type='admin').first() + + @admin_user.setter + def admin_user(self, system_user): + if not system_user: + return + if system_user.type != 'admin': + raise ValidationError('System user should be type admin') + system_user.assets.add(self) + + def remove_admin_user(self): + from ..models import AuthBook + AuthBook.objects.filter(asset=self, systemuser__type='admin').delete() + @property def is_valid(self): warning = '' @@ -276,23 +289,6 @@ class Asset(ProtocolsMixin, NodesRelationMixin, OrgModelMixin): else: return '' - @property - def connectivity(self): - if self._connectivity: - return self._connectivity - if not self.admin_user_username: - return Connectivity.unknown() - connectivity = ConnectivityMixin.get_asset_username_connectivity( - self, self.admin_user_username - ) - return connectivity - - @connectivity.setter - def connectivity(self, value): - if not self.admin_user: - return - self.admin_user.set_asset_connectivity(self, value) - def get_auth_info(self): if not self.admin_user: return {} diff --git a/apps/assets/models/asset_user.py b/apps/assets/models/asset_user.py deleted file mode 100644 index ac9112427..000000000 --- a/apps/assets/models/asset_user.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: utf-8 -*- -# -from .authbook import AuthBook - - -class AssetUser(AuthBook): - hostname = "" - ip = "" - backend = "" - backend_display = "" - union_id = "" - asset_username = "" - - class Meta: - proxy = True diff --git a/apps/assets/models/authbook.py b/apps/assets/models/authbook.py index 3a17df7b7..cf72d37b0 100644 --- a/apps/assets/models/authbook.py +++ b/apps/assets/models/authbook.py @@ -1,92 +1,94 @@ # -*- coding: utf-8 -*- # -from django.db import models, transaction -from django.db.models import Max +from django.db import models from django.utils.translation import ugettext_lazy as _ -from rest_framework.exceptions import PermissionDenied -from orgs.mixins.models import OrgManager -from .base import BaseUser +from simple_history.models import HistoricalRecords + + +from .base import BaseUser, AbsConnectivity __all__ = ['AuthBook'] -class AuthBookQuerySet(models.QuerySet): - def delete(self): - if self.count() > 1: - raise PermissionDenied(_("Bulk delete deny")) - return super().delete() - - -class AuthBookManager(OrgManager): - pass - - -class AuthBook(BaseUser): +class AuthBook(BaseUser, AbsConnectivity): asset = models.ForeignKey('assets.Asset', on_delete=models.CASCADE, verbose_name=_('Asset')) - is_latest = models.BooleanField(default=False, verbose_name=_('Latest version')) + systemuser = models.ForeignKey('assets.SystemUser', on_delete=models.CASCADE, null=True, verbose_name=_("System user")) version = models.IntegerField(default=1, verbose_name=_('Version')) + history = HistoricalRecords() - objects = AuthBookManager.from_queryset(AuthBookQuerySet)() - backend = "db" - # 用于system user和admin_user的动态设置 - _connectivity = None - CONN_CACHE_KEY = "ASSET_USER_CONN_{}" + auth_attrs = ['username', 'password', 'private_key', 'public_key'] class Meta: verbose_name = _('AuthBook') + unique_together = [('username', 'asset', 'systemuser')] - def get_related_assets(self): - return [self.asset] + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.auth_snapshot = {} + self.load_auth() - def generate_id_with_asset(self, asset): - return self.id + def get_or_systemuser_attr(self, attr): + val = getattr(self, attr, None) + if val: + return val + if self.systemuser: + return getattr(self.systemuser, attr, '') + return '' - @classmethod - def get_max_version(cls, username, asset): - version_max = cls.objects.filter(username=username, asset=asset) \ - .aggregate(Max('version')) - version_max = version_max['version__max'] or 0 - return version_max + def load_auth(self): + for attr in self.auth_attrs: + value = self.get_or_systemuser_attr(attr) + self.auth_snapshot[attr] = [getattr(self, attr), value] + setattr(self, attr, value) - @classmethod - def create(cls, **kwargs): - """ - 使用并发锁机制创建AuthBook对象, (主要针对并发创建 username, asset 相同的对象时) - 并更新其他对象的 is_latest=False (其他对象: 与当前对象的 username, asset 相同) - 同时设置自己的 is_latest=True, version=max_version + 1 - """ - username = kwargs['username'] - asset = kwargs.get('asset') or kwargs.get('asset_id') - with transaction.atomic(): - # 使用select_for_update限制并发创建相同的username、asset条目 - instances = cls.objects.select_for_update().filter(username=username, asset=asset) - instances.filter(is_latest=True).update(is_latest=False) - max_version = cls.get_max_version(username, asset) - kwargs.update({ - 'version': max_version + 1, - 'is_latest': True - }) - obj = cls.objects.create(**kwargs) - return obj + def unload_auth(self): + if not self.systemuser: + return + + for attr, values in self.auth_snapshot.items(): + origin_value, loaded_value = values + current_value = getattr(self, attr, '') + if current_value == loaded_value: + setattr(self, attr, origin_value) + + def save(self, *args, **kwargs): + self.unload_auth() + instance = super().save(*args, **kwargs) + self.load_auth() + return instance @property - def connectivity(self): - return self.get_asset_connectivity(self.asset) + def username_display(self): + return self.get_or_systemuser_attr('username') or '*' @property - def keyword(self): - return '{}_#_{}'.format(self.username, str(self.asset.id)) + def smart_name(self): + username = self.username_display - @property - def hostname(self): - return self.asset.hostname + if self.asset: + asset = str(self.asset) + else: + asset = '*' + return '{}@{}'.format(username, asset) - @property - def ip(self): - return self.asset.ip + def sync_to_system_user_account(self): + if self.systemuser: + return + matched = AuthBook.objects.filter( + asset=self.asset, systemuser__username=self.username + ) + if not matched: + return + + for i in matched: + i.password = self.password + i.private_key = self.private_key + i.public_key = self.public_key + i.comment = 'Update triggered by account {}'.format(self.id) + i.save(update_fields=['password', 'private_key', 'public_key']) def __str__(self): - return '{}@{}'.format(self.username, self.asset) + return self.smart_name diff --git a/apps/assets/models/base.py b/apps/assets/models/base.py index 6623cc6a7..cb176202a 100644 --- a/apps/assets/models/base.py +++ b/apps/assets/models/base.py @@ -8,8 +8,10 @@ from hashlib import md5 import sshpubkeys from django.core.cache import cache from django.db import models +from django.utils import timezone from django.utils.translation import ugettext_lazy as _ from django.conf import settings +from django.db.models import QuerySet from common.utils import random_string, signer from common.utils import ( @@ -19,85 +21,39 @@ from common.utils.encode import ssh_pubkey_gen from common.validators import alphanumeric from common import fields from orgs.mixins.models import OrgModelMixin -from .utils import Connectivity logger = get_logger(__file__) -class ConnectivityMixin: - CONNECTIVITY_ASSET_CACHE_KEY = "ASSET_USER_{}_{}_ASSET_CONNECTIVITY" - CONNECTIVITY_AMOUNT_CACHE_KEY = "ASSET_USER_{}_{}_CONNECTIVITY_AMOUNT" - ASSET_USER_CACHE_TIME = 3600 * 24 - id = '' - username = '' +class Connectivity(models.TextChoices): + unknown = 'unknown', _('Unknown') + ok = 'ok', _('Ok') + failed = 'failed', _('Failed') - @property - def part_id(self): - i = '-'.join(str(self.id).split('-')[:3]) - return i - def set_connectivity(self, summary): - unreachable = summary.get('dark', {}).keys() - reachable = summary.get('contacted', {}).keys() +class AbsConnectivity(models.Model): + connectivity = models.CharField( + choices=Connectivity.choices, default=Connectivity.unknown, + max_length=16, verbose_name=_('Connectivity') + ) + date_verified = models.DateTimeField(null=True) - assets = self.get_related_assets() - if not isinstance(assets, list): - assets = assets.only('id', 'hostname', 'admin_user__id') - for asset in assets: - if asset.hostname in unreachable: - self.set_asset_connectivity(asset, Connectivity.unreachable()) - elif asset.hostname in reachable: - self.set_asset_connectivity(asset, Connectivity.reachable()) - else: - self.set_asset_connectivity(asset, Connectivity.unknown()) - cache_key = self.CONNECTIVITY_AMOUNT_CACHE_KEY.format(self.username, self.part_id) - cache.delete(cache_key) - - @property - def connectivity(self): - assets = self.get_related_assets() - if not isinstance(assets, list): - assets = assets.only('id', 'hostname', 'admin_user__id') - data = { - 'unreachable': [], - 'reachable': [], - 'unknown': [], - } - for asset in assets: - connectivity = self.get_asset_connectivity(asset) - if connectivity.is_reachable(): - data["reachable"].append(asset.hostname) - elif connectivity.is_unreachable(): - data["unreachable"].append(asset.hostname) - else: - data["unknown"].append(asset.hostname) - return data - - @property - def connectivity_amount(self): - cache_key = self.CONNECTIVITY_AMOUNT_CACHE_KEY.format(self.username, self.part_id) - amount = cache.get(cache_key) - if not amount: - amount = {k: len(v) for k, v in self.connectivity.items()} - cache.set(cache_key, amount, self.ASSET_USER_CACHE_TIME) - return amount + def set_connectivity(self, val): + self.connectivity = val + self.date_verified = timezone.now() + self.save(update_fields=['connectivity', 'date_verified']) @classmethod - def get_asset_username_connectivity(cls, asset, username): - key = cls.CONNECTIVITY_ASSET_CACHE_KEY.format(username, asset.id) - return Connectivity.get(key) + def bulk_set_connectivity(cls, queryset_or_id, connectivity): + if not isinstance(queryset_or_id, QuerySet): + queryset = cls.objects.filter(id__in=queryset_or_id) + else: + queryset = queryset_or_id + queryset.update(connectivity=connectivity, date_verified=timezone.now()) - def get_asset_connectivity(self, asset): - key = self.get_asset_connectivity_key(asset) - return Connectivity.get(key) - - def get_asset_connectivity_key(self, asset): - return self.CONNECTIVITY_ASSET_CACHE_KEY.format(self.username, asset.id) - - def set_asset_connectivity(self, asset, c): - key = self.get_asset_connectivity_key(asset) - Connectivity.set(key, c) + class Meta: + abstract = True class AuthMixin: @@ -105,7 +61,6 @@ class AuthMixin: password = '' public_key = '' username = '' - _prefer = 'system_user' @property def ssh_key_fingerprint(self): @@ -173,38 +128,6 @@ class AuthMixin: if update_fields: self.save(update_fields=update_fields) - def has_special_auth(self, asset=None, username=None): - from .authbook import AuthBook - if username is None: - username = self.username - queryset = AuthBook.objects.filter(username=username) - if asset: - queryset = queryset.filter(asset=asset) - return queryset.exists() - - def get_asset_user(self, asset, username=None): - from ..backends import AssetUserManager - if username is None: - username = self.username - try: - manager = AssetUserManager() - other = manager.get_latest( - username=username, asset=asset, - prefer_id=self.id, prefer=self._prefer, - ) - return other - except Exception as e: - logger.error(e, exc_info=True) - return None - - def load_asset_special_auth(self, asset=None, username=None): - if not asset: - return self - - instance = self.get_asset_user(asset, username=username) - if instance: - self._merge_auth(instance) - def _merge_auth(self, other): if other.password: self.password = other.password @@ -244,7 +167,7 @@ class AuthMixin: ) -class BaseUser(OrgModelMixin, AuthMixin, ConnectivityMixin): +class BaseUser(OrgModelMixin, AuthMixin): id = models.UUIDField(default=uuid.uuid4, primary_key=True) name = models.CharField(max_length=128, verbose_name=_('Name')) username = models.CharField(max_length=128, blank=True, verbose_name=_('Username'), validators=[alphanumeric], db_index=True) @@ -259,8 +182,6 @@ class BaseUser(OrgModelMixin, AuthMixin, ConnectivityMixin): ASSETS_AMOUNT_CACHE_KEY = "ASSET_USER_{}_ASSETS_AMOUNT" ASSET_USER_CACHE_TIME = 600 - _prefer = "system_user" - def get_related_assets(self): assets = self.assets.filter(org_id=self.org_id) return assets diff --git a/apps/assets/models/domain.py b/apps/assets/models/domain.py index 1a2dbbc4e..4d500e503 100644 --- a/apps/assets/models/domain.py +++ b/apps/assets/models/domain.py @@ -7,6 +7,7 @@ import re import paramiko from django.db import models +from django.db.models import TextChoices from django.utils.translation import ugettext_lazy as _ from common.utils.strings import no_special_chars @@ -43,15 +44,12 @@ class Domain(OrgModelMixin): class Gateway(BaseUser): - PROTOCOL_SSH = 'ssh' - PROTOCOL_RDP = 'rdp' - PROTOCOL_CHOICES = ( - (PROTOCOL_SSH, 'ssh'), - (PROTOCOL_RDP, 'rdp'), - ) + class Protocol(TextChoices): + ssh = 'ssh', 'SSH' + ip = models.CharField(max_length=128, verbose_name=_('IP'), db_index=True) port = models.IntegerField(default=22, verbose_name=_('Port')) - protocol = models.CharField(choices=PROTOCOL_CHOICES, max_length=16, default=PROTOCOL_SSH, verbose_name=_("Protocol")) + protocol = models.CharField(choices=Protocol.choices, max_length=16, default=Protocol.ssh, verbose_name=_("Protocol")) domain = models.ForeignKey(Domain, on_delete=models.CASCADE, verbose_name=_("Domain")) comment = models.CharField(max_length=128, blank=True, null=True, verbose_name=_("Comment")) is_active = models.BooleanField(default=True, verbose_name=_("Is active")) diff --git a/apps/assets/models/user.py b/apps/assets/models/user.py index 384272af7..fcdb9e244 100644 --- a/apps/assets/models/user.py +++ b/apps/assets/models/user.py @@ -10,15 +10,278 @@ from django.core.validators import MinValueValidator, MaxValueValidator from django.core.cache import cache from common.utils import signer, get_object_or_none -from common.exceptions import JMSException +from common.db.models import TextChoices from .base import BaseUser from .asset import Asset +from .authbook import AuthBook __all__ = ['AdminUser', 'SystemUser'] logger = logging.getLogger(__name__) +class ProtocolMixin: + protocol: str + + class Protocol(TextChoices): + ssh = 'ssh', 'SSH' + rdp = 'rdp', 'RDP' + telnet = 'telnet', 'Telnet' + vnc = 'vnc', 'VNC' + mysql = 'mysql', 'MySQL' + oracle = 'oracle', 'Oracle' + mariadb = 'mariadb', 'MariaDB' + postgresql = 'postgresql', 'PostgreSQL' + k8s = 'k8s', 'K8S' + + SUPPORT_PUSH_PROTOCOLS = [Protocol.ssh, Protocol.rdp] + + ASSET_CATEGORY_PROTOCOLS = [ + Protocol.ssh, Protocol.rdp, Protocol.telnet, Protocol.vnc + ] + APPLICATION_CATEGORY_REMOTE_APP_PROTOCOLS = [ + Protocol.rdp + ] + APPLICATION_CATEGORY_DB_PROTOCOLS = [ + Protocol.mysql, Protocol.oracle, Protocol.mariadb, Protocol.postgresql + ] + APPLICATION_CATEGORY_CLOUD_PROTOCOLS = [ + Protocol.k8s + ] + APPLICATION_CATEGORY_PROTOCOLS = [ + *APPLICATION_CATEGORY_REMOTE_APP_PROTOCOLS, + *APPLICATION_CATEGORY_DB_PROTOCOLS, + *APPLICATION_CATEGORY_CLOUD_PROTOCOLS + ] + + @property + def is_protocol_support_push(self): + return self.protocol in self.SUPPORT_PUSH_PROTOCOLS + + @classmethod + def get_protocol_by_application_type(cls, app_type): + from applications.const import ApplicationTypeChoices + if app_type in cls.APPLICATION_CATEGORY_PROTOCOLS: + protocol = app_type + elif app_type in ApplicationTypeChoices.remote_app_types(): + protocol = cls.Protocol.rdp + else: + protocol = None + return protocol + + @property + def can_perm_to_asset(self): + return self.protocol in self.ASSET_CATEGORY_PROTOCOLS + + +class AuthMixin: + username_same_with_user: bool + protocol: str + ASSET_CATEGORY_PROTOCOLS: list + login_mode: str + LOGIN_MANUAL: str + id: str + username: str + password: str + private_key: str + public_key: str + + def set_temp_auth(self, asset_or_app_id, user_id, auth, ttl=300): + if not auth: + raise ValueError('Auth not set') + key = 'TEMP_PASSWORD_{}_{}_{}'.format(self.id, asset_or_app_id, user_id) + logger.debug(f'Set system user temp auth: {key}') + cache.set(key, auth, ttl) + + def get_temp_auth(self, asset_or_app_id, user_id): + key = 'TEMP_PASSWORD_{}_{}_{}'.format(self.id, asset_or_app_id, user_id) + logger.debug(f'Get system user temp auth: {key}') + password = cache.get(key) + return password + + def load_tmp_auth_if_has(self, asset_or_app_id, user): + if not asset_or_app_id or not user: + return + + if self.login_mode != self.LOGIN_MANUAL: + return + + auth = self.get_temp_auth(asset_or_app_id, user) + if not auth: + return + username = auth.get('username') + password = auth.get('password') + + if username: + self.username = username + if password: + self.password = password + + def load_app_more_auth(self, app_id=None, user_id=None): + from users.models import User + + if self.login_mode == self.LOGIN_MANUAL: + self.password = '' + self.private_key = '' + if not user_id: + return + user = get_object_or_none(User, pk=user_id) + if not user: + return + self.load_tmp_auth_if_has(app_id, user) + + def load_asset_special_auth(self, asset, username=''): + """ + """ + authbooks = list(AuthBook.objects.filter(asset=asset, systemuser=self)) + if len(authbooks) == 0: + return None + elif len(authbooks) == 1: + authbook = authbooks[0] + else: + authbooks.sort(key=lambda x: 1 if x.username == username else 0, reverse=True) + authbook = authbooks[0] + self.password = authbook.password + self.private_key = authbook.private_key + self.public_key = authbook.public_key + + def load_asset_more_auth(self, asset_id=None, username=None, user_id=None): + from users.models import User + + if self.login_mode == self.LOGIN_MANUAL: + self.password = '' + self.private_key = '' + + asset = None + if asset_id: + asset = get_object_or_none(Asset, pk=asset_id) + # 没有资产就没有必要继续了 + if not asset: + logger.debug('Asset not found, pass') + return + + user = None + if user_id: + user = get_object_or_none(User, pk=user_id) + + _username = self.username + if self.username_same_with_user: + if user and not username: + _username = user.username + else: + _username = username + self.username = _username + + # 加载某个资产的特殊配置认证信息 + self.load_asset_special_auth(asset, _username) + self.load_tmp_auth_if_has(asset_id, user) + + +class SystemUser(ProtocolMixin, AuthMixin, BaseUser): + LOGIN_AUTO = 'auto' + LOGIN_MANUAL = 'manual' + LOGIN_MODE_CHOICES = ( + (LOGIN_AUTO, _('Automatic managed')), + (LOGIN_MANUAL, _('Manually input')) + ) + + class Type(TextChoices): + common = 'common', _('Common user') + admin = 'admin', _('Admin user') + + username_same_with_user = models.BooleanField(default=False, verbose_name=_("Username same with user")) + nodes = models.ManyToManyField('assets.Node', blank=True, verbose_name=_("Nodes")) + assets = models.ManyToManyField( + 'assets.Asset', blank=True, verbose_name=_("Assets"), + through='assets.AuthBook', through_fields=['systemuser', 'asset'], + related_name='system_users' + ) + users = models.ManyToManyField('users.User', blank=True, verbose_name=_("Users")) + groups = models.ManyToManyField('users.UserGroup', blank=True, verbose_name=_("User groups")) + type = models.CharField(max_length=16, choices=Type.choices, default=Type.common, verbose_name=_('Type')) + priority = models.IntegerField(default=81, verbose_name=_("Priority"), help_text=_("1-100, the lower the value will be match first"), validators=[MinValueValidator(1), MaxValueValidator(100)]) + protocol = models.CharField(max_length=16, choices=ProtocolMixin.Protocol.choices, default='ssh', verbose_name=_('Protocol')) + auto_push = models.BooleanField(default=True, verbose_name=_('Auto push')) + sudo = models.TextField(default='/bin/whoami', verbose_name=_('Sudo')) + shell = models.CharField(max_length=64, default='/bin/bash', verbose_name=_('Shell')) + login_mode = models.CharField(choices=LOGIN_MODE_CHOICES, default=LOGIN_AUTO, max_length=10, verbose_name=_('Login mode')) + cmd_filters = models.ManyToManyField('CommandFilter', related_name='system_users', verbose_name=_("Command filter"), blank=True) + sftp_root = models.CharField(default='tmp', max_length=128, verbose_name=_("SFTP Root")) + token = models.TextField(default='', verbose_name=_('Token')) + home = models.CharField(max_length=4096, default='', verbose_name=_('Home'), blank=True) + system_groups = models.CharField(default='', max_length=4096, verbose_name=_('System groups'), blank=True) + ad_domain = models.CharField(default='', max_length=256) + + def __str__(self): + username = self.username + if self.username_same_with_user: + username = 'dynamic' + return '{0.name}({1})'.format(self, username) + + @property + def nodes_amount(self): + return self.nodes.all().count() + + @property + def login_mode_display(self): + return self.get_login_mode_display() + + def is_need_push(self): + if self.auto_push and self.is_protocol_support_push: + return True + else: + return False + + @property + def is_admin_user(self): + return self.type == self.Type.admin + + @property + def is_need_cmd_filter(self): + return self.protocol not in [self.Protocol.rdp, self.Protocol.vnc] + + @property + def is_need_test_asset_connective(self): + return self.protocol in self.ASSET_CATEGORY_PROTOCOLS + + @property + def cmd_filter_rules(self): + from .cmd_filter import CommandFilterRule + rules = CommandFilterRule.objects.filter( + filter__in=self.cmd_filters.all() + ).distinct() + return rules + + def is_command_can_run(self, command): + for rule in self.cmd_filter_rules: + action, matched_cmd = rule.match(command) + if action == rule.ActionChoices.allow: + return True, None + elif action == rule.ActionChoices.deny: + return False, matched_cmd + return True, None + + def get_all_assets(self): + from assets.models import Node + nodes_keys = self.nodes.all().values_list('key', flat=True) + asset_ids = set(self.assets.all().values_list('id', flat=True)) + nodes_asset_ids = Node.get_nodes_all_asset_ids_by_keys(nodes_keys) + asset_ids.update(nodes_asset_ids) + assets = Asset.objects.filter(id__in=asset_ids) + return assets + + def save(self, *args, **kwargs): + if self.username_same_with_user: + self.username = '*' + return super().save(*args, **kwargs) + + class Meta: + ordering = ['name'] + unique_together = [('name', 'org_id')] + verbose_name = _("System user") + + +# Todo: 准备废弃 class AdminUser(BaseUser): """ A privileged user that ansible can use it to push system user and so on @@ -65,243 +328,3 @@ class AdminUser(BaseUser): ordering = ['name'] unique_together = [('name', 'org_id')] verbose_name = _("Admin user") - - -class SystemUser(BaseUser): - PROTOCOL_SSH = 'ssh' - PROTOCOL_RDP = 'rdp' - PROTOCOL_TELNET = 'telnet' - PROTOCOL_VNC = 'vnc' - PROTOCOL_MYSQL = 'mysql' - PROTOCOL_ORACLE = 'oracle' - PROTOCOL_MARIADB = 'mariadb' - PROTOCOL_POSTGRESQL = 'postgresql' - PROTOCOL_K8S = 'k8s' - PROTOCOL_CHOICES = ( - (PROTOCOL_SSH, 'ssh'), - (PROTOCOL_RDP, 'rdp'), - (PROTOCOL_TELNET, 'telnet'), - (PROTOCOL_VNC, 'vnc'), - (PROTOCOL_MYSQL, 'mysql'), - (PROTOCOL_ORACLE, 'oracle'), - (PROTOCOL_MARIADB, 'mariadb'), - (PROTOCOL_POSTGRESQL, 'postgresql'), - (PROTOCOL_K8S, 'k8s'), - ) - - SUPPORT_PUSH_PROTOCOLS = [PROTOCOL_SSH, PROTOCOL_RDP] - - ASSET_CATEGORY_PROTOCOLS = [ - PROTOCOL_SSH, PROTOCOL_RDP, PROTOCOL_TELNET, PROTOCOL_VNC - ] - APPLICATION_CATEGORY_REMOTE_APP_PROTOCOLS = [ - PROTOCOL_RDP - ] - APPLICATION_CATEGORY_DB_PROTOCOLS = [ - PROTOCOL_MYSQL, PROTOCOL_ORACLE, PROTOCOL_MARIADB, PROTOCOL_POSTGRESQL - ] - APPLICATION_CATEGORY_CLOUD_PROTOCOLS = [ - PROTOCOL_K8S - ] - APPLICATION_CATEGORY_PROTOCOLS = [ - *APPLICATION_CATEGORY_REMOTE_APP_PROTOCOLS, - *APPLICATION_CATEGORY_DB_PROTOCOLS, - *APPLICATION_CATEGORY_CLOUD_PROTOCOLS - ] - - LOGIN_AUTO = 'auto' - LOGIN_MANUAL = 'manual' - LOGIN_MODE_CHOICES = ( - (LOGIN_AUTO, _('Automatic login')), - (LOGIN_MANUAL, _('Manually login')) - ) - username_same_with_user = models.BooleanField(default=False, verbose_name=_("Username same with user")) - nodes = models.ManyToManyField('assets.Node', blank=True, verbose_name=_("Nodes")) - assets = models.ManyToManyField('assets.Asset', blank=True, verbose_name=_("Assets")) - users = models.ManyToManyField('users.User', blank=True, verbose_name=_("Users")) - groups = models.ManyToManyField('users.UserGroup', blank=True, verbose_name=_("User groups")) - priority = models.IntegerField(default=81, verbose_name=_("Priority"), help_text=_("1-100, the lower the value will be match first"), validators=[MinValueValidator(1), MaxValueValidator(100)]) - protocol = models.CharField(max_length=16, choices=PROTOCOL_CHOICES, default='ssh', verbose_name=_('Protocol')) - auto_push = models.BooleanField(default=True, verbose_name=_('Auto push')) - sudo = models.TextField(default='/bin/whoami', verbose_name=_('Sudo')) - shell = models.CharField(max_length=64, default='/bin/bash', verbose_name=_('Shell')) - login_mode = models.CharField(choices=LOGIN_MODE_CHOICES, default=LOGIN_AUTO, max_length=10, verbose_name=_('Login mode')) - cmd_filters = models.ManyToManyField('CommandFilter', related_name='system_users', verbose_name=_("Command filter"), blank=True) - sftp_root = models.CharField(default='tmp', max_length=128, verbose_name=_("SFTP Root")) - token = models.TextField(default='', verbose_name=_('Token')) - home = models.CharField(max_length=4096, default='', verbose_name=_('Home'), blank=True) - system_groups = models.CharField(default='', max_length=4096, verbose_name=_('System groups'), blank=True) - ad_domain = models.CharField(default='', max_length=256) - _prefer = 'system_user' - - def __str__(self): - username = self.username - if self.username_same_with_user: - username = 'dynamic' - return '{0.name}({1})'.format(self, username) - - def get_username(self): - if self.username_same_with_user: - return list(self.users.values_list('username', flat=True)) - else: - return self.username - - @property - def nodes_amount(self): - return self.nodes.all().count() - - @property - def login_mode_display(self): - return self.get_login_mode_display() - - def is_need_push(self): - if self.auto_push and self.is_protocol_support_push: - return True - else: - return False - - @property - def is_protocol_support_push(self): - return self.protocol in self.SUPPORT_PUSH_PROTOCOLS - - @property - def is_need_cmd_filter(self): - return self.protocol not in [self.PROTOCOL_RDP, self.PROTOCOL_VNC] - - @property - def is_need_test_asset_connective(self): - return self.protocol in self.ASSET_CATEGORY_PROTOCOLS - - def has_special_auth(self, asset=None, username=None): - if username is None and self.username_same_with_user: - raise TypeError('System user is dynamic, username should be pass') - return super().has_special_auth(asset=asset, username=username) - - @property - def can_perm_to_asset(self): - return self.protocol in self.ASSET_CATEGORY_PROTOCOLS - - def _merge_auth(self, other): - super()._merge_auth(other) - if self.username_same_with_user: - self.username = other.username - - def set_temp_auth(self, asset_or_app_id, user_id, auth, ttl=300): - if not auth: - raise ValueError('Auth not set') - key = 'TEMP_PASSWORD_{}_{}_{}'.format(self.id, asset_or_app_id, user_id) - logger.debug(f'Set system user temp auth: {key}') - cache.set(key, auth, ttl) - - def get_temp_auth(self, asset_or_app_id, user_id): - key = 'TEMP_PASSWORD_{}_{}_{}'.format(self.id, asset_or_app_id, user_id) - logger.debug(f'Get system user temp auth: {key}') - password = cache.get(key) - return password - - def load_tmp_auth_if_has(self, asset_or_app_id, user): - if not asset_or_app_id or not user: - return - if self.login_mode != self.LOGIN_MANUAL: - pass - - auth = self.get_temp_auth(asset_or_app_id, user) - if not auth: - return - username = auth.get('username') - password = auth.get('password') - - if username: - self.username = username - if password: - self.password = password - - def load_app_more_auth(self, app_id=None, user_id=None): - from users.models import User - - if self.login_mode == self.LOGIN_MANUAL: - self.password = '' - self.private_key = '' - if not user_id: - return - user = get_object_or_none(User, pk=user_id) - if not user: - return - self.load_tmp_auth_if_has(app_id, user) - - def load_asset_more_auth(self, asset_id=None, username=None, user_id=None): - from users.models import User - - if self.login_mode == self.LOGIN_MANUAL: - self.password = '' - self.private_key = '' - - asset = None - if asset_id: - asset = get_object_or_none(Asset, pk=asset_id) - # 没有资产就没有必要继续了 - if not asset: - logger.debug('Asset not found, pass') - return - - user = None - if user_id: - user = get_object_or_none(User, pk=user_id) - - _username = self.username - if self.username_same_with_user: - if user and not username: - _username = user.username - else: - _username = username - - # 加载某个资产的特殊配置认证信息 - try: - self.load_asset_special_auth(asset, _username) - except Exception as e: - logger.error('Load special auth Error: ', e) - pass - - self.load_tmp_auth_if_has(asset_id, user) - - @property - def cmd_filter_rules(self): - from .cmd_filter import CommandFilterRule - rules = CommandFilterRule.objects.filter( - filter__in=self.cmd_filters.all() - ).distinct() - return rules - - def is_command_can_run(self, command): - for rule in self.cmd_filter_rules: - action, matched_cmd = rule.match(command) - if action == rule.ActionChoices.allow: - return True, None - elif action == rule.ActionChoices.deny: - return False, matched_cmd - return True, None - - def get_all_assets(self): - from assets.models import Node - nodes_keys = self.nodes.all().values_list('key', flat=True) - asset_ids = set(self.assets.all().values_list('id', flat=True)) - nodes_asset_ids = Node.get_nodes_all_asset_ids_by_keys(nodes_keys) - asset_ids.update(nodes_asset_ids) - assets = Asset.objects.filter(id__in=asset_ids) - return assets - - @classmethod - def get_protocol_by_application_type(cls, app_type): - from applications.const import ApplicationTypeChoices - if app_type in cls.APPLICATION_CATEGORY_PROTOCOLS: - protocol = app_type - elif app_type in ApplicationTypeChoices.remote_app_types(): - protocol = cls.PROTOCOL_RDP - else: - protocol = None - return protocol - - class Meta: - ordering = ['name'] - unique_together = [('name', 'org_id')] - verbose_name = _("System user") diff --git a/apps/assets/models/utils.py b/apps/assets/models/utils.py index 90c203e81..90b0ee178 100644 --- a/apps/assets/models/utils.py +++ b/apps/assets/models/utils.py @@ -11,7 +11,7 @@ from common.utils import validate_ssh_private_key __all__ = [ - 'init_model', 'generate_fake', 'private_key_validator', 'Connectivity', + 'init_model', 'generate_fake', 'private_key_validator', ] @@ -35,74 +35,3 @@ def private_key_validator(value): _('%(value)s is not an even number'), params={'value': value}, ) - - -class Connectivity: - UNREACHABLE, REACHABLE, UNKNOWN = range(0, 3) - CONNECTIVITY_CHOICES = ( - (UNREACHABLE, _("Unreachable")), - (REACHABLE, _('Reachable')), - (UNKNOWN, _("Unknown")), - ) - - status = UNKNOWN - datetime = timezone.now() - - def __init__(self, status, datetime): - self.status = status - self.datetime = datetime - - def display(self): - return dict(self.__class__.CONNECTIVITY_CHOICES).get(self.status) - - def is_reachable(self): - return self.status == self.REACHABLE - - def is_unreachable(self): - return self.status == self.UNREACHABLE - - def is_unknown(self): - return self.status == self.UNKNOWN - - @classmethod - def unreachable(cls): - return cls(cls.UNREACHABLE, timezone.now()) - - @classmethod - def reachable(cls): - return cls(cls.REACHABLE, timezone.now()) - - @classmethod - def unknown(cls): - return cls(cls.UNKNOWN, timezone.now()) - - @classmethod - def set(cls, key, value, ttl=None): - cache.set(key, value, ttl) - - @classmethod - def get(cls, key): - value = cache.get(key, cls.unknown()) - if not isinstance(value, cls): - value = cls.unknown() - return value - - @classmethod - def set_unreachable(cls, key, ttl=0): - cls.set(key, cls.unreachable(), ttl) - - @classmethod - def set_reachable(cls, key, ttl=0): - cls.set(key, cls.reachable(), ttl) - - def __eq__(self, other): - return self.status == other.status - - def __gt__(self, other): - return self.status > other.status - - def __lt__(self, other): - return not self.__gt__(other) - - def __str__(self): - return self.display() diff --git a/apps/assets/serializers/__init__.py b/apps/assets/serializers/__init__.py index 2c3e9fbd4..55437f609 100644 --- a/apps/assets/serializers/__init__.py +++ b/apps/assets/serializers/__init__.py @@ -8,6 +8,6 @@ from .system_user import * from .node import * from .domain import * from .cmd_filter import * -from .asset_user import * from .gathered_user import * from .favorite_asset import * +from .account import * diff --git a/apps/assets/serializers/account.py b/apps/assets/serializers/account.py new file mode 100644 index 000000000..5f26b7d32 --- /dev/null +++ b/apps/assets/serializers/account.py @@ -0,0 +1,42 @@ +from rest_framework import serializers +from django.utils.translation import ugettext_lazy as _ + +from assets.models import AuthBook +from orgs.mixins.serializers import BulkOrgResourceModelSerializer + +from .base import AuthSerializerMixin + + +class AccountSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): + ip = serializers.ReadOnlyField(label=_("IP")) + hostname = serializers.ReadOnlyField(label=_("Hostname")) + + class Meta: + model = AuthBook + fields_mini = ['id', 'username', 'ip', 'hostname', 'version'] + fields_write_only = ['password', 'private_key', "public_key"] + fields_other = ['date_created', 'date_updated', 'connectivity', 'date_verified', 'comment'] + fields_small = fields_mini + fields_write_only + fields_other + fields_fk = ['asset', 'systemuser'] + fields = fields_small + fields_fk + extra_kwargs = { + 'username': {'required': True}, + 'password': {'write_only': True}, + 'private_key': {'write_only': True}, + 'public_key': {'write_only': True}, + } + + @classmethod + def setup_eager_loading(cls, queryset): + """ Perform necessary eager loading of data. """ + queryset = queryset.prefetch_related('systemuser', 'asset') + return queryset + + +class AccountSecretSerializer(AccountSerializer): + class Meta(AccountSerializer.Meta): + extra_kwargs = { + 'password': {'write_only': False}, + 'private_key': {'write_only': False}, + 'public_key': {'write_only': False}, + } diff --git a/apps/assets/serializers/admin_user.py b/apps/assets/serializers/admin_user.py index 2e1913b47..bf16004f4 100644 --- a/apps/assets/serializers/admin_user.py +++ b/apps/assets/serializers/admin_user.py @@ -1,12 +1,11 @@ # -*- coding: utf-8 -*- # from django.utils.translation import ugettext_lazy as _ -from rest_framework import serializers -from ..models import Node, AdminUser +from ..models import SystemUser from orgs.mixins.serializers import BulkOrgResourceModelSerializer -from .base import AuthSerializer, AuthSerializerMixin +from .base import AuthSerializerMixin class AdminUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): @@ -15,8 +14,8 @@ class AdminUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): """ class Meta: - model = AdminUser - fields_mini = ['id', 'name', 'username'] + model = SystemUser + fields_mini = ['id', 'name', 'username'] fields_write_only = ['password', 'private_key', 'public_key'] fields_small = fields_mini + fields_write_only + [ 'date_created', 'date_updated', @@ -34,39 +33,8 @@ class AdminUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): 'assets_amount': {'label': _('Asset')}, } - -class AdminUserDetailSerializer(AdminUserSerializer): - class Meta(AdminUserSerializer.Meta): - fields = AdminUserSerializer.Meta.fields + ['ssh_key_fingerprint'] - - -class AdminUserAuthSerializer(AuthSerializer): - - class Meta: - model = AdminUser - fields = ['password', 'private_key'] - - -class ReplaceNodeAdminUserSerializer(serializers.ModelSerializer): - """ - 管理用户更新关联到的集群 - """ - nodes = serializers.PrimaryKeyRelatedField( - many=True, queryset=Node.objects - ) - - class Meta: - model = AdminUser - fields = ['id', 'nodes'] - - -class TaskIDSerializer(serializers.Serializer): - task = serializers.CharField(read_only=True) - - -class AssetUserTaskSerializer(serializers.Serializer): - ACTION_CHOICES = ( - ('test', 'test'), - ) - action = serializers.ChoiceField(choices=ACTION_CHOICES, write_only=True) - task = serializers.CharField(read_only=True) + def create(self, validated_data): + data = {k: v for k, v in validated_data.items()} + data['protocol'] = 'ssh' + data['type'] = SystemUser.Type.admin + return super().create(data) diff --git a/apps/assets/serializers/asset.py b/apps/assets/serializers/asset.py index 80e923b00..7fc2d3105 100644 --- a/apps/assets/serializers/asset.py +++ b/apps/assets/serializers/asset.py @@ -1,24 +1,21 @@ # -*- coding: utf-8 -*- # from rest_framework import serializers -from django.db.models import F from django.core.validators import RegexValidator from django.utils.translation import ugettext_lazy as _ from orgs.mixins.serializers import BulkOrgResourceModelSerializer -from ..models import Asset, Node, Platform -from .base import ConnectivitySerializer +from ..models import Asset, Node, Platform, SystemUser __all__ = [ - 'AssetSerializer', 'AssetSimpleSerializer', - 'AssetDisplaySerializer', + 'AssetSerializer', 'AssetSimpleSerializer', 'AssetVerboseSerializer', 'ProtocolsField', 'PlatformSerializer', - 'AssetDetailSerializer', 'AssetTaskSerializer', + 'AssetTaskSerializer', ] class ProtocolField(serializers.RegexField): - protocols = '|'.join(dict(Asset.PROTOCOL_CHOICES).keys()) + protocols = '|'.join(dict(Asset.Protocol.choices).keys()) default_error_messages = { 'invalid': _('Protocol format should {}/{}'.format(protocols, '1-65535')) } @@ -65,9 +62,11 @@ class AssetSerializer(BulkOrgResourceModelSerializer): platform = serializers.SlugRelatedField( slug_field='name', queryset=Platform.objects.all(), label=_("Platform") ) + admin_user = serializers.PrimaryKeyRelatedField( + queryset=SystemUser.objects, label=_('Admin user'), write_only=True + ) protocols = ProtocolsField(label=_('Protocols'), required=False, default=['ssh/22']) domain_display = serializers.ReadOnlyField(source='domain.name', label=_('Domain name')) - admin_user_display = serializers.ReadOnlyField(source='admin_user.name', label=_('Admin user name')) nodes_display = serializers.ListField(child=serializers.CharField(), label=_('Nodes name'), required=False) """ @@ -81,25 +80,18 @@ class AssetSerializer(BulkOrgResourceModelSerializer): 'number', 'vendor', 'model', 'sn', 'cpu_model', 'cpu_count', 'cpu_cores', 'cpu_vcpus', 'memory', 'disk_total', 'disk_info', 'os', 'os_version', 'os_arch', 'hostname_raw', 'comment', - 'created_by', 'date_created', 'hardware_info', + 'hardware_info', 'connectivity', 'date_verified' ] fields_fk = [ - 'admin_user', 'admin_user_display', 'domain', 'domain_display', 'platform' + 'domain', 'domain_display', 'platform', 'admin_user' ] - fk_only_fields = { - 'platform': ['name'] - } fields_m2m = [ 'nodes', 'nodes_display', 'labels', ] - annotates_fields = { - # 'admin_user_display': 'admin_user__name' - } - fields_as = list(annotates_fields.keys()) - fields = fields_small + fields_fk + fields_m2m + fields_as read_only_fields = [ 'created_by', 'date_created', - ] + fields_as + ] + fields = fields_small + fields_fk + fields_m2m + read_only_fields extra_kwargs = { 'protocol': {'write_only': True}, @@ -108,10 +100,19 @@ class AssetSerializer(BulkOrgResourceModelSerializer): 'org_name': {'label': _('Org name')} } + def get_fields(self): + fields = super().get_fields() + + admin_user_field = fields.get('admin_user') + # 因为 mixin 中对 fields 有处理,可能不需要返回 admin_user + if admin_user_field: + admin_user_field.queryset = SystemUser.objects.filter(type=SystemUser.Type.admin) + return fields + @classmethod def setup_eager_loading(cls, queryset): """ Perform necessary eager loading of data. """ - queryset = queryset.prefetch_related('admin_user', 'domain', 'platform') + queryset = queryset.prefetch_related('domain', 'platform') queryset = queryset.prefetch_related('nodes', 'labels') return queryset @@ -146,25 +147,26 @@ class AssetSerializer(BulkOrgResourceModelSerializer): def create(self, validated_data): self.compatible_with_old_protocol(validated_data) nodes_display = validated_data.pop('nodes_display', '') + admin_user = validated_data.pop('admin_user', '') instance = super().create(validated_data) self.perform_nodes_display_create(instance, nodes_display) + instance.admin_user = admin_user return instance def update(self, instance, validated_data): nodes_display = validated_data.pop('nodes_display', '') self.compatible_with_old_protocol(validated_data) + admin_user = validated_data.pop('admin_user', '') instance = super().update(instance, validated_data) self.perform_nodes_display_create(instance, nodes_display) + instance.admin_user = admin_user return instance -class AssetDisplaySerializer(AssetSerializer): - connectivity = ConnectivitySerializer(read_only=True, label=_("Connectivity")) - - class Meta(AssetSerializer.Meta): - fields = AssetSerializer.Meta.fields + [ - 'connectivity', - ] +class AssetVerboseSerializer(AssetSerializer): + admin_user = serializers.PrimaryKeyRelatedField( + queryset=SystemUser.objects, label=_('Admin user') + ) class PlatformSerializer(serializers.ModelSerializer): @@ -186,16 +188,11 @@ class PlatformSerializer(serializers.ModelSerializer): ] -class AssetDetailSerializer(AssetSerializer): - platform = PlatformSerializer(read_only=True) - - class AssetSimpleSerializer(serializers.ModelSerializer): - connectivity = ConnectivitySerializer(read_only=True, label=_("Connectivity")) class Meta: model = Asset - fields = ['id', 'hostname', 'ip', 'connectivity', 'port'] + fields = ['id', 'hostname', 'ip', 'port', 'connectivity', 'date_verified'] class AssetTaskSerializer(serializers.Serializer): diff --git a/apps/assets/serializers/asset_user.py b/apps/assets/serializers/asset_user.py deleted file mode 100644 index cd098537a..000000000 --- a/apps/assets/serializers/asset_user.py +++ /dev/null @@ -1,98 +0,0 @@ -# -*- coding: utf-8 -*- -# - -from django.utils.translation import ugettext as _ -from rest_framework import serializers - -from common.drf.serializers import AdaptedBulkListSerializer -from orgs.mixins.serializers import BulkOrgResourceModelSerializer -from ..models import AuthBook, Asset -from ..backends import AssetUserManager - -from .base import ConnectivitySerializer, AuthSerializerMixin - - -__all__ = [ - 'AssetUserWriteSerializer', 'AssetUserReadSerializer', - 'AssetUserAuthInfoSerializer', 'AssetUserPushSerializer', -] - - -class AssetUserWriteSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): - class Meta: - model = AuthBook - list_serializer_class = AdaptedBulkListSerializer - fields_mini = ['id', 'username'] - fields_write_only = ['password', 'private_key', "public_key"] - fields_small = fields_mini + fields_write_only + ['comment'] - fields_fk = ['asset'] - fields = fields_small + fields_fk - extra_kwargs = { - 'username': {'required': True}, - 'password': {'write_only': True}, - 'private_key': {'write_only': True}, - 'public_key': {'write_only': True}, - } - - def create(self, validated_data): - if not validated_data.get("name") and validated_data.get("username"): - validated_data["name"] = validated_data["username"] - instance = AssetUserManager.create(**validated_data) - return instance - - -class AssetUserReadSerializer(AssetUserWriteSerializer): - id = serializers.CharField(read_only=True, source='union_id', label=_("ID")) - hostname = serializers.CharField(read_only=True, label=_("Hostname")) - ip = serializers.CharField(read_only=True, label=_("IP")) - asset = serializers.CharField(source='asset_id', label=_('Asset')) - backend = serializers.CharField(read_only=True, label=_("Backend")) - backend_display = serializers.CharField(read_only=True, label=_("Source")) - - class Meta(AssetUserWriteSerializer.Meta): - read_only_fields = ( - 'date_created', 'date_updated', - 'created_by', 'version', - ) - fields_mini = ['id', 'name', 'username'] - fields_write_only = ['password', 'private_key', "public_key"] - fields_small = fields_mini + fields_write_only + [ - 'backend', 'backend_display', 'version', - 'date_created', "date_updated", - 'comment' - ] - fields_fk = ['asset', 'hostname', 'ip'] - fields = fields_small + fields_fk - extra_kwargs = { - 'name': {'required': False}, - 'username': {'required': True}, - 'password': {'write_only': True}, - 'private_key': {'write_only': True}, - 'public_key': {'write_only': True}, - } - - -class AssetUserAuthInfoSerializer(AssetUserReadSerializer): - password = serializers.CharField( - max_length=256, allow_blank=True, allow_null=True, - required=False, label=_('Password') - ) - public_key = serializers.CharField( - max_length=4096, allow_blank=True, allow_null=True, - required=False, label=_('Public key') - ) - private_key = serializers.CharField( - max_length=4096, allow_blank=True, allow_null=True, - required=False, label=_('Private key') - ) - - -class AssetUserPushSerializer(serializers.Serializer): - asset = serializers.PrimaryKeyRelatedField(queryset=Asset.objects, label=_("Asset")) - username = serializers.CharField(max_length=1024) - - def create(self, validated_data): - pass - - def update(self, instance, validated_data): - pass diff --git a/apps/assets/serializers/base.py b/apps/assets/serializers/base.py index 2159999c7..fa63dc41d 100644 --- a/apps/assets/serializers/base.py +++ b/apps/assets/serializers/base.py @@ -5,7 +5,6 @@ from django.utils.translation import ugettext as _ from rest_framework import serializers from common.utils import ssh_pubkey_gen, validate_ssh_private_key -from ..models import AssetUser class AuthSerializer(serializers.ModelSerializer): @@ -29,11 +28,6 @@ class AuthSerializer(serializers.ModelSerializer): return self.instance -class ConnectivitySerializer(serializers.Serializer): - status = serializers.IntegerField() - datetime = serializers.DateTimeField() - - class AuthSerializerMixin: def validate_password(self, password): return password @@ -64,15 +58,3 @@ class AuthSerializerMixin: def update(self, instance, validated_data): self.clean_auth_fields(validated_data) return super().update(instance, validated_data) - - -class AuthInfoSerializer(serializers.ModelSerializer): - private_key = serializers.ReadOnlyField(source='get_private_key') - - class Meta: - model = AssetUser - fields = [ - 'username', 'password', - 'private_key', 'public_key', - 'date_updated', - ] diff --git a/apps/assets/serializers/cmd_filter.py b/apps/assets/serializers/cmd_filter.py index 5cf419979..2f491aa21 100644 --- a/apps/assets/serializers/cmd_filter.py +++ b/apps/assets/serializers/cmd_filter.py @@ -3,7 +3,6 @@ import re from rest_framework import serializers -from common.drf.serializers import AdaptedBulkListSerializer from ..models import CommandFilter, CommandFilterRule from orgs.mixins.serializers import BulkOrgResourceModelSerializer from orgs.utils import tmp_to_root_org @@ -15,7 +14,6 @@ class CommandFilterSerializer(BulkOrgResourceModelSerializer): class Meta: model = CommandFilter - list_serializer_class = AdaptedBulkListSerializer fields_mini = ['id', 'name'] fields_small = fields_mini + [ 'org_id', 'org_name', @@ -48,7 +46,6 @@ class CommandFilterRuleSerializer(BulkOrgResourceModelSerializer): ] fields_fk = ['filter'] fields = '__all__' - list_serializer_class = AdaptedBulkListSerializer def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/apps/assets/serializers/domain.py b/apps/assets/serializers/domain.py index 5d8d0e8d8..1626bd711 100644 --- a/apps/assets/serializers/domain.py +++ b/apps/assets/serializers/domain.py @@ -3,7 +3,6 @@ from rest_framework import serializers from django.utils.translation import ugettext_lazy as _ -from common.drf.serializers import AdaptedBulkListSerializer from orgs.mixins.serializers import BulkOrgResourceModelSerializer from common.validators import NoSpecialChars from ..models import Domain, Gateway @@ -29,7 +28,6 @@ class DomainSerializer(BulkOrgResourceModelSerializer): extra_kwargs = { 'assets': {'required': False, 'label': _('Assets')}, } - list_serializer_class = AdaptedBulkListSerializer @staticmethod def get_asset_count(obj): @@ -47,7 +45,6 @@ class DomainSerializer(BulkOrgResourceModelSerializer): class GatewaySerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): class Meta: model = Gateway - list_serializer_class = AdaptedBulkListSerializer fields_mini = ['id', 'name'] fields_write_only = [ 'password', 'private_key', 'public_key', @@ -66,16 +63,6 @@ class GatewaySerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): 'public_key': {"write_only": True}, } - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.protocol_limit_to_ssh() - - def protocol_limit_to_ssh(self): - protocol_field = self.fields['protocol'] - choices = protocol_field.choices - choices.pop('rdp') - protocol_field._choices = choices - class GatewayWithAuthSerializer(GatewaySerializer): class Meta(GatewaySerializer.Meta): diff --git a/apps/assets/serializers/favorite_asset.py b/apps/assets/serializers/favorite_asset.py index 067655b0a..7c024bf1a 100644 --- a/apps/assets/serializers/favorite_asset.py +++ b/apps/assets/serializers/favorite_asset.py @@ -4,7 +4,6 @@ from rest_framework import serializers from orgs.utils import tmp_to_root_org -from common.drf.serializers import AdaptedBulkListSerializer from common.mixins import BulkSerializerMixin from ..models import FavoriteAsset @@ -18,6 +17,5 @@ class FavoriteAssetSerializer(BulkSerializerMixin, serializers.ModelSerializer): ) class Meta: - list_serializer_class = AdaptedBulkListSerializer model = FavoriteAsset fields = ['user', 'asset'] diff --git a/apps/assets/serializers/label.py b/apps/assets/serializers/label.py index f922655ef..26ab0ceb9 100644 --- a/apps/assets/serializers/label.py +++ b/apps/assets/serializers/label.py @@ -3,7 +3,6 @@ from rest_framework import serializers from django.utils.translation import ugettext_lazy as _ -from common.drf.serializers import AdaptedBulkListSerializer from orgs.mixins.serializers import BulkOrgResourceModelSerializer from ..models import Label @@ -30,7 +29,6 @@ class LabelSerializer(BulkOrgResourceModelSerializer): extra_kwargs = { 'assets': {'required': False} } - list_serializer_class = AdaptedBulkListSerializer @staticmethod def get_asset_count(obj): diff --git a/apps/assets/serializers/system_user.py b/apps/assets/serializers/system_user.py index 726f53e34..a9a9f763b 100644 --- a/apps/assets/serializers/system_user.py +++ b/apps/assets/serializers/system_user.py @@ -2,7 +2,6 @@ from rest_framework import serializers from django.utils.translation import ugettext_lazy as _ from django.db.models import Count -from common.drf.serializers import AdaptedBulkListSerializer from common.mixins.serializers import BulkSerializerMixin from common.utils import ssh_pubkey_gen from orgs.mixins.serializers import BulkOrgResourceModelSerializer @@ -23,21 +22,21 @@ class SystemUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): 系统用户 """ auto_generate_key = serializers.BooleanField(initial=True, required=False, write_only=True) + type_display = serializers.ReadOnlyField(source='get_type_display') class Meta: model = SystemUser - list_serializer_class = AdaptedBulkListSerializer fields_mini = ['id', 'name', 'username'] fields_write_only = ['password', 'public_key', 'private_key'] fields_small = fields_mini + fields_write_only + [ - 'protocol', 'login_mode', 'login_mode_display', 'priority', - 'sudo', 'shell', 'sftp_root', 'token', + 'type', 'type_display', 'protocol', 'login_mode', 'login_mode_display', + 'priority', 'sudo', 'shell', 'sftp_root', 'token', 'home', 'system_groups', 'ad_domain', 'username_same_with_user', 'auto_push', 'auto_generate_key', 'date_created', 'date_updated', 'comment', 'created_by', ] - fields_m2m = [ 'cmd_filters', 'assets_amount'] + fields_m2m = ['cmd_filters', 'assets_amount'] fields = fields_small + fields_m2m extra_kwargs = { 'password': {"write_only": True}, @@ -55,9 +54,9 @@ class SystemUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): login_mode = self.initial_data.get("login_mode") protocol = self.initial_data.get("protocol") - if login_mode == SystemUser.LOGIN_MANUAL or \ - protocol in [SystemUser.PROTOCOL_TELNET, - SystemUser.PROTOCOL_VNC]: + if login_mode == SystemUser.LOGIN_MANUAL: + value = False + elif protocol not in SystemUser.SUPPORT_PUSH_PROTOCOLS: value = False return value @@ -71,7 +70,7 @@ class SystemUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): value = False elif login_mode == SystemUser.LOGIN_MANUAL: value = False - elif protocol in [SystemUser.PROTOCOL_TELNET, SystemUser.PROTOCOL_VNC]: + elif protocol not in SystemUser.SUPPORT_PUSH_PROTOCOLS: value = False return value @@ -80,7 +79,8 @@ class SystemUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): return username_same_with_user protocol = self.initial_data.get("protocol", "ssh") queryset = SystemUser.objects.filter( - protocol=protocol, username_same_with_user=True + protocol=protocol, + username_same_with_user=True ) if self.instance: queryset = queryset.exclude(id=self.instance.id) @@ -96,12 +96,14 @@ class SystemUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): login_mode = self.initial_data.get("login_mode") protocol = self.initial_data.get("protocol") username_same_with_user = self.initial_data.get("username_same_with_user") - if username_same_with_user: - return '' + if login_mode == SystemUser.LOGIN_AUTO and \ - protocol != SystemUser.PROTOCOL_VNC: + protocol != SystemUser.Protocol.vnc: msg = _('* Automatic login mode must fill in the username.') raise serializers.ValidationError(msg) + + if username_same_with_user: + username = '*' return username def validate_home(self, home): @@ -118,40 +120,57 @@ class SystemUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer): raise serializers.ValidationError(error) return value + @staticmethod + def validate_admin_user(attrs): + tp = attrs.get('type') + if tp != SystemUser.Type.admin: + return attrs + attrs['protocol'] = SystemUser.Protocol.ssh + attrs['login_mode'] = SystemUser.LOGIN_AUTO + attrs['username_same_with_user'] = False + attrs['auto_push'] = False + return attrs + def validate_password(self, password): super().validate_password(password) auto_gen_key = self.initial_data.get("auto_generate_key", False) private_key = self.initial_data.get("private_key") login_mode = self.initial_data.get("login_mode") + if not self.instance and not auto_gen_key and not password and \ not private_key and login_mode == SystemUser.LOGIN_AUTO: raise serializers.ValidationError(_("Password or private key required")) return password - def validate(self, attrs): + def validate_gen_key(self, attrs): username = attrs.get("username", "manual") auto_gen_key = attrs.pop("auto_generate_key", False) protocol = attrs.get("protocol") - if protocol not in [SystemUser.PROTOCOL_RDP, SystemUser.PROTOCOL_SSH]: + if protocol not in SystemUser.SUPPORT_PUSH_PROTOCOLS: return attrs - if auto_gen_key: + # 自动生成 + if auto_gen_key and not self.instance: password = SystemUser.gen_password() attrs["password"] = password - if protocol == SystemUser.PROTOCOL_SSH: + if protocol == SystemUser.Protocol.ssh: private_key, public_key = SystemUser.gen_key(username) attrs["private_key"] = private_key attrs["public_key"] = public_key - # 如果设置了private key,没有设置public key则生成 + # 如果设置了private key,没有设置public key则生成 elif attrs.get("private_key", None): private_key = attrs["private_key"] password = attrs.get("password") - public_key = ssh_pubkey_gen(private_key, password=password, - username=username) + public_key = ssh_pubkey_gen(private_key, password=password, username=username) attrs["public_key"] = public_key return attrs + def validate(self, attrs): + attrs = self.validate_admin_user(attrs) + attrs = self.validate_gen_key(attrs) + return attrs + class SystemUserListSerializer(SystemUserSerializer): @@ -222,24 +241,26 @@ class RelationMixin(BulkSerializerMixin, serializers.Serializer): fields.extend(['systemuser', "systemuser_display"]) return fields - class Meta: - list_serializer_class = AdaptedBulkListSerializer - class SystemUserAssetRelationSerializer(RelationMixin, serializers.ModelSerializer): asset_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = SystemUser.assets.through fields = [ - 'id', "asset", "asset_display", + "id", "asset", "asset_display", + 'systemuser', 'systemuser_display' ] + use_model_bulk_create = True + model_bulk_create_kwargs = { + 'ignore_conflicts': True + } class SystemUserNodeRelationSerializer(RelationMixin, serializers.ModelSerializer): node_display = serializers.SerializerMethodField() - class Meta(RelationMixin.Meta): + class Meta: model = SystemUser.nodes.through fields = [ 'id', 'node', "node_display", @@ -252,7 +273,7 @@ class SystemUserNodeRelationSerializer(RelationMixin, serializers.ModelSerialize class SystemUserUserRelationSerializer(RelationMixin, serializers.ModelSerializer): user_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = SystemUser.users.through fields = [ 'id', "user", "user_display", diff --git a/apps/assets/signals_handler/__init__.py b/apps/assets/signals_handler/__init__.py index c8f332f26..8a895544f 100644 --- a/apps/assets/signals_handler/__init__.py +++ b/apps/assets/signals_handler/__init__.py @@ -1,3 +1,5 @@ -from .common import * +from .asset import * +from .system_user import * +from .authbook import * from .node_assets_amount import * from .node_assets_mapping import * diff --git a/apps/assets/signals_handler/asset.py b/apps/assets/signals_handler/asset.py new file mode 100644 index 000000000..0a623f553 --- /dev/null +++ b/apps/assets/signals_handler/asset.py @@ -0,0 +1,128 @@ +# -*- coding: utf-8 -*- +# +from django.db.models.signals import ( + post_save, m2m_changed, pre_delete, post_delete, pre_save +) +from django.dispatch import receiver + +from common.const.signals import POST_ADD, POST_REMOVE, PRE_REMOVE +from common.utils import get_logger +from common.decorator import on_transaction_commit +from assets.models import Asset, SystemUser, Node +from assets.tasks import ( + update_assets_hardware_info_util, + test_asset_connectivity_util, + push_system_user_to_assets, +) + +logger = get_logger(__file__) + + +def update_asset_hardware_info_on_created(asset): + logger.debug("Update asset `{}` hardware info".format(asset)) + update_assets_hardware_info_util.delay([asset]) + + +def test_asset_conn_on_created(asset): + logger.debug("Test asset `{}` connectivity".format(asset)) + test_asset_connectivity_util.delay([asset]) + + +@receiver(pre_save, sender=Node) +def on_node_pre_save(sender, instance: Node, **kwargs): + instance.parent_key = instance.compute_parent_key() + + +@receiver(post_save, sender=Asset) +@on_transaction_commit +def on_asset_created_or_update(sender, instance=None, created=False, **kwargs): + """ + 当资产创建时,更新硬件信息,更新可连接性 + 确保资产必须属于一个节点 + """ + if created: + logger.info("Asset create signal recv: {}".format(instance)) + + # 获取资产硬件信息 + update_asset_hardware_info_on_created(instance) + test_asset_conn_on_created(instance) + + # 确保资产存在一个节点 + has_node = instance.nodes.all().exists() + if not has_node: + instance.nodes.add(Node.org_root()) + + +@receiver(m2m_changed, sender=Asset.nodes.through) +def on_asset_nodes_add(instance, action, reverse, pk_set, **kwargs): + """ + 本操作共访问 4 次数据库 + + 当资产的节点发生变化时,或者 当节点的资产关系发生变化时, + 节点下新增的资产,添加到节点关联的系统用户中 + """ + if action != POST_ADD: + return + logger.debug("Assets node add signal recv: {}".format(action)) + if reverse: + nodes = [instance.key] + asset_ids = pk_set + else: + nodes = Node.objects.filter(pk__in=pk_set).values_list('key', flat=True) + asset_ids = [instance.id] + + # 节点资产发生变化时,将资产关联到节点及祖先节点关联的系统用户, 只关注新增的 + nodes_ancestors_keys = set() + for node in nodes: + nodes_ancestors_keys.update(Node.get_node_ancestor_keys(node, with_self=True)) + + # 查询所有祖先节点关联的系统用户,都是要跟资产建立关系的 + system_user_ids = SystemUser.objects.filter( + nodes__key__in=nodes_ancestors_keys + ).distinct().values_list('id', flat=True) + + # 查询所有已存在的关系 + m2m_model = SystemUser.assets.through + exist = set(m2m_model.objects.filter( + system_user_id__in=system_user_ids, asset_id__in=asset_ids + ).values_list('system_user_id', 'asset_id')) + # TODO 优化 + to_create = [] + for system_user_id in system_user_ids: + asset_ids_to_push = [] + for asset_id in asset_ids: + if (system_user_id, asset_id) in exist: + continue + asset_ids_to_push.append(asset_id) + to_create.append(m2m_model( + system_user_id=system_user_id, + asset_id=asset_id + )) + if asset_ids_to_push: + push_system_user_to_assets.delay(system_user_id, asset_ids_to_push) + m2m_model.objects.bulk_create(to_create) + + +RELATED_NODE_IDS = '_related_node_ids' + + +@receiver(pre_delete, sender=Asset) +def on_asset_delete(instance: Asset, using, **kwargs): + node_ids = set(Node.objects.filter( + assets=instance + ).distinct().values_list('id', flat=True)) + setattr(instance, RELATED_NODE_IDS, node_ids) + m2m_changed.send( + sender=Asset.nodes.through, instance=instance, reverse=False, + model=Node, pk_set=node_ids, using=using, action=PRE_REMOVE + ) + + +@receiver(post_delete, sender=Asset) +def on_asset_post_delete(instance: Asset, using, **kwargs): + node_ids = getattr(instance, RELATED_NODE_IDS, None) + if node_ids: + m2m_changed.send( + sender=Asset.nodes.through, instance=instance, reverse=False, + model=Node, pk_set=node_ids, using=using, action=POST_REMOVE + ) diff --git a/apps/assets/signals_handler/authbook.py b/apps/assets/signals_handler/authbook.py new file mode 100644 index 000000000..0c6635c4c --- /dev/null +++ b/apps/assets/signals_handler/authbook.py @@ -0,0 +1,46 @@ +from django.dispatch import receiver +from django.apps import apps +from simple_history.signals import pre_create_historical_record +from django.db.models.signals import post_save, pre_save + +from common.utils import get_logger +from orgs.utils import tmp_to_root_org +from ..models import AuthBook, SystemUser + +AuthBookHistory = apps.get_model('assets', 'HistoricalAuthBook') +logger = get_logger(__name__) + + +@receiver(pre_create_historical_record, sender=AuthBookHistory) +def pre_create_historical_record_callback(sender, instance=None, history_instance=None, **kwargs): + attrs_to_copy = ['username', 'password', 'private_key'] + + for attr in attrs_to_copy: + if getattr(history_instance, attr): + continue + if not history_instance.systemuser: + continue + system_user_attr_value = getattr(history_instance.systemuser, attr) + if system_user_attr_value: + setattr(history_instance, attr, system_user_attr_value) + + +@receiver(post_save, sender=AuthBook) +def on_authbook_post_create(sender, instance, **kwargs): + # 去掉这个资产的管理用户 + if instance.systemuser and instance.systemuser.is_admin_user: + with tmp_to_root_org(): + deleted_count, other = AuthBook.objects.filter( + asset=instance.asset, + systemuser__type=SystemUser.Type.admin + ).exclude(id=instance.id).delete() + logger.debug('Remove asset old admin user: {}'.format(deleted_count)) + + if not instance.systemuser: + instance.sync_to_system_user_account() + + +@receiver(pre_save, sender=AuthBook) +def on_authbook_pre_create(sender, instance, **kwargs): + # 升级版本号 + instance.version = instance.history.all().count() + 1 diff --git a/apps/assets/signals_handler/common.py b/apps/assets/signals_handler/common.py index 50f7f41f1..e69de29bb 100644 --- a/apps/assets/signals_handler/common.py +++ b/apps/assets/signals_handler/common.py @@ -1,223 +0,0 @@ -# -*- coding: utf-8 -*- -# -from django.db.models.signals import ( - post_save, m2m_changed, pre_delete, post_delete, pre_save -) -from django.dispatch import receiver - -from common.exceptions import M2MReverseNotAllowed -from common.const.signals import POST_ADD, POST_REMOVE, PRE_REMOVE -from common.utils import get_logger -from common.decorator import on_transaction_commit -from assets.models import Asset, SystemUser, Node -from users.models import User -from assets.tasks import ( - update_assets_hardware_info_util, - test_asset_connectivity_util, - push_system_user_to_assets_manual, - push_system_user_to_assets, - add_nodes_assets_to_system_users -) - -logger = get_logger(__file__) - - -def update_asset_hardware_info_on_created(asset): - logger.debug("Update asset `{}` hardware info".format(asset)) - update_assets_hardware_info_util.delay([asset]) - - -def test_asset_conn_on_created(asset): - logger.debug("Test asset `{}` connectivity".format(asset)) - test_asset_connectivity_util.delay([asset]) - - -@receiver(pre_save, sender=Node) -def on_node_pre_save(sender, instance: Node, **kwargs): - instance.parent_key = instance.compute_parent_key() - - -@receiver(post_save, sender=Asset) -@on_transaction_commit -def on_asset_created_or_update(sender, instance=None, created=False, **kwargs): - """ - 当资产创建时,更新硬件信息,更新可连接性 - 确保资产必须属于一个节点 - """ - if created: - logger.info("Asset create signal recv: {}".format(instance)) - - # 获取资产硬件信息 - update_asset_hardware_info_on_created(instance) - test_asset_conn_on_created(instance) - - # 确保资产存在一个节点 - has_node = instance.nodes.all().exists() - if not has_node: - instance.nodes.add(Node.org_root()) - - -@receiver(post_save, sender=SystemUser, dispatch_uid="jms") -@on_transaction_commit -def on_system_user_update(instance: SystemUser, created, **kwargs): - """ - 当系统用户更新时,可能更新了秘钥,用户名等,这时要自动推送系统用户到资产上, - 其实应该当 用户名,密码,秘钥 sudo等更新时再推送,这里偷个懒, - 这里直接取了 instance.assets 因为nodes和系统用户发生变化时,会自动将nodes下的资产 - 关联到上面 - """ - if instance and not created: - logger.info("System user update signal recv: {}".format(instance)) - assets = instance.assets.all().valid() - push_system_user_to_assets.delay(instance.id, [_asset.id for _asset in assets]) - - -@receiver(m2m_changed, sender=SystemUser.assets.through) -@on_transaction_commit -def on_system_user_assets_change(instance, action, model, pk_set, **kwargs): - """ - 当系统用户和资产关系发生变化时,应该重新推送系统用户到新添加的资产中 - """ - if action != POST_ADD: - return - logger.debug("System user assets change signal recv: {}".format(instance)) - if model == Asset: - system_user_ids = [instance.id] - asset_ids = pk_set - else: - system_user_ids = pk_set - asset_ids = [instance.id] - for system_user_id in system_user_ids: - push_system_user_to_assets.delay(system_user_id, asset_ids) - - -@receiver(m2m_changed, sender=SystemUser.users.through) -@on_transaction_commit -def on_system_user_users_change(sender, instance: SystemUser, action, model, pk_set, reverse, **kwargs): - """ - 当系统用户和用户关系发生变化时,应该重新推送系统用户资产中 - """ - if action != POST_ADD: - return - - if reverse: - raise M2MReverseNotAllowed - - if not instance.username_same_with_user: - return - - logger.debug("System user users change signal recv: {}".format(instance)) - usernames = model.objects.filter(pk__in=pk_set).values_list('username', flat=True) - - for username in usernames: - push_system_user_to_assets_manual.delay(instance, username) - - -@receiver(m2m_changed, sender=SystemUser.nodes.through) -@on_transaction_commit -def on_system_user_nodes_change(sender, instance=None, action=None, model=None, pk_set=None, **kwargs): - """ - 当系统用户和节点关系发生变化时,应该将节点下资产关联到新的系统用户上 - """ - if action != POST_ADD: - return - logger.info("System user nodes update signal recv: {}".format(instance)) - - queryset = model.objects.filter(pk__in=pk_set) - if model == Node: - nodes_keys = queryset.values_list('key', flat=True) - system_users = [instance] - else: - nodes_keys = [instance.key] - system_users = queryset - add_nodes_assets_to_system_users.delay(nodes_keys, system_users) - - -@receiver(m2m_changed, sender=SystemUser.groups.through) -def on_system_user_groups_change(instance, action, pk_set, reverse, **kwargs): - """ - 当系统用户和用户组关系发生变化时,应该将组下用户关联到新的系统用户上 - """ - if action != POST_ADD: - return - if reverse: - raise M2MReverseNotAllowed - logger.info("System user groups update signal recv: {}".format(instance)) - - users = User.objects.filter(groups__id__in=pk_set).distinct() - instance.users.add(*users) - - -@receiver(m2m_changed, sender=Asset.nodes.through) -def on_asset_nodes_add(instance, action, reverse, pk_set, **kwargs): - """ - 本操作共访问 4 次数据库 - - 当资产的节点发生变化时,或者 当节点的资产关系发生变化时, - 节点下新增的资产,添加到节点关联的系统用户中 - """ - if action != POST_ADD: - return - logger.debug("Assets node add signal recv: {}".format(action)) - if reverse: - nodes = [instance.key] - asset_ids = pk_set - else: - nodes = Node.objects.filter(pk__in=pk_set).values_list('key', flat=True) - asset_ids = [instance.id] - - # 节点资产发生变化时,将资产关联到节点及祖先节点关联的系统用户, 只关注新增的 - nodes_ancestors_keys = set() - for node in nodes: - nodes_ancestors_keys.update(Node.get_node_ancestor_keys(node, with_self=True)) - - # 查询所有祖先节点关联的系统用户,都是要跟资产建立关系的 - system_user_ids = SystemUser.objects.filter( - nodes__key__in=nodes_ancestors_keys - ).distinct().values_list('id', flat=True) - - # 查询所有已存在的关系 - m2m_model = SystemUser.assets.through - exist = set(m2m_model.objects.filter( - systemuser_id__in=system_user_ids, asset_id__in=asset_ids - ).values_list('systemuser_id', 'asset_id')) - # TODO 优化 - to_create = [] - for system_user_id in system_user_ids: - asset_ids_to_push = [] - for asset_id in asset_ids: - if (system_user_id, asset_id) in exist: - continue - asset_ids_to_push.append(asset_id) - to_create.append(m2m_model( - systemuser_id=system_user_id, - asset_id=asset_id - )) - if asset_ids_to_push: - push_system_user_to_assets.delay(system_user_id, asset_ids_to_push) - m2m_model.objects.bulk_create(to_create) - - -RELATED_NODE_IDS = '_related_node_ids' - - -@receiver(pre_delete, sender=Asset) -def on_asset_delete(instance: Asset, using, **kwargs): - node_ids = set(Node.objects.filter( - assets=instance - ).distinct().values_list('id', flat=True)) - setattr(instance, RELATED_NODE_IDS, node_ids) - m2m_changed.send( - sender=Asset.nodes.through, instance=instance, reverse=False, - model=Node, pk_set=node_ids, using=using, action=PRE_REMOVE - ) - - -@receiver(post_delete, sender=Asset) -def on_asset_post_delete(instance: Asset, using, **kwargs): - node_ids = getattr(instance, RELATED_NODE_IDS, None) - if node_ids: - m2m_changed.send( - sender=Asset.nodes.through, instance=instance, reverse=False, - model=Node, pk_set=node_ids, using=using, action=POST_REMOVE - ) diff --git a/apps/assets/signals_handler/system_user.py b/apps/assets/signals_handler/system_user.py new file mode 100644 index 000000000..a5f021a64 --- /dev/null +++ b/apps/assets/signals_handler/system_user.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +# +from django.db.models.signals import ( + post_save, m2m_changed, pre_save, pre_delete, post_delete +) +from django.dispatch import receiver + +from common.exceptions import M2MReverseNotAllowed +from common.const.signals import POST_ADD +from common.utils import get_logger +from common.decorator import on_transaction_commit +from assets.models import Asset, SystemUser, Node, AuthBook +from users.models import User +from orgs.utils import get_current_org, tmp_to_root_org +from assets.tasks import ( + push_system_user_to_assets_manual, + push_system_user_to_assets, + add_nodes_assets_to_system_users +) + +logger = get_logger(__file__) + + +@receiver(m2m_changed, sender=SystemUser.assets.through) +@on_transaction_commit +def on_system_user_assets_change(instance, action, model, pk_set, **kwargs): + """ + 当系统用户和资产关系发生变化时,应该重新推送系统用户到新添加的资产中 + """ + logger.debug("System user assets change signal recv: {}".format(instance)) + + if not instance: + logger.debug('No system user found') + return + + if model == Asset: + system_user_ids = [instance.id] + asset_ids = pk_set + else: + system_user_ids = pk_set + asset_ids = [instance.id] + + # 通过 through 创建的没有 org_id + current_org_id = get_current_org().id + with tmp_to_root_org(): + authbooks = AuthBook.objects.filter( + asset_id__in=asset_ids, + systemuser_id__in=system_user_ids + ) + authbooks.update(org_id=current_org_id) + + save_action_mapper = { + 'pre_add': pre_save, + 'post_add': post_save, + 'pre_remove': pre_delete, + 'post_remove': post_delete + } + + for ab in authbooks: + ab.org_id = current_org_id + + post_action = save_action_mapper[action] + logger.debug('Send AuthBook post save signal: {} -> {}'.format(action, ab.id)) + post_action.send(sender=AuthBook, instance=ab, created=True) + + if action == 'post_add': + for system_user_id in system_user_ids: + push_system_user_to_assets.delay(system_user_id, asset_ids) + + +@receiver(m2m_changed, sender=SystemUser.users.through) +@on_transaction_commit +def on_system_user_users_change(sender, instance: SystemUser, action, model, pk_set, reverse, **kwargs): + """ + 当系统用户和用户关系发生变化时,应该重新推送系统用户资产中 + """ + if action != POST_ADD: + return + + if reverse: + raise M2MReverseNotAllowed + + if not instance.username_same_with_user: + return + + logger.debug("System user users change signal recv: {}".format(instance)) + usernames = model.objects.filter(pk__in=pk_set).values_list('username', flat=True) + + for username in usernames: + push_system_user_to_assets_manual.delay(instance, username) + + +@receiver(m2m_changed, sender=SystemUser.nodes.through) +@on_transaction_commit +def on_system_user_nodes_change(sender, instance=None, action=None, model=None, pk_set=None, **kwargs): + """ + 当系统用户和节点关系发生变化时,应该将节点下资产关联到新的系统用户上 + """ + if action != POST_ADD: + return + logger.info("System user nodes update signal recv: {}".format(instance)) + + queryset = model.objects.filter(pk__in=pk_set) + if model == Node: + nodes_keys = queryset.values_list('key', flat=True) + system_users = [instance] + else: + nodes_keys = [instance.key] + system_users = queryset + add_nodes_assets_to_system_users.delay(nodes_keys, system_users) + + +@receiver(m2m_changed, sender=SystemUser.groups.through) +def on_system_user_groups_change(instance, action, pk_set, reverse, **kwargs): + """ + 当系统用户和用户组关系发生变化时,应该将组下用户关联到新的系统用户上 + """ + if action != POST_ADD: + return + if reverse: + raise M2MReverseNotAllowed + logger.info("System user groups update signal recv: {}".format(instance)) + + users = User.objects.filter(groups__id__in=pk_set).distinct() + instance.users.add(*users) + + +@receiver(post_save, sender=SystemUser, dispatch_uid="jms") +@on_transaction_commit +def on_system_user_update(instance: SystemUser, created, **kwargs): + """ + 当系统用户更新时,可能更新了秘钥,用户名等,这时要自动推送系统用户到资产上, + 其实应该当 用户名,密码,秘钥 sudo等更新时再推送,这里偷个懒, + 这里直接取了 instance.assets 因为nodes和系统用户发生变化时,会自动将nodes下的资产 + 关联到上面 + """ + if instance and not created: + logger.info("System user update signal recv: {}".format(instance)) + assets = instance.assets.all().valid() + push_system_user_to_assets.delay(instance.id, [_asset.id for _asset in assets]) diff --git a/apps/assets/tasks/__init__.py b/apps/assets/tasks/__init__.py index b1866d5ec..7aaed0efd 100644 --- a/apps/assets/tasks/__init__.py +++ b/apps/assets/tasks/__init__.py @@ -2,9 +2,8 @@ # from .utils import * from .common import * -from .admin_user_connectivity import * from .asset_connectivity import * -from .asset_user_connectivity import * +from .account_connectivity import * from .gather_asset_users import * from .gather_asset_hardware_info import * from .push_system_user import * diff --git a/apps/assets/tasks/asset_user_connectivity.py b/apps/assets/tasks/account_connectivity.py similarity index 51% rename from apps/assets/tasks/asset_user_connectivity.py rename to apps/assets/tasks/account_connectivity.py index ab1c417cc..23e7fc7be 100644 --- a/apps/assets/tasks/asset_user_connectivity.py +++ b/apps/assets/tasks/account_connectivity.py @@ -3,9 +3,9 @@ from celery import shared_task from django.utils.translation import ugettext as _ -from common.utils import get_logger, get_object_or_none +from common.utils import get_logger from orgs.utils import org_aware_func -from ..models import Asset +from ..models import Connectivity from . import const from .utils import check_asset_can_run_ansible @@ -14,13 +14,13 @@ logger = get_logger(__file__) __all__ = [ - 'test_asset_user_connectivity_util', 'test_asset_users_connectivity_manual', - 'get_test_asset_user_connectivity_tasks', 'test_user_connectivity', + 'test_account_connectivity_util', 'test_accounts_connectivity_manual', + 'get_test_account_connectivity_tasks', 'test_user_connectivity', 'run_adhoc', ] -def get_test_asset_user_connectivity_tasks(asset): +def get_test_account_connectivity_tasks(asset): if asset.is_unixlike(): tasks = const.PING_UNIXLIKE_TASKS elif asset.is_windows(): @@ -57,7 +57,7 @@ def test_user_connectivity(task_name, asset, username, password=None, private_ke """ from ops.inventory import JMSCustomInventory - tasks = get_test_asset_user_connectivity_tasks(asset) + tasks = get_test_account_connectivity_tasks(asset) if not tasks: logger.debug("No tasks ") return {}, {} @@ -71,62 +71,37 @@ def test_user_connectivity(task_name, asset, username, password=None, private_ke return raw, summary -@org_aware_func("asset_user") -def test_asset_user_connectivity_util(asset_user, task_name): +@org_aware_func("account") +def test_account_connectivity_util(account, task_name): """ - :param asset_user: 对象 + :param account: 对象 :param task_name: :return: """ - if not check_asset_can_run_ansible(asset_user.asset): + if not check_asset_can_run_ansible(account.asset): return try: raw, summary = test_user_connectivity( - task_name=task_name, asset=asset_user.asset, - username=asset_user.username, password=asset_user.password, - private_key=asset_user.private_key_file + task_name=task_name, asset=account.asset, + username=account.username, password=account.password, + private_key=account.private_key_file ) except Exception as e: logger.warn("Failed run adhoc {}, {}".format(task_name, e)) return - asset_user.set_connectivity(summary) + + if summary.get('success'): + account.set_connectivity(Connectivity.ok) + else: + account.set_connectivity(Connectivity.failed) @shared_task(queue="ansible") -def test_asset_users_connectivity_manual(asset_users): +def test_accounts_connectivity_manual(accounts): """ - :param asset_users: 对象 + :param accounts: 对象 """ - for asset_user in asset_users: - task_name = _("Test asset user connectivity: {}").format(asset_user) - test_asset_user_connectivity_util(asset_user, task_name) - - -@shared_task(queue="ansible") -def push_asset_user_util(asset_user): - """ - :param asset_user: 对象 - """ - from .push_system_user import push_system_user_util - if not asset_user.backend.startswith('system_user'): - logger.error("Asset user is not from system user") - return - union_id = asset_user.union_id - union_id_list = union_id.split('_') - if len(union_id_list) < 2: - logger.error("Asset user union id length less than 2") - return - system_user_id = union_id_list[0] - asset_id = union_id_list[1] - asset = get_object_or_none(Asset, pk=asset_id) - system_user = None - if not asset: - return - hosts = check_asset_can_run_ansible([asset]) - if asset.is_unixlike: - pass - - - - + for account in accounts: + task_name = _("Test account connectivity: {}").format(account) + test_account_connectivity_util(account, task_name) diff --git a/apps/assets/tasks/admin_user_connectivity.py b/apps/assets/tasks/admin_user_connectivity.py deleted file mode 100644 index 1760c1f4d..000000000 --- a/apps/assets/tasks/admin_user_connectivity.py +++ /dev/null @@ -1,69 +0,0 @@ -# ~*~ coding: utf-8 ~*~ - -from celery import shared_task -from django.utils.translation import ugettext as _ -from django.core.cache import cache - -from orgs.utils import tmp_to_root_org, org_aware_func -from common.utils import get_logger -from ops.celery.decorator import register_as_period_task - -from ..models import AdminUser -from .utils import clean_ansible_task_hosts -from .asset_connectivity import test_asset_connectivity_util -from . import const - - -logger = get_logger(__file__) -__all__ = [ - 'test_admin_user_connectivity_util', 'test_admin_user_connectivity_manual', - 'test_admin_user_connectivity_period' -] - - -@org_aware_func("admin_user") -def test_admin_user_connectivity_util(admin_user, task_name): - """ - Test asset admin user can connect or not. Using ansible api do that - :param admin_user: - :param task_name: - :return: - """ - assets = admin_user.get_related_assets() - hosts = clean_ansible_task_hosts(assets) - if not hosts: - return {} - summary = test_asset_connectivity_util(hosts, task_name) - return summary - - -@shared_task(queue="ansible") -@register_as_period_task(interval=3600) -def test_admin_user_connectivity_period(): - """ - A period task that update the ansible task period - """ - if not const.PERIOD_TASK_ENABLED: - logger.debug('Period task off, skip') - return - key = '_JMS_TEST_ADMIN_USER_CONNECTIVITY_PERIOD' - prev_execute_time = cache.get(key) - if prev_execute_time: - logger.debug("Test admin user connectivity, less than 40 minutes, skip") - return - cache.set(key, 1, 60*40) - with tmp_to_root_org(): - admin_users = AdminUser.objects.all() - for admin_user in admin_users: - task_name = _("Test admin user connectivity period: {}").format( - admin_user.name - ) - test_admin_user_connectivity_util(admin_user, task_name) - cache.set(key, 1, 60*40) - - -@shared_task(queue="ansible") -def test_admin_user_connectivity_manual(admin_user): - task_name = _("Test admin user connectivity: {}").format(admin_user.name) - test_admin_user_connectivity_util(admin_user, task_name) - return True diff --git a/apps/assets/tasks/asset_connectivity.py b/apps/assets/tasks/asset_connectivity.py index ea4b90ea6..1ae98fd1d 100644 --- a/apps/assets/tasks/asset_connectivity.py +++ b/apps/assets/tasks/asset_connectivity.py @@ -6,7 +6,7 @@ from django.utils.translation import ugettext as _ from common.utils import get_logger from orgs.utils import org_aware_func -from ..models.utils import Connectivity +from ..models import Asset, Connectivity, AuthBook from . import const from .utils import clean_ansible_task_hosts, group_asset_by_platform @@ -18,6 +18,28 @@ __all__ = [ ] +def set_assets_accounts_connectivity(assets, results_summary): + asset_ids_ok = set() + asset_ids_failed = set() + + asset_hostnames_ok = results_summary.get('contacted', {}).keys() + + for asset in assets: + if asset.hostname in asset_hostnames_ok: + asset_ids_ok.add(asset.id) + else: + asset_ids_failed.add(asset.id) + + Asset.bulk_set_connectivity(asset_ids_ok, Connectivity.ok) + Asset.bulk_set_connectivity(asset_ids_failed, Connectivity.failed) + + accounts_ok = AuthBook.objects.filter(asset_id__in=asset_ids_ok, systemuser__type='admin') + accounts_failed = AuthBook.objects.filter(asset_id__in=asset_ids_failed, systemuser__type='admin') + + AuthBook.bulk_set_connectivity(accounts_ok, Connectivity.ok) + AuthBook.bulk_set_connectivity(accounts_failed, Connectivity.failed) + + @shared_task(queue="ansible") @org_aware_func("assets") def test_asset_connectivity_util(assets, task_name=None): @@ -60,14 +82,7 @@ def test_asset_connectivity_util(assets, task_name=None): results_summary['contacted'].update(contacted) results_summary['dark'].update(dark) continue - - for asset in assets: - if asset.hostname in results_summary.get('dark', {}).keys(): - asset.connectivity = Connectivity.unreachable() - elif asset.hostname in results_summary.get('contacted', {}).keys(): - asset.connectivity = Connectivity.reachable() - else: - asset.connectivity = Connectivity.unknown() + set_assets_accounts_connectivity(assets, results_summary) return results_summary diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py index 8bc20a162..af98fadbd 100644 --- a/apps/assets/urls/api_urls.py +++ b/apps/assets/urls/api_urls.py @@ -11,16 +11,16 @@ app_name = 'assets' router = BulkRouter() router.register(r'assets', api.AssetViewSet, 'asset') +router.register(r'accounts', api.AccountViewSet, 'account') +router.register(r'account-secrets', api.AccountSecretsViewSet, 'account-secret') router.register(r'platforms', api.AssetPlatformViewSet, 'platform') -router.register(r'admin-users', api.AdminUserViewSet, 'admin-user') router.register(r'system-users', api.SystemUserViewSet, 'system-user') +router.register(r'admin-users', api.AdminUserViewSet, 'admin-user') router.register(r'labels', api.LabelViewSet, 'label') router.register(r'nodes', api.NodeViewSet, 'node') router.register(r'domains', api.DomainViewSet, 'domain') router.register(r'gateways', api.GatewayViewSet, 'gateway') router.register(r'cmd-filters', api.CommandFilterViewSet, 'cmd-filter') -router.register(r'asset-users', api.AssetUserViewSet, 'asset-user') -router.register(r'asset-user-auth-infos', api.AssetUserAuthInfoViewSet, 'asset-user-auth-info') router.register(r'gathered-users', api.GatheredUserViewSet, 'gathered-user') router.register(r'favorite-assets', api.FavoriteAssetViewSet, 'favorite-asset') router.register(r'system-users-assets-relations', api.SystemUserAssetRelationViewSet, 'system-users-assets-relation') @@ -37,13 +37,6 @@ urlpatterns = [ path('assets//tasks/', api.AssetTaskCreateApi.as_view(), name='asset-task-create'), path('assets/tasks/', api.AssetsTaskCreateApi.as_view(), name='assets-task-create'), - path('asset-users/tasks/', api.AssetUserTaskCreateAPI.as_view(), name='asset-user-task-create'), - - path('admin-users//nodes/', api.ReplaceNodesAdminUserApi.as_view(), name='replace-nodes-admin-user'), - path('admin-users//auth/', api.AdminUserAuthApi.as_view(), name='admin-user-auth'), - path('admin-users//connective/', api.AdminUserTestConnectiveApi.as_view(), name='admin-user-connective'), - path('admin-users//assets/', api.AdminUserAssetsListView.as_view(), name='admin-user-assets'), - path('system-users//auth-info/', api.SystemUserAuthInfoApi.as_view(), name='system-user-auth-info'), path('system-users//assets/', api.SystemUserAssetsListView.as_view(), name='system-user-assets'), path('system-users//assets//auth-info/', api.SystemUserAssetAuthInfoApi.as_view(), name='system-user-asset-auth-info'), diff --git a/apps/audits/serializers.py b/apps/audits/serializers.py index 7bab342ee..800176d37 100644 --- a/apps/audits/serializers.py +++ b/apps/audits/serializers.py @@ -5,7 +5,6 @@ from rest_framework import serializers from django.db.models import F from common.mixins import BulkSerializerMixin -from common.drf.serializers import AdaptedBulkListSerializer from terminal.models import Session from ops.models import CommandExecution from . import models @@ -108,7 +107,6 @@ class CommandExecutionHostsRelationSerializer(BulkSerializerMixin, serializers.M commandexecution_display = serializers.ReadOnlyField() class Meta: - list_serializer_class = AdaptedBulkListSerializer model = CommandExecution.hosts.through fields = [ 'id', 'asset', 'asset_display', 'commandexecution', 'commandexecution_display' diff --git a/apps/authentication/api/connection_token.py b/apps/authentication/api/connection_token.py index d4824c355..a160eea92 100644 --- a/apps/authentication/api/connection_token.py +++ b/apps/authentication/api/connection_token.py @@ -15,7 +15,7 @@ from rest_framework import serializers from authentication.signals import post_auth_failed, post_auth_success from common.utils import get_logger, random_string -from common.drf.api import SerializerMixin2 +from common.drf.api import SerializerMixin from common.permissions import IsSuperUserOrAppUser, IsValidUser, IsSuperUser from orgs.mixins.api import RootOrgViewMixin @@ -29,7 +29,7 @@ logger = get_logger(__name__) __all__ = ['UserConnectionTokenViewSet'] -class UserConnectionTokenViewSet(RootOrgViewMixin, SerializerMixin2, GenericViewSet): +class UserConnectionTokenViewSet(RootOrgViewMixin, SerializerMixin, GenericViewSet): permission_classes = (IsSuperUserOrAppUser,) serializer_classes = { 'default': ConnectionTokenSerializer, diff --git a/apps/authentication/api/mfa.py b/apps/authentication/api/mfa.py index ac0ba66f4..b81eeee29 100644 --- a/apps/authentication/api/mfa.py +++ b/apps/authentication/api/mfa.py @@ -2,12 +2,13 @@ # import time from django.utils.translation import ugettext as _ +from django.conf import settings from rest_framework.permissions import AllowAny from rest_framework.generics import CreateAPIView from rest_framework.serializers import ValidationError from rest_framework.response import Response -from common.permissions import IsValidUser +from common.permissions import IsValidUser, NeedMFAVerify from ..serializers import OtpVerifySerializer from .. import serializers from .. import errors @@ -48,6 +49,9 @@ class UserOtpVerifyApi(CreateAPIView): permission_classes = (IsValidUser,) serializer_class = OtpVerifySerializer + def get(self, request, *args, **kwargs): + return Response({'code': 'valid', 'msg': 'verified'}) + def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) @@ -58,3 +62,8 @@ class UserOtpVerifyApi(CreateAPIView): return Response({"ok": "1"}) else: return Response({"error": _("Code is invalid")}, status=400) + + def get_permissions(self): + if self.request.method.lower() == 'get' and settings.SECURITY_VIEW_AUTH_NEED_MFA: + self.permission_classes = [NeedMFAVerify] + return super().get_permissions() diff --git a/apps/common/drf/api.py b/apps/common/drf/api.py index 22b1321d5..43765f822 100644 --- a/apps/common/drf/api.py +++ b/apps/common/drf/api.py @@ -2,12 +2,12 @@ from rest_framework.viewsets import GenericViewSet, ModelViewSet from rest_framework_bulk import BulkModelViewSet from ..mixins.api import ( - SerializerMixin2, QuerySetMixin, ExtraFilterFieldsMixin, PaginatedResponseMixin, - RelationMixin, AllowBulkDestoryMixin, RenderToJsonMixin, + SerializerMixin, QuerySetMixin, ExtraFilterFieldsMixin, PaginatedResponseMixin, + RelationMixin, AllowBulkDestroyMixin, RenderToJsonMixin, ) -class CommonMixin(SerializerMixin2, +class CommonMixin(SerializerMixin, QuerySetMixin, ExtraFilterFieldsMixin, PaginatedResponseMixin, @@ -26,13 +26,13 @@ class JMSModelViewSet(CommonMixin, class JMSBulkModelViewSet(CommonMixin, - AllowBulkDestoryMixin, + AllowBulkDestroyMixin, BulkModelViewSet): pass class JMSBulkRelationModelViewSet(CommonMixin, RelationMixin, - AllowBulkDestoryMixin, + AllowBulkDestroyMixin, BulkModelViewSet): pass diff --git a/apps/common/mixins/api.py b/apps/common/mixins/api.py index a0d5875c6..13323df0d 100644 --- a/apps/common/mixins/api.py +++ b/apps/common/mixins/api.py @@ -23,7 +23,7 @@ from ..utils import lazyproperty __all__ = [ 'JSONResponseMixin', 'CommonApiMixin', 'AsyncApiMixin', 'RelationMixin', - 'SerializerMixin2', 'QuerySetMixin', 'ExtraFilterFieldsMixin', 'RenderToJsonMixin', + 'QuerySetMixin', 'ExtraFilterFieldsMixin', 'RenderToJsonMixin', ] @@ -62,21 +62,27 @@ class RenderToJsonMixin: class SerializerMixin: """ 根据用户请求动作的不同,获取不同的 `serializer_class `""" + action: str + request: Request + serializer_classes = None + single_actions = ['put', 'retrieve', 'patch'] def get_serializer_class_by_view_action(self): if not hasattr(self, 'serializer_classes'): return None if not isinstance(self.serializer_classes, dict): return None - action = self.request.query_params.get('action') - serializer_class = None - if action: - # metadata方法 使用 action 参数获取 - serializer_class = self.serializer_classes.get(action) + view_action = self.request.query_params.get('action') or self.action or 'list' + serializer_class = self.serializer_classes.get(view_action) + if serializer_class is None: - serializer_class = self.serializer_classes.get(self.action) + view_method = self.request.method.lower() + serializer_class = self.serializer_classes.get(view_method) + + if serializer_class is None and view_action in self.single_actions: + serializer_class = self.serializer_classes.get('single') if serializer_class is None: serializer_class = self.serializer_classes.get('display') if serializer_class is None: @@ -301,36 +307,18 @@ class RelationMixin: self.send_m2m_changed_signal(instance, 'post_remove') -class SerializerMixin2: - serializer_classes = {} - - def get_serializer_class(self): - if self.serializer_classes: - serializer_class = self.serializer_classes.get( - self.action, self.serializer_classes.get('default') - ) - - if isinstance(serializer_class, dict): - serializer_class = serializer_class.get( - self.request.method.lower, serializer_class.get('default') - ) - - assert serializer_class, '`serializer_classes` config error' - return serializer_class - return super().get_serializer_class() - - class QuerySetMixin: def get_queryset(self): queryset = super().get_queryset() serializer_class = self.get_serializer_class() + if serializer_class and hasattr(serializer_class, 'setup_eager_loading'): queryset = serializer_class.setup_eager_loading(queryset) return queryset -class AllowBulkDestoryMixin: +class AllowBulkDestroyMixin: def allow_bulk_destroy(self, qs, filtered): """ 我们规定,批量删除的情况必须用 `id` 指定要删除的数据。 diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index ef69cec8e..a3b2c7cf6 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -67,6 +67,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'django.forms', + 'simple_history', ] @@ -86,6 +87,7 @@ MIDDLEWARE = [ 'orgs.middleware.OrgMiddleware', 'authentication.backends.oidc.middleware.OIDCRefreshIDTokenMiddleware', 'authentication.backends.cas.middleware.CASMiddleware', + 'simple_history.middleware.HistoryRequestMiddleware', ] diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 3d1ae71fe44dee0bbd06b8cfe0b813889664bfe3..319593bfdc018392b8c539dbf49b93712a45a3cb 100644 GIT binary patch delta 22311 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 T$d=Q|1LDQs@;r6GfYAR31{V25 delta 22844 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

6FzliP$98KQM83HV^fS4J)W4BqFj` zbZ_r?alykLCdw5R8PYW(x@S~m!H{O%qx#d0(m$$aL<}w7Q{sF^q)L(M^MMgxMMZ}+ z>K{FbrZ~Szqm$&MG9V^oP*nc`(S3S{bm=p&XJkn4J~1JkHMf=!H*tCyUw5H#M`!<- z&OfZi5UwJ+OL*LnH8=cIL=Rx9egmWXM@7cf-Et#u(u56L5=QTd%XJ~GPs)Tj>+et8 z6+d%Y!n&<-1uw2j7JKo=<&+O5d>21?eZs4qX#QRG&GXA~Y(;kdD@Zg&bwuY{+7y4v&SA2i{%J}^=oKJ)K zKl=Fu#@>39G_Ke`T@xpDo8p%K`#h~*7*~3K\n" "Language-Team: JumpServer team\n" @@ -19,7 +19,7 @@ msgstr "" #: acls/models/base.py:25 acls/serializers/login_asset_acl.py:47 #: applications/models/application.py:11 assets/models/asset.py:142 -#: assets/models/base.py:249 assets/models/cluster.py:18 +#: assets/models/base.py:216 assets/models/cluster.py:18 #: 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:49 settings/models.py:29 @@ -40,7 +40,7 @@ msgid "Priority" msgstr "优先级" #: acls/models/base.py:28 assets/models/cmd_filter.py:54 -#: assets/models/user.py:123 +#: assets/models/user.py:246 msgid "1-100, the lower the value will be match first" msgstr "优先级可选范围为 1-100 (数值越小越优先)" @@ -54,16 +54,16 @@ msgstr "激活中" # msgstr "创建日期" #: acls/models/base.py:32 applications/models/application.py:24 #: assets/models/asset.py:147 assets/models/asset.py:223 -#: assets/models/base.py:254 assets/models/cluster.py:29 +#: assets/models/base.py:221 assets/models/cluster.py:29 #: assets/models/cmd_filter.py:23 assets/models/cmd_filter.py:64 #: assets/models/domain.py:22 assets/models/domain.py:56 #: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37 #: orgs/models.py:26 perms/models/base.py:57 settings/models.py:34 -#: terminal/models/storage.py:26 terminal/models/terminal.py:114 -#: tickets/models/ticket.py:73 users/models/group.py:16 -#: users/models/user.py:583 xpack/plugins/change_auth_plan/models.py:77 -#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:98 -#: xpack/plugins/gathered_user/models.py:26 +#: terminal/models/storage.py:29 terminal/models/storage.py:96 +#: terminal/models/terminal.py:114 tickets/models/ticket.py:73 +#: users/models/group.py:16 users/models/user.py:583 +#: xpack/plugins/change_auth_plan/models.py:77 xpack/plugins/cloud/models.py:35 +#: xpack/plugins/cloud/models.py:98 xpack/plugins/gathered_user/models.py:26 msgid "Comment" msgstr "备注" @@ -119,9 +119,8 @@ msgstr "系统用户" #: acls/models/login_asset_acl.py:22 #: applications/serializers/attrs/application_category/remote_app.py:33 -#: assets/models/asset.py:355 assets/models/authbook.py:27 -#: assets/models/gathered_user.py:14 assets/serializers/admin_user.py:34 -#: assets/serializers/asset_user.py:48 assets/serializers/asset_user.py:91 +#: assets/models/asset.py:372 assets/models/authbook.py:17 +#: assets/models/gathered_user.py:14 assets/serializers/admin_user.py:33 #: assets/serializers/system_user.py:202 audits/models.py:38 #: perms/models/asset_permission.py:99 templates/index.html:82 #: terminal/backends/command/models.py:19 @@ -158,7 +157,7 @@ msgstr "" #: acls/serializers/login_acl.py:30 acls/serializers/login_asset_acl.py:31 #: applications/serializers/attrs/application_type/mysql_workbench.py:18 #: assets/models/asset.py:183 assets/models/domain.py:52 -#: assets/serializers/asset_user.py:47 settings/serializers/settings.py:113 +#: settings/serializers/settings.py:113 #: users/templates/users/_granted_assets.html:26 #: users/templates/users/user_asset_permission.html:156 msgid "IP" @@ -178,13 +177,13 @@ msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " #: applications/serializers/attrs/application_type/custom.py:21 #: applications/serializers/attrs/application_type/mysql_workbench.py:30 #: applications/serializers/attrs/application_type/vmware_client.py:26 -#: assets/models/base.py:250 assets/models/gathered_user.py:15 +#: assets/models/base.py:217 assets/models/gathered_user.py:15 #: audits/models.py:100 authentication/forms.py:15 authentication/forms.py:17 #: ops/models/adhoc.py:148 users/forms/profile.py:31 users/models/user.py:548 #: users/templates/users/_select_user_modal.html:14 #: xpack/plugins/change_auth_plan/models.py:47 #: xpack/plugins/change_auth_plan/models.py:278 -#: xpack/plugins/cloud/serializers.py:65 +#: xpack/plugins/cloud/serializers.py:51 msgid "Username" msgstr "用户名" @@ -198,8 +197,7 @@ msgstr "" "10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64 (支持网域)" #: acls/serializers/login_asset_acl.py:35 assets/models/asset.py:184 -#: assets/serializers/asset_user.py:46 assets/serializers/gathered_user.py:23 -#: settings/serializers/settings.py:112 +#: assets/serializers/gathered_user.py:23 settings/serializers/settings.py:112 #: users/templates/users/_granted_assets.html:25 #: users/templates/users/user_asset_permission.html:157 msgid "Hostname" @@ -212,7 +210,7 @@ msgid "" msgstr "格式为逗号分隔的字符串, * 表示匹配所有. 可选的协议有: {}" #: acls/serializers/login_asset_acl.py:55 assets/models/asset.py:187 -#: assets/models/domain.py:54 assets/models/user.py:124 +#: assets/models/domain.py:54 assets/models/user.py:247 #: terminal/serializers/session.py:32 terminal/serializers/storage.py:69 msgid "Protocol" msgstr "协议" @@ -254,7 +252,7 @@ msgid "Category" msgstr "类别" #: applications/models/application.py:16 assets/models/cmd_filter.py:53 -#: perms/models/application_permission.py:23 +#: assets/models/user.py:245 perms/models/application_permission.py:23 #: perms/serializers/application/permission.py:17 #: perms/serializers/application/user_permission.py:34 #: terminal/models/storage.py:47 terminal/models/storage.py:108 @@ -296,7 +294,7 @@ msgstr "应用类型" #: assets/serializers/system_user.py:49 assets/serializers/system_user.py:177 #: assets/serializers/system_user.py:203 msgid "Login mode display" -msgstr "登录模式(显示名称)" +msgstr "认证方式(显示名称)" #: applications/serializers/attrs/application_category/cloud.py:9 #: assets/models/cluster.py:40 @@ -304,7 +302,7 @@ msgid "Cluster" msgstr "集群" #: applications/serializers/attrs/application_category/db.py:11 -#: ops/models/adhoc.py:146 xpack/plugins/cloud/serializers.py:63 +#: ops/models/adhoc.py:146 xpack/plugins/cloud/serializers.py:49 msgid "Host" msgstr "主机" @@ -314,7 +312,7 @@ msgstr "主机" #: applications/serializers/attrs/application_type/oracle.py:11 #: applications/serializers/attrs/application_type/pgsql.py:11 #: assets/models/asset.py:188 assets/models/domain.py:53 -#: xpack/plugins/cloud/serializers.py:64 +#: xpack/plugins/cloud/serializers.py:50 msgid "Port" msgstr "端口" @@ -334,8 +332,8 @@ msgstr "目标URL" #: applications/serializers/attrs/application_type/custom.py:25 #: applications/serializers/attrs/application_type/mysql_workbench.py:34 #: applications/serializers/attrs/application_type/vmware_client.py:30 -#: assets/models/base.py:251 assets/serializers/asset_user.py:78 -#: audits/signals_handler.py:58 authentication/forms.py:22 +#: assets/models/base.py:218 audits/signals_handler.py:58 +#: authentication/forms.py:22 #: authentication/templates/authentication/login.html:164 #: settings/serializers/settings.py:94 users/forms/profile.py:21 #: users/templates/users/user_otp_check_password.html:13 @@ -344,7 +342,7 @@ msgstr "目标URL" #: 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/cloud/serializers.py:67 +#: xpack/plugins/cloud/serializers.py:53 msgid "Password" msgstr "密码" @@ -356,10 +354,6 @@ msgstr "运行参数" msgid "Target url" msgstr "目标URL" -#: assets/api/admin_user.py:50 -msgid "Deleted failed, There are related assets" -msgstr "删除失败,存在关联资产" - #: assets/api/domain.py:50 msgid "Number required" msgstr "需要为数字" @@ -376,38 +370,6 @@ msgstr "不能删除根节点 ({})" msgid "Deletion failed and the node contains assets" msgstr "删除失败,节点包含资产" -#: assets/backends/db.py:110 assets/models/user.py:307 audits/models.py:39 -#: perms/models/application_permission.py:31 -#: perms/models/asset_permission.py:101 templates/_nav.html:45 -#: terminal/backends/command/models.py:20 -#: terminal/backends/command/serializers.py:14 terminal/models/session.py:42 -#: users/templates/users/_granted_assets.html:27 -#: users/templates/users/user_asset_permission.html:42 -#: users/templates/users/user_asset_permission.html:76 -#: users/templates/users/user_asset_permission.html:159 -#: users/templates/users/user_database_app_permission.html:40 -#: users/templates/users/user_database_app_permission.html:67 -msgid "System user" -msgstr "系统用户" - -#: assets/backends/db.py:181 -msgid "System user(Dynamic)" -msgstr "系统用户(动态)" - -#: assets/backends/db.py:233 assets/models/asset.py:196 -#: assets/models/cluster.py:19 assets/models/user.py:67 templates/_nav.html:44 -#: xpack/plugins/cloud/models.py:92 xpack/plugins/cloud/serializers.py:181 -msgid "Admin user" -msgstr "管理用户" - -#: assets/backends/db.py:254 -msgid "Could not remove asset admin user" -msgstr "不能移除资产的管理用户账号" - -#: assets/backends/db.py:318 -msgid "Latest version could not be delete" -msgstr "最新版本的不能被删除" - #: assets/models/asset.py:143 msgid "Base" msgstr "基础" @@ -416,7 +378,7 @@ msgstr "基础" msgid "Charset" msgstr "编码" -#: assets/models/asset.py:145 assets/serializers/asset.py:171 +#: assets/models/asset.py:145 assets/serializers/asset.py:180 #: tickets/models/ticket.py:40 msgid "Meta" msgstr "元数据" @@ -426,16 +388,16 @@ msgid "Internal" msgstr "内部的" #: assets/models/asset.py:166 assets/models/asset.py:190 -#: assets/serializers/asset.py:66 perms/serializers/asset/user_permission.py:43 +#: assets/serializers/asset.py:65 perms/serializers/asset/user_permission.py:43 msgid "Platform" msgstr "系统平台" -#: assets/models/asset.py:189 assets/serializers/asset.py:68 +#: assets/models/asset.py:189 assets/serializers/asset.py:70 #: perms/serializers/asset/user_permission.py:41 msgid "Protocols" msgstr "协议组" -#: assets/models/asset.py:192 assets/models/user.py:119 +#: assets/models/asset.py:192 assets/models/user.py:237 #: perms/models/asset_permission.py:100 #: xpack/plugins/change_auth_plan/models.py:56 #: xpack/plugins/gathered_user/models.py:24 @@ -448,6 +410,13 @@ msgstr "节点" msgid "Is active" msgstr "激活" +#: assets/models/asset.py:196 assets/models/cluster.py:19 +#: assets/models/user.py:234 assets/models/user.py:370 +#: assets/serializers/asset.py:68 templates/_nav.html:44 +#: xpack/plugins/cloud/models.py:92 xpack/plugins/cloud/serializers.py:146 +msgid "Admin user" +msgstr "管理用户" + #: assets/models/asset.py:199 msgid "Public IP" msgstr "公网IP" @@ -516,7 +485,7 @@ msgstr "主机名原始" msgid "Labels" msgstr "标签管理" -#: assets/models/asset.py:221 assets/models/base.py:257 +#: assets/models/asset.py:221 assets/models/base.py:224 #: assets/models/cluster.py:28 assets/models/cmd_filter.py:26 #: assets/models/cmd_filter.py:67 assets/models/group.py:21 #: common/db/models.py:70 common/mixins/models.py:49 orgs/models.py:24 @@ -528,7 +497,7 @@ msgstr "创建者" # msgid "Created by" # msgstr "创建者" -#: assets/models/asset.py:222 assets/models/base.py:255 +#: assets/models/asset.py:222 assets/models/base.py:222 #: assets/models/cluster.py:26 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:72 common/mixins/models.py:50 @@ -538,35 +507,45 @@ msgstr "创建者" msgid "Date created" msgstr "创建日期" -#: assets/models/authbook.py:18 -msgid "Bulk delete deny" -msgstr "拒绝批量删除" +#: assets/models/authbook.py:18 assets/models/user.py:321 audits/models.py:39 +#: perms/models/application_permission.py:31 +#: perms/models/asset_permission.py:101 templates/_nav.html:45 +#: terminal/backends/command/models.py:20 +#: terminal/backends/command/serializers.py:14 terminal/models/session.py:42 +#: users/templates/users/_granted_assets.html:27 +#: users/templates/users/user_asset_permission.html:42 +#: users/templates/users/user_asset_permission.html:76 +#: users/templates/users/user_asset_permission.html:159 +#: users/templates/users/user_database_app_permission.html:40 +#: users/templates/users/user_database_app_permission.html:67 +msgid "System user" +msgstr "系统用户" -#: assets/models/authbook.py:28 -msgid "Latest version" -msgstr "最新版本" - -#: assets/models/authbook.py:29 +#: assets/models/authbook.py:20 msgid "Version" msgstr "版本" +#: assets/models/authbook.py:21 +msgid "Latest version" +msgstr "最新版本" + #: assets/models/authbook.py:38 msgid "AuthBook" -msgstr "" +msgstr "账号" -#: assets/models/base.py:252 xpack/plugins/change_auth_plan/models.py:72 +#: assets/models/base.py:219 xpack/plugins/change_auth_plan/models.py:72 #: xpack/plugins/change_auth_plan/models.py:197 #: xpack/plugins/change_auth_plan/models.py:292 msgid "SSH private key" msgstr "SSH密钥" -#: assets/models/base.py:253 xpack/plugins/change_auth_plan/models.py:75 +#: assets/models/base.py:220 xpack/plugins/change_auth_plan/models.py:75 #: xpack/plugins/change_auth_plan/models.py:193 #: xpack/plugins/change_auth_plan/models.py:288 msgid "SSH public key" msgstr "SSH公钥" -#: assets/models/base.py:256 assets/models/gathered_user.py:20 +#: assets/models/base.py:223 assets/models/gathered_user.py:20 #: common/db/models.py:73 common/mixins/models.py:51 ops/models/adhoc.py:39 #: orgs/models.py:421 msgid "Date updated" @@ -614,7 +593,7 @@ msgstr "系统" msgid "Default Cluster" msgstr "默认Cluster" -#: assets/models/cmd_filter.py:33 assets/models/user.py:129 +#: assets/models/cmd_filter.py:33 assets/models/user.py:252 msgid "Command filter" msgstr "命令过滤器" @@ -715,65 +694,65 @@ msgstr "ssh私钥" #: users/templates/users/user_asset_permission.html:41 #: users/templates/users/user_asset_permission.html:73 #: users/templates/users/user_asset_permission.html:158 -#: xpack/plugins/cloud/models.py:89 xpack/plugins/cloud/serializers.py:182 +#: xpack/plugins/cloud/models.py:89 xpack/plugins/cloud/serializers.py:147 msgid "Node" msgstr "节点" -#: assets/models/user.py:115 -msgid "Automatic login" -msgstr "自动登录" +#: assets/models/user.py:227 +msgid "Automatic managed" +msgstr "托管密码" -#: assets/models/user.py:116 -msgid "Manually login" -msgstr "手动登录" +#: assets/models/user.py:228 +msgid "Manually input" +msgstr "手动输入" -#: assets/models/user.py:118 +#: assets/models/user.py:236 msgid "Username same with user" msgstr "用户名与用户相同" -#: assets/models/user.py:120 assets/serializers/domain.py:30 +#: assets/models/user.py:239 assets/serializers/domain.py:30 #: templates/_nav.html:39 xpack/plugins/change_auth_plan/models.py:52 msgid "Assets" msgstr "资产" -#: assets/models/user.py:121 templates/_nav.html:17 +#: assets/models/user.py:243 templates/_nav.html:17 #: users/views/profile/password.py:43 users/views/profile/pubkey.py:37 msgid "Users" msgstr "用户管理" -#: assets/models/user.py:122 +#: assets/models/user.py:244 msgid "User groups" msgstr "用户组" -#: assets/models/user.py:125 +#: assets/models/user.py:248 msgid "Auto push" msgstr "自动推送" -#: assets/models/user.py:126 +#: assets/models/user.py:249 msgid "Sudo" msgstr "Sudo" -#: assets/models/user.py:127 +#: assets/models/user.py:250 msgid "Shell" msgstr "Shell" -#: assets/models/user.py:128 +#: assets/models/user.py:251 msgid "Login mode" -msgstr "登录模式" +msgstr "认证方式" -#: assets/models/user.py:130 +#: assets/models/user.py:253 msgid "SFTP Root" msgstr "SFTP根路径" -#: assets/models/user.py:131 authentication/models.py:95 +#: assets/models/user.py:254 authentication/models.py:95 msgid "Token" msgstr "" -#: assets/models/user.py:132 +#: assets/models/user.py:255 msgid "Home" msgstr "家目录" -#: assets/models/user.py:133 +#: assets/models/user.py:256 msgid "System groups" msgstr "用户组" @@ -794,23 +773,19 @@ msgstr "可连接" msgid "Unknown" msgstr "未知" -#: assets/serializers/asset.py:23 +#: assets/serializers/asset.py:22 msgid "Protocol format should {}/{}" msgstr "协议格式 {}/{}" -#: assets/serializers/asset.py:40 +#: assets/serializers/asset.py:39 msgid "Protocol duplicate: {}" msgstr "协议重复: {}" -#: assets/serializers/asset.py:69 +#: assets/serializers/asset.py:71 msgid "Domain name" msgstr "网域名称" -#: assets/serializers/asset.py:70 -msgid "Admin user name" -msgstr "管理用户名称" - -#: assets/serializers/asset.py:71 perms/serializers/asset/permission.py:49 +#: assets/serializers/asset.py:72 perms/serializers/asset/permission.py:49 msgid "Nodes name" msgstr "节点名称" @@ -822,33 +797,10 @@ msgstr "硬件信息" msgid "Org name" msgstr "组织名称" -#: assets/serializers/asset.py:162 assets/serializers/asset.py:194 +#: assets/serializers/asset.py:171 assets/serializers/asset.py:203 msgid "Connectivity" msgstr "连接" -#: assets/serializers/asset_user.py:45 -#: authentication/templates/authentication/_access_key_modal.html:30 -#: users/serializers/group.py:37 -msgid "ID" -msgstr "ID" - -#: assets/serializers/asset_user.py:49 -msgid "Backend" -msgstr "后端" - -#: assets/serializers/asset_user.py:50 users/models/user.py:596 -msgid "Source" -msgstr "来源" - -#: assets/serializers/asset_user.py:82 users/forms/profile.py:160 -#: users/models/user.py:580 users/templates/users/user_password_update.html:48 -msgid "Public key" -msgstr "SSH公钥" - -#: assets/serializers/asset_user.py:86 users/models/user.py:577 -msgid "Private key" -msgstr "ssh私钥" - #: assets/serializers/base.py:47 msgid "private key invalid" msgstr "密钥不合法" @@ -1124,7 +1076,7 @@ msgstr "启用" msgid "-" msgstr "" -#: audits/models.py:97 xpack/plugins/cloud/const.py:27 +#: audits/models.py:97 xpack/plugins/cloud/const.py:25 msgid "Failed" msgstr "失败" @@ -1455,6 +1407,11 @@ msgstr "使用api key签名请求头,每个请求的头部是不一样的" msgid "docs" msgstr "文档" +#: authentication/templates/authentication/_access_key_modal.html:30 +#: users/serializers/group.py:37 +msgid "ID" +msgstr "ID" + #: authentication/templates/authentication/_access_key_modal.html:31 msgid "Secret" msgstr "秘钥" @@ -3927,6 +3884,11 @@ msgstr "不能和原来的密钥相同" msgid "Not a valid ssh public key" msgstr "SSH密钥不合法" +#: users/forms/profile.py:160 users/models/user.py:580 +#: users/templates/users/user_password_update.html:48 +msgid "Public key" +msgstr "SSH公钥" + #: users/models/user.py:174 msgid "System administrator" msgstr "系统管理员" @@ -3951,6 +3913,14 @@ msgstr "头像" msgid "Wechat" msgstr "微信" +#: users/models/user.py:577 +msgid "Private key" +msgstr "ssh私钥" + +#: users/models/user.py:596 +msgid "Source" +msgstr "来源" + #: users/models/user.py:600 msgid "Date password last updated" msgstr "最后更新密码日期" @@ -4061,7 +4031,7 @@ msgid "Security token validation" msgstr "安全令牌验证" #: users/templates/users/_base_otp.html:14 xpack/plugins/cloud/models.py:78 -#: xpack/plugins/cloud/serializers.py:180 +#: xpack/plugins/cloud/serializers.py:145 msgid "Account" msgstr "账户" @@ -4762,39 +4732,31 @@ msgstr "" msgid "Nutanix" msgstr "" -#: xpack/plugins/cloud/const.py:17 -msgid "Huawei Private Cloud" -msgstr "华为私有云" - -#: xpack/plugins/cloud/const.py:18 -msgid "Qingyun Private Cloud" -msgstr "" - -#: xpack/plugins/cloud/const.py:22 +#: xpack/plugins/cloud/const.py:20 msgid "Instance name" msgstr "实例名称" -#: xpack/plugins/cloud/const.py:23 +#: xpack/plugins/cloud/const.py:21 msgid "Instance name and Partial IP" msgstr "实例名称和部分IP" -#: xpack/plugins/cloud/const.py:28 +#: xpack/plugins/cloud/const.py:26 msgid "Succeed" msgstr "成功" -#: xpack/plugins/cloud/const.py:32 +#: xpack/plugins/cloud/const.py:30 msgid "Unsync" msgstr "未同步" -#: xpack/plugins/cloud/const.py:33 +#: xpack/plugins/cloud/const.py:31 msgid "New Sync" msgstr "新同步" -#: xpack/plugins/cloud/const.py:34 +#: xpack/plugins/cloud/const.py:32 msgid "Synced" msgstr "已同步" -#: xpack/plugins/cloud/const.py:35 +#: xpack/plugins/cloud/const.py:33 msgid "Released" msgstr "已释放" @@ -4810,7 +4772,7 @@ msgstr "云服务商" msgid "Cloud account" msgstr "云账号" -#: xpack/plugins/cloud/models.py:81 xpack/plugins/cloud/serializers.py:161 +#: xpack/plugins/cloud/models.py:81 xpack/plugins/cloud/serializers.py:126 msgid "Regions" msgstr "地域" @@ -4818,7 +4780,7 @@ msgstr "地域" msgid "Hostname strategy" msgstr "主机名策略" -#: xpack/plugins/cloud/models.py:95 xpack/plugins/cloud/serializers.py:184 +#: xpack/plugins/cloud/models.py:95 xpack/plugins/cloud/serializers.py:149 msgid "Always update" msgstr "总是更新" @@ -5010,28 +4972,20 @@ msgstr "" msgid "Subscription ID" msgstr "" -#: xpack/plugins/cloud/serializers.py:49 -msgid "This field is required" -msgstr "这个字段是必填项" - -#: xpack/plugins/cloud/serializers.py:83 xpack/plugins/cloud/serializers.py:87 -msgid "API Endpoint" -msgstr "API 端点" - -#: xpack/plugins/cloud/serializers.py:159 +#: xpack/plugins/cloud/serializers.py:124 msgid "History count" msgstr "执行次数" -#: xpack/plugins/cloud/serializers.py:160 +#: xpack/plugins/cloud/serializers.py:125 msgid "Instance count" msgstr "实例个数" -#: xpack/plugins/cloud/serializers.py:183 +#: xpack/plugins/cloud/serializers.py:148 #: xpack/plugins/gathered_user/serializers.py:20 msgid "Periodic display" msgstr "定时执行" -#: xpack/plugins/cloud/utils.py:65 +#: xpack/plugins/cloud/utils.py:64 msgid "Account unavailable" msgstr "账户无效" @@ -5118,3 +5072,36 @@ msgstr "旗舰版" #: xpack/plugins/license/models.py:77 msgid "Community edition" msgstr "社区版" + +#~ msgid "Deleted failed, There are related assets" +#~ msgstr "删除失败,存在关联资产" + +#~ msgid "System user(Dynamic)" +#~ msgstr "系统用户(动态)" + +#~ msgid "Could not remove asset admin user" +#~ msgstr "不能移除资产的管理用户账号" + +#~ msgid "Latest version could not be delete" +#~ msgstr "最新版本的不能被删除" + +#~ msgid "Bulk delete deny" +#~ msgstr "拒绝批量删除" + +#~ msgid "Admin user name" +#~ msgstr "管理用户名称" + +#~ msgid "Backend" +#~ msgstr "后端" + +#~ msgid "Huawei Private Cloud" +#~ msgstr "华为私有云" + +#~ msgid "This field is required" +#~ msgstr "这个字段是必填项" + +#~ msgid "API Endpoint" +#~ msgstr "API 端点" + +#~ msgid "Terminal command alert" +#~ msgstr "终端命令告警" diff --git a/apps/ops/inventory.py b/apps/ops/inventory.py index f3de03210..fa077e903 100644 --- a/apps/ops/inventory.py +++ b/apps/ops/inventory.py @@ -31,7 +31,11 @@ class JMSBaseInventory(BaseInventory): if run_as_admin: info.update(asset.get_auth_info()) if asset.is_unixlike(): - info["become"] = asset.admin_user.become_info + info["become"] = { + "method": 'sudo', + "user": 'root', + "pass": '' + } if asset.is_windows(): info["vars"].update({ "ansible_connection": "ssh", @@ -103,8 +107,6 @@ class JMSInventory(JMSBaseInventory): super().__init__(host_list=host_list) def get_run_user_info(self, host): - from assets.backends import AssetUserManager - if not self.run_as and not self.system_user: return {} @@ -112,17 +114,12 @@ class JMSInventory(JMSBaseInventory): asset = self.assets.filter(id=asset_id).first() if not asset: logger.error('Host not found: ', asset_id) + return {} if self.system_user: self.system_user.load_asset_special_auth(asset=asset, username=self.run_as) return self.system_user._to_secret_json() - - try: - manager = AssetUserManager() - run_user = manager.get_latest(username=self.run_as, asset=asset, prefer='system_user') - return run_user._to_secret_json() - except Exception as e: - logger.error(e, exc_info=True) + else: return {} diff --git a/apps/ops/models/adhoc.py b/apps/ops/models/adhoc.py index 63050e436..083d40d4d 100644 --- a/apps/ops/models/adhoc.py +++ b/apps/ops/models/adhoc.py @@ -286,18 +286,12 @@ class AdHocExecution(OrgModelMixin): raw = '' try: - date_start_s = timezone.now().now().strftime('%Y-%m-%d %H:%M:%S') - print(_("{} Start task: {}").format(date_start_s, self.task.name)) raw, summary = self.start_runner() except Exception as e: logger.error(e, exc_info=True) raw = {"dark": {"all": str(e)}, "contacted": []} finally: self.clean_up(summary, time_start) - date_end = timezone.now().now() - date_end_s = date_end.strftime('%Y-%m-%d %H:%M:%S') - print(_("{} Task finish").format(date_end_s)) - print('.\n\n.') return raw, summary def clean_up(self, summary, time_start): diff --git a/apps/orgs/models.py b/apps/orgs/models.py index 72f47e1e3..9eb2eb9ad 100644 --- a/apps/orgs/models.py +++ b/apps/orgs/models.py @@ -9,10 +9,10 @@ from django.utils.translation import ugettext_lazy as _ from common.utils import lazyproperty, settings from common.const import choices -from common.db.models import ChoiceSet +from common.db.models import TextChoices -class ROLE(ChoiceSet): +class ROLE(TextChoices): ADMIN = choices.ADMIN, _('Organization administrator') AUDITOR = choices.AUDITOR, _("Organization auditor") USER = choices.USER, _('User') diff --git a/apps/orgs/serializers.py b/apps/orgs/serializers.py index 1a6aca0b0..28b59a705 100644 --- a/apps/orgs/serializers.py +++ b/apps/orgs/serializers.py @@ -4,7 +4,6 @@ from rest_framework import serializers from django.utils.translation import ugettext_lazy as _ from users.models.user import User -from common.drf.serializers import AdaptedBulkListSerializer from common.drf.serializers import BulkModelSerializer from common.db.models import concated_display as display from .models import Organization, OrganizationMember, ROLE @@ -35,7 +34,6 @@ class OrgSerializer(ModelSerializer): class Meta: model = Organization - list_serializer_class = AdaptedBulkListSerializer fields_mini = ['id', 'name'] fields_small = fields_mini + [ 'resource_statistics', diff --git a/apps/orgs/signals_handler/common.py b/apps/orgs/signals_handler/common.py index 942c82cbb..c7aee3c32 100644 --- a/apps/orgs/signals_handler/common.py +++ b/apps/orgs/signals_handler/common.py @@ -36,8 +36,8 @@ class OrgsMappingForMemoryPubSub(LazyObject): orgs_mapping_for_memory_pub_sub = OrgsMappingForMemoryPubSub() -def expire_orgs_mapping_for_memory(): - orgs_mapping_for_memory_pub_sub.publish('expire_orgs_mapping') +def expire_orgs_mapping_for_memory(org_id): + orgs_mapping_for_memory_pub_sub.publish(str(org_id)) @receiver(django_ready) @@ -54,7 +54,7 @@ def subscribe_orgs_mapping_expire(sender, **kwargs): if message['data'] == b'error': raise ValueError Organization.expire_orgs_mapping() - logger.debug('Expire orgs mapping') + logger.debug('Expire orgs mapping: ' + str(message['data'])) except Exception as e: logger.exception(f'subscribe_orgs_mapping_expire: {e}') Organization.expire_orgs_mapping() @@ -65,22 +65,21 @@ def subscribe_orgs_mapping_expire(sender, **kwargs): @receiver(post_save, sender=Organization) -def on_org_create_or_update(sender, instance=None, created=False, **kwargs): +def on_org_create_or_update(sender, instance, created=False, **kwargs): # 必须放到最开始, 因为下面调用Node.save方法时会获取当前组织的org_id(即instance.org_id), 如果不过期会找不到 - expire_orgs_mapping_for_memory() - if instance: - old_org = get_current_org() - set_current_org(instance) - node_root = Node.org_root() - if node_root.value != instance.name: - node_root.value = instance.name - node_root.save() - set_current_org(old_org) + expire_orgs_mapping_for_memory(instance.id) + old_org = get_current_org() + set_current_org(instance) + node_root = Node.org_root() + if node_root.value != instance.name: + node_root.value = instance.name + node_root.save() + set_current_org(old_org) -@receiver(post_delete, sender=Organization) -def on_org_delete(sender, **kwargs): - expire_orgs_mapping_for_memory() +@receiver(pre_delete, sender=Organization) +def on_org_delete(sender, instance, **kwargs): + expire_orgs_mapping_for_memory(instance.id) @receiver(pre_delete, sender=Organization) diff --git a/apps/perms/models/asset_permission.py b/apps/perms/models/asset_permission.py index 822cc363f..f763bee10 100644 --- a/apps/perms/models/asset_permission.py +++ b/apps/perms/models/asset_permission.py @@ -4,7 +4,7 @@ from functools import reduce from django.utils.translation import ugettext_lazy as _ from django.db.models import F -from common.db.models import ChoiceSet +from common.db.models import TextChoices from orgs.mixins.models import OrgModelMixin from common.db import models from common.utils import lazyproperty @@ -165,7 +165,7 @@ class AssetPermission(BasePermission): class UserAssetGrantedTreeNodeRelation(OrgModelMixin, FamilyMixin, models.JMSBaseModel): - class NodeFrom(ChoiceSet): + class NodeFrom(TextChoices): granted = 'granted', 'Direct node granted' child = 'child', 'Have children node' asset = 'asset', 'Direct asset granted' diff --git a/apps/perms/serializers/application/permission_relation.py b/apps/perms/serializers/application/permission_relation.py index 2ec416a66..941b03127 100644 --- a/apps/perms/serializers/application/permission_relation.py +++ b/apps/perms/serializers/application/permission_relation.py @@ -3,7 +3,6 @@ from rest_framework import serializers from common.mixins import BulkSerializerMixin -from common.drf.serializers import AdaptedBulkListSerializer from perms.models import ApplicationPermission __all__ = [ @@ -24,14 +23,11 @@ class RelationMixin(BulkSerializerMixin, serializers.Serializer): fields.extend(['applicationpermission', "applicationpermission_display"]) return fields - class Meta: - list_serializer_class = AdaptedBulkListSerializer - class ApplicationPermissionUserRelationSerializer(RelationMixin, serializers.ModelSerializer): user_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = ApplicationPermission.users.through fields = [ 'id', 'user', 'user_display', @@ -41,7 +37,7 @@ class ApplicationPermissionUserRelationSerializer(RelationMixin, serializers.Mod class ApplicationPermissionUserGroupRelationSerializer(RelationMixin, serializers.ModelSerializer): usergroup_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = ApplicationPermission.user_groups.through fields = [ 'id', 'usergroup', "usergroup_display", @@ -51,7 +47,7 @@ class ApplicationPermissionUserGroupRelationSerializer(RelationMixin, serializer class ApplicationPermissionApplicationRelationSerializer(RelationMixin, serializers.ModelSerializer): application_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = ApplicationPermission.applications.through fields = [ 'id', "application", "application_display", @@ -61,7 +57,7 @@ class ApplicationPermissionApplicationRelationSerializer(RelationMixin, serializ class ApplicationPermissionSystemUserRelationSerializer(RelationMixin, serializers.ModelSerializer): systemuser_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = ApplicationPermission.system_users.through fields = [ 'id', 'systemuser', 'systemuser_display' diff --git a/apps/perms/serializers/asset/permission_relation.py b/apps/perms/serializers/asset/permission_relation.py index f98c4bbf0..ee1e05112 100644 --- a/apps/perms/serializers/asset/permission_relation.py +++ b/apps/perms/serializers/asset/permission_relation.py @@ -3,7 +3,6 @@ from rest_framework import serializers from common.mixins import BulkSerializerMixin -from common.drf.serializers import AdaptedBulkListSerializer from assets.models import Asset, Node from perms.models import AssetPermission from users.models import User @@ -37,14 +36,11 @@ class RelationMixin(BulkSerializerMixin, serializers.Serializer): fields.extend(['assetpermission', "assetpermission_display"]) return fields - class Meta: - list_serializer_class = AdaptedBulkListSerializer - class AssetPermissionUserRelationSerializer(RelationMixin, serializers.ModelSerializer): user_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = AssetPermission.users.through fields = [ 'id', 'user', 'user_display', @@ -66,7 +62,7 @@ class AssetPermissionAllUserSerializer(serializers.Serializer): class AssetPermissionUserGroupRelationSerializer(RelationMixin, serializers.ModelSerializer): usergroup_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = AssetPermission.user_groups.through fields = [ 'id', 'usergroup', "usergroup_display", @@ -76,7 +72,7 @@ class AssetPermissionUserGroupRelationSerializer(RelationMixin, serializers.Mode class AssetPermissionAssetRelationSerializer(RelationMixin, serializers.ModelSerializer): asset_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = AssetPermission.assets.through fields = [ 'id', "asset", "asset_display", @@ -98,7 +94,7 @@ class AssetPermissionAllAssetSerializer(serializers.Serializer): class AssetPermissionNodeRelationSerializer(RelationMixin, serializers.ModelSerializer): node_display = serializers.CharField(source='node.full_value', read_only=True) - class Meta(RelationMixin.Meta): + class Meta: model = AssetPermission.nodes.through fields = [ 'id', 'node', "node_display", @@ -108,7 +104,7 @@ class AssetPermissionNodeRelationSerializer(RelationMixin, serializers.ModelSeri class AssetPermissionSystemUserRelationSerializer(RelationMixin, serializers.ModelSerializer): systemuser_display = serializers.ReadOnlyField() - class Meta(RelationMixin.Meta): + class Meta: model = AssetPermission.system_users.through fields = [ 'id', 'systemuser', 'systemuser_display' diff --git a/apps/terminal/models/session.py b/apps/terminal/models/session.py index b3202a9d9..546aabb16 100644 --- a/apps/terminal/models/session.py +++ b/apps/terminal/models/session.py @@ -13,17 +13,17 @@ from django.core.cache import cache from assets.models import Asset from users.models import User from orgs.mixins.models import OrgModelMixin -from common.db.models import ChoiceSet +from common.db.models import TextChoices from ..backends import get_multi_command_storage class Session(OrgModelMixin): - class LOGIN_FROM(ChoiceSet): + class LOGIN_FROM(TextChoices): ST = 'ST', 'SSH Terminal' RT = 'RT', 'RDP Terminal' WT = 'WT', 'Web Terminal' - class PROTOCOL(ChoiceSet): + class PROTOCOL(TextChoices): SSH = 'ssh', 'ssh' RDP = 'rdp', 'rdp' VNC = 'vnc', 'vnc' diff --git a/apps/terminal/serializers/session.py b/apps/terminal/serializers/session.py index 854bfd240..bccb108f1 100644 --- a/apps/terminal/serializers/session.py +++ b/apps/terminal/serializers/session.py @@ -2,7 +2,6 @@ from rest_framework import serializers from django.utils.translation import ugettext_lazy as _ from orgs.mixins.serializers import BulkOrgResourceModelSerializer -from common.drf.serializers import AdaptedBulkListSerializer from ..models import Session __all__ = [ @@ -16,7 +15,6 @@ class SessionSerializer(BulkOrgResourceModelSerializer): class Meta: model = Session - list_serializer_class = AdaptedBulkListSerializer fields_mini = ["id"] fields_small = fields_mini + [ "user", "asset", "system_user", diff --git a/apps/terminal/serializers/terminal.py b/apps/terminal/serializers/terminal.py index 44cb2a3a5..5f813845f 100644 --- a/apps/terminal/serializers/terminal.py +++ b/apps/terminal/serializers/terminal.py @@ -85,7 +85,6 @@ class TaskSerializer(BulkModelSerializer): class Meta: fields = '__all__' model = Task - list_serializer_class = AdaptedBulkListSerializer ref_name = 'TerminalTaskSerializer' diff --git a/apps/users/models/user.py b/apps/users/models/user.py index f362e60ac..086bf2136 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -23,7 +23,7 @@ from orgs.models import OrganizationMember, Organization from common.utils import date_expired_default, get_logger, lazyproperty, random_string from common import fields from common.const import choices -from common.db.models import ChoiceSet +from common.db.models import TextChoices from users.exceptions import MFANotEnabled from ..signals import post_user_change_password @@ -170,7 +170,7 @@ class AuthMixin: class RoleMixin: - class ROLE(ChoiceSet): + class ROLE(TextChoices): ADMIN = choices.ADMIN, _('System administrator') AUDITOR = choices.AUDITOR, _('System auditor') USER = choices.USER, _('User') diff --git a/apps/users/serializers/group.py b/apps/users/serializers/group.py index 41d2282a8..1638a5b91 100644 --- a/apps/users/serializers/group.py +++ b/apps/users/serializers/group.py @@ -4,7 +4,6 @@ from django.utils.translation import ugettext_lazy as _ from django.db.models import Prefetch from rest_framework import serializers -from common.drf.serializers import AdaptedBulkListSerializer from orgs.mixins.serializers import BulkOrgResourceModelSerializer from django.db.models import Count from ..models import User, UserGroup @@ -23,7 +22,6 @@ class UserGroupSerializer(BulkOrgResourceModelSerializer): class Meta: model = UserGroup - list_serializer_class = AdaptedBulkListSerializer fields_mini = ['id', 'name'] fields_small = fields_mini + [ 'comment', 'date_created', 'created_by' diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 94d6f9ea7..d8e34784e 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -113,3 +113,4 @@ termcolor==1.1.0 azure-identity==1.5.0 azure-mgmt-subscription==1.0.0 qingcloud-sdk==1.2.12 +django-simple-history==3.0.0 \ No newline at end of file diff --git a/utils/generate_fake_data/resources/assets.py b/utils/generate_fake_data/resources/assets.py index c6817e440..3aa11cc99 100644 --- a/utils/generate_fake_data/resources/assets.py +++ b/utils/generate_fake_data/resources/assets.py @@ -28,7 +28,7 @@ class AdminUsersGenerator(FakeDataGenerator): class SystemUsersGenerator(FakeDataGenerator): def do_generate(self, batch, batch_size): system_users = [] - protocols = list(dict(SystemUser.PROTOCOL_CHOICES).keys()) + protocols = list(dict(SystemUser.Protocol.choices).keys()) for i in batch: username = forgery_py.internet.user_name(True) protocol = random.choice(protocols) From c532c361c0a83c288a5ed1d830ab0a568e2aaf5f Mon Sep 17 00:00:00 2001 From: Z000000 <373936214@qq.com> Date: Thu, 8 Jul 2021 14:32:03 +0800 Subject: [PATCH 23/26] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=9B=B4=E5=B9=BF=E6=B3=9B=E7=9A=84=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=A6=82=E6=80=9D=E7=A7=91=E7=AD=89=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=EF=BC=8Cdocker=E7=AD=89=20(#6356)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Update README (#6182) * feat: Update README * feat: Update README * Update README.md * feat: update README * Update README.md * docs: 修改英文版本 * Update README.md * 批量命令支持更广泛的设备如思科等网络设备,docker等 Co-authored-by: Jiangjie.Bai <32935519+BaiJiangJie@users.noreply.github.com> Co-authored-by: 老广 --- README.md | 288 ++++++------------------------------- README_EN.md | 283 ++++-------------------------------- apps/ops/ansible/runner.py | 2 +- apps/ops/models/command.py | 2 +- 4 files changed, 72 insertions(+), 503 deletions(-) diff --git a/README.md b/README.md index 58ba7899c..5805573bf 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,28 @@ -# JumpServer 多云环境下更好用的堡垒机 +

JumpServer

+

多云环境下更好用的堡垒机

-[![License](https://shields.io/github/license/jumpserver/jumpserver)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) -[![Release Downloads](https://shields.io/github/downloads/jumpserver/jumpserver/total)](https://github.com/jumpserver/jumpserver/releases) -[![Docker Pulls](https://img.shields.io/docker/pulls/jumpserver/jms_all.svg)](https://hub.docker.com/u/jumpserver) +

+ License: GPL v2 +  release + Codacy + Stars +

+-------------------------- - [ENGLISH](https://github.com/jumpserver/jumpserver/blob/master/README_EN.md) -|《新一代堡垒机建设指南》开放下载| -|------------------| -|本白皮书由JumpServer开源项目组编著而成。编写团队从企业实践和技术演进的双重视角出发,结合自身在身份与访问安全领域长期研发及落地经验组织撰写,同时积极听取行业内专家的意见和建议,在此基础上完成了本白皮书的编写任务。下载链接:https://jinshuju.net/f/E0qAl8| - --------------------------- JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 规范的运维安全审计系统。 -JumpServer 使用 Python / Django 为主进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。 +JumpServer 使用 Python 开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。 JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。 -改变世界,从一点点开始。 +改变世界,从一点点开始 ... -## 特色优势 +### 特色优势 - 开源: 零门槛,线上快速获取和安装; - 分布式: 轻松支持大规模并发访问; @@ -33,247 +33,28 @@ JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向 - 多应用支持: 数据库,Windows远程应用,Kubernetes。 -## 功能列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
身份认证
Authentication
登录认证资源统一登录与认证
LDAP/AD 认证
RADIUS 认证
OpenID 认证(实现单点登录)
CAS 认证 (实现单点登录)
钉钉认证 (扫码登录)
企业微信认证 (扫码登录)
MFA认证MFA 二次认证(Google Authenticator)
RADIUS 二次认证
登录复核用户登录行为受管理员的监管与控制:small_orange_diamond:
登录限制用户登录来源 IP 受管理员控制(支持黑/白名单)
账号管理
Account
集中账号管理用户管理
系统用户管理
统一密码资产密码托管
自动生成密码
自动推送密码
密码过期设置
批量改密定期批量改密:small_orange_diamond:
多种密码策略:small_orange_diamond:
多云纳管 对私有云、公有云资产自动统一纳管:small_orange_diamond:
收集用户 自定义任务定期收集主机用户:small_orange_diamond:
密码匣子 统一对资产主机的用户密码进行查看、更新、测试操作:small_orange_diamond:
授权控制
Authorization
多维授权对用户、用户组、资产、资产节点、应用以及系统用户进行授权
资产授权资产以树状结构进行展示
资产和节点均可灵活授权
节点内资产自动继承授权
子节点自动继承父节点授权
应用授权实现更细粒度的应用级授权
MySQL 数据库应用、RemoteApp 远程应用:small_orange_diamond:
动作授权实现对授权资产的文件上传、下载以及连接动作的控制
时间授权实现对授权资源使用时间段的限制
特权指令实现对特权指令的使用(支持黑白名单)
命令过滤实现对授权系统用户所执行的命令进行控制
文件传输SFTP 文件上传/下载
文件管理实现 Web SFTP 文件管理
工单管理支持对用户登录请求行为进行控制:small_orange_diamond:
访问控制登录资产复核(通过 SSH/Telnet 协议登录资产):small_orange_diamond:
命令执行复核:small_orange_diamond:
组织管理实现多租户管理与权限隔离:small_orange_diamond:
安全审计
Audit
操作审计用户操作行为审计
会话审计在线会话内容监控
在线会话内容审计
历史会话内容审计
录像审计支持对 Linux、Windows 等资产操作的录像进行回放审计
支持对 RemoteApp:small_orange_diamond:、MySQL 等应用操作的录像进行回放审计
指令审计支持对资产和应用等操作的命令进行审计
文件传输可对文件的上传、下载记录进行审计
数据库审计
Database
连接方式命令方式
Web UI方式 :small_orange_diamond:
支持的数据库MySQL
Oracle :small_orange_diamond:
MariaDB :small_orange_diamond:
PostgreSQL :small_orange_diamond:
功能亮点语法高亮
SQL格式化
支持快捷键
支持选中执行
SQL历史查询
支持页面创建 DB, TABLE
会话审计命令记录
录像回放
- -**说明**: 带 :small_orange_diamond: 后缀的是 X-PACK 插件有的功能 - -## 快速开始 +### 快速开始 - [极速安装](https://docs.jumpserver.org/zh/master/install/setup_by_fast/) - [完整文档](https://docs.jumpserver.org) - [演示视频](https://www.bilibili.com/video/BV1ZV41127GB) - [手动安装](https://github.com/jumpserver/installer) -## 组件项目 +### 组件项目 - [Lina](https://github.com/jumpserver/lina) JumpServer Web UI 项目 - [Luna](https://github.com/jumpserver/luna) JumpServer Web Terminal 项目 - [KoKo](https://github.com/jumpserver/koko) JumpServer 字符协议 Connector 项目,替代原来 Python 版本的 [Coco](https://github.com/jumpserver/coco) - [Lion](https://github.com/jumpserver/lion-release) JumpServer 图形协议 Connector 项目,依赖 [Apache Guacamole](https://guacamole.apache.org/) -## 贡献 +### 社区 + +如果您在使用过程中有任何疑问或对建议,欢迎提交 [GitHub Issue](https://github.com/jumpserver/jumpserver/issues/new/choose) 或加入到我们的社区当中进行进一步交流沟通。 + +#### 微信交流群 + +微信群二维码 + +### 贡献 如果有你好的想法创意,或者帮助我们修复了 Bug, 欢迎提交 Pull Request 感谢以下贡献者,让 JumpServer 更加完善 @@ -282,16 +63,29 @@ JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向 + + + -## 致谢 + + + + + + + + + + +### 致谢 - [Apache Guacamole](https://guacamole.apache.org/) Web页面连接 RDP, SSH, VNC协议设备,JumpServer 图形化组件 Lion 依赖 - [OmniDB](https://omnidb.org/) Web页面连接使用数据库,JumpServer Web数据库依赖 -## JumpServer 企业版 +### JumpServer 企业版 - [申请企业版试用](https://jinshuju.net/f/kyOYpi) -## 案例研究 +### 案例研究 - [JumpServer 堡垒机护航顺丰科技超大规模资产安全运维](https://blog.fit2cloud.com/?p=1147); - [JumpServer 堡垒机让“大智慧”的混合 IT 运维更智慧](https://blog.fit2cloud.com/?p=882); @@ -302,7 +96,7 @@ JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向 - [东方明珠:JumpServer高效管控异构化、分布式云端资产](https://blog.fit2cloud.com/?p=687); - [江苏农信:JumpServer堡垒机助力行业云安全运维](https://blog.fit2cloud.com/?p=666)。 -## 安全说明 +### 安全说明 JumpServer是一款安全产品,请参考 [基本安全建议](https://docs.jumpserver.org/zh/master/install/install_security/) 部署安装. @@ -312,7 +106,7 @@ JumpServer是一款安全产品,请参考 [基本安全建议](https://docs.ju - support@fit2cloud.com - 400-052-0755 -## License & Copyright +### License & Copyright Copyright (c) 2014-2020 飞致云 FIT2CLOUD, All rights reserved. diff --git a/README_EN.md b/README_EN.md index 072aaadea..f1706a3b9 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,22 +1,18 @@ -# Jumpserver - The Bastion Host for Multi-Cloud Environment +

JumpServer

+

Open Source Bastion Host

-[![Python3](https://img.shields.io/badge/python-3.6-green.svg?style=plastic)](https://www.python.org/) -[![Django](https://img.shields.io/badge/django-2.2-brightgreen.svg?style=plastic)](https://www.djangoproject.com/) -[![Docker Pulls](https://img.shields.io/docker/pulls/jumpserver/jms_all.svg)](https://hub.docker.com/u/jumpserver) +

+ License: GPL v2 +  release + Codacy + Stars +

-- [中文版](https://github.com/jumpserver/jumpserver/blob/master/README.md) +JumpServer is the world's first open-source Bastion Host and is licensed under the GNU GPL v2.0. It is a 4A-compliant professional operation and maintenance security audit system. -|![notification](https://raw.githubusercontent.com/goharbor/website/master/docs/img/readme/bell-outline-badged.svg)Security Notice| -|------------------| -|On 15th January 2021, JumpServer found a critical bug for remote execution vulnerability. Please fix it asap! [For more detail](https://github.com/jumpserver/jumpserver/issues/5533) Thanks for **reactivity of Alibaba Hackerone bug bounty program** report use the bug| +JumpServer uses Python / Django for development, follows Web 2.0 specifications, and is equipped with an industry-leading Web Terminal solution that provides a beautiful user interface and great user experience --------------------------- - -Jumpserver is the world's first open-source Bastion Host and is licensed under the GNU GPL v2.0. It is a 4A-compliant professional operation and maintenance security audit system. - -Jumpserver uses Python / Django for development, follows Web 2.0 specifications, and is equipped with an industry-leading Web Terminal solution that provides a beautiful user interface and great user experience - -Jumpserver adopts a distributed architecture to support multi-branch deployment across multiple cross-regional areas. The central node provides APIs, and login nodes are deployed in each branch. It can be scaled horizontally without concurrency restrictions. +JumpServer adopts a distributed architecture to support multi-branch deployment across multiple cross-regional areas. The central node provides APIs, and login nodes are deployed in each branch. It can be scaled horizontally without concurrency restrictions. Change the world by taking every little step @@ -31,246 +27,14 @@ Change the world by taking every little step - Multi-Tenant system: multiple subsidiary companies or departments access the same system simultaneously. - Many applications supported: link to databases, windows remote applications, and Kubernetes cluster, etc. -## Features List - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AuthenticationLoginUnified way to access and authenticate resources
LDAP/AD Authentication
RADIUS Authentication
OpenID Authentication(Single Sign-On)
CAS Authentication (Single Sign-On)
MFA (Multi-Factor Authentication)Use Google Authenticator for MFA
RADIUS (Remote Authentication Dial In User Service)
Login SupervisionAny user’s login behavior is supervised and controlled by the administrator:small_orange_diamond:
AccountingCentralized Accounts ManagementAdmin Users management
System Users management
Unified Password ManagementAsset password custody (a matrix storing all asset password with dense security)
Auto-generated passwords
Automatic password handling (auto login assets)
Password expiration settings
Password change SchedularSupport regular batch Linux/Windows assets password changing:small_orange_diamond:
Implement multiple password strategies:small_orange_diamond:
Multi-Cloud ManagementAutomatically manage private cloud and public cloud assets in a unified platform :small_orange_diamond:
Users Acquisition Create regular custom tasks to collect system users in selected assets to identify and track the privileges ownership:small_orange_diamond:
Password Vault Unified operations to check, update, and test system user password to prevent stealing or unauthorised sharing of passwords:small_orange_diamond:
AuthorizationMulti-DimensionalGranting users or user groups to access assets, asset nodes, or applications through system users. Providing precise access control to different roles of users
AssetsAssets are arranged and displayed in a tree structure
Assets and Nodes have immense flexibility for authorizing
Assets in nodes inherit authorization automatically
child nodes automatically inherit authorization from parent nodes
ApplicationProvides granular access control for privileged users on application level to protect from unauthorized access and unintentional errors
Database applications (MySQL, Oracle, PostgreSQL, MariaDB, etc.) and Remote App:small_orange_diamond:
ActionsDeeper restriction on the control of file upload, download and connection actions of authorized assets. Control the permission of clipboard copy/paste (from outer terminal to current asset)
Time BoundSharply limited the available (accessible) time for account access to the authorized resources to reduce the risk and attack surface drastically
Privileged AssignmentAssign the denied/allowed command lists to different system users as privilege elevation, with the latter taking the form of allowing particular commands to be run with a higher level of privileges. (Minimize insider threat)
Command FilteringCreating list of restriction commands that you would like to assign to different authorized system users for filtering purpose
File Transfer and ManagementSupport SFTP file upload/download
File ManagementProvide a Web UI for SFTP file management
Workflow ManagementManage user login confirmation requests and assets or applications authorization requests for Just-In-Time Privileges functionality:small_orange_diamond:
Group Management Establishing a multi-tenant ecosystem that able authority isolation to keep malicious actors away from sensitive administrative backends:small_orange_diamond:
AuditingOperationsAuditing user operation behaviors for any access or usage of given privileged accounts
SessionSupport real-time session audit
Full history of all previous session audits
VideoComplete session audit and playback recordings on assets operation (Linux, Windows)
Full recordings of RemoteApp, MySQL, and Kubernetes:small_orange_diamond:
Supports uploading recordings to public clouds
CommandCommand auditing on assets and applications operation. Send warning alerts when executing illegal commands
File TransferFull recordings of file upload and download
DatabaseHow to connectCommand line
Built-in Web UI:small_orange_diamond:
Supported DatabaseMySQL
Oracle :small_orange_diamond:
MariaDB :small_orange_diamond:
PostgreSQL :small_orange_diamond:
Feature HighlightsSyntax highlights
Prettier SQL formmating
Support Shortcuts
Support selected SQL statements
SQL commands history query
Support page creation: DB, TABLE
Session AuditingFull records of command
Playback videos
- -**Note**: Rows with :small_orange_diamond: at the end of the sentence means that it is X-PACK features exclusive ([Apply for X-PACK Trial](https://jinshuju.net/f/kyOYpi)) - -### Start - -Quick start [Docker Install](http://docs.jumpserver.org/zh/docs/dockerinstall.html) - -Step by Step deployment. [Docs](http://docs.jumpserver.org/zh/docs/step_by_step.html) - -Full documentation [Docs](http://docs.jumpserver.org) - -### Demo、Video 和 Snapshot - -We provide online demo, demo video and screenshots to get you started quickly. - -[Demo](https://demo.jumpserver.org/auth/login/?next=/) -[Video](https://fit2cloud2-offline-installer.oss-cn-beijing.aliyuncs.com/tools/Jumpserver%20%E4%BB%8B%E7%BB%8Dv1.4.mp4) -[Snapshot](http://docs.jumpserver.org/zh/docs/snapshot.html) - -### SDK - -We provide the SDK for your other systems to quickly interact with the Jumpserver API. - -- [Python](https://github.com/jumpserver/jumpserver-python-sdk) Jumpserver other components use this SDK to complete the interaction. -- [Java](https://github.com/KaiJunYan/jumpserver-java-sdk.git) Thanks to 恺珺 for providing his Java SDK vesrion. - -## JumpServer Component Projects +### JumpServer Component Projects - [Lina](https://github.com/jumpserver/lina) JumpServer Web UI - [Luna](https://github.com/jumpserver/luna) JumpServer Web Terminal - [KoKo](https://github.com/jumpserver/koko) JumpServer Character protocaol Connector, replace original Python Version [Coco](https://github.com/jumpserver/coco) -- [Guacamole](https://github.com/jumpserver/docker-guacamole) JumpServer Graphics protocol Connector,rely on [Apache Guacamole](https://guacamole.apache.org/) +- [Lion](https://github.com/jumpserver/lion-release) JumpServer Graphics protocol Connector,rely on [Apache Guacamole](https://guacamole.apache.org/) -## Contribution +### Contribution If you have any good ideas or helping us to fix bugs, please submit a Pull Request and accept our thanks :) Thanks to the following contributors for making JumpServer better everyday! @@ -279,16 +43,27 @@ Thanks to the following contributors for making JumpServer better everyday! + + + -## Thanks to + + + + + + + + +### Thanks to - [Apache Guacamole](https://guacamole.apache.org/) Web page connection RDP, SSH, VNC protocol equipment. JumpServer graphical connection dependent. - [OmniDB](https://omnidb.org/) Web page connection to databases. JumpServer Web database dependent. -## JumpServer Enterprise Version +### JumpServer Enterprise Version - [Apply for it](https://jinshuju.net/f/kyOYpi) -## Case Study +### Case Study - [JumpServer 堡垒机护航顺丰科技超大规模资产安全运维](https://blog.fit2cloud.com/?p=1147); - [JumpServer 堡垒机让“大智慧”的混合 IT 运维更智慧](https://blog.fit2cloud.com/?p=882); @@ -299,7 +74,7 @@ Thanks to the following contributors for making JumpServer better everyday! - [东方明珠:JumpServer高效管控异构化、分布式云端资产](https://blog.fit2cloud.com/?p=687); - [江苏农信:JumpServer堡垒机助力行业云安全运维](https://blog.fit2cloud.com/?p=666)。 -## For safety instructions +### For safety instructions JumpServer is a security product. Please refer to [Basic Security Recommendations](https://docs.jumpserver.org/zh/master/install/install_security/) for deployment and installation. diff --git a/apps/ops/ansible/runner.py b/apps/ops/ansible/runner.py index a25d681b9..ebac415b5 100644 --- a/apps/ops/ansible/runner.py +++ b/apps/ops/ansible/runner.py @@ -250,7 +250,7 @@ class CommandRunner(AdHocRunner): results_callback_class = CommandResultCallback modules_choices = ('shell', 'raw', 'command', 'script', 'win_shell') - def execute(self, cmd, pattern, module='shell'): + def execute(self, cmd, pattern, module='raw'): if module and module not in self.modules_choices: raise AnsibleError("Module should in {}".format(self.modules_choices)) diff --git a/apps/ops/models/command.py b/apps/ops/models/command.py index e89520390..4a4c9e552 100644 --- a/apps/ops/models/command.py +++ b/apps/ops/models/command.py @@ -87,7 +87,7 @@ class CommandExecution(OrgModelMixin): if host and host.is_windows(): shell = 'win_shell' else: - shell = 'shell' + shell = 'raw' result = runner.execute(self.command, 'all', module=shell) self.result = result.results_command except SoftTimeLimitExceeded as e: From b1032761c89fc12481d895102646bd1917ff3c5f Mon Sep 17 00:00:00 2001 From: "Tommy.chen" Date: Fri, 2 Jul 2021 15:35:04 +0800 Subject: [PATCH 24/26] add cas CAS_USERNAME_ATTRIBUTE CAS_RENAME_ATTRIBUTES CAS_CREATE_USER read --- apps/jumpserver/conf.py | 4 ++++ apps/jumpserver/settings/auth.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 81188eb8a..dd76e729a 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -212,6 +212,10 @@ class Config(dict): 'CAS_ROOT_PROXIED_AS': '', 'CAS_LOGOUT_COMPLETELY': True, 'CAS_VERSION': 3, + 'CAS_USERNAME_ATTRIBUTE': 'username', + 'CAS_RENAME_ATTRIBUTES': {}, + 'CAS_CREATE_USER': False, + 'AUTH_SSO': False, 'AUTH_SSO_AUTHKEY_TTL': 60 * 15, diff --git a/apps/jumpserver/settings/auth.py b/apps/jumpserver/settings/auth.py index b3c322799..9345e766d 100644 --- a/apps/jumpserver/settings/auth.py +++ b/apps/jumpserver/settings/auth.py @@ -96,6 +96,9 @@ CAS_LOGOUT_COMPLETELY = CONFIG.CAS_LOGOUT_COMPLETELY CAS_VERSION = CONFIG.CAS_VERSION CAS_ROOT_PROXIED_AS = CONFIG.CAS_ROOT_PROXIED_AS CAS_CHECK_NEXT = lambda _next_page: True +CAS_USERNAME_ATTRIBUTE = CONFIG.CAS_USERNAME_ATTRIBUTE +CAS_RENAME_ATTRIBUTES = CONFIG.CAS_RENAME_ATTRIBUTES if hasattr(CONFIG, 'CAS_RENAME_ATTRIBUTES') else {} +CAS_CREATE_USER = CONFIG.CAS_CREATE_USER # SSO Auth AUTH_SSO = CONFIG.AUTH_SSO From 1e601288fa6b74180869c0ce2f775bc87d401c48 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 8 Jul 2021 14:44:36 +0800 Subject: [PATCH 25/26] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9CAS=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/conf.py | 6 +++--- apps/jumpserver/settings/auth.py | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index dd76e729a..449ae7974 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -212,10 +212,10 @@ class Config(dict): 'CAS_ROOT_PROXIED_AS': '', 'CAS_LOGOUT_COMPLETELY': True, 'CAS_VERSION': 3, - 'CAS_USERNAME_ATTRIBUTE': 'username', + 'CAS_USERNAME_ATTRIBUTE': 'uid', + 'CAS_APPLY_ATTRIBUTES_TO_USER': False, 'CAS_RENAME_ATTRIBUTES': {}, - 'CAS_CREATE_USER': False, - + 'CAS_CREATE_USER': True, 'AUTH_SSO': False, 'AUTH_SSO_AUTHKEY_TTL': 60 * 15, diff --git a/apps/jumpserver/settings/auth.py b/apps/jumpserver/settings/auth.py index 9345e766d..264566620 100644 --- a/apps/jumpserver/settings/auth.py +++ b/apps/jumpserver/settings/auth.py @@ -97,7 +97,8 @@ CAS_VERSION = CONFIG.CAS_VERSION CAS_ROOT_PROXIED_AS = CONFIG.CAS_ROOT_PROXIED_AS CAS_CHECK_NEXT = lambda _next_page: True CAS_USERNAME_ATTRIBUTE = CONFIG.CAS_USERNAME_ATTRIBUTE -CAS_RENAME_ATTRIBUTES = CONFIG.CAS_RENAME_ATTRIBUTES if hasattr(CONFIG, 'CAS_RENAME_ATTRIBUTES') else {} +CAS_APPLY_ATTRIBUTES_TO_USER = CONFIG.CAS_APPLY_ATTRIBUTES_TO_USER +CAS_RENAME_ATTRIBUTES = CONFIG.CAS_RENAME_ATTRIBUTES CAS_CREATE_USER = CONFIG.CAS_CREATE_USER # SSO Auth From 10f8b9f130cb0aca2bde4536554aed9755822484 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 8 Jul 2021 14:36:18 +0800 Subject: [PATCH 26/26] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96ansible?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/ansible/runner.py | 2 +- apps/ops/models/command.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/ops/ansible/runner.py b/apps/ops/ansible/runner.py index ebac415b5..a25d681b9 100644 --- a/apps/ops/ansible/runner.py +++ b/apps/ops/ansible/runner.py @@ -250,7 +250,7 @@ class CommandRunner(AdHocRunner): results_callback_class = CommandResultCallback modules_choices = ('shell', 'raw', 'command', 'script', 'win_shell') - def execute(self, cmd, pattern, module='raw'): + def execute(self, cmd, pattern, module='shell'): if module and module not in self.modules_choices: raise AnsibleError("Module should in {}".format(self.modules_choices)) diff --git a/apps/ops/models/command.py b/apps/ops/models/command.py index 4a4c9e552..819acc3d5 100644 --- a/apps/ops/models/command.py +++ b/apps/ops/models/command.py @@ -86,6 +86,8 @@ class CommandExecution(OrgModelMixin): host = self.hosts.first() if host and host.is_windows(): shell = 'win_shell' + elif host and host.is_unixlike(): + shell = 'shell' else: shell = 'raw' result = runner.execute(self.command, 'all', module=shell)