Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render
- import subprocess
- import pytz
- from django.http import HttpRequest
- from django.http import HttpResponse
- from django.http import HttpResponseRedirect
- from django.db import connection
- import pymysql.cursors
- import requests
- from datetime import datetime
- import json
- import shutil
- from django.contrib.auth import authenticate, login
- from django.contrib.auth import logout
- from django.contrib.auth.decorators import login_required, permission_required
- from django.contrib.auth.decorators import user_passes_test
- from django.contrib.auth.models import Group, Permission
- from django.db import connection
- from django.http import HttpResponse
- from django.http import HttpResponseRedirect
- from django.http import JsonResponse
- from django.shortcuts import render
- import time
- import hashlib
- import base64
- import re
- import logging
- from django.http import HttpResponse
- import subprocess
- from cisco_phone.models import Phones, UsersPhone
- from django.contrib.auth.models import User
- import requests
- import os
- # Create your views here.
- @login_required
- def index(request):
- all_phones = Phones.objects.all()
- return render(request, 'cisco_phone/connect_phone.html', {'phones': all_phones})
- def main_login(request):
- return render(request, 'cisco_phone/login.html', {})
- def connection_error(request):
- return render(request, 'cisco_phone/error.html', {})
- def user_login(request):
- if request.method == 'POST':
- username = request.POST.get('username')
- password = request.POST.get('password')
- print(username)
- user = authenticate(username=username, password=password)
- if user:
- if user.is_active:
- login(request, user)
- print(request.user.pk)
- user_phone_exist = UsersPhone.objects.filter(user_id=request.user.pk).exists()
- print(user_phone_exist)
- if user_phone_exist:
- return HttpResponseRedirect('/cisco_phone/page_reset')
- else:
- return HttpResponseRedirect('/cisco_phone/index')
- else:
- return HttpResponse("Your account is disabled.")
- else:
- print("The password is valid, but the account has been disabled!")
- return render(request, 'cisco_phone/login.html', {'data': 'error'})
- else:
- return render(request, 'cisco_phone/login.html', {})
- @login_required
- def user_logout(request):
- logout(request)
- return HttpResponseRedirect('/cisco_phone/')
- def apply_config(request):
- phone = request.POST.get('phone')
- user_id = request.user.pk
- CONFIG_SERVER_IP = '172.30.10.254'
- CONFIG_SERVER_PORT = 80
- all_phones = Phones.objects.get(id=phone)
- phone_ip = all_phones.ip
- all_users = User.objects.get(id=user_id)
- login = all_users.username
- all_user_phone = UsersPhone.objects.filter(phone_id=all_phones.id).exists()
- try:
- if all_user_phone == False:
- print(login)
- print(phone_ip)
- config_name = login
- url = ("http://" + phone_ip + "/admin/resync?http://" + CONFIG_SERVER_IP + ":" + str(CONFIG_SERVER_PORT) +
- "/conf/" + config_name + ".xml")
- res = requests.get(url)
- msg = str(login) + ' use phone - ' + str(all_phones.name)
- info = 'Data apply'
- print(res.content)
- try:
- try:
- user_id_db = UsersPhone.objects.get(user_id=user_id)
- mo = UsersPhone(user_id=user_id_db.id, phone_id=phone)
- mo.save()
- except:
- UsersPhone.objects.filter(user_id=user_id).delete()
- mo = UsersPhone(user_id=user_id, phone_id=phone)
- mo.save()
- except UsersPhone.DoesNotExist:
- mo = UsersPhone(user_id=user_id, phone_id=phone)
- mo.save()
- time.sleep(15)
- while True:
- response = os.system("ping -c 3 " + str(phone_ip))
- if response == 0:
- break
- time.sleep(2)
- else:
- all_user_phone1 = UsersPhone.objects.get(phone_id=all_phones.id)
- used_user = User.objects.get(id=all_user_phone1.user_id)
- # try:
- all_phones = Phones.objects.get(id=phone)
- phone_ip = all_phones.ip
- url = ("http://" + str(phone_ip) + "/admin/spacfg.xml")
- print(url)
- res = requests.get(url)
- print(res.content)
- if "OUT_OF_USE" in str(res.content) or used_user.username == login:
- print('yes')
- config_name = login
- url = ("http://" + phone_ip + "/admin/resync?http://" + CONFIG_SERVER_IP + ":" + str(CONFIG_SERVER_PORT) +
- "/conf/" + config_name + ".xml")
- res = requests.get(url)
- msg = str(login) + ' use phone - ' + str(all_phones.name)
- info = 'Data apply'
- print(res.content)
- UsersPhone.objects.filter(phone_id=phone).delete()
- try:
- try:
- user_id_db = UsersPhone.objects.get(user_id=user_id)
- mo = UsersPhone(user_id=user_id_db.id, phone_id=phone)
- mo.save()
- except:
- UsersPhone.objects.filter(user_id=user_id).delete()
- mo = UsersPhone(user_id=user_id, phone_id=phone)
- mo.save()
- except UsersPhone.DoesNotExist:
- mo = UsersPhone(user_id=user_id, phone_id=phone)
- mo.save()
- time.sleep(10)
- while True:
- response = os.system("ping -c 30 " + str(phone_ip))
- if response == 0:
- break
- time.sleep(2)
- else:
- print('no')
- info = "Phone used " + str(used_user.username)
- msg = "Phone used " + str(used_user.username)
- except OSError:
- print('connection error')
- # return HttpResponseRedirect('/cisco_phone/connection_error')
- info = 'Телефон недоступен'
- msg = 'Телефон недоступен'
- # http://{$phone_ip}/admin/resync?http://" . CONFIG_SERVER_IP . ":" . CONFIG_SERVER_PORT . "/conf/{$config_name}.xml"
- # http://192.168.10.11/admin/resync?http://192.168.10.254:8004/conf/admin.xml
- # curl "http://192.168.10.254/admin/spacfg.xml" | grep "Transport"
- # 358 03.03.2018 14:18:39 curl "http://192.168.10.11/admin/spacfg.xml" | grep "BALUSHKO"
- return JsonResponse({'info':info, 'data': msg})
- # return render(request, 'cisco_phone/reset_phone.html', {'data': msg})
- def page_reset(request):
- try:
- user_id = request.user.pk
- print(user_id)
- data_user_phone = UsersPhone.objects.get(user_id=user_id)
- phone_id = data_user_phone.phone_id
- print(phone_id)
- data_user = User.objects.get(id=user_id)
- login = data_user.username
- data_phone = Phones.objects.get(id=phone_id)
- phone_name = data_phone.name
- phone_id = data_phone.id
- phone_ip = data_phone.ip
- url = ("http://" + phone_ip + "/admin/spacfg.xml")
- print(url)
- res = requests.get(url)
- print(res.content)
- data = str(res.content)
- part1 = data.find('<Text_Logo group="Phone/General">')
- part2 = data.find('</Text_Logo>')
- len_part1 = len('<Text_Logo group="Phone/General">')
- data_logo = data[part1 + len_part1:part2]
- print(part1)
- print(part2)
- print(data_logo)
- if data_logo.upper() == str(login).upper():
- msg = ''
- elif data_logo.upper() == "OUT_OF_USE":
- UsersPhone.objects.filter(phone_id=phone_id).delete()
- return HttpResponseRedirect('/cisco_phone/index')
- else:
- msg = str(login) + ' use phone - ' + str(phone_name)
- except OSError:
- print('connection error')
- return HttpResponseRedirect('/cisco_phone/connection_error')
- return render(request, 'cisco_phone/reset_phone.html', {'login': login, 'phone': phone_name})
- def reset_config(request):
- phone = request.POST.get('phone')
- user_id = request.user.pk
- print(user_id)
- print(phone)
- CONFIG_SERVER_IP = '172.30.10.254'
- CONFIG_SERVER_PORT = 80
- config_name = 'default'
- # try:
- all_phones = Phones.objects.get(name=phone)
- phone_ip = all_phones.ip
- print(phone_ip)
- try:
- url = ("http://" + phone_ip + "/admin/resync?http://" + CONFIG_SERVER_IP + ":" + str(CONFIG_SERVER_PORT) +
- "/conf/" + config_name + ".xml")
- UsersPhone.objects.filter(phone_id=all_phones.id).delete()
- res = requests.get(url)
- print(res.content)
- time.sleep(25)
- response = os.system("ping -c 3 " + str(phone_ip))
- while True:
- response = os.system("ping -c 3 " + str(phone_ip))
- if response == 0:
- break
- time.sleep(2)
- except OSError:
- print('connection error')
- return HttpResponseRedirect('/cisco_phone/connection_error')
- # http://192.168.10.2541/admin/spacfg.xml
- # http://{$phone_ip}/admin/resync?http://" . CONFIG_SERVER_IP . ":" . CONFIG_SERVER_PORT . "/conf/{$config_name}.xml"
- # http://192.168.10.2541/admin/resync?http://192.168.10.1:8004/conf/admin.xml
- # curl "http://192.168.10.2541/admin/spacfg.xml" | grep "Transport"
- # 358 03.03.2018 14:18:39 curl "http://192.168.10.2541/admin/spacfg.xml" | grep "BALUSHKO"
- return JsonResponse({'info':'Data apply'})
- @login_required
- def all_users(request):
- results = []
- res = []
- connection = pymysql.connect(host='localhost',
- user='root',
- password='vfrc1202',
- db='binotel',
- charset='utf8',
- )
- cursor = connection.cursor()
- cursor.execute(' SELECT '
- ' name '
- ' FROM cisco_phone_phones')
- for row in cursor:
- results.append(list(row))
- print(results)
- return render(request, 'cisco_phone/all_user.html', {})
Add Comment
Please, Sign In to add comment