From 094e144a513865b7dd19c1d98f22ed98154d290b Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Mon, 31 Oct 2022 17:37:54 +0800 Subject: [PATCH 1/5] perf: history secret --- apps/assets/api/account/account.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/assets/api/account/account.py b/apps/assets/api/account/account.py index 8e8e320bd..4aef92de0 100644 --- a/apps/assets/api/account/account.py +++ b/apps/assets/api/account/account.py @@ -43,7 +43,7 @@ class AccountSecretsViewSet(RecordViewLogMixin, AccountViewSet): serializer_classes = { 'default': serializers.AccountSecretSerializer } - http_method_names = ['get'] + http_method_names = ['get', 'options'] # Todo: 记得打开 # permission_classes = [RBACPermission, UserConfirmation.require(ConfirmType.MFA)] rbac_perms = { From 4f2250b7a847ecb1fc655b864692f857666d6e76 Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Mon, 31 Oct 2022 18:32:07 +0800 Subject: [PATCH 2/5] perf: gather account windows --- apps/assets/automations/gather_accounts/filter.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/assets/automations/gather_accounts/filter.py b/apps/assets/automations/gather_accounts/filter.py index 0c8f32536..ebaf6d9b1 100644 --- a/apps/assets/automations/gather_accounts/filter.py +++ b/apps/assets/automations/gather_accounts/filter.py @@ -39,8 +39,11 @@ class GatherAccountsFilter: @staticmethod def windows_filter(info): - # TODO + info = info[4:-2] result = {} + for i in info: + for username in i.split(): + result[username] = {} return result def run(self, method_id_meta_mapper, info): From 5bd40fcd224a14927d8a7c573a214a47d4a57260 Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Mon, 31 Oct 2022 19:27:45 +0800 Subject: [PATCH 3/5] fix: swagger --- apps/acls/models/login_asset_acl.py | 2 +- apps/assets/api/account/account.py | 2 +- apps/assets/filters.py | 2 +- apps/authentication/serializers/connection_token.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/acls/models/login_asset_acl.py b/apps/acls/models/login_asset_acl.py index 3425ac8de..37bea242a 100644 --- a/apps/acls/models/login_asset_acl.py +++ b/apps/acls/models/login_asset_acl.py @@ -64,7 +64,7 @@ class LoginAssetACL(BaseACL, OrgModelMixin): Q(assets__hostname_group__contains=asset.name) | Q(assets__hostname_group__contains='*') ) - ids = [q.id for q in queryset if contains_ip(asset.ip, q.assets.get('ip_group', []))] + ids = [q.id for q in queryset if contains_ip(asset.address, q.assets.get('ip_group', []))] queryset = cls.objects.filter(id__in=ids) return queryset diff --git a/apps/assets/api/account/account.py b/apps/assets/api/account/account.py index 4aef92de0..94b29995f 100644 --- a/apps/assets/api/account/account.py +++ b/apps/assets/api/account/account.py @@ -26,7 +26,7 @@ class AccountViewSet(OrgBulkModelViewSet): } rbac_perms = { 'verify': 'assets.test_account', - 'partial_update': 'assets.change_assetaccountsecret', + 'partial_update': 'assets.change_accountsecret', } @action(methods=['post'], detail=True, url_path='verify') diff --git a/apps/assets/filters.py b/apps/assets/filters.py index 2af062718..de2550ceb 100644 --- a/apps/assets/filters.py +++ b/apps/assets/filters.py @@ -142,7 +142,7 @@ class IpInFilterBackend(filters.BaseFilterBackend): if not ips: return queryset ip_list = [i.strip() for i in ips.split(',')] - queryset = queryset.filter(ip__in=ip_list) + queryset = queryset.filter(address__in=ip_list) return queryset def get_schema_fields(self, view): diff --git a/apps/authentication/serializers/connection_token.py b/apps/authentication/serializers/connection_token.py index 8f36ddc2b..e809ed78c 100644 --- a/apps/authentication/serializers/connection_token.py +++ b/apps/authentication/serializers/connection_token.py @@ -113,7 +113,7 @@ class ConnectionTokenAssetSerializer(serializers.ModelSerializer): """ Asset """ class Meta: model = Asset - fields = ['id', 'name', 'ip', 'protocols', 'org_id'] + fields = ['id', 'name', 'address', 'protocols', 'org_id'] class ConnectionTokenAccountSerializer(serializers.ModelSerializer): From 5fa852c61da3f1e5f2466da000e931cb8765730e Mon Sep 17 00:00:00 2001 From: Aaron3S Date: Mon, 31 Oct 2022 19:28:15 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E5=88=A0=E9=99=A4=E4=B8=8D=E7=AE=A1?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E5=BA=8F=E5=88=97=E5=8C=96=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/serializers/celery.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ops/serializers/celery.py b/apps/ops/serializers/celery.py index 3fd72fde3..351d63213 100644 --- a/apps/ops/serializers/celery.py +++ b/apps/ops/serializers/celery.py @@ -31,7 +31,7 @@ class CeleryTaskSerializer(serializers.ModelSerializer): class Meta: model = CeleryTask fields = [ - 'id', 'name', 'meta', 'publish_count', 'state', 'success_count', 'last_published_time', + 'id', 'name', 'meta', 'state', 'last_published_time', ] From 796758cbb2c13d323366e296121651aa96753048 Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Tue, 1 Nov 2022 11:13:18 +0800 Subject: [PATCH 5/5] perf: histories account --- apps/assets/api/account/account.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/assets/api/account/account.py b/apps/assets/api/account/account.py index 94b29995f..31aaccb96 100644 --- a/apps/assets/api/account/account.py +++ b/apps/assets/api/account/account.py @@ -1,6 +1,6 @@ from rest_framework.decorators import action from rest_framework.response import Response -from rest_framework.generics import CreateAPIView +from rest_framework.generics import CreateAPIView, get_object_or_404 from orgs.mixins.api import OrgBulkModelViewSet from rbac.permissions import RBACPermission @@ -41,7 +41,8 @@ class AccountSecretsViewSet(RecordViewLogMixin, AccountViewSet): 因为可能要导出所有账号,所以单独建立了一个 viewset """ serializer_classes = { - 'default': serializers.AccountSecretSerializer + 'default': serializers.AccountSecretSerializer, + 'histories': serializers.AccountHistorySerializer, } http_method_names = ['get', 'options'] # Todo: 记得打开 @@ -52,12 +53,11 @@ class AccountSecretsViewSet(RecordViewLogMixin, AccountViewSet): 'histories': ['assets.view_accountsecret'], } - @action(methods=['get'], detail=True, url_path='histories', serializer_class=serializers.AccountHistorySerializer) + @action(methods=['get'], detail=True, url_path='histories') def histories(self, request, *args, **kwargs): - account = self.get_object() - histories = account.history.all() - serializer = serializers.AccountHistorySerializer(histories, many=True) - return Response(serializer.data) + account = get_object_or_404(self.get_queryset(), **kwargs) + self.queryset = account.history.all() + return super().list(request, *args, **kwargs) class AccountTaskCreateAPI(CreateAPIView):