views.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. from django.template import loader
  4. from django.shortcuts import redirect
  5. from django.conf import settings
  6. from django.urls import reverse
  7. import vyos
  8. from perms import is_authenticated
  9. from filters.vycontrol_filters import routeunpack
  10. import perms
  11. @is_authenticated
  12. def static_list(request):
  13. all_instances = vyos.instance_getall()
  14. hostname_default = vyos.get_hostname_prefered(request)
  15. static_dict = vyos.get_route_static(hostname_default)
  16. is_superuser = perms.get_is_superuser(request.user)
  17. static_list = []
  18. for s in static_dict['route']:
  19. static_list.append({
  20. 'route': s,
  21. 'nexthop': static_dict['route'][s]['next-hop'],
  22. })
  23. template = loader.get_template('static/list.html')
  24. context = {
  25. 'instances': all_instances,
  26. 'hostname_default': hostname_default,
  27. 'static_list' : static_list,
  28. 'username': request.user,
  29. 'is_superuser' : is_superuser,
  30. }
  31. return HttpResponse(template.render(context, request))
  32. @is_authenticated
  33. def static_add(request):
  34. all_instances = vyos.instance_getall()
  35. hostname_default = vyos.get_hostname_prefered(request)
  36. static_list = vyos.get_route_static(hostname_default)
  37. is_superuser = perms.get_is_superuser(request.user)
  38. error_message = None
  39. if 'subnet' in request.POST and 'nexthop' in request.POST:
  40. return1 = vyos.set_route_static(hostname_default, request.POST['subnet'], request.POST['nexthop'])
  41. if return1 == False:
  42. error_message = 'Cannot add static route.'
  43. else:
  44. return redirect('static:static-list')
  45. ippath = vyos.ip_route(hostname_default)
  46. template = loader.get_template('static/add.html')
  47. context = {
  48. 'instances': all_instances,
  49. 'hostname_default': hostname_default,
  50. 'static_list' : static_list,
  51. 'error_message' : error_message,
  52. 'username': request.user,
  53. 'is_superuser' : is_superuser,
  54. }
  55. return HttpResponse(template.render(context, request))
  56. @is_authenticated
  57. def static_remove(request, route, nexthop):
  58. all_instances = vyos.instance_getall()
  59. hostname_default = vyos.get_hostname_prefered(request)
  60. static_list = vyos.get_route_static(hostname_default)
  61. print(route)
  62. print(routeunpack(route))
  63. if route and nexthop:
  64. return1 = vyos.delete_route_static(hostname_default, routeunpack(route), nexthop)
  65. return redirect('static:static-list')