views.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. from django.template import loader
  4. from django.conf import settings
  5. from django.shortcuts import redirect
  6. from django.urls import reverse
  7. from django.template.defaultfilters import register
  8. import vyos
  9. from config.models import Instance
  10. import pprint
  11. @register.filter
  12. def get_item(dictionary, key):
  13. return dictionary.get(key)
  14. def index(request):
  15. if not request.user.is_authenticated:
  16. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  17. hostname_default = vyos.get_hostname_prefered(request)
  18. all_instances = vyos.instance_getall()
  19. firewall_all = vyos.get_firewall_all(hostname_default)
  20. interfaces = vyos.get_interfaces(hostname_default)
  21. interface_firewall_in = {}
  22. interface_firewall_out = {}
  23. for interface_type in interfaces:
  24. for interface_name in interfaces[interface_type]:
  25. pprint.pprint(interface_name)
  26. try:
  27. interface_firewall_in[interface_name] = interfaces[interface_type][interface_name]['firewall']['in']['name']
  28. except:
  29. pass
  30. try:
  31. interface_firewall_out[interface_name] = interfaces[interface_type][interface_name]['firewall']['out']['name']
  32. except:
  33. pass
  34. fw_changed = False
  35. for el in request.POST:
  36. pprint.pprint(request.POST)
  37. if el.startswith('firewall-ipv4-in') and request.POST[el]:
  38. pos = el.split(".")
  39. interface_type = pos[1]
  40. interface_name = pos[2]
  41. firewall_name = request.POST[el]
  42. result1 = vyos.set_interface_firewall_ipv4(hostname_default, interface_type, interface_name, "in", firewall_name)
  43. pprint.pprint(result1)
  44. fw_changed = True
  45. elif el.startswith('firewall-ipv4-out') and request.POST[el]:
  46. pos = el.split(".")
  47. interface_type = pos[1]
  48. interface_name = pos[2]
  49. firewall_name = request.POST[el]
  50. result1 = vyos.set_interface_firewall_ipv4(hostname_default, interface_type, interface_name, "out", firewall_name)
  51. pprint.pprint(result1)
  52. fw_changed = True
  53. if fw_changed == True:
  54. return redirect('interface:interface-list')
  55. """
  56. if 'name' in request.POST:
  57. result1 = vyos.set_config(hostname_default, cmd)
  58. print(result1)
  59. if 'description' in request.POST:
  60. cmd = {"op": "set", "path": ["firewall", "name", request.POST['name'], "description", request.POST['description']]}
  61. result2 = vyos.set_config(hostname_default, cmd)
  62. print(result2)
  63. if 'action' in request.POST:
  64. cmd = {"op": "set", "path": ["firewall", "name", request.POST['name'], "default-action", request.POST['action']]}
  65. result3 = vyos.set_config(hostname_default, cmd)
  66. print(result3)
  67. return redirect('firewall:firewall-list')
  68. """
  69. template = loader.get_template('interface/index.html')
  70. context = {
  71. 'interfaces': interfaces,
  72. 'instances': all_instances,
  73. 'hostname_default': hostname_default,
  74. 'firewall_all' : firewall_all,
  75. 'interface_firewall_in' : interface_firewall_in,
  76. 'interface_firewall_out' : interface_firewall_out,
  77. }
  78. return HttpResponse(template.render(context, request))
  79. def interfaceshow(request, interface_type, interface_name):
  80. if not request.user.is_authenticated:
  81. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  82. all_instances = vyos.instance_getall()
  83. hostname_default = vyos.get_hostname_prefered(request)
  84. firewall_all = vyos.get_firewall_all(hostname_default)
  85. interface = vyos.get_interface(interface_type, interface_name, hostname=hostname_default)
  86. template = loader.get_template('interface/show.html')
  87. context = {
  88. 'interface': interface,
  89. 'instances': all_instances,
  90. 'interface_type' : interface_type,
  91. 'interface_name' : interface_name,
  92. 'hostname_default': hostname_default,
  93. 'firewall_all' : firewall_all,
  94. }
  95. return HttpResponse(template.render(context, request))
  96. def interfacefirewall(request, interface_type, interface_name):
  97. if not request.user.is_authenticated:
  98. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  99. all_instances = vyos.instance_getall()
  100. hostname_default = vyos.get_hostname_prefered(request)
  101. interface = vyos.get_interface(interface_type, interface_name, hostname=hostname_default)
  102. template = loader.get_template('interface/show.html')
  103. context = {
  104. 'interface': interface,
  105. 'instances': all_instances,
  106. 'hostname_default': hostname_default,
  107. 'interface_type' : interface_type,
  108. 'interface_name' : interface_name,
  109. }
  110. return HttpResponse(template.render(context, request))