mirror of
https://github.com/retspen/webvirtcloud
synced 2026-10-18 00:50:07 +00:00
fix(console): fix novncd startup in container and prevent double slashes in websocket url
This commit is contained in:
parent
f061189716
commit
d9112b797f
7 changed files with 64 additions and 15 deletions
|
|
@ -143,6 +143,7 @@ class CompatibilityMixIn(object):
|
|||
# NoVNC uses it's own convention that forward token
|
||||
# from the request to a cookie header, we should check
|
||||
# also for this behavior
|
||||
token = None
|
||||
hcookie = self.headers.get("cookie")
|
||||
|
||||
if hcookie:
|
||||
|
|
@ -159,6 +160,22 @@ class CompatibilityMixIn(object):
|
|||
if "token" in cookie:
|
||||
token = cookie["token"].value
|
||||
|
||||
# Fallback to query parameter if token not found in cookie
|
||||
if not token and hasattr(self, "path"):
|
||||
from urllib.parse import parse_qs, urlparse
|
||||
|
||||
try:
|
||||
parsed_url = urlparse(self.path)
|
||||
query_params = parse_qs(parsed_url.query)
|
||||
if "token" in query_params:
|
||||
token = query_params["token"][0]
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if not token:
|
||||
self.msg("No console token provided in cookie or query parameters")
|
||||
return
|
||||
|
||||
(
|
||||
connhost,
|
||||
connport,
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@
|
|||
sc.stop();
|
||||
}
|
||||
|
||||
// uri = scheme + host + ":" + port;
|
||||
uri = scheme + "{{ ws_host }}:{{ ws_port }}{{ ws_path }}";
|
||||
var path = '{{ ws_path }}';
|
||||
uri = scheme + "{{ ws_host }}:{{ ws_port }}" + (path ? (path[0] == '/' ? path : ('/' + path)) : '/');
|
||||
|
||||
document.getElementById('connectButton').innerHTML = "Stop";
|
||||
document.getElementById('connectButton').onclick = disconnect;
|
||||
|
|
|
|||
|
|
@ -194,7 +194,15 @@
|
|||
if (port) {
|
||||
url += ':' + port;
|
||||
}
|
||||
url += '/' + path;
|
||||
if (path) {
|
||||
url += path.startsWith('/') ? path : ('/' + path);
|
||||
} else {
|
||||
url += '/';
|
||||
}
|
||||
const token = readQueryVariable('token', '{{ token }}');
|
||||
if (token) {
|
||||
url += (url.includes('?') ? '&' : '?') + 'token=' + encodeURIComponent(token);
|
||||
}
|
||||
|
||||
// Creating a new RFB object will start a new connection
|
||||
rfb = new RFB(document.getElementById('noVNC_container'), url,
|
||||
|
|
|
|||
|
|
@ -86,6 +86,9 @@ def console(request):
|
|||
if ":" in ws_host:
|
||||
ws_host = re.sub(":[0-9]+", "", ws_host)
|
||||
|
||||
if ws_path:
|
||||
ws_path = ws_path.strip("/") + "/" if ws_path.strip("/") else ""
|
||||
|
||||
if console_type == "vnc" or console_type == "spice":
|
||||
console_page = "console-" + console_type + "-" + view_type + ".html"
|
||||
response = render(request, console_page, locals())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue