Ver Fonte

获取域名日志接口

locky há 1 ano atrás
pai
commit
82d8651f31
1 ficheiros alterados com 65 adições e 3 exclusões
  1. 65 3
      AdminController/LogManagementController.py

+ 65 - 3
AdminController/LogManagementController.py

@@ -4,11 +4,13 @@ import boto3
 import botocore
 import botocore
 import requests
 import requests
 from django.views.generic.base import View
 from django.views.generic.base import View
+
+from Object.IPWeatherObject import IPQuery
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Device_Info, RequestRecordModel, iotdeviceInfoModel, Access_Log, DeviceLogModel, LogModel, \
 from Model.models import Device_Info, RequestRecordModel, iotdeviceInfoModel, Access_Log, DeviceLogModel, LogModel, \
-    AppLogModel, AppScannedSerial, StsFrequency
+    AppLogModel, AppScannedSerial, StsFrequency, DeviceDomainRegionModel, IPAddr, CountryModel
 from Ansjer.config import REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY, LOG_BUCKET
 from Ansjer.config import REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY, LOG_BUCKET
 
 
 
 
@@ -51,10 +53,12 @@ class LogManagementView(View):
                 return self.getOperationLogList(request_dict, response)
                 return self.getOperationLogList(request_dict, response)
             elif operation == 'getAppLogList':  # 获取app日志
             elif operation == 'getAppLogList':  # 获取app日志
                 return self.getAppLogList(request_dict, response)
                 return self.getAppLogList(request_dict, response)
-            elif operation == 'getScanLog':  # 获取app日志
+            elif operation == 'getScanLog':  # 获取扫码日志
                 return self.getScanLog(request_dict, response)
                 return self.getScanLog(request_dict, response)
-            elif operation == 'getAlarmLog':  # 获取app日志
+            elif operation == 'getAlarmLog':  # 获取警报日志
                 return self.getAlarmLog(request_dict, response)
                 return self.getAlarmLog(request_dict, response)
+            elif operation == 'getDomainLog':  # 获取域名日志
+                return self.getDomainLog(request_dict, response)
             else:
             else:
                 return response.json(404)
                 return response.json(404)
 
 
@@ -408,3 +412,61 @@ class LogManagementView(View):
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def getDomainLog(request_dict, response):
+        page_no = request_dict.get('pageNo', None)
+        page_size = request_dict.get('pageSize', None)
+        serial_number = request_dict.get('serialNumber', None)
+
+        if not all([page_no, page_size]):
+            return response.json(444)
+
+        page = int(page_no)
+        line = int(page_size)
+
+        try:
+            device_domain_qs = DeviceDomainRegionModel.objects.all()
+            if serial_number:
+                device_domain_qs = device_domain_qs.filter(serial_number__contains=serial_number)
+            count = device_domain_qs.count()
+            device_domain_qs = device_domain_qs.order_by('-update_time').values()[(page - 1) * line:page * line]
+
+            device_domain_list = []
+            for device_domain in device_domain_qs:
+                ip = device_domain['ip']
+                country_code = device_domain['country_code']
+                ip_addr_qs = IPAddr.objects.filter(ip=ip, is_geoip2=False).values('region')
+                if ip_addr_qs.exists():
+                    region = ip_addr_qs[0]['region']
+                else:
+                    ip_qs = IPQuery(ip)
+                    region = ip_qs.region
+
+                # 港澳台返回美洲域名
+                if country_code == 'CN' and region in ['香港', '澳门', '台湾']:
+                    country_code = 'NA'
+
+                country_qs = CountryModel.objects.filter(country_code=country_code).\
+                    values('region__name', 'region__api')
+                api = ''
+                region_name = ''
+                if country_qs.exists():
+                    api = country_qs[0]['region__api']
+                    region_name = country_qs[0]['region__name']
+                api_region = region_name + '域名'
+
+                device_domain_list.append({
+                    'id': device_domain['id'],
+                    'serial_number': device_domain['serial_number'],
+                    'ip': ip,
+                    'region_id': device_domain['region_id'],
+                    'country_code': country_code,
+                    'api': api,
+                    'api_region': api_region,
+                    'add_time': device_domain['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
+                    'update_time': device_domain['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
+                })
+            return response.json(0, {'list': device_domain_list, 'total': count})
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))