views.py 6.5 KB

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