/** * Initialize web server and add requests */ void webserver_start() { // not found g_server.onNotFound(handleNotFound); #ifdef CAPTIVE_PORTAL // handle captive requests g_server.addHandler(new CaptiveRequestHandler()).setFilter(ON_AP_FILTER); #endif // CDN g_server.on("/js/jquery-2.1.4.min.js", HTTP_GET, [](AsyncWebServerRequest *request) { request->redirect(F("http://code.jquery.com/jquery-2.1.4.min.js")); }).setFilter(ON_STA_FILTER); g_server.on("/css/foundation.min.css", HTTP_GET, [](AsyncWebServerRequest *request) { request->redirect(F("http://cdnjs.cloudflare.com/ajax/libs/foundation/6.2.3/foundation.min.css")); }).setFilter(ON_STA_FILTER); // GET g_server.on("/api/status", HTTP_GET, handleGetStatus); g_server.on("/api/plugins", HTTP_GET, handleGetPlugins); g_server.on("/api/scan", HTTP_GET, handleWifiScan); // POST g_server.on("/settings", HTTP_POST, handleSettings); g_server.on("/restart", HTTP_POST, [](AsyncWebServerRequest *request) { // AsyncWebServerResponse *response = request->beginResponse(302); // response->addHeader("Location", net_hostname + ".local"); // request->send(response); request->send(200, F(CONTENT_TYPE_HTML), F("<!DOCTYPE html><html><head><meta http-equiv=\"refresh\" content=\"5; url=/\"></head><body>Restarting...<br/><img src=\"/img/loading.gif\"></body></html>")); requestRestart(); }); // make sure config.json is not served! g_server.on("/config.json", HTTP_GET, [](AsyncWebServerRequest *request) { request->send(400); }); // catch-all g_server.serveStatic("/", SPIFFS, "/", CACHE_HEADER).setDefaultFile("index.html"); // sensor api registerPlugins(); #ifdef SPIFFS_EDITOR g_server.addHandler(new SPIFFSEditor()); #endif #ifdef BROWSER_EVENTS g_server.addHandler(&g_events); #endif // start server g_server.begin(); }
void PassiveUpdateNotifier::backgroundCheckForUpdate() { if( Utility::isLinux() ) { // on linux, check if the installed binary is still the same version // as the one that is running. If not, restart if possible. const QByteArray fsVersion = Utility::versionOfInstalledBinary(); qDebug() << Q_FUNC_INFO; if( !(fsVersion.isEmpty() || _runningAppVersion.isEmpty()) && fsVersion != _runningAppVersion ) { emit requestRestart(); } } }
UpdaterScheduler::UpdaterScheduler(QObject *parent) : QObject(parent) { connect( &_updateCheckTimer, SIGNAL(timeout()), this, SLOT(slotTimerFired()) ); // Note: the sparkle-updater is not an OCUpdater and thus the dynamic_cast // returns NULL. Clever detail. if (OCUpdater *updater = dynamic_cast<OCUpdater*>(Updater::instance())) { connect(updater, SIGNAL(newUpdateAvailable(QString,QString)), this, SIGNAL(updaterAnnouncement(QString,QString)) ); connect(updater, SIGNAL(requestRestart()), SIGNAL(requestRestart())); } // at startup, do a check in any case. QTimer::singleShot(3000, this, SLOT(slotTimerFired())); ConfigFile cfg; auto checkInterval = cfg.updateCheckInterval(); _updateCheckTimer.start(checkInterval); }
/** * Handle set request from http server. */ void handleSettings(AsyncWebServerRequest *request) { DEBUG_MSG(SERVER, "%s (%d args)\n", request->url().c_str(), request->params()); String resp = F("<!DOCTYPE html><html><head><meta http-equiv=\"refresh\" content=\"5; url=/\"></head><body>"); String ssid = ""; String pass = ""; int result = 400; // read ssid and psk if (request->hasParam("ssid", true) && request->hasParam("pass", true)) { ssid = request->getParam("ssid", true)->value(); pass = request->getParam("pass", true)->value(); if (ssid != "") { g_ssid = ssid; g_pass = pass; result = 200; } } if (request->hasParam("middleware", true)) { g_middleware = request->getParam("middleware", true)->value(); result = 200; } if (result == 400) { request->send(result, F(CONTENT_TYPE_PLAIN), F("Bad request\n\n")); return; } if (saveConfig()) { resp += F("<h1>Settings saved.</h1>"); } else { resp += F("<h1>Failed to save config file.</h1>"); result = 400; } resp += F("</body></html>"); if (result == 200) { requestRestart(); } request->send(result, F(CONTENT_TYPE_HTML), resp); }