|
@@ -21,12 +21,11 @@ import time
|
|
|
|
|
|
import requests
|
|
|
from django.http import JsonResponse
|
|
|
-
|
|
|
+from ratelimit.decorators import ratelimit
|
|
|
from AnsjerPush.config import SERVER_TYPE
|
|
|
from Model.models import Device_Info, UidSetModel, UID_Preview, VoicePromptModel, UID_Bucket, UidChannelSetModel, \
|
|
|
AiService
|
|
|
from Object.ETkObject import ETkObject
|
|
|
-from Object.RedisObject import RedisObject
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Service.CommonService import CommonService
|
|
|
|
|
@@ -58,6 +57,7 @@ def generate_utk(request):
|
|
|
|
|
|
|
|
|
# 设备影子更新
|
|
|
+@ratelimit(key='ip', rate='1/1d', block=True)
|
|
|
def update_device_shadow(request):
|
|
|
request.encoding = 'utf-8'
|
|
|
response = ResponseObject()
|
|
@@ -68,23 +68,12 @@ def update_device_shadow(request):
|
|
|
else:
|
|
|
return response.json(444)
|
|
|
logger = logging.getLogger('info')
|
|
|
- redis_obj = RedisObject(db=6)
|
|
|
try:
|
|
|
- try:
|
|
|
- etk = request_dict.get('etk', None)
|
|
|
- shadow_key = 'PUSH:DEVICE:SHADOW:{}'.format(etk)
|
|
|
- device_etk = redis_obj.get_data(key=shadow_key)
|
|
|
- if device_etk:
|
|
|
- return JsonResponse(status=200,
|
|
|
- data={'code': 0, 'msg': 'The same UID is requested once a day', 'data': {}})
|
|
|
- redis_obj.set_data(key=shadow_key, val=1, expire=3600 * 24)
|
|
|
- eto = ETkObject(etk)
|
|
|
- uid = eto.uid
|
|
|
- if not uid:
|
|
|
- return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
|
|
|
- except Exception:
|
|
|
- return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
|
|
|
-
|
|
|
+ etk = request_dict.get('etk', None)
|
|
|
+ eto = ETkObject(etk)
|
|
|
+ uid = eto.uid
|
|
|
+ if not uid:
|
|
|
+ return JsonResponse(status=200, data={'code': 403, 'msg': 'error etk'})
|
|
|
logger.info('使用配置: {}'.format(SERVER_TYPE))
|
|
|
logger.info('data: {}'.format(request_dict.dict()))
|
|
|
|
|
@@ -207,4 +196,4 @@ def update_device_shadow(request):
|
|
|
return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
|
|
|
except Exception as e:
|
|
|
logger.info('更新设备影子异常: {}'.format(repr(e)))
|
|
|
- return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
|
|
|
+ return JsonResponse(status=500, data={'update_shadow_error': repr(e)})
|