/
views.py
64 lines (58 loc) · 2.4 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from django.http import HttpResponseRedirect
from django.views.generic import TemplateView
from django.contrib.auth.decorators import login_required
from tensor_site.decorators import login_required_message
from django.contrib import messages
import tensor_site.auth_tokens
import paramiko
class ServerView(TemplateView):
template_name = 'servers/servers.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if self.request.user.is_authenticated:
canControl = "true" if self.request.user.can_control else "false"
else:
canControl = "false"
context["canControl"] = canControl
return context
@login_required_message
@login_required
def ServersControlView(request, server_port, server_command):
if not request.user.can_control:
messages.success(request, "You don't have permission to do that.", extra_tags='danger')
return HttpResponseRedirect("/servers/")
else:
if server_command=="1":
server_command="start"
elif server_command=="2":
server_command="stop"
elif server_command=="3":
server_command="restart"
elif server_command=="4":
server_command="fu"
server = Server.objects.get(port=server_port)
hostname = "192.168.1.107"
password = tensor_site.auth_tokens.password_DB_awp
username = server.user
port = 12345
command = "cd /home/"+server.user+" && ./"+server.instance_name+" "+server_command
try:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.WarningPolicy())
client.connect(hostname, port=port, username=username, password=password)
stdin, stdout, stderr = client.exec_command(command)
out = stdout.read().decode().strip()
if server_command=='start':
messages.success(request, 'Successfuly started '+server.name, extra_tags='success')
elif server_command=='stop':
messages.success(request, 'Successfuly stopped '+server.name, extra_tags='success')
elif server_command=='restart':
messages.success(request, 'Successfuly restarted '+server.name, extra_tags='success')
elif server_command=='fu':
messages.success(request, 'Successfuly updated '+server.name, extra_tags='success')
except:
messages.success(request, 'An error has occured.', extra_tags='danger')
finally:
client.close()
return HttpResponseRedirect("/servers/")