views.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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. import vyos
  6. def index(request):
  7. #interfaces = vyos.get_interfaces()
  8. all_instances = vyos.instance_getall()
  9. hostname_default = vyos.get_hostname_prefered(request)
  10. firewall_all = vyos.get_firewall_all(hostname_default)
  11. for xitem in firewall_all['name']:
  12. if 'default-action' in firewall_all['name'][xitem]:
  13. firewall_all['name'][xitem]['default_action'] = firewall_all['name'][xitem]['default-action']
  14. del firewall_all['name'][xitem]['default-action']
  15. if 'name' in request.POST:
  16. cmd = {"op": "set", "path": ["firewall", "name", request.POST['name']]}
  17. result1 = vyos.set_config(hostname_default, cmd)
  18. print(result1)
  19. if 'description' in request.POST:
  20. cmd = {"op": "set", "path": ["firewall", "name", request.POST['name'], "description", request.POST['description']]}
  21. result2 = vyos.set_config(hostname_default, cmd)
  22. print(result2)
  23. if 'action' in request.POST:
  24. cmd = {"op": "set", "path": ["firewall", "name", request.POST['name'], "default-action", request.POST['action']]}
  25. result3 = vyos.set_config(hostname_default, cmd)
  26. print(result3)
  27. return redirect('firewall:firewall-list')
  28. template = loader.get_template('firewall/list.html')
  29. context = {
  30. #'interfaces': interfaces,
  31. 'instances': all_instances,
  32. 'hostname_default': hostname_default,
  33. 'firewall_all': firewall_all
  34. }
  35. return HttpResponse(template.render(context, request))
  36. def show(request, firewall_name):
  37. #interfaces = vyos.get_interfaces()
  38. all_instances = vyos.instance_getall()
  39. hostname_default = vyos.get_hostname_prefered(request)
  40. firewall = vyos.get_firewall(hostname_default, firewall_name)
  41. template = loader.get_template('firewall/show.html')
  42. context = {
  43. #'interfaces': interfaces,
  44. 'instances': all_instances,
  45. 'hostname_default': hostname_default,
  46. 'firewall': firewall,
  47. 'firewall_name': firewall_name,
  48. }
  49. return HttpResponse(template.render(context, request))
  50. def addrule(request, firewall_name):
  51. #interfaces = vyos.get_interfaces()
  52. all_instances = vyos.instance_getall()
  53. hostname_default = vyos.get_hostname_prefered(request)
  54. firewall = vyos.get_firewall(hostname_default, firewall_name)
  55. if 'action' in request.POST:
  56. cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "rule", request.POST['rulenumber'], "action", request.POST['action']]}
  57. result1 = vyos.set_config(hostname_default, cmd)
  58. print(result1)
  59. if 'protocol' in request.POST:
  60. cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "rule", request.POST['rulenumber'], "protocol", request.POST['protocol']]}
  61. result2 = vyos.set_config(hostname_default, cmd)
  62. print(result2)
  63. if 'destinationport' in request.POST:
  64. cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "rule", request.POST['rulenumber'], "destination", "port", request.POST['destinationport']]}
  65. result3 = vyos.set_config(hostname_default, cmd)
  66. print(result3)
  67. if 'sourceport' in request.POST:
  68. cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "rule", request.POST['rulenumber'], "source", "port", request.POST['sourceport']]}
  69. result3 = vyos.set_config(hostname_default, cmd)
  70. print(result3)
  71. template = loader.get_template('firewall/show.html')
  72. context = {
  73. #'interfaces': interfaces,
  74. 'instances': all_instances,
  75. 'hostname_default': hostname_default,
  76. 'firewall': firewall,
  77. 'firewall_name': firewall_name,
  78. }
  79. return HttpResponse(template.render(context, request))
  80. def editrule(request, firewall_name, firewall_rulenumber):
  81. #interfaces = vyos.get_interfaces()
  82. all_instances = vyos.instance_getall()
  83. hostname_default = vyos.get_hostname_prefered(request)
  84. firewall = vyos.get_firewall(hostname_default, firewall_name)
  85. firewall_rule = vyos.get_firewall_rule(hostname_default, firewall_name, firewall_rulenumber)
  86. changed = False
  87. if 'action' in request.POST:
  88. cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "rule", firewall_rulenumber, "action", request.POST['action']]}
  89. result1 = vyos.set_config(hostname_default, cmd)
  90. print(result1)
  91. changed = True
  92. if 'protocol' in request.POST:
  93. cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "rule", firewall_rulenumber, "protocol", request.POST['protocol']]}
  94. result2 = vyos.set_config(hostname_default, cmd)
  95. print(result2)
  96. changed = True
  97. if 'destinationport' in request.POST:
  98. cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "rule", firewall_rulenumber, "destination", "port", request.POST['destinationport']]}
  99. result3 = vyos.set_config(hostname_default, cmd)
  100. print(result3)
  101. changed = True
  102. if 'sourceport' in request.POST:
  103. cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "rule", firewall_rulenumber, "source", "port", request.POST['sourceport']]}
  104. result3 = vyos.set_config(hostname_default, cmd)
  105. print(result3)
  106. changed = True
  107. if changed == True:
  108. return redirect('firewall:firewall-list')
  109. template = loader.get_template('firewall/editrule.html')
  110. context = {
  111. #'interfaces': interfaces,
  112. 'instances': all_instances,
  113. 'hostname_default': hostname_default,
  114. 'firewall': firewall,
  115. 'firewall_name': firewall_name,
  116. 'firewall_rule': firewall_rule,
  117. 'firewall_rulenumber' : firewall_rulenumber
  118. }
  119. return HttpResponse(template.render(context, request))