浏览代码

优化iot,邮件key,修改NVR获取升级链接接口

locky 1 天之前
父节点
当前提交
cea1920907

+ 5 - 8
Ansjer/cn_config/formal_settings.py

@@ -9,20 +9,17 @@ def get_list(name, default=None, sep=","):
         return default or []
         return default or []
     return [x.strip() for x in value.split(sep) if x.strip()]
     return [x.strip() for x in value.split(sep) if x.strip()]
 
 
+# AWS IOT 授权方私钥
+AWS_IOT_AUTH_PRIVATE_KEY = os.getenv('AWS_IOT_AUTH_PRIVATE_KEY', default='').replace("\\n", "\n")
+# AWS KEY
 ACCESS_KEY_ID = os.getenv('ACCESS_KEY_ID', default='')
 ACCESS_KEY_ID = os.getenv('ACCESS_KEY_ID', default='')
 SECRET_ACCESS_KEY = os.getenv('SECRET_ACCESS_KEY', default='')
 SECRET_ACCESS_KEY = os.getenv('SECRET_ACCESS_KEY', default='')
 AWS_ACCESS_KEY_ID = get_list('AWS_ACCESS_KEY_ID', default=[])
 AWS_ACCESS_KEY_ID = get_list('AWS_ACCESS_KEY_ID', default=[])
 AWS_SECRET_ACCESS_KEY = get_list('AWS_SECRET_ACCESS_KEY', default=[])
 AWS_SECRET_ACCESS_KEY = get_list('AWS_SECRET_ACCESS_KEY', default=[])
-AWS_IOT_SES_ACCESS_CHINA_ID = os.getenv('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_IOT_SES_ACCESS_CHINA_SECRET = os.getenv('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-AWS_IOT_SES_ACCESS_FOREIGN_ID = os.getenv('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_IOT_SES_ACCESS_FOREIGN_SECRET = os.getenv('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-AWS_SES_ACCESS_ID = os.getenv('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_SES_ACCESS_SECRET = os.getenv('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-SES_USERNAME_SMTP = os.getenv('SES_USERNAME_SMTP', default='')
-SES_PASSWORD_SMTP = os.getenv('SES_PASSWORD_SMTP', default='')
+# 阿里云 KEY
 ALICLOUD_AK = os.getenv('ALICLOUD_AK', default='')
 ALICLOUD_AK = os.getenv('ALICLOUD_AK', default='')
 ALICLOUD_SK = os.getenv('ALICLOUD_SK', default='')
 ALICLOUD_SK = os.getenv('ALICLOUD_SK', default='')
+# 华为云 KEY
 HUAWEICLOUD_AK = os.getenv('HUAWEICLOUD_AK', default='')
 HUAWEICLOUD_AK = os.getenv('HUAWEICLOUD_AK', default='')
 HUAWEICLOUD_SK = os.getenv('HUAWEICLOUD_SK', default='')
 HUAWEICLOUD_SK = os.getenv('HUAWEICLOUD_SK', default='')
 
 

+ 5 - 8
Ansjer/eur_config/formal_settings.py

@@ -8,20 +8,17 @@ env = environ.Env(
 # 读取 .env 文件
 # 读取 .env 文件
 environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
 environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
 
 
+# AWS IOT 授权方私钥
+AWS_IOT_AUTH_PRIVATE_KEY = env('AWS_IOT_AUTH_PRIVATE_KEY', default='').replace("\\n", "\n")
+# AWS KEY
 ACCESS_KEY_ID = env('ACCESS_KEY_ID', default='')
 ACCESS_KEY_ID = env('ACCESS_KEY_ID', default='')
 SECRET_ACCESS_KEY = env('SECRET_ACCESS_KEY', default='')
 SECRET_ACCESS_KEY = env('SECRET_ACCESS_KEY', default='')
 AWS_ACCESS_KEY_ID = env.list('AWS_ACCESS_KEY_ID', default=[])
 AWS_ACCESS_KEY_ID = env.list('AWS_ACCESS_KEY_ID', default=[])
 AWS_SECRET_ACCESS_KEY = env.list('AWS_SECRET_ACCESS_KEY', default=[])
 AWS_SECRET_ACCESS_KEY = env.list('AWS_SECRET_ACCESS_KEY', default=[])
-AWS_IOT_SES_ACCESS_CHINA_ID = env('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_IOT_SES_ACCESS_CHINA_SECRET = env('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-AWS_IOT_SES_ACCESS_FOREIGN_ID = env('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_IOT_SES_ACCESS_FOREIGN_SECRET = env('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-AWS_SES_ACCESS_ID = env('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_SES_ACCESS_SECRET = env('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-SES_USERNAME_SMTP = env('SES_USERNAME_SMTP', default='')
-SES_PASSWORD_SMTP = env('SES_PASSWORD_SMTP', default='')
+# 阿里云 KEY
 ALICLOUD_AK = env('ALICLOUD_AK', default='')
 ALICLOUD_AK = env('ALICLOUD_AK', default='')
 ALICLOUD_SK = env('ALICLOUD_SK', default='')
 ALICLOUD_SK = env('ALICLOUD_SK', default='')
+# 华为云 KEY
 HUAWEICLOUD_AK = env('HUAWEICLOUD_AK', default='')
 HUAWEICLOUD_AK = env('HUAWEICLOUD_AK', default='')
 HUAWEICLOUD_SK = env('HUAWEICLOUD_SK', default='')
 HUAWEICLOUD_SK = env('HUAWEICLOUD_SK', default='')
 
 

+ 5 - 4
Ansjer/test/util/email_log.py

@@ -110,14 +110,15 @@ for tt in to_list:
 print(type(HTML_DATA))
 print(type(HTML_DATA))
 from boto3.session import Session
 from boto3.session import Session
 import traceback
 import traceback
+from django.conf import settings
+AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID
+AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY
 
 
-AWS_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
-AWS_ACCESS_SECRET = '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'
 AWS_ACCESS_REGION = 'us-east-1'
 AWS_ACCESS_REGION = 'us-east-1'
 COMPANY_EMAIL = 'user_server@nsst.com'
 COMPANY_EMAIL = 'user_server@nsst.com'
 session = Session(
 session = Session(
-    aws_access_key_id=AWS_ACCESS_ID,
-    aws_secret_access_key=AWS_ACCESS_SECRET,
+    aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+    aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
     region_name=AWS_ACCESS_REGION,
     region_name=AWS_ACCESS_REGION,
 )
 )
 conn = session.client('ses')
 conn = session.client('ses')

+ 5 - 8
Ansjer/us_config/formal_settings.py

@@ -8,20 +8,17 @@ env = environ.Env(
 # 读取 .env 文件
 # 读取 .env 文件
 environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
 environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
 
 
+# AWS IOT 授权方私钥
+AWS_IOT_AUTH_PRIVATE_KEY = env('AWS_IOT_AUTH_PRIVATE_KEY', default='').replace("\\n", "\n")
+# AWS KEY
 ACCESS_KEY_ID = env('ACCESS_KEY_ID', default='')
 ACCESS_KEY_ID = env('ACCESS_KEY_ID', default='')
 SECRET_ACCESS_KEY = env('SECRET_ACCESS_KEY', default='')
 SECRET_ACCESS_KEY = env('SECRET_ACCESS_KEY', default='')
 AWS_ACCESS_KEY_ID = env.list('AWS_ACCESS_KEY_ID', default=[])
 AWS_ACCESS_KEY_ID = env.list('AWS_ACCESS_KEY_ID', default=[])
 AWS_SECRET_ACCESS_KEY = env.list('AWS_SECRET_ACCESS_KEY', default=[])
 AWS_SECRET_ACCESS_KEY = env.list('AWS_SECRET_ACCESS_KEY', default=[])
-AWS_IOT_SES_ACCESS_CHINA_ID = env('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_IOT_SES_ACCESS_CHINA_SECRET = env('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-AWS_IOT_SES_ACCESS_FOREIGN_ID = env('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_IOT_SES_ACCESS_FOREIGN_SECRET = env('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-AWS_SES_ACCESS_ID = env('AWS_IOT_SES_ACCESS_CHINA_ID', default='')
-AWS_SES_ACCESS_SECRET = env('AWS_IOT_SES_ACCESS_CHINA_SECRET', default='')
-SES_USERNAME_SMTP = env('SES_USERNAME_SMTP', default='')
-SES_PASSWORD_SMTP = env('SES_PASSWORD_SMTP', default='')
+# 阿里云 KEY
 ALICLOUD_AK = env('ALICLOUD_AK', default='')
 ALICLOUD_AK = env('ALICLOUD_AK', default='')
 ALICLOUD_SK = env('ALICLOUD_SK', default='')
 ALICLOUD_SK = env('ALICLOUD_SK', default='')
+# 华为云 KEY
 HUAWEICLOUD_AK = env('HUAWEICLOUD_AK', default='')
 HUAWEICLOUD_AK = env('HUAWEICLOUD_AK', default='')
 HUAWEICLOUD_SK = env('HUAWEICLOUD_SK', default='')
 HUAWEICLOUD_SK = env('HUAWEICLOUD_SK', default='')
 
 

+ 7 - 13
Controller/AdminManage.py

@@ -19,20 +19,13 @@ from Model.models import Access_Log, Device_User
 from django.views.decorators.http import require_http_methods
 from django.views.decorators.http import require_http_methods
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
-from Ansjer.config import OFF_LINE_TIME_DELTA, DEVICE_TYPE, AWS_SES_ACCESS_ID, AWS_SES_ACCESS_SECRET, \
-    AWS_SES_ACCESS_REGION_WEST
+from Ansjer.config import OFF_LINE_TIME_DELTA, DEVICE_TYPE, AWS_SES_ACCESS_REGION_WEST
 import datetime, simplejson as json
 import datetime, simplejson as json
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
-
-'''
-http://192.168.136.40:8077/adminManage/manage?operation=getAllDeviceArea&token=debug
-http://192.168.136.40:8077/adminManage/manage?operation=getAllUserName&token=debug
-http://192.168.136.40:8077/adminManage/manage?operation=getAllUID&token=debug
-
-http://127.0.0.1:8000/adminManage/manage?operation=getAllOnLine&token=stest
-http://127.0.0.1:8000/adminManage/manage?operation=getOnLine&token=stest
-'''
+from django.conf import settings
+AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID
+AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY
 
 
 
 
 class AdminManage(TemplateView):
 class AdminManage(TemplateView):
@@ -616,8 +609,9 @@ class AdminManage(TemplateView):
         end_time = date.fromtimestamp(int(end_time))
         end_time = date.fromtimestamp(int(end_time))
         tz = int(tz)
         tz = int(tz)
 
 
-        cloudwatch = boto3.client('cloudwatch', region_name=AWS_SES_ACCESS_REGION_WEST, aws_access_key_id=AWS_SES_ACCESS_ID,
-                                  aws_secret_access_key=AWS_SES_ACCESS_SECRET)
+        cloudwatch = boto3.client(
+            'cloudwatch', region_name=AWS_SES_ACCESS_REGION_WEST, aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+            aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1])
         try:
         try:
             result = cloudwatch.get_metric_statistics(Namespace='AWS/EC2', MetricName='CPUUtilization',
             result = cloudwatch.get_metric_statistics(Namespace='AWS/EC2', MetricName='CPUUtilization',
                                                       StartTime=start_time,
                                                       StartTime=start_time,

+ 8 - 0
Controller/EquipmentOTA.py

@@ -8,6 +8,7 @@ from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
 from django.views.generic.base import View
 
 
+from AdminController.VersionManagementController import VersionManagement
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN, SERVER_DOMAIN_OTA
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN, SERVER_DOMAIN_OTA
 from Model.models import Equipment_Version, EquipmentVersionLimitModel
 from Model.models import Equipment_Version, EquipmentVersionLimitModel
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
@@ -282,7 +283,14 @@ class EquipmentVersionView(View):
             # 判断大小
             # 判断大小
             if ov > eqs[0].softwareVersion:
             if ov > eqs[0].softwareVersion:
                 return response.json(0, {'softwareVersion': ov})
                 return response.json(0, {'softwareVersion': ov})
+
         equipment = eqs[0]
         equipment = eqs[0]
+        # 升级文件指定设备时,判断uid是否在指定设备中
+        ver_data = equipment.data_json
+        result = VersionManagement.check_version_auto_update(uid, '', ver_data)
+        if not result:
+            return response.json(0, {'uid': uid})
+
         redisObject = RedisObject()
         redisObject = RedisObject()
         key = 'limit_{eid}'.format(eid=equipment.eid)
         key = 'limit_{eid}'.format(eid=equipment.eid)
 
 

+ 10 - 8
Controller/SensorGateway/GatewayDeviceController.py

@@ -16,8 +16,7 @@ from django.db.models import Q
 from django.views.generic.base import View
 from django.views.generic.base import View
 
 
 from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SCENE_EVENT_DELETE, SUB_DEVICE_TOPIC
 from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SCENE_EVENT_DELETE, SUB_DEVICE_TOPIC
-from Ansjer.config import CONFIG_INFO, AWS_IOT_SES_ACCESS_CHINA_ID, AWS_IOT_SES_ACCESS_CHINA_SECRET, \
-    AWS_IOT_SES_ACCESS_CHINA_REGION, AWS_IOT_SES_ACCESS_FOREIGN_ID, AWS_IOT_SES_ACCESS_FOREIGN_SECRET, \
+from Ansjer.config import CONFIG_INFO, AWS_IOT_SES_ACCESS_CHINA_REGION, \
     AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA, AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE
     AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA, AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE
 from Ansjer.config import LOGGER
 from Ansjer.config import LOGGER
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
@@ -31,6 +30,9 @@ 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 Service.ModelService import ModelService
 from Service.ModelService import ModelService
+from django.conf import settings
+AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID
+AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY
 
 
 
 
 class GatewayDeviceView(View):
 class GatewayDeviceView(View):
@@ -323,17 +325,17 @@ class GatewayDeviceView(View):
             iot_data_plane = None
             iot_data_plane = None
             thing_name = 'LC_' + serial_number
             thing_name = 'LC_' + serial_number
             if 'test' == CONFIG_INFO or CONFIG_INFO == 'cn':
             if 'test' == CONFIG_INFO or CONFIG_INFO == 'cn':
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_CHINA_ID,
-                                                        AWS_IOT_SES_ACCESS_CHINA_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[0],
+                                                        AWS_SECRET_ACCESS_KEY[0],
                                                         AWS_IOT_SES_ACCESS_CHINA_REGION)
                                                         AWS_IOT_SES_ACCESS_CHINA_REGION)
 
 
             elif 'us' == CONFIG_INFO:
             elif 'us' == CONFIG_INFO:
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_FOREIGN_ID,
-                                                        AWS_IOT_SES_ACCESS_FOREIGN_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[1],
+                                                        AWS_SECRET_ACCESS_KEY[1],
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA)
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA)
             elif 'eur' == CONFIG_INFO:
             elif 'eur' == CONFIG_INFO:
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_FOREIGN_ID,
-                                                        AWS_IOT_SES_ACCESS_FOREIGN_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[1],
+                                                        AWS_SECRET_ACCESS_KEY[1],
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE)
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE)
 
 
             if iot_data_plane:
             if iot_data_plane:

+ 17 - 14
Controller/SensorGateway/SmartSocketController.py

@@ -23,9 +23,12 @@ from Object.AWS.AWSIoTDataPlaneUtil import AWSIoTDataPlaneService
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.utils import LocalDateTimeUtil
 from Object.utils import LocalDateTimeUtil
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
-from Ansjer.config import CONFIG_INFO, AWS_IOT_SES_ACCESS_CHINA_ID, AWS_IOT_SES_ACCESS_CHINA_SECRET, \
-    AWS_IOT_SES_ACCESS_CHINA_REGION, AWS_IOT_SES_ACCESS_FOREIGN_ID, AWS_IOT_SES_ACCESS_FOREIGN_SECRET, \
+from Ansjer.config import CONFIG_INFO, AWS_IOT_SES_ACCESS_CHINA_REGION, \
     AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA, AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE, ALEXA_DOMAIN
     AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA, AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE, ALEXA_DOMAIN
+from django.conf import settings
+AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID
+AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY
+
 
 
 LOGGER = logging.getLogger('info')
 LOGGER = logging.getLogger('info')
 SOCKET_TOPIC_NAME = 'loocam/smart-socket/{}'  # 插座发布消息主题(因设备当前版本只能订阅一个主题)
 SOCKET_TOPIC_NAME = 'loocam/smart-socket/{}'  # 插座发布消息主题(因设备当前版本只能订阅一个主题)
@@ -867,17 +870,17 @@ class SmartSocketView(View):
             # 判断设备是否在线
             # 判断设备是否在线
             thing_name = 'LC_' + serialNumber
             thing_name = 'LC_' + serialNumber
             if 'test' == CONFIG_INFO or CONFIG_INFO == 'cn':
             if 'test' == CONFIG_INFO or CONFIG_INFO == 'cn':
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_CHINA_ID,
-                                                        AWS_IOT_SES_ACCESS_CHINA_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[0],
+                                                        AWS_SECRET_ACCESS_KEY[0],
                                                         AWS_IOT_SES_ACCESS_CHINA_REGION)
                                                         AWS_IOT_SES_ACCESS_CHINA_REGION)
 
 
             elif 'us' == CONFIG_INFO:
             elif 'us' == CONFIG_INFO:
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_FOREIGN_ID,
-                                                        AWS_IOT_SES_ACCESS_FOREIGN_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[1],
+                                                        AWS_SECRET_ACCESS_KEY[1],
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA)
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA)
             else:
             else:
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_FOREIGN_ID,
-                                                        AWS_IOT_SES_ACCESS_FOREIGN_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[1],
+                                                        AWS_SECRET_ACCESS_KEY[1],
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE)
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE)
             res = iot_data_plane.get_thing_shadow(thing_name)
             res = iot_data_plane.get_thing_shadow(thing_name)
             if not res:
             if not res:
@@ -910,17 +913,17 @@ class SmartSocketView(View):
             # 判断设备是否在线
             # 判断设备是否在线
             thing_name = 'LC_' + serial_number
             thing_name = 'LC_' + serial_number
             if 'test' == CONFIG_INFO or CONFIG_INFO == 'cn':
             if 'test' == CONFIG_INFO or CONFIG_INFO == 'cn':
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_CHINA_ID,
-                                                        AWS_IOT_SES_ACCESS_CHINA_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[0],
+                                                        AWS_SECRET_ACCESS_KEY[0],
                                                         AWS_IOT_SES_ACCESS_CHINA_REGION)
                                                         AWS_IOT_SES_ACCESS_CHINA_REGION)
 
 
             elif 'us' == CONFIG_INFO:
             elif 'us' == CONFIG_INFO:
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_FOREIGN_ID,
-                                                        AWS_IOT_SES_ACCESS_FOREIGN_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[1],
+                                                        AWS_SECRET_ACCESS_KEY[1],
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA)
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA)
             else:
             else:
-                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_FOREIGN_ID,
-                                                        AWS_IOT_SES_ACCESS_FOREIGN_SECRET,
+                iot_data_plane = AWSIoTDataPlaneService(AWS_ACCESS_KEY_ID[1],
+                                                        AWS_SECRET_ACCESS_KEY[1],
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE)
                                                         AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE)
             res = iot_data_plane.get_thing_shadow(thing_name)
             res = iot_data_plane.get_thing_shadow(thing_name)
             if not res:
             if not res:

+ 2 - 2
Object/AWS/S3Email.py

@@ -16,8 +16,8 @@ class S3Email:
     def faEmail(self, sys_msg_text, username):
     def faEmail(self, sys_msg_text, username):
         SENDER = 'rdpublic@ansjer.com'  # 邮箱名
         SENDER = 'rdpublic@ansjer.com'  # 邮箱名
         SENDERNAME = 'rdpublic@ansjer.com'
         SENDERNAME = 'rdpublic@ansjer.com'
-        USERNAME_SMTP = 'AKIA2E67UIMD6MOSFKXW'  # 带有邮件权限的 IAM 帐号
-        PASSWORD_SMTP = 'BHuQ6EQTtFK4qh46o9omO9ZzO3NXzjk/JCWLXnVFmqzM'  # 带有邮件权限的 IAM 密码
+        USERNAME_SMTP = AWS_ACCESS_KEY_ID[1]
+        PASSWORD_SMTP = AWS_SECRET_ACCESS_KEY[1]
         PORT = '587'
         PORT = '587'
         HOST = 'email-smtp.us-east-1.amazonaws.com'
         HOST = 'email-smtp.us-east-1.amazonaws.com'
         SUBJECT = sys_msg_text
         SUBJECT = sys_msg_text

+ 7 - 9
Object/AWS/SesClassObject.py

@@ -1,4 +1,5 @@
-from Ansjer.config import ALY_SES_ACCESS_NAME,ALY_SES_ACCESS_PAW,ALY_SES_ACCESS_REPLYTO,AWS_SES_ACCESS_ID,AWS_SES_ACCESS_SECRET,AWS_SES_ACCESS_REGION,SES_COMPANY_EMAIL
+from Ansjer.config import ALY_SES_ACCESS_NAME, ALY_SES_ACCESS_PAW, ALY_SES_ACCESS_REPLYTO, AWS_SES_ACCESS_REGION, \
+    SES_COMPANY_EMAIL
 
 
 from boto3.session import Session
 from boto3.session import Session
 import traceback
 import traceback
@@ -6,24 +7,21 @@ import smtplib
 import email
 import email
 from email.mime.multipart import MIMEMultipart
 from email.mime.multipart import MIMEMultipart
 from email.mime.text import MIMEText
 from email.mime.text import MIMEText
-from email.mime.image import MIMEImage
-from email.mime.base import MIMEBase
-from email.mime.application import MIMEApplication
 from email.header import Header
 from email.header import Header
+from django.conf import settings
+AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID
+AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY
 
 
 
 
 class SesClassObject:
 class SesClassObject:
    def __init__(self, *args, **kwargs):
    def __init__(self, *args, **kwargs):
-        self.access_id = AWS_SES_ACCESS_ID
-        self.access_secret = AWS_SES_ACCESS_SECRET
-        self.region_name = AWS_SES_ACCESS_REGION
         self.company_email = SES_COMPANY_EMAIL
         self.company_email = SES_COMPANY_EMAIL
         self.aliyun_username = ALY_SES_ACCESS_NAME
         self.aliyun_username = ALY_SES_ACCESS_NAME
         self.aliyun_password = ALY_SES_ACCESS_PAW
         self.aliyun_password = ALY_SES_ACCESS_PAW
         self.aliyun_replyto = ALY_SES_ACCESS_REPLYTO
         self.aliyun_replyto = ALY_SES_ACCESS_REPLYTO
         session = Session(
         session = Session(
-            aws_access_key_id=AWS_SES_ACCESS_ID,
-            aws_secret_access_key=AWS_SES_ACCESS_SECRET,
+            aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+            aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
             region_name=AWS_SES_ACCESS_REGION,
             region_name=AWS_SES_ACCESS_REGION,
         )
         )
         self.conn = session.client('ses')
         self.conn = session.client('ses')

+ 12 - 11
Object/IOTCore/IotObject.py

@@ -4,10 +4,11 @@ import json
 
 
 import boto3
 import boto3
 
 
-from Ansjer.config import AWS_IOT_SES_ACCESS_CHINA_REGION, AWS_IOT_SES_ACCESS_CHINA_ID, AWS_IOT_SES_ACCESS_CHINA_SECRET, \
-    AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA, AWS_IOT_SES_ACCESS_FOREIGN_ID, AWS_IOT_SES_ACCESS_FOREIGN_SECRET, \
-    AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE, AWS_IOT_SES_ACCESS_FOREIGN_REGION_ASIA, AWS_IOT_SES_ACCESS_CHINA_ROLE, \
-    AWS_IOT_SES_ACCESS_FOREIGN_ROLE
+from Ansjer.config import AWS_IOT_SES_ACCESS_CHINA_REGION, AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA, \
+    AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE, AWS_IOT_SES_ACCESS_CHINA_ROLE, AWS_IOT_SES_ACCESS_FOREIGN_ROLE
+from django.conf import settings
+AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID
+AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY
 
 
 
 
 class IOTClient:
 class IOTClient:
@@ -15,8 +16,8 @@ class IOTClient:
         if region_id == 1 or region_id == 5:
         if region_id == 1 or region_id == 5:
             # 中国宁夏
             # 中国宁夏
             self.client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_CHINA_REGION,
             self.client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_CHINA_REGION,
-                                       aws_access_key_id=AWS_IOT_SES_ACCESS_CHINA_ID,
-                                       aws_secret_access_key=AWS_IOT_SES_ACCESS_CHINA_SECRET)
+                                       aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+                                       aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0])
             # 终端节点: https://cn-northwest-1.console.amazonaws.cn/iot/home?region=cn-northwest-1#/settings
             # 终端节点: https://cn-northwest-1.console.amazonaws.cn/iot/home?region=cn-northwest-1#/settings
             self.endpoint = 'a250bbr0p9u7as-ats.iot.cn-northwest-1.amazonaws.com.cn'
             self.endpoint = 'a250bbr0p9u7as-ats.iot.cn-northwest-1.amazonaws.com.cn'
             self.iot_role = AWS_IOT_SES_ACCESS_CHINA_ROLE
             self.iot_role = AWS_IOT_SES_ACCESS_CHINA_ROLE
@@ -24,16 +25,16 @@ class IOTClient:
         elif region_id == 2 or region_id == 3:
         elif region_id == 2 or region_id == 3:
             # 美东弗吉尼亚
             # 美东弗吉尼亚
             self.client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA,
             self.client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA,
-                                       aws_access_key_id=AWS_IOT_SES_ACCESS_FOREIGN_ID,
-                                       aws_secret_access_key=AWS_IOT_SES_ACCESS_FOREIGN_SECRET)
+                                       aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+                                       aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1])
             self.endpoint = 'a2rqy12o004ad8-ats.iot.us-east-1.amazonaws.com'
             self.endpoint = 'a2rqy12o004ad8-ats.iot.us-east-1.amazonaws.com'
             self.iot_role = AWS_IOT_SES_ACCESS_FOREIGN_ROLE
             self.iot_role = AWS_IOT_SES_ACCESS_FOREIGN_ROLE
 
 
         elif region_id == 4:
         elif region_id == 4:
             # 西欧爱尔兰
             # 西欧爱尔兰
             self.client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE,
             self.client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE,
-                                       aws_access_key_id=AWS_IOT_SES_ACCESS_FOREIGN_ID,
-                                       aws_secret_access_key=AWS_IOT_SES_ACCESS_FOREIGN_SECRET)
+                                       aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+                                       aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1])
             self.endpoint = 'a2rqy12o004ad8-ats.iot.eu-west-1.amazonaws.com'
             self.endpoint = 'a2rqy12o004ad8-ats.iot.eu-west-1.amazonaws.com'
             self.iot_role = AWS_IOT_SES_ACCESS_FOREIGN_ROLE
             self.iot_role = AWS_IOT_SES_ACCESS_FOREIGN_ROLE
 
 
@@ -140,4 +141,4 @@ class IOTClient:
             return res, parameters
             return res, parameters
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
-            return response.json(500, repr(e))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 3 - 32
Service/CommonService.py

@@ -28,6 +28,8 @@ from Model.models import iotdeviceInfoModel, Device_Info, UIDModel, AppDeviceTyp
 from Object.AWS.S3Email import S3Email
 from Object.AWS.S3Email import S3Email
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
+from django.conf import settings
+AWS_IOT_AUTH_PRIVATE_KEY = settings.AWS_IOT_AUTH_PRIVATE_KEY
 
 
 
 
 class CommonService:
 class CommonService:
@@ -504,40 +506,9 @@ class CommonService:
         # 私钥签名Token
         # 私钥签名Token
         if not Token:
         if not Token:
             return ''
             return ''
-        private_key_file = '''-----BEGIN RSA PRIVATE KEY-----
-MIIEpQIBAAKCAQEA5iJzEDPqtGmFMggekVro6C0lrjuC2BjunGkrFNJWpDYzxCzE
-X5jf4/Fq7hcIaQd5sqHugDxPVollSLPe9zNilbrd0sZfU+Ed8gRVuKW9KwfE9XFr
-L0pt6bKRQ0IIRfiZ9TuR0tsQysvcO1GZSXcYfPue3tGM1zOnWFThWDqZ06+sOxzt
-RMRl4yNfbpCG4MfxG3itNXOfrjZv2OMLSXrxmzubSvRpUYSvQPs4fm9302SAnySY
-0MKzx6H6528ZQm/IDDSZy6EmNBIyTRDfxC56vnYcXvqedAQh7jJnjdvt6Q4MhASH
-eIYi1FBSdu2NT6wgpnrqXzx5pq9kR/lnsLID0wIDAQABAoIBAQCiF4GT1/1oNSpr
-ouxk1PNXFPWFUsVGD8mAwVJmx//eiY7MjfuCmdqYYmI+cFqsH2fIOeYSzGfVO9Dq
-9EYHN1oovAWhf7eFDPpajFMUSyiCNmazub8VAAeKowtNpCTPo9pMsDh1m3aoYA4u
-ebrN0+Sbo16y8kWRDgDAZoiR7DSMs8lczk16hwfv5mw8XpNDbaL3Coi4Koe2S1Yh
-2SX3vWFlpd7qF1ZYXuZIp+b8JPrV7n9eUKoFgzj0gqgwQK80CoexIjiOrNMPvkQa
-q+8kCvFjAzKxOK7e8gjM8lMRiGodb61kmYZkkJzFwWO4EaGbl34lfVECd1Ixp3tF
-be0OWAGBAoGBAPSteXDzzToD8ovM7LL11x0jWwI6HOiHu89kZtW566rIezjWBuA2
-TxrcYKM3h9jQRXS3CsMdoIv6XGk5lqM8ADtjn23FBWe/THYLh8bm8JOgh5RRWQDg
-SvkLfi9Ih2mM4NJfmuuDOh3Nze2efLM7+kOZWUQwF2Zx9mL5jvRBk351AoGBAPDI
-sYmT2Li+i5+0vykA2m5uPF8ZOW8BGtAfCZv0suW7BNzSgin78g9WapRd/4p0NNiL
-/nVMqPPCpd1akCUpV+GDWQt0hV+HZjxANE0KWhciQRyo2qvo51j8SWILJSgh0tXC
-aTF8qt6oGw3VN3m57vKhbrlDaz0J/NDJFci6msAnAoGBAOuG6bXPGijUj+//DYKf
-n7jOxdZ49kboEePrtAncdHzri6IEdI3z+WXT6bpzw/LzWUimwldb96WHFNm9s8Hi
-Ch8hIODbnP5naUTgiIzw1XhmONyPCewL/F+LrqX5XVA/alNX8JrwsUrrR2WLAGLQ
-Q3I69XDsEjptTU2tCO0bCs3ZAoGBAJ2lCHfm0JHET230zONvp5N9oREyVqQSuRdh
-+syc3TQDyh85w/bw+X6JOaaCFHj1tFPC9Iqf8k4GNspCLPXnp54CfR4+38O3xnvU
-HWoDSRC0YKT++IxtJGriYrlKSr2Hx54kdvLriIPW1D+uRW/xCDza7L9nIKMKEvgv
-b4/IfOEpAoGAeKM9Te7T1VzlAkS0CJOwanzwYV/zrex84WuXxlsGgPQ871lTs5AP
-H1QLfLfFXH+UVrCEC2yv4eml/cqFkpB3gE5i4MQ8GPVIOSs5tsIyl8YUA03vdNdB
-GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
------END RSA PRIVATE KEY-----'''
-        # 使用密钥文件方式
-        # private_key_file_path = os.path.join(BASE_DIR, 'static/iotCore/private.pem')#.replace('\\', '/')
-        # private_key_file = open(private_key_file_path, 'r')
-        private_key = ct.load_privatekey(ct.FILETYPE_PEM, private_key_file)
+        private_key = ct.load_privatekey(ct.FILETYPE_PEM, AWS_IOT_AUTH_PRIVATE_KEY)
         signature = ct.sign(private_key, Token.encode('utf8'), 'sha256')
         signature = ct.sign(private_key, Token.encode('utf8'), 'sha256')
         signature = encodebytes(signature).decode('utf8').replace('\n', '')
         signature = encodebytes(signature).decode('utf8').replace('\n', '')
-        # print('signature:', signature)
         return signature
         return signature
 
 
     @staticmethod
     @staticmethod