123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import json
- import time
- import boto3
- from django.views import View
- from Model.models import Device_User, Device_Info, RegionCountryModel
- from Object.IOTCore.IotObject import ChinaIOTClient, AsiaIOTClient, EuropeIOTClient, AmericaIOTClient
- from Object.ResponseObject import ResponseObject
- from Service.CommonService import CommonService
- 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(request_dict, response)
- elif operation == 'createKeysAndCertificate':
- return self.create_keys_and_certificate(request_dict, response)
- else:
- return response.json(404)
- #即时预置注册 :已放弃
- def create_provisioning_claim(self, request_dict, response):
- uid = request_dict.get('uid', None)
- token = request_dict.get('token', None)
- time_stamp = request_dict.get('time_stamp', None)
- if uid and token and time_stamp:
- token = int(CommonService.decode_data(token))
- time_stamp = int(time_stamp)
- now_time = int(time.time())
- distance = now_time - time_stamp
- #if token != time_stamp and distance > 600: 暂时去掉延时
- if token != time_stamp:
- return response.json(404)
- region_country_qs = Device_Info.objects.filter(UID=uid).values('userID__region_country')
- if not region_country_qs.exists():
- return response.json(173)
- region_country_qs = RegionCountryModel.objects.filter(number=region_country_qs[0]['userID__region_country'])
- if region_country_qs.exists():
- user_region = region_country_qs[0]
- if user_region.region_id == 1:
- iotClient = ChinaIOTClient()
- return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
- elif user_region.region_id == 2:
- iotClient = AsiaIOTClient()
- return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
- elif user_region.region_id == 3:
- iotClient = EuropeIOTClient()
- return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
- else:
- iotClient = AmericaIOTClient()
- return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
- else:
- return response.json(444)
- # CVM注册 :正使用
- def create_keys_and_certificate(self, request_dict, response):
- uid = request_dict.get('uid', None)
- uid_code = request_dict.get('uid_code', None)
- token = request_dict.get('token', None)
- time_stamp = request_dict.get('time_stamp', None)
- if uid and token and time_stamp and uid_code:
- uid_code = int(CommonService.decode_data(uid_code))
- token = int(CommonService.decode_data(token))
- time_stamp = int(time_stamp)
- now_time = int(time.time())
- distance = now_time - time_stamp
- # if token != time_stamp and distance > 600: 暂时去掉延时
- if token != time_stamp or uid != uid_code or distance > 600 :
- return response.json(404)
- region_country_qs = Device_Info.objects.filter(UID=uid).values('userID__region_country')
- if not region_country_qs.exists():
- return response.json(173)
- region_country_qs = RegionCountryModel.objects.filter(
- number=region_country_qs[0]['userID__region_country'])
- if region_country_qs.exists():
- user_region = region_country_qs[0]
- if user_region.region_id == 1:
- iotClient = ChinaIOTClient()
- elif user_region.region_id == 2:
- iotClient = AsiaIOTClient()
- elif user_region.region_id == 3:
- iotClient = EuropeIOTClient()
- else:
- iotClient = AmericaIOTClient()
- res = iotClient.create_keys_and_certificate(uid)
- return response.json(0, {'res': res})
- else:
- return response.json(444)
|