Guest User

Untitled

a guest
Mar 20th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.60 KB | None | 0 0
  1. from django.shortcuts import render
  2. import subprocess
  3. import pytz
  4. from django.http import HttpRequest
  5. from django.http import HttpResponse
  6. from django.http import HttpResponseRedirect
  7. from django.db import connection
  8. import pymysql.cursors
  9. import requests
  10. from datetime import datetime
  11. import json
  12. import shutil
  13. from django.contrib.auth import authenticate, login
  14. from django.contrib.auth import logout
  15. from django.contrib.auth.decorators import login_required, permission_required
  16. from django.contrib.auth.decorators import user_passes_test
  17. from django.contrib.auth.models import Group, Permission
  18. from django.db import connection
  19. from django.http import HttpResponse
  20. from django.http import HttpResponseRedirect
  21. from django.http import JsonResponse
  22. from django.shortcuts import render
  23. import time
  24. import hashlib
  25. import base64
  26. import re
  27. import logging
  28. from django.http import HttpResponse
  29. import subprocess
  30. from cisco_phone.models import Phones, UsersPhone
  31. from django.contrib.auth.models import User
  32. import requests
  33. import os
  34.  
  35.  
  36. # Create your views here.
  37. @login_required
  38. def index(request):
  39. all_phones = Phones.objects.all()
  40. return render(request, 'cisco_phone/connect_phone.html', {'phones': all_phones})
  41.  
  42.  
  43. def main_login(request):
  44. return render(request, 'cisco_phone/login.html', {})
  45.  
  46.  
  47. def connection_error(request):
  48. return render(request, 'cisco_phone/error.html', {})
  49.  
  50. def user_login(request):
  51. if request.method == 'POST':
  52. username = request.POST.get('username')
  53. password = request.POST.get('password')
  54. print(username)
  55. user = authenticate(username=username, password=password)
  56. if user:
  57. if user.is_active:
  58. login(request, user)
  59. print(request.user.pk)
  60. user_phone_exist = UsersPhone.objects.filter(user_id=request.user.pk).exists()
  61. print(user_phone_exist)
  62. if user_phone_exist:
  63. return HttpResponseRedirect('/cisco_phone/page_reset')
  64. else:
  65. return HttpResponseRedirect('/cisco_phone/index')
  66. else:
  67. return HttpResponse("Your account is disabled.")
  68. else:
  69. print("The password is valid, but the account has been disabled!")
  70. return render(request, 'cisco_phone/login.html', {'data': 'error'})
  71. else:
  72. return render(request, 'cisco_phone/login.html', {})
  73.  
  74.  
  75. @login_required
  76. def user_logout(request):
  77. logout(request)
  78. return HttpResponseRedirect('/cisco_phone/')
  79.  
  80.  
  81. def apply_config(request):
  82. phone = request.POST.get('phone')
  83. user_id = request.user.pk
  84. CONFIG_SERVER_IP = '172.30.10.254'
  85. CONFIG_SERVER_PORT = 80
  86.  
  87. all_phones = Phones.objects.get(id=phone)
  88. phone_ip = all_phones.ip
  89. all_users = User.objects.get(id=user_id)
  90. login = all_users.username
  91. all_user_phone = UsersPhone.objects.filter(phone_id=all_phones.id).exists()
  92. try:
  93. if all_user_phone == False:
  94. print(login)
  95. print(phone_ip)
  96. config_name = login
  97. url = ("http://" + phone_ip + "/admin/resync?http://" + CONFIG_SERVER_IP + ":" + str(CONFIG_SERVER_PORT) +
  98. "/conf/" + config_name + ".xml")
  99. res = requests.get(url)
  100. msg = str(login) + ' use phone - ' + str(all_phones.name)
  101. info = 'Data apply'
  102. print(res.content)
  103. try:
  104. try:
  105. user_id_db = UsersPhone.objects.get(user_id=user_id)
  106. mo = UsersPhone(user_id=user_id_db.id, phone_id=phone)
  107. mo.save()
  108. except:
  109. UsersPhone.objects.filter(user_id=user_id).delete()
  110. mo = UsersPhone(user_id=user_id, phone_id=phone)
  111. mo.save()
  112.  
  113. except UsersPhone.DoesNotExist:
  114. mo = UsersPhone(user_id=user_id, phone_id=phone)
  115. mo.save()
  116. time.sleep(15)
  117. while True:
  118. response = os.system("ping -c 3 " + str(phone_ip))
  119. if response == 0:
  120. break
  121. time.sleep(2)
  122.  
  123. else:
  124. all_user_phone1 = UsersPhone.objects.get(phone_id=all_phones.id)
  125. used_user = User.objects.get(id=all_user_phone1.user_id)
  126. # try:
  127. all_phones = Phones.objects.get(id=phone)
  128. phone_ip = all_phones.ip
  129. url = ("http://" + str(phone_ip) + "/admin/spacfg.xml")
  130. print(url)
  131. res = requests.get(url)
  132. print(res.content)
  133. if "OUT_OF_USE" in str(res.content) or used_user.username == login:
  134. print('yes')
  135. config_name = login
  136. url = ("http://" + phone_ip + "/admin/resync?http://" + CONFIG_SERVER_IP + ":" + str(CONFIG_SERVER_PORT) +
  137. "/conf/" + config_name + ".xml")
  138. res = requests.get(url)
  139. msg = str(login) + ' use phone - ' + str(all_phones.name)
  140. info = 'Data apply'
  141. print(res.content)
  142.  
  143. UsersPhone.objects.filter(phone_id=phone).delete()
  144. try:
  145. try:
  146. user_id_db = UsersPhone.objects.get(user_id=user_id)
  147. mo = UsersPhone(user_id=user_id_db.id, phone_id=phone)
  148. mo.save()
  149. except:
  150. UsersPhone.objects.filter(user_id=user_id).delete()
  151. mo = UsersPhone(user_id=user_id, phone_id=phone)
  152. mo.save()
  153.  
  154. except UsersPhone.DoesNotExist:
  155. mo = UsersPhone(user_id=user_id, phone_id=phone)
  156. mo.save()
  157. time.sleep(10)
  158. while True:
  159. response = os.system("ping -c 30 " + str(phone_ip))
  160. if response == 0:
  161. break
  162. time.sleep(2)
  163. else:
  164. print('no')
  165. info = "Phone used " + str(used_user.username)
  166. msg = "Phone used " + str(used_user.username)
  167.  
  168. except OSError:
  169. print('connection error')
  170. # return HttpResponseRedirect('/cisco_phone/connection_error')
  171. info = 'Телефон недоступен'
  172. msg = 'Телефон недоступен'
  173.  
  174. # http://{$phone_ip}/admin/resync?http://" . CONFIG_SERVER_IP . ":" . CONFIG_SERVER_PORT . "/conf/{$config_name}.xml"
  175. # http://192.168.10.11/admin/resync?http://192.168.10.254:8004/conf/admin.xml
  176.  
  177. # curl "http://192.168.10.254/admin/spacfg.xml" | grep "Transport"
  178. # 358 03.03.2018 14:18:39 curl "http://192.168.10.11/admin/spacfg.xml" | grep "BALUSHKO"
  179.  
  180. return JsonResponse({'info':info, 'data': msg})
  181. # return render(request, 'cisco_phone/reset_phone.html', {'data': msg})
  182.  
  183.  
  184. def page_reset(request):
  185. try:
  186. user_id = request.user.pk
  187. print(user_id)
  188. data_user_phone = UsersPhone.objects.get(user_id=user_id)
  189. phone_id = data_user_phone.phone_id
  190. print(phone_id)
  191.  
  192. data_user = User.objects.get(id=user_id)
  193. login = data_user.username
  194.  
  195. data_phone = Phones.objects.get(id=phone_id)
  196. phone_name = data_phone.name
  197. phone_id = data_phone.id
  198.  
  199. phone_ip = data_phone.ip
  200. url = ("http://" + phone_ip + "/admin/spacfg.xml")
  201. print(url)
  202. res = requests.get(url)
  203. print(res.content)
  204. data = str(res.content)
  205. part1 = data.find('<Text_Logo group="Phone/General">')
  206. part2 = data.find('</Text_Logo>')
  207. len_part1 = len('<Text_Logo group="Phone/General">')
  208. data_logo = data[part1 + len_part1:part2]
  209. print(part1)
  210. print(part2)
  211. print(data_logo)
  212.  
  213. if data_logo.upper() == str(login).upper():
  214. msg = ''
  215. elif data_logo.upper() == "OUT_OF_USE":
  216. UsersPhone.objects.filter(phone_id=phone_id).delete()
  217. return HttpResponseRedirect('/cisco_phone/index')
  218. else:
  219. msg = str(login) + ' use phone - ' + str(phone_name)
  220. except OSError:
  221. print('connection error')
  222. return HttpResponseRedirect('/cisco_phone/connection_error')
  223.  
  224. return render(request, 'cisco_phone/reset_phone.html', {'login': login, 'phone': phone_name})
  225.  
  226.  
  227. def reset_config(request):
  228. phone = request.POST.get('phone')
  229. user_id = request.user.pk
  230. print(user_id)
  231. print(phone)
  232. CONFIG_SERVER_IP = '172.30.10.254'
  233. CONFIG_SERVER_PORT = 80
  234.  
  235. config_name = 'default'
  236. # try:
  237. all_phones = Phones.objects.get(name=phone)
  238. phone_ip = all_phones.ip
  239. print(phone_ip)
  240. try:
  241. url = ("http://" + phone_ip + "/admin/resync?http://" + CONFIG_SERVER_IP + ":" + str(CONFIG_SERVER_PORT) +
  242. "/conf/" + config_name + ".xml")
  243. UsersPhone.objects.filter(phone_id=all_phones.id).delete()
  244. res = requests.get(url)
  245. print(res.content)
  246. time.sleep(25)
  247. response = os.system("ping -c 3 " + str(phone_ip))
  248.  
  249. while True:
  250. response = os.system("ping -c 3 " + str(phone_ip))
  251. if response == 0:
  252. break
  253. time.sleep(2)
  254. except OSError:
  255. print('connection error')
  256. return HttpResponseRedirect('/cisco_phone/connection_error')
  257. # http://192.168.10.2541/admin/spacfg.xml
  258.  
  259. # http://{$phone_ip}/admin/resync?http://" . CONFIG_SERVER_IP . ":" . CONFIG_SERVER_PORT . "/conf/{$config_name}.xml"
  260. # http://192.168.10.2541/admin/resync?http://192.168.10.1:8004/conf/admin.xml
  261.  
  262. # curl "http://192.168.10.2541/admin/spacfg.xml" | grep "Transport"
  263. # 358 03.03.2018 14:18:39 curl "http://192.168.10.2541/admin/spacfg.xml" | grep "BALUSHKO"
  264.  
  265. return JsonResponse({'info':'Data apply'})
  266.  
  267. @login_required
  268. def all_users(request):
  269. results = []
  270. res = []
  271. connection = pymysql.connect(host='localhost',
  272. user='root',
  273. password='vfrc1202',
  274. db='binotel',
  275. charset='utf8',
  276. )
  277. cursor = connection.cursor()
  278. cursor.execute(' SELECT '
  279. ' name '
  280. ' FROM cisco_phone_phones')
  281.  
  282. for row in cursor:
  283. results.append(list(row))
  284. print(results)
  285.  
  286. return render(request, 'cisco_phone/all_user.html', {})
Add Comment
Please, Sign In to add comment