[Kimchi-devel] [Kimchi] Add support for websockify 0.7
Aline Manera
alinefm at linux.vnet.ibm.com
Wed Jan 20 12:31:35 UTC 2016
On 01/20/2016 10:24 AM, Ramon Medeiros wrote:
> The lastest update of websockify changes how the class instantiate
> WebSocketProxy.
>
> Signed-off-by: Ramon Medeiros <ramonn at linux.vnet.ibm.com>
> ---
> vnc.py | 27 +++++++++++++++++++++++----
> 1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/vnc.py b/vnc.py
> index 1a2e59d..00069d5 100644
> --- a/vnc.py
> +++ b/vnc.py
> @@ -21,12 +21,20 @@
> import base64
> import errno
> import os
> +
> from multiprocessing import Process
> from websockify import WebSocketProxy
>
> from wok.config import config, paths, PluginPaths
>
>
> +websockifyOld = False
> +try:
> + from websockify.token_plugins import TokenFile
> +except ImportError:
> + websockifyOld = True
> +
> +
I suggest to name the variable as 'tokenFile'
> WS_TOKENS_DIR = os.path.join(PluginPaths('kimchi').state_dir, 'vnc-tokens')
>
>
> @@ -43,10 +51,21 @@ def new_ws_proxy():
> cert = '%s/wok-cert.pem' % paths.conf_dir
> key = '%s/wok-key.pem' % paths.conf_dir
>
> - params = {'web': os.path.join(paths.ui_dir, 'pages/websockify'),
> - 'listen_port': config.get('display', 'display_proxy_port'),
> - 'target_cfg': WS_TOKENS_DIR,
> - 'key': key, 'cert': cert, 'ssl_only': True}
> + # old websockify: do not use TokenFile
> + if websockifyOld:
> + params = {'web': os.path.join(paths.ui_dir, 'pages/websockify'),
> + 'listen_port': config.get('display', 'display_proxy_port'),
> + 'target_cfg': WS_TOKENS_DIR,
> + 'key': key, 'cert': cert, 'ssl_only': True}
> +
> + # websockify 0.7 and higher: use TokenFile
> + else:
> + token_plugin = TokenFile(src=WS_TOKENS_DIR)
> +
> + params = {'web': os.path.join(paths.ui_dir, 'pages/websockify'),
> + 'listen_port': config.get('display', 'display_proxy_port'),
> + 'token_plugin': token_plugin,
> + 'key': key, 'cert': cert, 'ssl_only': True}
Keep the common configuration in a single place and use the if/else to
only add the specific config according to websockify properties.
That way, we can easily identify the differences between websockify support.
> def start_proxy():
> server = WebSocketProxy(**params)
More information about the Kimchi-devel
mailing list