EquipmentStatus.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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 urllib.parse
  16. import time
  17. import oss2
  18. from django.http import JsonResponse
  19. from django.views.decorators.csrf import csrf_exempt
  20. from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
  21. from Model.models import Device_Info
  22. from Object.ETkObject import ETkObject
  23. from Object.ResponseObject import ResponseObject
  24. from Service.CommonService import CommonService
  25. '''
  26. http://192.168.136.45:8077/device/online?UID=C2887N9EBS87ZAT1111A
  27. http://192.168.136.45:8077/device/offline?UID=C2887N9EBS87ZAT1111A
  28. http://192.168.136.45:8077/device/updateIP?UID=C2887N9EBS87ZAT1111A?ip=190.9.194.216
  29. '''
  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. if not ip:
  92. ip = CommonService.get_ip_address(request)
  93. if c:
  94. c = base64.b64decode(c)
  95. c = c[2:-2]
  96. c = urllib.parse.unquote(c.decode('utf-8'))
  97. c = base64.b64decode(c)
  98. uid = c.decode('utf-8')
  99. if len(uid) == 20:
  100. print(uid)
  101. info = CommonService.getIpIpInfo(ip=ip, lang=lang)
  102. try:
  103. tz = info['utc_offset']
  104. # 增加GMT,且补:00
  105. if len(tz) == 5:
  106. gmtz = tz.replace('UTC-', 'GMT-0').replace('UTC+', 'GMT+0')
  107. if ':' not in gmtz:
  108. gmtz = gmtz + ':00'
  109. info['gmt_offset'] = gmtz
  110. elif len(tz) == 8:
  111. gmtz = tz.replace('UTC-', 'GMT-0').replace('UTC+', 'GMT+0')
  112. info['gmt_offset'] = gmtz
  113. except Exception as e:
  114. pass
  115. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': info})
  116. else:
  117. return JsonResponse(status=200, data={'code': 404, 'msg': '令牌错误'})
  118. else:
  119. return JsonResponse(status=200, data={'code': 444, 'msg': '接口参数错误 etk'})
  120. # 设备日志上传
  121. def getUploadLogUrl(request):
  122. request.encoding = 'utf-8'
  123. if request.method == 'GET':
  124. request_dict = request.GET
  125. elif request.method == 'POST':
  126. request_dict = request.POST
  127. else:
  128. return JsonResponse(status=200, data={'code': 403, 'msg': 'wrong post method!'})
  129. etk = request_dict.get('etk', None)
  130. eto = ETkObject(etk)
  131. uid = eto.uid
  132. if len(uid) == 20:
  133. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  134. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  135. nowTime = int(time.time())
  136. obj = 'log/{uid}'.format(uid=uid) + str(nowTime) + '.log'
  137. url = bucket.sign_url('PUT', obj, 7200)
  138. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'url': url})
  139. else:
  140. return JsonResponse(status=200, data={'code': 404, 'msg': 'wrong etk'})