views.py 4.9 KB

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