EquipmentStatus.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: Ansjer
  7. @software: PyCharm
  8. @DATE: 2018/6/7 9:27
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: EquipmentStat.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. import base64
  15. import json
  16. import threading
  17. import urllib.parse
  18. import time
  19. import oss2
  20. from django.http import JsonResponse
  21. from django.views.decorators.csrf import csrf_exempt
  22. from Model.models import Device_Info
  23. from Object.ETkObject import ETkObject
  24. from Object.RedisObject import RedisObject
  25. from Object.ResponseObject import ResponseObject
  26. from Service.CommonService import CommonService
  27. from django.conf import settings
  28. OSS_STS_ACCESS_KEY = settings.OSS_STS_ACCESS_KEY
  29. OSS_STS_ACCESS_SECRET = settings.OSS_STS_ACCESS_SECRET
  30. @csrf_exempt
  31. def EquipmentOnline(request):
  32. response = ResponseObject()
  33. if request.method == 'GET':
  34. request.encoding = 'utf-8'
  35. UID = request.GET.get('UID', None)
  36. if request.method == 'POST':
  37. request.encoding = 'utf-8'
  38. UID = request.POST.get('UID', None)
  39. qs = Device_Info.objects.filter(UID=UID)
  40. if not qs.exists():
  41. return response.json(173)
  42. @csrf_exempt
  43. def EquipmentOffline(request):
  44. response = ResponseObject()
  45. if request.method == 'GET':
  46. request.encoding = 'utf-8'
  47. UID = request.GET.get('UID', None)
  48. if request.method == 'POST':
  49. request.encoding = 'utf-8'
  50. UID = request.POST.get('UID', None)
  51. qs = Device_Info.objects.filter(UID=UID)
  52. if not qs.exists():
  53. return response.json(173)
  54. try:
  55. qs.update(Online=False)
  56. except Exception as e:
  57. print(repr(e))
  58. return response.json(0)
  59. @csrf_exempt
  60. def updateIP(request):
  61. response = ResponseObject()
  62. if request.method == 'GET':
  63. request.encoding = 'utf-8'
  64. request_dict = request.GET
  65. if request.method == 'POST':
  66. request.encoding = 'utf-8'
  67. request_dict = request.POST
  68. UID = request_dict.get('UID', None)
  69. ip = request_dict.get('ip', None)
  70. qs = Device_Info.objects.filter(UID=UID)
  71. if not qs.exists():
  72. return response.json(173)
  73. area = ''
  74. try:
  75. area = CommonService.getAddr(ip=ip)
  76. qs.update(ip=ip, area=area)
  77. except Exception as e:
  78. print(repr(e))
  79. return response.json(0, {'area': area})
  80. def getTZ(request):
  81. request.encoding = 'utf-8'
  82. if request.method == 'GET':
  83. request_dict = request.GET
  84. elif request.method == 'POST':
  85. request_dict = request.POST
  86. else:
  87. return JsonResponse(status=200, data={'code': 403, 'msg': '接口请求方法错误'})
  88. c = request_dict.get('etk', None)
  89. ip = request_dict.get('ip', None)
  90. lang = request_dict.get('lang', None)
  91. update = request_dict.get('update',None)
  92. if not ip:
  93. ip = CommonService.get_ip_address(request)
  94. if c:
  95. c = base64.b64decode(c)
  96. c = c[2:-2]
  97. c = urllib.parse.unquote(c.decode('utf-8'))
  98. c = base64.b64decode(c)
  99. uid = c.decode('utf-8')
  100. if len(uid) == 20:
  101. print(uid)
  102. redisObject = RedisObject()
  103. data = redisObject.get_data(key=ip)
  104. if data:
  105. info = json.loads(data)
  106. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': info})
  107. elif update:
  108. info = CommonService.getIpIpInfo(ip=ip, lang=lang,update=True)
  109. else:
  110. info = CommonService.getIpIpInfo(ip=ip, lang=lang,update=False)
  111. try:
  112. tz = info['utc_offset']
  113. if len(tz) == 0:
  114. info['utc_offset'] = "UTC+8"
  115. info['gmt_offset'] = "GMT+08:00"
  116. # 增加GMT,且补:00
  117. if len(tz) == 5:
  118. gmtz = tz.replace('UTC-', 'GMT-0').replace('UTC+', 'GMT+0')
  119. if ':' not in gmtz:
  120. gmtz = gmtz + ':00'
  121. info['gmt_offset'] = gmtz
  122. if len(tz) == 6:
  123. gmtz = tz.replace('UTC-', 'GMT-').replace('UTC+', 'GMT+')
  124. if ':' not in gmtz:
  125. gmtz = gmtz + ':00'
  126. info['gmt_offset'] = gmtz
  127. elif len(tz) == 8:
  128. gmtz = tz.replace('UTC-', 'GMT-0').replace('UTC+', 'GMT+0')
  129. info['gmt_offset'] = gmtz
  130. redisObject.set_data(key=ip, val=json.dumps(info), expire=3600)
  131. except Exception as e:
  132. pass
  133. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': info})
  134. else:
  135. return JsonResponse(status=200, data={'code': 404, 'msg': '令牌错误'})
  136. else:
  137. return JsonResponse(status=200, data={'code': 444, 'msg': '接口参数错误 etk'})
  138. # 设备日志上传
  139. def getUploadLogUrl(request):
  140. request.encoding = 'utf-8'
  141. if request.method == 'GET':
  142. request_dict = request.GET
  143. elif request.method == 'POST':
  144. request_dict = request.POST
  145. else:
  146. return JsonResponse(status=200, data={'code': 403, 'msg': 'wrong post method!'})
  147. etk = request_dict.get('etk', None)
  148. eto = ETkObject(etk)
  149. uid = eto.uid
  150. if len(uid) == 20:
  151. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  152. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  153. nowTime = int(time.time())
  154. obj = 'log/{uid}/'.format(uid=uid) + str(nowTime) + '.log'
  155. url = bucket.sign_url('PUT', obj, 7200)
  156. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'url': url})
  157. else:
  158. return JsonResponse(status=200, data={'code': 404, 'msg': 'wrong etk'})