mirror of
https://github.com/retspen/webvirtcloud
synced 2025-07-31 12:41:08 +00:00
format python code with black
This commit is contained in:
parent
ea409ca863
commit
217e106c8b
55 changed files with 2510 additions and 1454 deletions
240
console/novncd
240
console/novncd
|
|
@ -6,9 +6,9 @@ import logging
|
|||
import django
|
||||
|
||||
DIR_PATH = os.path.dirname(os.path.abspath(__file__))
|
||||
ROOT_PATH = os.path.abspath(os.path.join(DIR_PATH, '..', ''))
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'webvirtcloud.settings')
|
||||
CERT = DIR_PATH + '/cert.pem'
|
||||
ROOT_PATH = os.path.abspath(os.path.join(DIR_PATH, "..", ""))
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "webvirtcloud.settings")
|
||||
CERT = DIR_PATH + "/cert.pem"
|
||||
|
||||
if ROOT_PATH not in sys.path:
|
||||
sys.path.append(ROOT_PATH)
|
||||
|
|
@ -17,7 +17,8 @@ django.setup()
|
|||
|
||||
import re
|
||||
import socket
|
||||
#from six.moves import http_cookies as Cookie
|
||||
|
||||
# from six.moves import http_cookies as Cookie
|
||||
from http import cookies as Cookie
|
||||
from webvirtcloud.settings import WS_PORT, WS_HOST, WS_CERT
|
||||
from vrtManager.connection import CONN_SSH, CONN_SOCKET
|
||||
|
|
@ -26,40 +27,40 @@ from optparse import OptionParser
|
|||
|
||||
parser = OptionParser()
|
||||
|
||||
parser.add_option("-v",
|
||||
"--verbose",
|
||||
dest="verbose",
|
||||
action="store_true",
|
||||
help="Verbose mode",
|
||||
default=False)
|
||||
parser.add_option(
|
||||
"-v",
|
||||
"--verbose",
|
||||
dest="verbose",
|
||||
action="store_true",
|
||||
help="Verbose mode",
|
||||
default=False,
|
||||
)
|
||||
|
||||
parser.add_option("-d",
|
||||
"--debug",
|
||||
dest="debug",
|
||||
action="store_true",
|
||||
help="Debug mode",
|
||||
default=False)
|
||||
parser.add_option(
|
||||
"-d", "--debug", dest="debug", action="store_true", help="Debug mode", default=False
|
||||
)
|
||||
|
||||
parser.add_option("-H",
|
||||
"--host",
|
||||
dest="host",
|
||||
action="store",
|
||||
help="Listen host",
|
||||
default=WS_HOST)
|
||||
parser.add_option(
|
||||
"-H", "--host", dest="host", action="store", help="Listen host", default=WS_HOST
|
||||
)
|
||||
|
||||
parser.add_option("-p",
|
||||
"--port",
|
||||
dest="port",
|
||||
action="store",
|
||||
help="Listen port",
|
||||
default=WS_PORT or 6080)
|
||||
parser.add_option(
|
||||
"-p",
|
||||
"--port",
|
||||
dest="port",
|
||||
action="store",
|
||||
help="Listen port",
|
||||
default=WS_PORT or 6080,
|
||||
)
|
||||
|
||||
parser.add_option("-c",
|
||||
"--cert",
|
||||
dest="cert",
|
||||
action="store",
|
||||
help="Certificate file path",
|
||||
default=WS_CERT or CERT)
|
||||
parser.add_option(
|
||||
"-c",
|
||||
"--cert",
|
||||
dest="cert",
|
||||
action="store",
|
||||
help="Certificate file path",
|
||||
default=WS_CERT or CERT,
|
||||
)
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
|
|
@ -74,6 +75,7 @@ else:
|
|||
|
||||
try:
|
||||
from websockify import WebSocketProxy
|
||||
|
||||
try:
|
||||
from websockify import ProxyRequestHandler
|
||||
except ImportError:
|
||||
|
|
@ -84,7 +86,7 @@ except ImportError:
|
|||
try:
|
||||
from novnc.wsproxy import WebSocketProxy
|
||||
except ImportError:
|
||||
print('Unable to import a websockify implementation,\n please install one')
|
||||
print("Unable to import a websockify implementation,\n please install one")
|
||||
sys.exit(1)
|
||||
else:
|
||||
USE_HANDLER = False
|
||||
|
|
@ -95,18 +97,20 @@ def get_connection_infos(token):
|
|||
from vrtManager.instance import wvmInstance
|
||||
|
||||
try:
|
||||
temptoken = token.split('-', 1)
|
||||
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)
|
||||
if instance.compute.hostname.count(':'):
|
||||
connhost = instance.compute.hostname.split(':')[0]
|
||||
connport = instance.compute.hostname.split(':')[1]
|
||||
conn = wvmInstance(
|
||||
instance.compute.hostname,
|
||||
instance.compute.login,
|
||||
instance.compute.password,
|
||||
instance.compute.type,
|
||||
instance.name,
|
||||
)
|
||||
if instance.compute.hostname.count(":"):
|
||||
connhost = instance.compute.hostname.split(":")[0]
|
||||
connport = instance.compute.hostname.split(":")[1]
|
||||
else:
|
||||
connhost = instance.compute.hostname
|
||||
connport = 22
|
||||
|
|
@ -117,10 +121,18 @@ def get_connection_infos(token):
|
|||
console_socket = conn.get_console_socket()
|
||||
except Exception as e:
|
||||
logging.error(
|
||||
'Fail to retrieve console connection infos for token %s : %s' % (token, e))
|
||||
"Fail to retrieve console connection infos for token %s : %s" % (token, e)
|
||||
)
|
||||
raise
|
||||
return (connhost, connport, connuser, conntype, console_host,
|
||||
console_port, console_socket)
|
||||
return (
|
||||
connhost,
|
||||
connport,
|
||||
connuser,
|
||||
conntype,
|
||||
console_host,
|
||||
console_port,
|
||||
console_socket,
|
||||
)
|
||||
|
||||
|
||||
class CompatibilityMixIn(object):
|
||||
|
|
@ -128,25 +140,31 @@ 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
|
||||
hcookie = self.headers.get('cookie')
|
||||
hcookie = self.headers.get("cookie")
|
||||
|
||||
if hcookie:
|
||||
cookie = Cookie.SimpleCookie()
|
||||
for hcookie_part in hcookie.split(';'):
|
||||
for hcookie_part in hcookie.split(";"):
|
||||
hcookie_part = hcookie_part.lstrip()
|
||||
try:
|
||||
cookie.load(hcookie_part)
|
||||
except Cookie.CookieError:
|
||||
# NOTE(stgleb): Do not print out cookie content
|
||||
# for security reasons.
|
||||
self.msg('Found malformed cookie')
|
||||
self.msg("Found malformed cookie")
|
||||
else:
|
||||
if 'token' in cookie:
|
||||
token = cookie['token'].value
|
||||
if "token" in cookie:
|
||||
token = cookie["token"].value
|
||||
|
||||
|
||||
(connhost, connport, connuser, conntype, console_host, console_port,
|
||||
console_socket) = get_connection_infos(token)
|
||||
(
|
||||
connhost,
|
||||
connport,
|
||||
connuser,
|
||||
conntype,
|
||||
console_host,
|
||||
console_port,
|
||||
console_socket,
|
||||
) = get_connection_infos(token)
|
||||
|
||||
cnx_debug_msg = "Connection infos :\n"
|
||||
cnx_debug_msg += "- connhost : '%s'\n" % connhost
|
||||
|
|
@ -160,14 +178,16 @@ class CompatibilityMixIn(object):
|
|||
|
||||
if console_socket and conntype == CONN_SOCKET:
|
||||
# Local socket on local host
|
||||
self.msg('Try to open local socket %s' % console_socket)
|
||||
self.msg("Try to open local socket %s" % console_socket)
|
||||
tsock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
tsock.connect(console_socket)
|
||||
elif console_socket or re.match('^127\.', console_host):
|
||||
elif console_socket or re.match("^127\.", console_host):
|
||||
# Need tunnel to physical host
|
||||
if conntype != CONN_SSH:
|
||||
self.msg("Need a tunnel to access console but can't mount " +
|
||||
"one because it's not a SSH host")
|
||||
self.msg(
|
||||
"Need a tunnel to access console but can't mount "
|
||||
+ "one because it's not a SSH host"
|
||||
)
|
||||
raise Exception(self.msg)
|
||||
try:
|
||||
# generate a string with all placeholders to avoid TypeErrors
|
||||
|
|
@ -175,10 +195,25 @@ class CompatibilityMixIn(object):
|
|||
# https://github.com/retspen/webvirtmgr/pull/497
|
||||
error_msg = "Try to open tunnel on %s@%s:%s on console %s:%s "
|
||||
error_msg += "(or socket %s)"
|
||||
self.msg(error_msg % (connuser, connhost, connport,
|
||||
console_host, console_port, console_socket))
|
||||
tunnel = SSHTunnels(connhost, connuser, connport,
|
||||
console_host, console_port, console_socket)
|
||||
self.msg(
|
||||
error_msg
|
||||
% (
|
||||
connuser,
|
||||
connhost,
|
||||
connport,
|
||||
console_host,
|
||||
console_port,
|
||||
console_socket,
|
||||
)
|
||||
)
|
||||
tunnel = SSHTunnels(
|
||||
connhost,
|
||||
connuser,
|
||||
connport,
|
||||
console_host,
|
||||
console_port,
|
||||
console_socket,
|
||||
)
|
||||
fd = tunnel.open_new()
|
||||
tunnel.unlock()
|
||||
tsock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
|
@ -202,15 +237,18 @@ class CompatibilityMixIn(object):
|
|||
except Exception:
|
||||
if tunnel:
|
||||
self.vmsg(
|
||||
"%s:%s (via %s@%s:%s) : Websocket client or Target closed" %
|
||||
(console_host, console_port, connuser, connhost, connport))
|
||||
"%s:%s (via %s@%s:%s) : Websocket client or Target closed"
|
||||
% (console_host, console_port, connuser, connhost, connport)
|
||||
)
|
||||
if tsock:
|
||||
tsock.shutdown(socket.SHUT_RDWR)
|
||||
tsock.close()
|
||||
tunnel.close_all()
|
||||
raise
|
||||
|
||||
|
||||
if USE_HANDLER:
|
||||
|
||||
class NovaProxyRequestHandler(ProxyRequestHandler, CompatibilityMixIn):
|
||||
def msg(self, *args, **kwargs):
|
||||
self.log_message(*args, **kwargs)
|
||||
|
|
@ -228,9 +266,10 @@ if USE_HANDLER:
|
|||
socket_factory = self.server.socket
|
||||
|
||||
self._new_client(daemon, socket_factory)
|
||||
else:
|
||||
class NovaWebSocketProxy(WebSocketProxy, CompatibilityMixIn):
|
||||
|
||||
else:
|
||||
|
||||
class NovaWebSocketProxy(WebSocketProxy, CompatibilityMixIn):
|
||||
def new_client(self):
|
||||
"""
|
||||
Called after a new WebSocket connection has been established.
|
||||
|
|
@ -241,39 +280,44 @@ else:
|
|||
|
||||
self._new_client(daemon, socket_factory)
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
if __name__ == "__main__":
|
||||
if USE_HANDLER:
|
||||
# Create the WebSocketProxy with NovaProxyRequestHandler handler
|
||||
server = WebSocketProxy(RequestHandlerClass=NovaProxyRequestHandler,
|
||||
listen_host=options.host,
|
||||
listen_port=options.port,
|
||||
source_is_ipv6=False,
|
||||
verbose=options.verbose,
|
||||
cert=options.cert,
|
||||
key=None,
|
||||
ssl_only=False,
|
||||
daemon=False,
|
||||
record=False,
|
||||
web=False,
|
||||
traffic=False,
|
||||
target_host='ignore',
|
||||
target_port='ignore',
|
||||
wrap_mode='exit',
|
||||
wrap_cmd=None)
|
||||
server = WebSocketProxy(
|
||||
RequestHandlerClass=NovaProxyRequestHandler,
|
||||
listen_host=options.host,
|
||||
listen_port=options.port,
|
||||
source_is_ipv6=False,
|
||||
verbose=options.verbose,
|
||||
cert=options.cert,
|
||||
key=None,
|
||||
ssl_only=False,
|
||||
daemon=False,
|
||||
record=False,
|
||||
web=False,
|
||||
traffic=False,
|
||||
target_host="ignore",
|
||||
target_port="ignore",
|
||||
wrap_mode="exit",
|
||||
wrap_cmd=None,
|
||||
)
|
||||
else:
|
||||
# Create the NovaWebSockets proxy
|
||||
server = NovaWebSocketProxy(listen_host=options.host,
|
||||
listen_port=options.port,
|
||||
source_is_ipv6=False,
|
||||
verbose=options.verbose,
|
||||
cert=options.cert,
|
||||
key=None,
|
||||
ssl_only=False,
|
||||
daemon=False,
|
||||
record=False,
|
||||
web=False,
|
||||
target_host='ignore',
|
||||
target_port='ignore',
|
||||
wrap_mode='exit',
|
||||
wrap_cmd=None)
|
||||
server = NovaWebSocketProxy(
|
||||
listen_host=options.host,
|
||||
listen_port=options.port,
|
||||
source_is_ipv6=False,
|
||||
verbose=options.verbose,
|
||||
cert=options.cert,
|
||||
key=None,
|
||||
ssl_only=False,
|
||||
daemon=False,
|
||||
record=False,
|
||||
web=False,
|
||||
target_host="ignore",
|
||||
target_port="ignore",
|
||||
wrap_mode="exit",
|
||||
wrap_cmd=None,
|
||||
)
|
||||
server.start_server()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue