views.py 7.1 KB

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