Эх сурвалжийг харах

违规壁纸监测禁止上传

linhaohong 1 жил өмнө
parent
commit
f65006dcba

+ 53 - 0
Controller/UserDevice/UserDeviceShareController.py

@@ -6,7 +6,9 @@
 @Email   : zhangdongming@asj6.wecom.work
 @Software: PyCharm
 """
+import json
 import logging
+import threading
 import time
 
 import boto3
@@ -18,6 +20,7 @@ from django.views import View
 
 from Model.models import DeviceSharePermission, DeviceChannelUserSet, DeviceChannelUserPermission, UidChannelSetModel, \
     Device_Info
+from Object.ContentSecurityObject import ContentSecurity
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.UserDeviceService import UserDeviceService
@@ -360,6 +363,38 @@ class UserDeviceShareView(View):
             device_info_qs = Device_Info.objects.filter(UID=uid).values('id', 'Type')
             device_type = device_info_qs[0]['Type'] if device_info_qs.exists() else ''
 
+            # 初始化存储桶客户端
+            if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO:
+                s3 = boto3.client(
+                    's3',
+                    aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+                    aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
+                    config=botocore.client.Config(signature_version='s3v4'),
+                    region_name='cn-northwest-1'
+                )
+            else:
+                s3 = boto3.client(
+                    's3',
+                    aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+                    aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
+                    config=botocore.client.Config(signature_version='s3v4'),
+                    region_name='us-east-1'
+                )
+
+            obj_key = f"app/static/device-wallpaper/{uid}/{file_name}"
+            params = {'Bucket': "ansjerfilemanager", 'Key': obj_key}
+            image_url = s3.generate_presigned_url('get_object', Params=params)
+            service = 'profilePhotoCheck'
+            LOGGER.info('壁纸链接:{}'.format(image_url))
+            service_dict = {'imageUrl': image_url}
+            service_parameters = json.dumps(service_dict)
+            legal = ContentSecurity().image_review(service, service_parameters)
+            if not legal:
+                # 异步删除
+                thread = threading.Thread(target=cls.delete_wallpaper, args=(obj_key,))
+                thread.start()
+                return response.json(184)
+
             DeviceWallpaper.objects.create(
                 device_type=device_type,
                 storage_type=1,
@@ -469,3 +504,21 @@ class UserDeviceShareView(View):
         except Exception as e:
             LOGGER.error('用户选取壁纸异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(5)
+
+    @staticmethod
+    def delete_wallpaper(file_key):
+        try:
+            if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO:
+                s3 = AmazonS3Util(
+                    AWS_ACCESS_KEY_ID[0], AWS_SECRET_ACCESS_KEY[0], 'cn-northwest-1'
+                )
+            else:
+                s3 = AmazonS3Util(
+                    AWS_ACCESS_KEY_ID[1], AWS_SECRET_ACCESS_KEY[1], 'us-east-1'
+                )
+
+            s3.delete_obj("ansjerfilemanager", file_key)
+            return True
+        except Exception as e:
+            LOGGER.info('删除违规壁纸异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return False