Bläddra i källkod

添加获取IotCore的临时证书和私钥

tanghongbin 4 år sedan
förälder
incheckning
abcf83038b
4 ändrade filer med 73 tillägg och 3 borttagningar
  1. 7 0
      Ansjer/config.py
  2. 7 3
      Ansjer/urls.py
  3. 12 0
      Controller/EquipmentInfo.py
  4. 47 0
      Controller/IotCoreController.py

+ 7 - 0
Ansjer/config.py

@@ -33,6 +33,12 @@ AWS_SES_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
 AWS_SES_ACCESS_SECRET = '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'
 AWS_SES_ACCESS_REGION = 'us-east-1'
 AWS_SES_ACCESS_REGION_WEST = 'us-west-1'
+
+# Iot Core
+AWS_IOT_SES_ACCESS_ID = 'AKIA2E67UIMD62VUBV5I'
+AWS_IOT_SES_ACCESS_SECRET = '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'
+AWS_IOT_SES_ACCESS_REGION = 'us-east-1'
+
 AWS_BUCKET = 'ansjertest'
 # 设定离线时间为5分钟
 OFF_LINE_TIME_DELTA = 5
@@ -151,6 +157,7 @@ DEVICE_TYPE = {
     14: 'C190',
     15: 'C199_PRO',
     17: 'C289',
+    18: 'C308',
     10001: 'DVRPTZ'
 }
 

+ 7 - 3
Ansjer/urls.py

@@ -10,9 +10,9 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     StsOssController, UIDPreview, OssCrd, SysMsg, UidUser, EquipmentManagerV2, EquipmentManagerV3, PushDeploy, \
     AppSetController, \
     ApplicationController, UserExController, CloudStorage, TestApi, UserBrandControllerV2, \
-    StatisticsController, Alexa, FAQController, AppLogController, EquipmentVersionLimit, VoicePromptController, CDKController, \
-    DeviceTypeController, CloudTest, Cloudsum
-
+    StatisticsController, Alexa, FAQController, AppLogController, EquipmentVersionLimit, VoicePromptController, \
+    CDKController, \
+    DeviceTypeController, CloudTest, Cloudsum, IotCoreController
 
 urlpatterns = [
     url(r'^testApi/(?P<operation>.*)$', TestApi.testView.as_view()),
@@ -107,6 +107,7 @@ urlpatterns = [
     path('access/staticPath/', AccessLog.statisticsPath),
     path('access/deleteSn/', AccessLog.deleteSn),
     path('eq/del', EquipmentInfo.deleteExpireEquipmentInfo),
+    path('eq/delById', EquipmentInfo.deleteExpireEquipmentInfoById),
     # 新需求ota接口
     url(r'^OTA/getNewVer', OTAEquipment.getNewVerInterface),
     url(r'^OTA/uploadsPack$', OTAEquipment.uploadOTAInterfaceView.as_view()),
@@ -265,6 +266,9 @@ urlpatterns = [
     #云存服务统计
     url(r'^Cloudsum/(?P<operation>.*)$', Cloudsum.Cloudsum.as_view()),
 
+    #Iot Core
+    url(r'iot/(?P<operation>.*)$', IotCoreController.IotCoreView.as_view()),
+
     re_path('(?P<path>.*)', LogManager.errorPath),
 
 

+ 12 - 0
Controller/EquipmentInfo.py

@@ -304,3 +304,15 @@ def deleteExpireEquipmentInfo(request):
     return response.json(0)
 
 
+# 按季度删除访问日志
+def deleteExpireEquipmentInfoById(request):
+    response = ResponseObject()
+    id = int(request.GET.get('id', None))
+
+    if id is None:
+        return response.json(0)
+
+    Equipment_Info.objects.filter(id__lte=id).delete()
+    return response.json(0)
+
+

+ 47 - 0
Controller/IotCoreController.py

@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+import boto3
+from django.views import View
+
+from Ansjer.config import AWS_IOT_SES_ACCESS_REGION, AWS_IOT_SES_ACCESS_ID, \
+    AWS_IOT_SES_ACCESS_SECRET
+from Object.ResponseObject import ResponseObject
+
+
+class IotCoreView(View):
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        operation = kwargs.get('operation', None)
+        return self.validate(operation, request_dict)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.POST
+        operation = kwargs.get('operation', None)
+        return self.validate(operation, request_dict)
+
+    def validate(self, operation, request_dict):
+
+        response = ResponseObject()
+
+        if operation == 'createProvisioningClaim':
+            return self.create_provisioning_claim(response)
+        else:
+            return response.json(404)
+
+    def create_provisioning_claim(self, response):
+        client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_REGION, aws_access_key_id=AWS_IOT_SES_ACCESS_ID,
+                              aws_secret_access_key=AWS_IOT_SES_ACCESS_SECRET)
+        result = client.create_provisioning_claim(templateName='Ansjer_Iot_Queue')
+
+        res = {
+            'certificateId': result['certificateId'],
+            'certificatePem': result['certificatePem'],
+            'publicKey': result['keyPair']['PublicKey'],
+            'privateKey': result['keyPair']['PrivateKey'],
+            'endpoint': 'a2rqy12o004ad8-ats.iot.us-east-1.amazonaws.com'
+        }
+
+        return response.json(0, {'res': res})