diff --git a/assets/webconfig/content/connection_lost.html b/assets/webconfig/content/connection_lost.html index b852998f..95cd38ec 100644 --- a/assets/webconfig/content/connection_lost.html +++ b/assets/webconfig/content/connection_lost.html @@ -26,6 +26,8 @@ performTranslation(); var connectionLost = false; var connectionTimer; var count = 1; +var reconnectInterval = 4000; +var connURL = location.protocol+"//"+location.hostname+":"+window.jsonPort+location.pathname+location.hash; function tryReconnect() { @@ -34,12 +36,12 @@ function tryReconnect() window.clearInterval(connectionTimer); $('.reconstop').toggle(); } - + $('#counter').html(count+'/100'); - - $.ajax({ url: "/" }).done(function(data) { + + $.ajax({ url: connURL }).done(function(data) { window.clearInterval(connectionTimer); - window.location.href ="/"; + window.location.href = connURL; }) .fail( function( jqXHR, textStatus ) { count++; @@ -52,10 +54,13 @@ function connectionLostAction() if(!connectionLost) { connectionLost = true; - connectionTimer = window.setInterval(tryReconnect, 4000); + // if we changed the webui port we connect faster + if(window.fastReconnect){ + window.fastReconnect = false; + reconnectInterval = 2000; + } + connectionTimer = window.setInterval(tryReconnect, reconnectInterval); } } - - diff --git a/assets/webconfig/js/content_webconfig.js b/assets/webconfig/js/content_webconfig.js index e46b8e13..8942a076 100644 --- a/assets/webconfig/js/content_webconfig.js +++ b/assets/webconfig/js/content_webconfig.js @@ -1,29 +1,32 @@ $(document).ready( function() { performTranslation(); - + var conf_editor = null; - + $('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_webc_heading_title"), 'editor_container', 'btn_submit')); if(window.showOptHelp) { $('#conf_cont').append(createHelpTable(window.schema.webConfig.properties, $.i18n("edt_conf_webc_heading_title"))); } - + conf_editor = createJsonEditor('editor_container', { webConfig : window.schema.webConfig }, true, true); conf_editor.on('change',function() { conf_editor.validate().length ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false); - }); + }); $('#btn_submit').off().on('click',function() { - requestWriteConfig(conf_editor.getValue()); + // store the last webui port for correct reconnect url (connection_lost.html) + var val = conf_editor.getValue(); + window.fastReconnect = true; + window.jsonPort = val.webConfig.port; + requestWriteConfig(val); }); if(window.showOptHelp) createHint("intro", $.i18n('conf_webconfig_label_intro'), "editor_container"); - + removeOverlay(); }); - diff --git a/assets/webconfig/js/hyperion.js b/assets/webconfig/js/hyperion.js index 912e5f84..dc6c9717 100644 --- a/assets/webconfig/js/hyperion.js +++ b/assets/webconfig/js/hyperion.js @@ -14,7 +14,7 @@ window.serverSchema = {}; window.serverConfig = {}; window.schema = {}; window.sysInfo = {}; -window.jsonPort = 19444; +window.jsonPort = 8090; window.websocket = null; window.hyperion = {}; window.wsTan = 1; diff --git a/libsrc/webserver/QtHttpHeader.cpp b/libsrc/webserver/QtHttpHeader.cpp index 248b51ad..1eaf56ae 100644 --- a/libsrc/webserver/QtHttpHeader.cpp +++ b/libsrc/webserver/QtHttpHeader.cpp @@ -30,6 +30,7 @@ const QByteArray & QtHttpHeader::Location = QByteArrayLiteral ("Loca const QByteArray & QtHttpHeader::SetCookie = QByteArrayLiteral ("Set-Cookie"); const QByteArray & QtHttpHeader::TransferEncoding = QByteArrayLiteral ("Transfer-Encoding"); const QByteArray & QtHttpHeader::ContentDisposition = QByteArrayLiteral ("Content-Disposition"); +const QByteArray & QtHttpHeader::AccessControlAllow = QByteArrayLiteral ("Access-Control-Allow-Origin"); const QByteArray & QtHttpHeader::Upgrade = QByteArrayLiteral ("Upgrade"); const QByteArray & QtHttpHeader::SecWebSocketKey = QByteArrayLiteral ("Sec-WebSocket-Key"); const QByteArray & QtHttpHeader::SecWebSocketProtocol = QByteArrayLiteral ("Sec-WebSocket-Protocol"); diff --git a/libsrc/webserver/QtHttpHeader.h b/libsrc/webserver/QtHttpHeader.h index 6bc03565..e04ee457 100644 --- a/libsrc/webserver/QtHttpHeader.h +++ b/libsrc/webserver/QtHttpHeader.h @@ -32,6 +32,7 @@ public: static const QByteArray & SetCookie; static const QByteArray & TransferEncoding; static const QByteArray & ContentDisposition; + static const QByteArray & AccessControlAllow; // Websocket specific headers static const QByteArray & Upgrade; static const QByteArray & SecWebSocketKey; diff --git a/libsrc/webserver/StaticFileServing.cpp b/libsrc/webserver/StaticFileServing.cpp index 77a9a399..7b0141f9 100644 --- a/libsrc/webserver/StaticFileServing.cpp +++ b/libsrc/webserver/StaticFileServing.cpp @@ -135,6 +135,7 @@ void StaticFileServing::onRequestNeedsReply (QtHttpRequest * request, QtHttpRepl if (file.open (QFile::ReadOnly)) { QByteArray data = file.readAll (); reply->addHeader ("Content-Type", mime.name ().toLocal8Bit ()); + reply->addHeader(QtHttpHeader::AccessControlAllow, "*" ); reply->appendRawData (data); file.close (); }