mirror of
https://github.com/retspen/webvirtcloud
synced 2024-11-01 03:54:15 +00:00
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
import re
|
|
from django.shortcuts import render
|
|
from django.http import HttpResponseRedirect
|
|
from django.core.urlresolvers import reverse
|
|
from instances.models import Instance
|
|
from vrtManager.instance import wvmInstance
|
|
from webvirtcloud.settings import WS_PORT
|
|
from webvirtcloud.settings import WS_PUBLIC_HOST
|
|
from libvirt import libvirtError
|
|
|
|
|
|
def console(request):
|
|
"""
|
|
:param request:
|
|
:return:
|
|
"""
|
|
|
|
if not request.user.is_authenticated():
|
|
return HttpResponseRedirect(reverse('login'))
|
|
|
|
if request.method == 'GET':
|
|
token = request.GET.get('token', '')
|
|
|
|
try:
|
|
temptoken = token.split('-', 1)
|
|
host = int(temptoken[0])
|
|
uuid = temptoken[1]
|
|
instance = Instance.objects.get(compute_id=host, uuid=uuid)
|
|
conn = wvmInstance(instance.compute.hostname,
|
|
instance.compute.login,
|
|
instance.compute.password,
|
|
instance.compute.type,
|
|
instance.name)
|
|
console_type = conn.get_console_type()
|
|
console_websocket_port = conn.get_console_websocket_port()
|
|
console_passwd = conn.get_console_passwd()
|
|
except libvirtError as lib_err:
|
|
console_type = None
|
|
console_websocket_port = None
|
|
console_passwd = None
|
|
|
|
ws_port = console_websocket_port if console_websocket_port else WS_PORT
|
|
ws_host = WS_PUBLIC_HOST if WS_PUBLIC_HOST else request.get_host()
|
|
|
|
if ':' in ws_host:
|
|
ws_host = re.sub(':[0-9]+', '', ws_host)
|
|
|
|
if console_type == 'vnc':
|
|
response = render(request, 'console-vnc.html', locals())
|
|
elif console_type == 'spice':
|
|
response = render(request, 'console-spice.html', locals())
|
|
else:
|
|
response = "Console type %s no support" % console_type
|
|
|
|
response.set_cookie('token', token)
|
|
return response
|