views.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  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 pprint
  8. import vyos
  9. from .models import Instance
  10. from django.contrib.auth.models import User
  11. from django.contrib.auth.models import Group
  12. def index(request):
  13. if not request.user.is_authenticated:
  14. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  15. #interfaces = vyos.get_interfaces()
  16. all_instances = vyos.instance_getall()
  17. hostname_default = vyos.get_hostname_prefered(request)
  18. template = loader.get_template('config/instance.html')
  19. context = {
  20. #'interfaces': interfaces,
  21. 'instances': all_instances,
  22. 'hostname_default': hostname_default,
  23. }
  24. return HttpResponse(template.render(context, request))
  25. def users_list(request):
  26. if not request.user.is_authenticated:
  27. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  28. #interfaces = vyos.get_interfaces()
  29. all_instances = vyos.instance_getall()
  30. hostname_default = vyos.get_hostname_prefered(request)
  31. users = User.objects.all()
  32. template = loader.get_template('config/users_list.html')
  33. context = {
  34. #'interfaces': interfaces,
  35. 'instances': all_instances,
  36. 'hostname_default': hostname_default,
  37. 'users' : users
  38. }
  39. return HttpResponse(template.render(context, request))
  40. def groups_list(request):
  41. if not request.user.is_authenticated:
  42. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  43. #interfaces = vyos.get_interfaces()
  44. all_instances = vyos.instance_getall()
  45. hostname_default = vyos.get_hostname_prefered(request)
  46. groups = Group.objects.all()
  47. template = loader.get_template('config/groups_list.html')
  48. context = {
  49. #'interfaces': interfaces,
  50. 'instances': all_instances,
  51. 'hostname_default': hostname_default,
  52. 'groups' : groups,
  53. }
  54. return HttpResponse(template.render(context, request))
  55. def instances(request):
  56. if not request.user.is_authenticated:
  57. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  58. all_instances = vyos.instance_getall()
  59. hostname_default = vyos.get_hostname_prefered(request)
  60. print(all_instances)
  61. if hostname_default == None:
  62. if all_instances.count() > 0:
  63. for i in all_instances:
  64. pprint.pprint(i.hostname)
  65. instance_default(request, i.hostname)
  66. else:
  67. return redirect('config:instance-add')
  68. template = loader.get_template('config/instances.html')
  69. context = {
  70. 'instances': all_instances,
  71. 'hostname_default': hostname_default,
  72. }
  73. return HttpResponse(template.render(context, request))
  74. def instance_add(request):
  75. if not request.user.is_authenticated:
  76. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  77. #interfaces = vyos.get_interfaces()
  78. all_instances = vyos.instance_getall()
  79. hostname_default = vyos.get_hostname_prefered(request)
  80. if len(request.POST) > 0:
  81. instance = Instance()
  82. instance.alias = request.POST['alias']
  83. instance.hostname = request.POST['hostname']
  84. instance.port = request.POST['port']
  85. instance.key = request.POST['key']
  86. if 'https' in request.POST:
  87. instance.https = request.POST['https']
  88. else:
  89. instance.https = False
  90. instance_id = instance.save()
  91. return redirect('config:instances')
  92. else:
  93. instance_id = 0
  94. template = loader.get_template('config/instance_add.html')
  95. context = {
  96. 'hostname_default': hostname_default,
  97. 'instance_id': instance_id,
  98. 'instances': all_instances,
  99. }
  100. return HttpResponse(template.render(context, request))
  101. def instance_conntry(request, hostname):
  102. if not request.user.is_authenticated:
  103. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  104. all_instances = vyos.instance_getall()
  105. hostname_default = vyos.get_hostname_prefered(request)
  106. # permcheck
  107. instance = Instance.objects.get(hostname=hostname)
  108. connected = vyos.conntry(hostname)
  109. if connected == True:
  110. request.session['hostname'] = hostname
  111. template = loader.get_template('config/instance_conntry.html')
  112. context = {
  113. 'instance': instance,
  114. "connected": connected,
  115. 'instances': all_instances,
  116. 'hostname_default': hostname_default,
  117. }
  118. return HttpResponse(template.render(context, request))
  119. def instance_default(request, hostname):
  120. if not request.user.is_authenticated:
  121. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  122. all_instances = vyos.instance_getall()
  123. # permcheck
  124. instance = Instance.objects.get(hostname=hostname)
  125. connected = vyos.conntry(hostname)
  126. # show some error when not connected
  127. if connected == True:
  128. request.session['hostname'] = hostname
  129. instance.main = True
  130. instance.save()
  131. return redirect('config:instances')
  132. def instance_remove(request, hostname):
  133. if not request.user.is_authenticated:
  134. return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
  135. all_instances = vyos.instance_getall()
  136. # permcheck
  137. instance = Instance.objects.get(hostname=hostname)
  138. hostname_default = vyos.get_hostname_prefered(request)
  139. #if hostname_default != hostname:
  140. instance.delete()
  141. return redirect('config:instances')