[Kimchi-devel] [v3] Enable encryption in vm VNC console connection
Christy Perez
christy at linux.vnet.ibm.com
Wed Apr 30 16:57:02 UTC 2014
Tested-By Christy Perez <christy at linux.vnet.ibm.com>
Works great for me (Firefox 28 on Fedora 20).
Great find, Zheng Sheng!
On Wed, 2014-04-30 at 15:38 +0800, Zhou Zheng Sheng wrote:
> From: Mark Wu <wudxw at linux.vnet.ibm.com>
>
> The current vm VNC console connection is unencrypted. This patch enables
> encrypted vm VNC console connection. But browsers doesn't
> support well for the usage self-signed certs in the ssl websocket
> connection. For details, please see:
> https://github.com/kanaka/websockify/wiki/Encrypted-Connections
>
> For chrome browser, the encrypted console connection should work after
> you login with ssl connection. But for firefox, it does not show a
> confirmation page for the user the accept the self-signed cert when
> the HTTPs connection is started from a websocket.
>
> So this patch makes use of the Web server in the websockify. The mini
> Web server in the websockify can serve static contents like html, css
> and js. This patch moves all novnc related html, css, font and js files
> to ui/novnc, and have the websockify serve those files. When the user
> clicks the VNC icon, Kimchi brings the user to
> https://host:64667/vnc.html, which is served by websockify. Then
> firefox would prompt a confirmation page for the self-signed cert. After
> the user accept the cert, HTTPs connection started from the websocket
> would succeed.
>
> v3:
> Make use of the mini Web server in the websockify.
>
> Signed-off-by: Mark Wu <wudxw at linux.vnet.ibm.com>
> Signed-off-by: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>
> ---
> configure.ac | 8 ++++----
> contrib/kimchi.spec.fedora.in | 13 +++++++------
> contrib/kimchi.spec.suse.in | 13 +++++++------
> src/kimchi/vnc.py | 11 +++++++++--
> ui/Makefile.am | 2 +-
> ui/css/Makefile.am | 2 +-
> ui/css/fonts/Makefile.am | 2 --
> ui/js/Makefile.am | 2 +-
> ui/js/src/kimchi.api.js | 7 ++++---
> ui/{css => }/novnc/Makefile.am | 8 +++++---
> ui/{css/fonts/novnc => novnc/css}/Makefile.am | 4 ++--
> ui/{css/fonts/novnc => novnc/css}/Orbitron700.ttf | Bin
> ui/{css/fonts/novnc => novnc/css}/Orbitron700.woff | Bin
> ui/{css/novnc => novnc/css}/base.css | 0
> ui/{js/novnc => novnc/js}/Makefile.am | 2 +-
> ui/{js/novnc => novnc/js}/base64.js | 0
> ui/{js/novnc => novnc/js}/des.js | 0
> ui/{js/novnc => novnc/js}/display.js | 0
> ui/{js/novnc => novnc/js}/input.js | 0
> ui/{js/novnc => novnc/js}/jsunzip.js | 0
> ui/{js/novnc => novnc/js}/main.js | 0
> ui/{js/novnc => novnc/js}/rfb.js | 0
> ui/{js/novnc => novnc/js}/util.js | 0
> ui/{js/novnc => novnc/js}/web-socket-js/Makefile.am | 2 +-
> ui/{js/novnc => novnc/js}/web-socket-js/README.txt | 0
> ui/{js/novnc => novnc/js}/web-socket-js/WebSocketMain.swf | Bin
> ui/{js/novnc => novnc/js}/web-socket-js/swfobject.js | 0
> ui/{js/novnc => novnc/js}/web-socket-js/web_socket.js | 0
> ui/{js/novnc => novnc/js}/websock.js | 0
> ui/{js/novnc => novnc/js}/webutil.js | 0
> ui/{pages/vnc_auto.html.tmpl => novnc/vnc.html} | 9 ++++-----
> 31 files changed, 47 insertions(+), 38 deletions(-)
> rename ui/{css => }/novnc/Makefile.am (82%)
> rename ui/{css/fonts/novnc => novnc/css}/Makefile.am (88%)
> rename ui/{css/fonts/novnc => novnc/css}/Orbitron700.ttf (100%)
> rename ui/{css/fonts/novnc => novnc/css}/Orbitron700.woff (100%)
> rename ui/{css/novnc => novnc/css}/base.css (100%)
> rename ui/{js/novnc => novnc/js}/Makefile.am (94%)
> rename ui/{js/novnc => novnc/js}/base64.js (100%)
> rename ui/{js/novnc => novnc/js}/des.js (100%)
> rename ui/{js/novnc => novnc/js}/display.js (100%)
> rename ui/{js/novnc => novnc/js}/input.js (100%)
> rename ui/{js/novnc => novnc/js}/jsunzip.js (100%)
> rename ui/{js/novnc => novnc/js}/main.js (100%)
> rename ui/{js/novnc => novnc/js}/rfb.js (100%)
> rename ui/{js/novnc => novnc/js}/util.js (100%)
> rename ui/{js/novnc => novnc/js}/web-socket-js/Makefile.am (91%)
> rename ui/{js/novnc => novnc/js}/web-socket-js/README.txt (100%)
> rename ui/{js/novnc => novnc/js}/web-socket-js/WebSocketMain.swf (100%)
> rename ui/{js/novnc => novnc/js}/web-socket-js/swfobject.js (100%)
> rename ui/{js/novnc => novnc/js}/web-socket-js/web_socket.js (100%)
> rename ui/{js/novnc => novnc/js}/websock.js (100%)
> rename ui/{js/novnc => novnc/js}/webutil.js (100%)
> rename ui/{pages/vnc_auto.html.tmpl => novnc/vnc.html} (83%)
>
> diff --git a/configure.ac b/configure.ac
> index 7d76f97..bc3f93e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -66,19 +66,19 @@ AC_CONFIG_FILES([
> plugins/sample/ui/config/Makefile
> ui/Makefile
> ui/css/Makefile
> - ui/css/novnc/Makefile
> ui/css/fonts/Makefile
> - ui/css/fonts/novnc/Makefile
> ui/images/Makefile
> ui/images/theme-default/Makefile
> ui/js/Makefile
> - ui/js/novnc/Makefile
> ui/js/spice/Makefile
> - ui/js/novnc/web-socket-js/Makefile
> ui/libs/Makefile
> ui/libs/themes/Makefile
> ui/libs/themes/base/Makefile
> ui/libs/themes/base/images/Makefile
> + ui/novnc/Makefile
> + ui/novnc/css/Makefile
> + ui/novnc/js/Makefile
> + ui/novnc/js/web-socket-js/Makefile
> ui/pages/Makefile
> ui/pages/help/Makefile
> ui/pages/help/en_US/Makefile
> diff --git a/contrib/kimchi.spec.fedora.in b/contrib/kimchi.spec.fedora.in
> index 104c114..dd2fba7 100644
> --- a/contrib/kimchi.spec.fedora.in
> +++ b/contrib/kimchi.spec.fedora.in
> @@ -154,8 +154,6 @@ rm -rf $RPM_BUILD_ROOT
> %{_datadir}/kimchi/mo/*/LC_MESSAGES/kimchi.mo
> %{_datadir}/kimchi/config/ui/*.xml
> %{_datadir}/kimchi/ui/css/fonts/fontawesome-webfont.*
> -%{_datadir}/kimchi/ui/css/fonts/novnc/Orbitron700.*
> -%{_datadir}/kimchi/ui/css/novnc/base.css
> %{_datadir}/kimchi/ui/css/theme-default.min.css
> %{_datadir}/kimchi/ui/images/*.png
> %{_datadir}/kimchi/ui/images/*.ico
> @@ -165,11 +163,7 @@ rm -rf $RPM_BUILD_ROOT
> %{_datadir}/kimchi/ui/js/jquery-ui.js
> %{_datadir}/kimchi/ui/js/jquery.min.js
> %{_datadir}/kimchi/ui/js/modernizr.custom.2.6.2.min.js
> -%{_datadir}/kimchi/ui/js/novnc/*.js
> %{_datadir}/kimchi/ui/js/spice/*.js
> -%{_datadir}/kimchi/ui/js/novnc/web-socket-js/WebSocketMain.swf
> -%{_datadir}/kimchi/ui/js/novnc/web-socket-js/swfobject.js
> -%{_datadir}/kimchi/ui/js/novnc/web-socket-js/web_socket.js
> %{_datadir}/kimchi/ui/libs/jquery-ui-i18n.min.js
> %{_datadir}/kimchi/ui/libs/jquery-ui.min.js
> %{_datadir}/kimchi/ui/libs/jquery-1.10.0.min.js
> @@ -177,6 +171,13 @@ rm -rf $RPM_BUILD_ROOT
> %{_datadir}/kimchi/ui/libs/themes/base/images/*.png
> %{_datadir}/kimchi/ui/libs/themes/base/images/*.gif
> %{_datadir}/kimchi/ui/libs/themes/base/jquery-ui.min.css
> +%{_datadir}/kimchi/ui/novnc/css/Orbitron700.*
> +%{_datadir}/kimchi/ui/novnc/css/base.css
> +%{_datadir}/kimchi/ui/novnc/js/*.js
> +%{_datadir}/kimchi/ui/novnc/js/web-socket-js/WebSocketMain.swf
> +%{_datadir}/kimchi/ui/novnc/js/web-socket-js/swfobject.js
> +%{_datadir}/kimchi/ui/novnc/js/web-socket-js/web_socket.js
> +%{_datadir}/kimchi/ui/novnc/vnc.html
> %{_datadir}/kimchi/ui/pages/*.html.tmpl
> %{_datadir}/kimchi/ui/pages/help/*/*.html
> %{_datadir}/kimchi/ui/pages/tabs/*.html.tmpl
> diff --git a/contrib/kimchi.spec.suse.in b/contrib/kimchi.spec.suse.in
> index 7704822..73c59a0 100644
> --- a/contrib/kimchi.spec.suse.in
> +++ b/contrib/kimchi.spec.suse.in
> @@ -76,8 +76,6 @@ rm -rf $RPM_BUILD_ROOT
> %{_datadir}/kimchi/mo/*/LC_MESSAGES/kimchi.mo
> %{_datadir}/kimchi/config/ui/*.xml
> %{_datadir}/kimchi/ui/css/fonts/fontawesome-webfont.*
> -%{_datadir}/kimchi/ui/css/fonts/novnc/Orbitron700.*
> -%{_datadir}/kimchi/ui/css/novnc/base.css
> %{_datadir}/kimchi/ui/css/theme-default.min.css
> %{_datadir}/kimchi/ui/images/*.png
> %{_datadir}/kimchi/ui/images/*.ico
> @@ -87,11 +85,7 @@ rm -rf $RPM_BUILD_ROOT
> %{_datadir}/kimchi/ui/js/jquery-ui.js
> %{_datadir}/kimchi/ui/js/jquery.min.js
> %{_datadir}/kimchi/ui/js/modernizr.custom.2.6.2.min.js
> -%{_datadir}/kimchi/ui/js/novnc/*.js
> %{_datadir}/kimchi/ui/js/spice/*.js
> -%{_datadir}/kimchi/ui/js/novnc/web-socket-js/WebSocketMain.swf
> -%{_datadir}/kimchi/ui/js/novnc/web-socket-js/swfobject.js
> -%{_datadir}/kimchi/ui/js/novnc/web-socket-js/web_socket.js
> %{_datadir}/kimchi/ui/libs/jquery-ui-i18n.min.js
> %{_datadir}/kimchi/ui/libs/jquery-ui.min.js
> %{_datadir}/kimchi/ui/libs/jquery-1.10.0.min.js
> @@ -99,6 +93,13 @@ rm -rf $RPM_BUILD_ROOT
> %{_datadir}/kimchi/ui/libs/themes/base/images/*.png
> %{_datadir}/kimchi/ui/libs/themes/base/images/*.gif
> %{_datadir}/kimchi/ui/libs/themes/base/jquery-ui.min.css
> +%{_datadir}/kimchi/ui/novnc/css/Orbitron700.*
> +%{_datadir}/kimchi/ui/novnc/css/base.css
> +%{_datadir}/kimchi/ui/novnc/js/*.js
> +%{_datadir}/kimchi/ui/novnc/js/web-socket-js/WebSocketMain.swf
> +%{_datadir}/kimchi/ui/novnc/js/web-socket-js/swfobject.js
> +%{_datadir}/kimchi/ui/novnc/js/web-socket-js/web_socket.js
> +%{_datadir}/kimchi/ui/novnc/vnc.html
> %{_datadir}/kimchi/ui/pages/*.html.tmpl
> %{_datadir}/kimchi/ui/pages/help/*/*.html
> %{_datadir}/kimchi/ui/pages/tabs/*.html.tmpl
> diff --git a/src/kimchi/vnc.py b/src/kimchi/vnc.py
> index 1f36e9a..61f9c15 100644
> --- a/src/kimchi/vnc.py
> +++ b/src/kimchi/vnc.py
> @@ -23,7 +23,7 @@ import os
> import subprocess
>
>
> -from kimchi.config import config
> +from kimchi.config import config, paths
>
>
> WS_TOKENS_DIR = '/var/lib/kimchi/vnc-tokens'
> @@ -36,9 +36,16 @@ def new_ws_proxy():
> if e.errno == errno.EEXIST:
> pass
>
> + cert = config.get('server', 'ssl_cert')
> + key = config.get('server', 'ssl_key')
> + if not (cert and key):
> + cert = '%s/kimchi-cert.pem' % paths.conf_dir
> + key = '%s/kimchi-key.pem' % paths.conf_dir
> +
> cmd = os.path.join(os.path.dirname(__file__), 'websockify.py')
> args = ['python', cmd, config.get('display', 'display_proxy_port'),
> - '--target-config', WS_TOKENS_DIR]
> + '--target-config', WS_TOKENS_DIR, '--cert', cert, '--key', key,
> + '--web', os.path.join(paths.ui_dir, 'novnc')]
> p = subprocess.Popen(args, close_fds=True)
> return p
>
> diff --git a/ui/Makefile.am b/ui/Makefile.am
> index b5366c5..4e0d57a 100644
> --- a/ui/Makefile.am
> +++ b/ui/Makefile.am
> @@ -15,4 +15,4 @@
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> -SUBDIRS = css images js libs pages
> +SUBDIRS = css images js libs pages novnc
> diff --git a/ui/css/Makefile.am b/ui/css/Makefile.am
> index db65799..0922a9d 100644
> --- a/ui/css/Makefile.am
> +++ b/ui/css/Makefile.am
> @@ -15,7 +15,7 @@
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> -SUBDIRS = novnc fonts
> +SUBDIRS = fonts
>
> EXTRA_DIST = theme-default
>
> diff --git a/ui/css/fonts/Makefile.am b/ui/css/fonts/Makefile.am
> index 63df038..d72bb6c 100644
> --- a/ui/css/fonts/Makefile.am
> +++ b/ui/css/fonts/Makefile.am
> @@ -15,8 +15,6 @@
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> -SUBDIRS = novnc
> -
> fontdir = $(datadir)/kimchi/ui/css/fonts
>
> dist_font_DATA = fontawesome-webfont.*
> diff --git a/ui/js/Makefile.am b/ui/js/Makefile.am
> index f4d1e6b..a29c262 100644
> --- a/ui/js/Makefile.am
> +++ b/ui/js/Makefile.am
> @@ -15,7 +15,7 @@
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> -SUBDIRS = novnc spice
> +SUBDIRS = spice
>
> EXTRA_DIST = src widgets
>
> diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js
> index 1bde45c..c8c422d 100644
> --- a/ui/js/src/kimchi.api.js
> +++ b/ui/js/src/kimchi.api.js
> @@ -318,7 +318,6 @@ var kimchi = {
> type : 'GET',
> dataType : 'json'
> }).done(function(data, textStatus, xhr) {
> - http_port = data['http_port'];
> proxy_port = data['display_proxy_port'];
> kimchi.requestJSON({
> url : "/vms/" + encodeURIComponent(vm) + "/connect",
> @@ -329,9 +328,10 @@ var kimchi = {
> * Due to problems with web sockets and self-signed
> * certificates, for now we will always redirect to http
> */
> - url = 'http://' + location.hostname + ':' + http_port;
> - url += "/vnc_auto.html?port=" + proxy_port;
> + url = 'https://' + location.hostname + ':' + proxy_port;
> + url += "/vnc.html?port=" + proxy_port;
> url += "&path=?token=" + encodeURIComponent(vm);
> + url += '&encrypt=1'
> window.open(url);
> });
> }).error(function() {
> @@ -355,6 +355,7 @@ var kimchi = {
> url = 'http://' + location.hostname + ':' + http_port;
> url += "/spice.html?port=" + proxy_port + "&listen="
> + data.graphics.listen + "&token=" + encodeURIComponent(vm);
> + url += '&encrypt=1'
> window.open(url);
> });
> }).error(function() {
> diff --git a/ui/css/novnc/Makefile.am b/ui/novnc/Makefile.am
> similarity index 82%
> rename from ui/css/novnc/Makefile.am
> rename to ui/novnc/Makefile.am
> index 29703d6..d0aca93 100644
> --- a/ui/css/novnc/Makefile.am
> +++ b/ui/novnc/Makefile.am
> @@ -1,7 +1,7 @@
> #
> # Kimchi
> #
> -# Copyright IBM, Corp. 2013
> +# Copyright IBM, Corp. 2014
> #
> # Licensed under the Apache License, Version 2.0 (the "License");
> # you may not use this file except in compliance with the License.
> @@ -15,6 +15,8 @@
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> -cssdir = $(datadir)/kimchi/ui/css/novnc
> +SUBDIRS = css js
>
> -dist_css_DATA = base.css
> +htmldir = $(datadir)/kimchi/ui/novnc
> +
> +dist_html_DATA = vnc.html $(NULL)
> diff --git a/ui/css/fonts/novnc/Makefile.am b/ui/novnc/css/Makefile.am
> similarity index 88%
> rename from ui/css/fonts/novnc/Makefile.am
> rename to ui/novnc/css/Makefile.am
> index 50f6050..23d178f 100644
> --- a/ui/css/fonts/novnc/Makefile.am
> +++ b/ui/novnc/css/Makefile.am
> @@ -15,6 +15,6 @@
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> -fontdir = $(datadir)/kimchi/ui/css/fonts/novnc
> +cssdir = $(datadir)/kimchi/ui/novnc/css
>
> -dist_font_DATA = Orbitron700.*
> +dist_css_DATA = base.css Orbitron700.*
> diff --git a/ui/css/fonts/novnc/Orbitron700.ttf b/ui/novnc/css/Orbitron700.ttf
> similarity index 100%
> rename from ui/css/fonts/novnc/Orbitron700.ttf
> rename to ui/novnc/css/Orbitron700.ttf
> diff --git a/ui/css/fonts/novnc/Orbitron700.woff b/ui/novnc/css/Orbitron700.woff
> similarity index 100%
> rename from ui/css/fonts/novnc/Orbitron700.woff
> rename to ui/novnc/css/Orbitron700.woff
> diff --git a/ui/css/novnc/base.css b/ui/novnc/css/base.css
> similarity index 100%
> rename from ui/css/novnc/base.css
> rename to ui/novnc/css/base.css
> diff --git a/ui/js/novnc/Makefile.am b/ui/novnc/js/Makefile.am
> similarity index 94%
> rename from ui/js/novnc/Makefile.am
> rename to ui/novnc/js/Makefile.am
> index fefe6af..0c22fed 100644
> --- a/ui/js/novnc/Makefile.am
> +++ b/ui/novnc/js/Makefile.am
> @@ -17,6 +17,6 @@
>
> SUBDIRS = web-socket-js
>
> -jsdir = $(datadir)/kimchi/ui/js/novnc
> +jsdir = $(datadir)/kimchi/ui/novnc/js
>
> dist_js_DATA = $(wildcard *.js) $(NULL)
> diff --git a/ui/js/novnc/base64.js b/ui/novnc/js/base64.js
> similarity index 100%
> rename from ui/js/novnc/base64.js
> rename to ui/novnc/js/base64.js
> diff --git a/ui/js/novnc/des.js b/ui/novnc/js/des.js
> similarity index 100%
> rename from ui/js/novnc/des.js
> rename to ui/novnc/js/des.js
> diff --git a/ui/js/novnc/display.js b/ui/novnc/js/display.js
> similarity index 100%
> rename from ui/js/novnc/display.js
> rename to ui/novnc/js/display.js
> diff --git a/ui/js/novnc/input.js b/ui/novnc/js/input.js
> similarity index 100%
> rename from ui/js/novnc/input.js
> rename to ui/novnc/js/input.js
> diff --git a/ui/js/novnc/jsunzip.js b/ui/novnc/js/jsunzip.js
> similarity index 100%
> rename from ui/js/novnc/jsunzip.js
> rename to ui/novnc/js/jsunzip.js
> diff --git a/ui/js/novnc/main.js b/ui/novnc/js/main.js
> similarity index 100%
> rename from ui/js/novnc/main.js
> rename to ui/novnc/js/main.js
> diff --git a/ui/js/novnc/rfb.js b/ui/novnc/js/rfb.js
> similarity index 100%
> rename from ui/js/novnc/rfb.js
> rename to ui/novnc/js/rfb.js
> diff --git a/ui/js/novnc/util.js b/ui/novnc/js/util.js
> similarity index 100%
> rename from ui/js/novnc/util.js
> rename to ui/novnc/js/util.js
> diff --git a/ui/js/novnc/web-socket-js/Makefile.am b/ui/novnc/js/web-socket-js/Makefile.am
> similarity index 91%
> rename from ui/js/novnc/web-socket-js/Makefile.am
> rename to ui/novnc/js/web-socket-js/Makefile.am
> index 7d685f5..26ba1c0 100644
> --- a/ui/js/novnc/web-socket-js/Makefile.am
> +++ b/ui/novnc/js/web-socket-js/Makefile.am
> @@ -15,7 +15,7 @@
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> -websocketdir = $(datadir)/kimchi/ui/js/novnc/web-socket-js
> +websocketdir = $(datadir)/kimchi/ui/novnc/js/web-socket-js
>
> dist_websocket_DATA = \
> swfobject.js \
> diff --git a/ui/js/novnc/web-socket-js/README.txt b/ui/novnc/js/web-socket-js/README.txt
> similarity index 100%
> rename from ui/js/novnc/web-socket-js/README.txt
> rename to ui/novnc/js/web-socket-js/README.txt
> diff --git a/ui/js/novnc/web-socket-js/WebSocketMain.swf b/ui/novnc/js/web-socket-js/WebSocketMain.swf
> similarity index 100%
> rename from ui/js/novnc/web-socket-js/WebSocketMain.swf
> rename to ui/novnc/js/web-socket-js/WebSocketMain.swf
> diff --git a/ui/js/novnc/web-socket-js/swfobject.js b/ui/novnc/js/web-socket-js/swfobject.js
> similarity index 100%
> rename from ui/js/novnc/web-socket-js/swfobject.js
> rename to ui/novnc/js/web-socket-js/swfobject.js
> diff --git a/ui/js/novnc/web-socket-js/web_socket.js b/ui/novnc/js/web-socket-js/web_socket.js
> similarity index 100%
> rename from ui/js/novnc/web-socket-js/web_socket.js
> rename to ui/novnc/js/web-socket-js/web_socket.js
> diff --git a/ui/js/novnc/websock.js b/ui/novnc/js/websock.js
> similarity index 100%
> rename from ui/js/novnc/websock.js
> rename to ui/novnc/js/websock.js
> diff --git a/ui/js/novnc/webutil.js b/ui/novnc/js/webutil.js
> similarity index 100%
> rename from ui/js/novnc/webutil.js
> rename to ui/novnc/js/webutil.js
> diff --git a/ui/pages/vnc_auto.html.tmpl b/ui/novnc/vnc.html
> similarity index 83%
> rename from ui/pages/vnc_auto.html.tmpl
> rename to ui/novnc/vnc.html
> index 0078190..1f4355c 100644
> --- a/ui/pages/vnc_auto.html.tmpl
> +++ b/ui/novnc/vnc.html
> @@ -1,4 +1,3 @@
> -#from kimchi.cachebust import href
> <!DOCTYPE html>
> <html>
> <!--
> @@ -13,15 +12,15 @@
> <head>
> <title>noVNC</title>
> <meta http-equiv="X-UA-Compatible" content="chrome=1">
> - <link rel="stylesheet" href="$href("/css/novnc/base.css")" title="plain">
> + <link rel="stylesheet" href="css/base.css" title="plain">
> <script type='text/javascript'>
> - var INCLUDE_URI = "/js/novnc/";
> + var INCLUDE_URI = "js/";
> </script>
> <!--
> <script type='text/javascript'
> src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
> -->
> - <script src="$href("/js/novnc/util.js")"></script>
> + <script src="js/util.js"></script>
> </head>
>
> <body style="margin: 0px;">
> @@ -39,6 +38,6 @@
> Canvas not supported.
> </canvas>
> </div>
> - <script src="$href("/js/novnc/main.js")"></script>
> + <script src="js/main.js"></script>
> </body>
> </html>
More information about the Kimchi-devel
mailing list