[Kimchi-devel] [PATCH] Making urls relative
Aline Manera
alinefm at linux.vnet.ibm.com
Fri Feb 27 16:50:00 UTC 2015
Maybe it would be good to make Kimchi smarter to automatically connect
to the external web server.
For example, we could add a new parameter in Kimchi config file
(/etc/kimchi/kimchi.conf) and once it is filled up we start the nginx
proxy according to it. Otherwise, we keep starting Kimchi on
http://server:8000/
What do you think?
On 26/02/2015 10:25, Frédéric Bonnard wrote:
> From: Frederic Bonnard <frediz at linux.vnet.ibm.com>
>
> The goal is to be able to have kimchi website elsewhere than / , for example
> https://server/kimchi/
> Also providing an nginx configuration file example that can serve kimchi at the
> URL above.
> ---
> docs/Makefile.am | 1 +
> docs/nginx.conf.subsite.ex | 37 +++++++
> src/kimchi/screenshot.py | 2 +-
> ui/css/theme-default/template_add.css | 20 ++--
> ui/css/theme-default/topbar.css | 2 +-
> ui/js/src/kimchi.api.js | 176 +++++++++++++++++-----------------
> ui/js/src/kimchi.login.js | 2 +-
> ui/pages/guest.html.tmpl | 2 +-
> ui/pages/help/dita-help.xsl | 4 +-
> ui/pages/kimchi-ui.html.tmpl | 4 +-
> ui/pages/storagepool-add.html.tmpl | 2 +-
> ui/pages/tabs/storage.html.tmpl | 2 +-
> ui/pages/template-add.html.tmpl | 2 +-
> 13 files changed, 147 insertions(+), 109 deletions(-)
> create mode 100644 docs/nginx.conf.subsite.ex
>
> diff --git a/docs/Makefile.am b/docs/Makefile.am
> index 679aa18..a73d4c5 100644
> --- a/docs/Makefile.am
> +++ b/docs/Makefile.am
> @@ -25,4 +25,5 @@ dist_doc_DATA = \
> README-federation.md \
> kimchi-guest.png \
> kimchi-templates.png \
> + nginx.conf.subsite.ex \
> $(NULL)
> diff --git a/docs/nginx.conf.subsite.ex b/docs/nginx.conf.subsite.ex
> new file mode 100644
> index 0000000..5b2b3bc
> --- /dev/null
> +++ b/docs/nginx.conf.subsite.ex
> @@ -0,0 +1,37 @@
> +server {
> + sendfile on;
> +
> + client_max_body_size 4194304k;
> +
> + # Timeout set to 10 minutes to avoid the 504 Gateway Timeout
> + # when Kimchi is processing a request.
> + proxy_connect_timeout 600;
> + proxy_send_timeout 600;
> + proxy_read_timeout 600;
> + send_timeout 600;
> +
> + error_log /var/log/nginx/test.log debug;
> + rewrite_log on;
> + listen 443 ssl;
> +
> + ssl_certificate /etc/kimchi/kimchi-cert.pem;
> + ssl_certificate_key /etc/kimchi/kimchi-key.pem;
> +
> + add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
> + add_header X-Frame-Options DENY;
> + add_header X-Content-Type-Options nosniff;
> + add_header X-XSS-Protection "1; mode=block";
> +
> + location /kimchi/ {
> + proxy_pass http://127.0.0.1:8010/;
> + proxy_set_header Host $host;
> + proxy_set_header X-Real-IP $remote_addr;
> + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> + proxy_redirect http://127.0.0.1:8010/ https://$host/kimchi/;
> + }
> +}
> +
> +server {
> + listen 80;
> + rewrite ^/kimchi/(.*)$ https://$host/kimchi/$1 redirect;
> +}
> diff --git a/src/kimchi/screenshot.py b/src/kimchi/screenshot.py
> index e599d40..fc9aaac 100644
> --- a/src/kimchi/screenshot.py
> +++ b/src/kimchi/screenshot.py
> @@ -68,7 +68,7 @@ class VMScreenshot(object):
> if now - last_update > self.OUTDATED_SECS:
> self._clean_extra(self.LIVE_WINDOW)
> self._generate_thumbnail()
> - return '/data/screenshots/%s' %\
> + return 'data/screenshots/%s' %\
> os.path.basename(self.info['thumbnail'])
>
> def _clean_extra(self, window=-1):
> diff --git a/ui/css/theme-default/template_add.css b/ui/css/theme-default/template_add.css
> index e58bccb..f005a2c 100644
> --- a/ui/css/theme-default/template_add.css
> +++ b/ui/css/theme-default/template_add.css
> @@ -41,7 +41,7 @@
> float: left; display : block;
> width: 50px;
> height: 52px;
> - background: url(../../images/theme-default/icon-back.png) center
> + background: url(../images/theme-default/icon-back.png) center
> center no-repeat;
> cursor: pointer;
> display: block;
> @@ -59,17 +59,17 @@
> margin: 0 10px 10px;
> padding: 20px 10px 20px 65px;
> border: 2px solid #ccc;
> - background: url(../../images/theme-default/icon-local.png) 15px
> + background: url(../images/theme-default/icon-local.png) 15px
> center no-repeat;
> cursor: pointer;
> }
>
> .step-choose>li>a.local {
> - background-image: url(../../images/theme-default/icon-local.png);
> + background-image: url(../images/theme-default/icon-local.png);
> }
>
> .step-choose>li>a.remote {
> - background-image: url(../../images/theme-default/icon-remote.png);
> + background-image: url(../images/theme-default/icon-remote.png);
> }
>
> .step-choose>li>a:HOVER {
> @@ -176,27 +176,27 @@
> }
>
> .iso-icon.centos {
> - background-image: url(../../images/icon-centos.png);
> + background-image: url(../images/icon-centos.png);
> }
>
> .iso-icon.debian {
> - background-image: url(../../images/icon-debian.png);
> + background-image: url(../images/icon-debian.png);
> }
>
> .iso-icon.fedora {
> - background-image: url(../../images/icon-fedora.png);
> + background-image: url(../images/icon-fedora.png);
> }
>
> .iso-icon.opensuse {
> - background-image: url(../../images/icon-opensuse.png);
> + background-image: url(../images/icon-opensuse.png);
> }
>
> .iso-icon.ubuntu {
> - background-image: url(../../images/icon-ubuntu.png);
> + background-image: url(../images/icon-ubuntu.png);
> }
>
> .iso-icon.gentoo {
> - background-image: url(../../images/icon-gentoo.png);
> + background-image: url(../images/icon-gentoo.png);
> }
>
> .list-iso {
> diff --git a/ui/css/theme-default/topbar.css b/ui/css/theme-default/topbar.css
> index d21fc50..04676b8 100644
> --- a/ui/css/theme-default/topbar.css
> +++ b/ui/css/theme-default/topbar.css
> @@ -132,7 +132,7 @@
> }
>
> #user-icon {
> - background: url("/images/theme-default/user-icon.png") no-repeat left top;
> + background: url("../images/theme-default/user-icon.png") no-repeat left top;
> height: 16px;
> width: 16px;
> }
> diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js
> index 2abe8f5..277bf55 100644
> --- a/ui/js/src/kimchi.api.js
> +++ b/ui/js/src/kimchi.api.js
> @@ -54,7 +54,7 @@ var kimchi = {
> getCapabilities : function(suc, err, done) {
> done = typeof done !== 'undefined' ? done: function(){};
> kimchi.requestJSON({
> - url : "/config/capabilities",
> + url : "config/capabilities",
> type : "GET",
> contentType : "application/json",
> dataType : "json",
> @@ -69,7 +69,7 @@ var kimchi = {
> */
> getI18n: function(suc, err, url, sync) {
> kimchi.requestJSON({
> - url : url ? url : kimchi.url + 'i18n.json',
> + url : url ? url : 'i18n.json',
> type : 'GET',
> resend: true,
> dataType : 'json',
> @@ -84,7 +84,7 @@ var kimchi = {
> */
> getHost: function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host',
> + url : 'host',
> type : 'GET',
> resend: true,
> contentType : 'application/json',
> @@ -99,7 +99,7 @@ var kimchi = {
> */
> getHostStats : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host/stats',
> + url : 'host/stats',
> type : 'GET',
> contentType : 'application/json',
> headers: {'Kimchi-Robot': 'kimchi-robot'},
> @@ -114,7 +114,7 @@ var kimchi = {
> */
> getHostStatsHistory : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host/stats/history',
> + url : 'host/stats/history',
> type : 'GET',
> resend: true,
> contentType : 'application/json',
> @@ -138,7 +138,7 @@ var kimchi = {
> */
> createVM : function(settings, suc, err) {
> kimchi.requestJSON({
> - url : "/vms",
> + url : "vms",
> type : "POST",
> contentType : "application/json",
> data : JSON.stringify(settings),
> @@ -154,7 +154,7 @@ var kimchi = {
> */
> createTemplate : function(settings, suc, err) {
> kimchi.requestJSON({
> - url : "/templates",
> + url : "templates",
> type : "POST",
> contentType : "application/json",
> data : JSON.stringify(settings),
> @@ -166,7 +166,7 @@ var kimchi = {
>
> deleteTemplate : function(tem, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'templates/' + encodeURIComponent(tem),
> + url : 'templates/' + encodeURIComponent(tem),
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -177,7 +177,7 @@ var kimchi = {
>
> cloneTemplate : function(tem, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'templates/' + encodeURIComponent(tem) + "/clone",
> + url : 'templates/' + encodeURIComponent(tem) + "/clone",
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -188,7 +188,7 @@ var kimchi = {
>
> listTemplates : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'templates',
> + url : 'templates',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -202,7 +202,7 @@ var kimchi = {
> */
> retrieveTemplate : function(templateName, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + "templates/" + encodeURIComponent(templateName),
> + url : "templates/" + encodeURIComponent(templateName),
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json'
> @@ -216,7 +216,7 @@ var kimchi = {
> */
> updateTemplate : function(name, settings, suc, err) {
> $.ajax({
> - url : kimchi.url + "templates/" + encodeURIComponent(name),
> + url : "templates/" + encodeURIComponent(name),
> type : 'PUT',
> contentType : 'application/json',
> data : JSON.stringify(settings),
> @@ -232,7 +232,7 @@ var kimchi = {
> */
> createStoragePool : function(settings, suc, err) {
> kimchi.requestJSON({
> - url : '/storagepools',
> + url : 'storagepools',
> type : 'POST',
> contentType : 'application/json',
> data : JSON.stringify(settings),
> @@ -242,7 +242,7 @@ var kimchi = {
>
> updateStoragePool : function(name, content, suc, err) {
> $.ajax({
> - url : kimchi.url + "storagepools/" + encodeURIComponent(name),
> + url : "storagepools/" + encodeURIComponent(name),
> type : 'PUT',
> contentType : 'application/json',
> dataType : 'json',
> @@ -254,7 +254,7 @@ var kimchi = {
>
> startVM : function(vm, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/' + encodeURIComponent(vm) + '/start',
> + url : 'vms/' + encodeURIComponent(vm) + '/start',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -265,7 +265,7 @@ var kimchi = {
>
> poweroffVM : function(vm, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/' + encodeURIComponent(vm) + '/poweroff',
> + url : 'vms/' + encodeURIComponent(vm) + '/poweroff',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -276,7 +276,7 @@ var kimchi = {
>
> shutdownVM : function(vm, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/' + encodeURIComponent(vm) + '/shutdown',
> + url : 'vms/' + encodeURIComponent(vm) + '/shutdown',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -287,7 +287,7 @@ var kimchi = {
>
> resetVM : function(vm, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/' + encodeURIComponent(vm) + '/reset',
> + url : 'vms/' + encodeURIComponent(vm) + '/reset',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -305,7 +305,7 @@ var kimchi = {
> */
> retrieveVM : function(vm, suc, err) {
> $.ajax({
> - url : kimchi.url + 'vms/' + encodeURIComponent(vm),
> + url : 'vms/' + encodeURIComponent(vm),
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -319,7 +319,7 @@ var kimchi = {
> */
> updateVM : function(name, settings, suc, err) {
> $.ajax({
> - url : kimchi.url + "vms/" + encodeURIComponent(name),
> + url : "vms/" + encodeURIComponent(name),
> type : 'PUT',
> contentType : 'application/json',
> data : JSON.stringify(settings),
> @@ -331,7 +331,7 @@ var kimchi = {
>
> deleteVM : function(vm, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/' + encodeURIComponent(vm),
> + url : 'vms/' + encodeURIComponent(vm),
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -342,13 +342,13 @@ var kimchi = {
>
> vncToVM : function(vm) {
> kimchi.requestJSON({
> - url : '/config',
> + url : 'config',
> type : 'GET',
> dataType : 'json'
> }).done(function(data, textStatus, xhr) {
> proxy_port = data['display_proxy_port'];
> kimchi.requestJSON({
> - url : "/vms/" + encodeURIComponent(vm) + "/connect",
> + url : "vms/" + encodeURIComponent(vm) + "/connect",
> type : "POST",
> dataType : "json"
> }).done(function() {
> @@ -374,13 +374,13 @@ var kimchi = {
>
> spiceToVM : function(vm) {
> kimchi.requestJSON({
> - url : '/config',
> + url : 'config',
> type : 'GET',
> dataType : 'json'
> }).done(function(data, textStatus, xhr) {
> proxy_port = data['display_proxy_port'];
> kimchi.requestJSON({
> - url : "/vms/" + encodeURIComponent(vm) + "/connect",
> + url : "vms/" + encodeURIComponent(vm) + "/connect",
> type : "POST",
> dataType : "json"
> }).done(function(data, textStatus, xhr) {
> @@ -406,7 +406,7 @@ var kimchi = {
>
> listVMs : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms',
> + url : 'vms',
> type : 'GET',
> contentType : 'application/json',
> headers: {'Kimchi-Robot': 'kimchi-robot'},
> @@ -419,7 +419,7 @@ var kimchi = {
>
> listTemplates : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'templates',
> + url : 'templates',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -431,7 +431,7 @@ var kimchi = {
>
> listStoragePools : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'storagepools',
> + url : 'storagepools',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -443,7 +443,7 @@ var kimchi = {
>
> listStorageVolumes : function(poolName, suc, err) {
> $.ajax({
> - url : kimchi.url + 'storagepools/' + encodeURIComponent(poolName) + '/storagevolumes',
> + url : 'storagepools/' + encodeURIComponent(poolName) + '/storagevolumes',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -454,7 +454,7 @@ var kimchi = {
>
> listIsos : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'storagepools/kimchi_isos/storagevolumes',
> + url : 'storagepools/kimchi_isos/storagevolumes',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -465,7 +465,7 @@ var kimchi = {
>
> listDistros : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'config/distros',
> + url : 'config/distros',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -527,7 +527,7 @@ var kimchi = {
>
> getTask : function(taskId, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'tasks/' + encodeURIComponent(taskId),
> + url : 'tasks/' + encodeURIComponent(taskId),
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -538,7 +538,7 @@ var kimchi = {
>
> getTasksByFilter : function(filter, suc, err, sync) {
> kimchi.requestJSON({
> - url : kimchi.url + 'tasks?' + filter,
> + url : 'tasks?' + filter,
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -550,7 +550,7 @@ var kimchi = {
>
> login : function(settings, suc, err) {
> $.ajax({
> - url : "/login",
> + url : "login",
> type : "POST",
> contentType : "application/json",
> data : JSON.stringify(settings),
> @@ -560,7 +560,7 @@ var kimchi = {
>
> logout : function(suc, err) {
> kimchi.requestJSON({
> - url : '/logout',
> + url : 'logout',
> type : 'POST',
> contentType : "application/json",
> dataType : "json"
> @@ -569,7 +569,7 @@ var kimchi = {
>
> deleteStoragePool : function(poolName, suc, err) {
> $.ajax({
> - url : kimchi.url + 'storagepools/' + encodeURIComponent(poolName),
> + url : 'storagepools/' + encodeURIComponent(poolName),
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -581,7 +581,7 @@ var kimchi = {
> changePoolState : function(poolName, state, suc, err) {
> if (state === 'activate' || state === 'deactivate')
> $.ajax({
> - url : kimchi.url + 'storagepools/' + encodeURIComponent(poolName) + '/' + state,
> + url : 'storagepools/' + encodeURIComponent(poolName) + '/' + state,
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -592,7 +592,7 @@ var kimchi = {
>
> listPlugins : function(suc, err, sync) {
> kimchi.requestJSON({
> - url : kimchi.url + 'plugins',
> + url : 'plugins',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -605,7 +605,7 @@ var kimchi = {
>
> listNetworks : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'networks',
> + url : 'networks',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -620,7 +620,7 @@ var kimchi = {
> toggleNetwork : function(name, on, suc, err) {
> var action = on ? "activate" : "deactivate";
> kimchi.requestJSON({
> - url : kimchi.url + 'networks/' + encodeURIComponent(name) + '/' + action,
> + url : 'networks/' + encodeURIComponent(name) + '/' + action,
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -633,7 +633,7 @@ var kimchi = {
>
> createNetwork : function(network, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'networks',
> + url : 'networks',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -647,7 +647,7 @@ var kimchi = {
>
> getInterfaces : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'interfaces',
> + url : 'interfaces',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -661,7 +661,7 @@ var kimchi = {
>
> deleteNetwork : function(name, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'networks/' + encodeURIComponent(name),
> + url : 'networks/' + encodeURIComponent(name),
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -674,7 +674,7 @@ var kimchi = {
>
> listReports : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'debugreports',
> + url : 'debugreports',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -717,7 +717,7 @@ var kimchi = {
> };
>
> kimchi.requestJSON({
> - url : kimchi.url + 'debugreports',
> + url : 'debugreports',
> type : "POST",
> contentType : "application/json",
> data : JSON.stringify(settings),
> @@ -729,7 +729,7 @@ var kimchi = {
>
> renameReport : function(name, settings, suc, err) {
> $.ajax({
> - url : kimchi.url + "debugreports/" + encodeURIComponent(name),
> + url : "debugreports/" + encodeURIComponent(name),
> type : 'PUT',
> contentType : 'application/json',
> data : JSON.stringify(settings),
> @@ -742,7 +742,7 @@ var kimchi = {
> deleteReport: function(settings, suc, err) {
> var reportName = encodeURIComponent(settings['name']);
> kimchi.requestJSON({
> - url : kimchi.url + 'debugreports/' + reportName,
> + url : 'debugreports/' + reportName,
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -757,7 +757,7 @@ var kimchi = {
>
> shutdown: function(settings, suc, err) {
> var reboot = settings && settings['reboot'] === true;
> - var url = kimchi.url + 'host/' + (reboot ? 'reboot' : 'shutdown');
> + var url = 'host/' + (reboot ? 'reboot' : 'shutdown');
> kimchi.requestJSON({
> url : url,
> type : 'POST',
> @@ -770,7 +770,7 @@ var kimchi = {
>
> listHostPartitions : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host/partitions',
> + url : 'host/partitions',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -780,7 +780,7 @@ var kimchi = {
> },
>
> getStorageServers: function(type, suc, err) {
> - var url = kimchi.url + 'storageservers?_target_type=' + type;
> + var url = 'storageservers?_target_type=' + type;
> kimchi.requestJSON({
> url : url,
> type : 'GET',
> @@ -794,7 +794,7 @@ var kimchi = {
> },
>
> getStorageTargets: function(server,type, suc, err) {
> - var url = kimchi.url + 'storageservers/' + server + '/storagetargets?_target_type=' + type;
> + var url = 'storageservers/' + server + '/storagetargets?_target_type=' + type;
> kimchi.requestJSON({
> url : url,
> type : 'GET',
> @@ -807,7 +807,7 @@ var kimchi = {
> },
>
> getStoragePoolVolume: function(poolName, volumeName, suc, err) {
> - var url = kimchi.url + 'storagepools/' + encodeURIComponent(poolName) + '/storagevolumes/' + encodeURIComponent(volumeName);
> + var url = 'storagepools/' + encodeURIComponent(poolName) + '/storagevolumes/' + encodeURIComponent(volumeName);
> kimchi.requestJSON({
> url : url,
> type : 'GET',
> @@ -823,7 +823,7 @@ var kimchi = {
> var vm = encodeURIComponent(settings['vm']);
> delete settings['vm'];
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/' + vm + '/storages',
> + url : 'vms/' + vm + '/storages',
> type : 'POST',
> contentType : 'application/json',
> data : JSON.stringify(settings),
> @@ -837,7 +837,7 @@ var kimchi = {
> var vm = encodeURIComponent(settings['vm']);
> var dev = encodeURIComponent(settings['dev']);
> kimchi.requestJSON({
> - url : kimchi.url + "vms/" + vm + '/storages/' + dev,
> + url : "vms/" + vm + '/storages/' + dev,
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -850,7 +850,7 @@ var kimchi = {
> var vm = encodeURIComponent(settings['vm']);
> var dev = encodeURIComponent(settings['dev']);
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/' + vm + '/storages/' + dev,
> + url : 'vms/' + vm + '/storages/' + dev,
> type : 'PUT',
> contentType : 'application/json',
> data : JSON.stringify({
> @@ -866,7 +866,7 @@ var kimchi = {
> var vm = settings['vm'];
> var dev = settings['dev'];
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/' + encodeURIComponent(vm) +
> + url : 'vms/' + encodeURIComponent(vm) +
> '/storages/' + encodeURIComponent(dev),
> type : 'DELETE',
> contentType : 'application/json',
> @@ -879,7 +879,7 @@ var kimchi = {
> listVMStorages : function(params, suc, err) {
> var vm = encodeURIComponent(params['vm']);
> var type = params['storageType'];
> - var url = kimchi.url + 'vms/' + vm + '/storages';
> + var url = 'vms/' + vm + '/storages';
> if(type) {
> url += '?type=' + type;
> }
> @@ -895,7 +895,7 @@ var kimchi = {
>
> listSoftwareUpdates : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host/packagesupdate',
> + url : 'host/packagesupdate',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -935,7 +935,7 @@ var kimchi = {
> };
>
> kimchi.requestJSON({
> - url : kimchi.url + 'host/swupdate',
> + url : 'host/swupdate',
> type : "POST",
> contentType : "application/json",
> dataType : "json",
> @@ -959,7 +959,7 @@ var kimchi = {
> retrieveRepository : function(repository, suc, err) {
> var reposID = encodeURIComponent(repository);
> kimchi.requestJSON({
> - url : kimchi.url + "host/repositories/" + reposID,
> + url : "host/repositories/" + reposID,
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -971,7 +971,7 @@ var kimchi = {
> updateRepository : function(name, settings, suc, err) {
> var reposID = encodeURIComponent(name);
> $.ajax({
> - url : kimchi.url + "host/repositories/" + reposID,
> + url : "host/repositories/" + reposID,
> type : 'PUT',
> contentType : 'application/json',
> data : JSON.stringify(settings),
> @@ -984,7 +984,7 @@ var kimchi = {
> enableRepository : function(name, enable, suc, err) {
> var reposID = encodeURIComponent(name);
> $.ajax({
> - url : kimchi.url + "host/repositories/" + reposID +
> + url : "host/repositories/" + reposID +
> '/' + (enable === true ? 'enable' : 'disable'),
> type : 'POST',
> contentType : 'application/json',
> @@ -997,7 +997,7 @@ var kimchi = {
> deleteRepository : function(repository, suc, err) {
> var reposID = encodeURIComponent(repository);
> kimchi.requestJSON({
> - url : kimchi.url + 'host/repositories/' + reposID,
> + url : 'host/repositories/' + reposID,
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1008,7 +1008,7 @@ var kimchi = {
>
> listRepositories : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host/repositories',
> + url : 'host/repositories',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1019,7 +1019,7 @@ var kimchi = {
> },
>
> getHostFCDevices: function(suc, err) {
> - var url = kimchi.url+'host/devices?_cap=fc_host';
> + var url = 'host/devices?_cap=fc_host';
> kimchi.requestJSON({
> url : url,
> type : 'GET',
> @@ -1033,7 +1033,7 @@ var kimchi = {
> },
>
> getGuestInterfaces: function(name, suc, err) {
> - var url = kimchi.url+'vms/'+encodeURIComponent(name)+'/ifaces';
> + var url = 'vms/'+encodeURIComponent(name)+'/ifaces';
> kimchi.requestJSON({
> url : url,
> type : 'GET',
> @@ -1048,7 +1048,7 @@ var kimchi = {
>
> createGuestInterface : function(name, interface, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url+'vms/'+encodeURIComponent(name)+'/ifaces',
> + url : 'vms/'+encodeURIComponent(name)+'/ifaces',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1062,7 +1062,7 @@ var kimchi = {
>
> deleteGuestInterface : function(vm, mac, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url+'vms/'+encodeURIComponent(vm)+'/ifaces/'+encodeURIComponent(mac),
> + url : 'vms/'+encodeURIComponent(vm)+'/ifaces/'+encodeURIComponent(mac),
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1075,7 +1075,7 @@ var kimchi = {
>
> updateGuestInterface : function(vm, mac, interface, suc, err) {
> $.ajax({
> - url : kimchi.url+'vms/'+encodeURIComponent(vm)+'/ifaces/'+encodeURIComponent(mac),
> + url : 'vms/'+encodeURIComponent(vm)+'/ifaces/'+encodeURIComponent(mac),
> type : 'PUT',
> contentType : 'application/json',
> data : JSON.stringify(interface),
> @@ -1089,7 +1089,7 @@ var kimchi = {
>
> getUserById : function(data, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'users?_user_id=' + data.user_id,
> + url : 'users?_user_id=' + data.user_id,
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1104,7 +1104,7 @@ var kimchi = {
>
> getUsers : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'users',
> + url : 'users',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1118,7 +1118,7 @@ var kimchi = {
>
> getGroups : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'groups',
> + url : 'groups',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1132,7 +1132,7 @@ var kimchi = {
>
> getHostPCIDevices : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host/devices?_passthrough=true&_cap=pci',
> + url : 'host/devices?_passthrough=true&_cap=pci',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1146,7 +1146,7 @@ var kimchi = {
>
> getPCIDeviceCompanions : function(pcidev, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host/devices?_passthrough_affected_by=' + pcidev,
> + url : 'host/devices?_passthrough_affected_by=' + pcidev,
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1162,7 +1162,7 @@ var kimchi = {
> server = encodeURIComponent(server);
> port = port ? '&_server_port='+encodeURIComponent(port) : '';
> kimchi.requestJSON({
> - url : kimchi.url + 'storageservers/'+server+'/storagetargets?_target_type=iscsi'+port,
> + url : 'storageservers/'+server+'/storagetargets?_target_type=iscsi'+port,
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1176,7 +1176,7 @@ var kimchi = {
>
> getPeers : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'peers',
> + url : 'peers',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1190,7 +1190,7 @@ var kimchi = {
>
> getVMPCIDevices : function(id, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/'+encodeURIComponent(id)+'/hostdevs',
> + url : 'vms/'+encodeURIComponent(id)+'/hostdevs',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1204,7 +1204,7 @@ var kimchi = {
>
> addVMPCIDevice : function(vm, device, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/'+ encodeURIComponent(vm) +'/hostdevs',
> + url : 'vms/'+ encodeURIComponent(vm) +'/hostdevs',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1218,7 +1218,7 @@ var kimchi = {
>
> removeVMPCIDevice : function(vm, device, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/'+ encodeURIComponent(vm) +'/hostdevs/' + encodeURIComponent(device),
> + url : 'vms/'+ encodeURIComponent(vm) +'/hostdevs/' + encodeURIComponent(device),
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1236,7 +1236,7 @@ var kimchi = {
> var fd = settings['formData'];
> var sp = encodeURIComponent(settings['sp']);
> kimchi.requestJSON({
> - url : kimchi.url + 'storagepools/' + sp + '/storagevolumes',
> + url : 'storagepools/' + sp + '/storagevolumes',
> type : 'POST',
> data : fd,
> processData : false,
> @@ -1254,7 +1254,7 @@ var kimchi = {
> var sp = encodeURIComponent(settings['sp']);
> delete settings['sp'];
> kimchi.requestJSON({
> - url : kimchi.url + 'storagepools/' + sp + '/storagevolumes',
> + url : 'storagepools/' + sp + '/storagevolumes',
> type : 'POST',
> data : JSON.stringify(settings),
> contentType : 'application/json',
> @@ -1266,7 +1266,7 @@ var kimchi = {
>
> cloneGuest: function(vm, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'vms/'+encodeURIComponent(vm)+"/clone",
> + url : 'vms/'+encodeURIComponent(vm)+"/clone",
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1279,7 +1279,7 @@ var kimchi = {
>
> listSnapshots : function(vm, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url+'vms/'+encodeURIComponent(vm)+'/snapshots',
> + url : 'vms/'+encodeURIComponent(vm)+'/snapshots',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1293,7 +1293,7 @@ var kimchi = {
>
> getCurrentSnapshot : function(vm, suc, err, sync) {
> kimchi.requestJSON({
> - url : kimchi.url+'vms/'+encodeURIComponent(vm)+'/snapshots/current',
> + url : 'vms/'+encodeURIComponent(vm)+'/snapshots/current',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1308,7 +1308,7 @@ var kimchi = {
>
> revertSnapshot : function(vm, snapshot, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url+'vms/'+encodeURIComponent(vm)+'/snapshots/'+encodeURIComponent(snapshot)+'/revert',
> + url : 'vms/'+encodeURIComponent(vm)+'/snapshots/'+encodeURIComponent(snapshot)+'/revert',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1321,7 +1321,7 @@ var kimchi = {
>
> createSnapshot : function(vm, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url+'vms/'+encodeURIComponent(vm)+'/snapshots',
> + url : 'vms/'+encodeURIComponent(vm)+'/snapshots',
> type : 'POST',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1334,7 +1334,7 @@ var kimchi = {
>
> deleteSnapshot : function(vm, snapshot, suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url+'vms/'+encodeURIComponent(vm)+'/snapshots/'+encodeURIComponent(snapshot),
> + url : 'vms/'+encodeURIComponent(vm)+'/snapshots/'+encodeURIComponent(snapshot),
> type : 'DELETE',
> contentType : 'application/json',
> dataType : 'json',
> @@ -1347,7 +1347,7 @@ var kimchi = {
>
> getCPUInfo : function(suc, err) {
> kimchi.requestJSON({
> - url : kimchi.url + 'host/cpuinfo',
> + url : 'host/cpuinfo',
> type : 'GET',
> contentType : 'application/json',
> dataType : 'json',
> diff --git a/ui/js/src/kimchi.login.js b/ui/js/src/kimchi.login.js
> index 19b8691..556fbda 100644
> --- a/ui/js/src/kimchi.login.js
> +++ b/ui/js/src/kimchi.login.js
> @@ -57,7 +57,7 @@ kimchi.login_main = function() {
> var next_url = lastPage ? lastPage.replace(/\"/g,'') : "/";
> }
> kimchi.cookie.set('roles',JSON.stringify(data.roles));
> - window.location.replace(next_url)
> + window.location.replace(window.location.pathname.replace(/\/+login.html/, '') + next_url)
> }, function() {
> $("#messUserPass").show();
> $("#messSession").hide();
> diff --git a/ui/pages/guest.html.tmpl b/ui/pages/guest.html.tmpl
> index 3cc2fad..7051ed5 100644
> --- a/ui/pages/guest.html.tmpl
> +++ b/ui/pages/guest.html.tmpl
> @@ -45,7 +45,7 @@
> <div class="tile ">
> <img class="imgactive" alt="" src="">
> <img class="imgload" alt="" src="">
> - <img class="overlay shutoff-hidden" alt="$_("Start")" src="/images/theme-default/icon-power-down.png" >
> + <img class="overlay shutoff-hidden" alt="$_("Start")" src="images/theme-default/icon-power-down.png" >
> </div>
> </div>
> <div class="sortable guest-actions" name="guest-actions">
> diff --git a/ui/pages/help/dita-help.xsl b/ui/pages/help/dita-help.xsl
> index 9cfeeea..8583a4e 100644
> --- a/ui/pages/help/dita-help.xsl
> +++ b/ui/pages/help/dita-help.xsl
> @@ -9,8 +9,8 @@
> <head>
> <title><xsl:value-of select="/cshelp/title" /></title>
> <meta charset="UTF-8" />
> - <link rel="shortcut icon" href="/images/logo.ico" />
> - <link rel="stylesheet" type="text/css" href="/help/kimchi.css" />
> + <link rel="shortcut icon" href="../../images/logo.ico" />
> + <link rel="stylesheet" type="text/css" href="../kimchi.css" />
> </head>
> <body>
> <xsl:apply-templates select="//cshelp" />
> diff --git a/ui/pages/kimchi-ui.html.tmpl b/ui/pages/kimchi-ui.html.tmpl
> index 844234d..2366d67 100644
> --- a/ui/pages/kimchi-ui.html.tmpl
> +++ b/ui/pages/kimchi-ui.html.tmpl
> @@ -118,7 +118,7 @@
> <script id="about-tmpl" type="kimchi/template">
> <div class="window about-window">
> <header>
> - <h1 class="title"><img alt="Kimchi logo" src="/images/logo.ico"/> $_("About")</h1>
> + <h1 class="title"><img alt="Kimchi logo" src="images/logo.ico"/> $_("About")</h1>
> <div class="close">X</div>
> </header>
> <div class="content" align="center">
> @@ -126,7 +126,7 @@
> <div>
> <br/>
> <br/>
> - <img src="/images/theme-default/logo-plain.gif"/>
> + <img src="images/theme-default/logo-plain.gif"/>
> <br/>
> <br/>
> <h2>Kimchi</h2>
> diff --git a/ui/pages/storagepool-add.html.tmpl b/ui/pages/storagepool-add.html.tmpl
> index 081805b..8ed77a6 100644
> --- a/ui/pages/storagepool-add.html.tmpl
> +++ b/ui/pages/storagepool-add.html.tmpl
> @@ -100,7 +100,7 @@
> <div class="host-partition">
> <p class="text-help">
> $_("Looking for available partitions ...")
> - <img src = "../images/theme-default/loading.gif" />
> + <img src = "images/theme-default/loading.gif" />
> </p>
> </div>
> </section>
> diff --git a/ui/pages/tabs/storage.html.tmpl b/ui/pages/tabs/storage.html.tmpl
> index dbbaef9..df4636c 100644
> --- a/ui/pages/tabs/storage.html.tmpl
> +++ b/ui/pages/tabs/storage.html.tmpl
> @@ -43,7 +43,7 @@
> </div>
> <div id="logicalPoolExtend" title="$_("Device path")">
> <p id="loading-info" class="text-help">
> - <img src = "../images/theme-default/loading.gif" />
> + <img src = "images/theme-default/loading.gif" />
> $_("Looking for available partitions ...")
> </p>
> <div class="host-partition">
> diff --git a/ui/pages/template-add.html.tmpl b/ui/pages/template-add.html.tmpl
> index eaafaa7..f5c5a75 100644
> --- a/ui/pages/template-add.html.tmpl
> +++ b/ui/pages/template-add.html.tmpl
> @@ -145,7 +145,7 @@
> <div id="load-remote-iso">
> <h3 class="step-subtitle">
> <label>
> - <img src = "../images/theme-default/loading.gif" />
> + <img src = "images/theme-default/loading.gif" />
> $_("Loading default remote ISOs ...")
> </label>
> </h3>
More information about the Kimchi-devel
mailing list