views.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import requests
  2. import subprocess
  3. from bs4 import BeautifulSoup
  4. from django.http import HttpResponse
  5. from django.shortcuts import render
  6. def base(request) -> HttpResponse:
  7. return HttpResponse("<h1> Base views: Response - 200_OK </h1>")
  8. def base_info(request) -> HttpResponse:
  9. return HttpResponse("<h1> Info views: Response - 200_OK<br>Mironov Misha</h1>")
  10. def status_output(request) -> HttpResponse:
  11. user_agent = request.META["HTTP_USER_AGENT"]
  12. response = requests.get(url='https://2ip.ru/')
  13. bs = BeautifulSoup(response.text, "lxml")
  14. ip = bs.find('div', 'ip')
  15. return HttpResponse(
  16. f"<h1> IP: {ip.text} </h1><br><h1> IP: {user_agent} </h1><br><h3>Для безопасности изменены последние 2 "
  17. f"числа (после точек)</h3> "
  18. )
  19. def get_status_ipv4(request) -> HttpResponse:
  20. get_info = subprocess.check_output(
  21. ["powershell.exe", "Get-NetIPConfiguration -InterfaceAlias Ethernet -Detailed"], shell=True
  22. )
  23. decoded = get_info.decode('ISO-8859-1').replace('\r', '')
  24. return HttpResponse(
  25. f'<h3 style="max-width: 320px;">{decoded}</h3>'
  26. )
  27. def post_status_ipv4(request):
  28. if request.method == 'POST':
  29. ip_addr = request.POST.get('ip_addr')
  30. ip_mask = request.POST.get('ip_mask')
  31. ip_dns = request.POST.get('ip_dns')
  32. # -InterfaceAlias Ethernet - Это моя локальная, личная настройка. Её следует менять для других!
  33. if ip_addr:
  34. subprocess.call(
  35. ["powershell.exe", f"Set-NetIPAddress -InterfaceAlias Ethernet -IPAddress {ip_addr}"],
  36. shell=True
  37. )
  38. if ip_mask:
  39. subprocess.call(
  40. ["powershell.exe", f"Set-NetIPAddress -InterfaceAlias Ethernet -PrefixLength {ip_mask}"],
  41. shell=True
  42. )
  43. if ip_dns:
  44. subprocess.call(
  45. ["powershell.exe", f"Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses {ip_dns}"],
  46. shell=True
  47. )
  48. return HttpResponse(
  49. "<h1>Good news! Check your ip setting! ( win + R -> ncpa.cpl)</h1>"
  50. )
  51. else:
  52. return render(request, 'post_form.html')