|
@@ -4,11 +4,13 @@ import boto3
|
|
|
import botocore
|
|
|
import requests
|
|
|
from django.views.generic.base import View
|
|
|
+
|
|
|
+from Object.IPWeatherObject import IPQuery
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Service.CommonService import CommonService
|
|
|
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
|
|
|
|
|
|
|
|
@@ -51,10 +53,12 @@ class LogManagementView(View):
|
|
|
return self.getOperationLogList(request_dict, response)
|
|
|
elif operation == 'getAppLogList': # 获取app日志
|
|
|
return self.getAppLogList(request_dict, response)
|
|
|
- elif operation == 'getScanLog': # 获取app日志
|
|
|
+ elif operation == 'getScanLog': # 获取扫码日志
|
|
|
return self.getScanLog(request_dict, response)
|
|
|
- elif operation == 'getAlarmLog': # 获取app日志
|
|
|
+ elif operation == 'getAlarmLog': # 获取警报日志
|
|
|
return self.getAlarmLog(request_dict, response)
|
|
|
+ elif operation == 'getDomainLog': # 获取域名日志
|
|
|
+ return self.getDomainLog(request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -408,3 +412,61 @@ class LogManagementView(View):
|
|
|
except Exception as e:
|
|
|
print(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)))
|