<?PHP /** Includes **/ include_once('./config.php'); //Autoloader $files = scandir('./app/class/'); $files = array_diff($files, array( '.', '..', 'app', 'ChartJS.php', 'ChartJS_Line.php', 'ChartManager.php', 'DashboardManager.php', 'Partial.php', 'Form.php', 'Route.php', 'Template.php', 'Ajax.php', )); foreach($files as $file) { include './app/class/'. $file; } //DB Conector Db::connect (DBHOST, DBUSER, DBPASS, DBNAME); $logManager = new LogManager(); header('Content-type: text/plain; charset=utf8', true); //Filtrovánà IP adress if (DEBUGMOD != 1) { if (!in_array($_SERVER['REMOTE_ADDR'], HOMEIP)) { echo json_encode(array( 'state' => 'unsuccess', 'errorMSG' => "Using API from your IP insnt alowed!", )); header($_SERVER["SERVER_PROTOCOL"]." 401 Unauthorized"); $logManager->write("[Updater] acces denied from " . $_SERVER['REMOTE_ADDR'], LogRecordType::WARNING); exit(); } } function sendFile($path) { header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK', true, 200); header('Content-Type: application/octet-stream', true); header('Content-Disposition: attachment; filename=' . basename($path)); header('Content-Length: ' . filesize($path), true); header('x-MD5: ' . md5_file($path), true); readfile($path); } $macAddress = $_SERVER['HTTP_X_ESP8266_STA_MAC']; $localBinary = "./app/updater/" . str_replace(':', '', $macAddress) . ".bin"; $logManager->write("[Updater] url: " . $localBinary, LogRecordType::INFO); $logManager->write("[Updater] version: " . $_SERVER['HTTP_X_ESP8266_SKETCH_MD5'], LogRecordType::INFO); if (file_exists($localBinary)) { $logManager->write("[Updater] version PHP: " . md5_file($localBinary), LogRecordType::INFO); if ($_SERVER['HTTP_X_ESP8266_SKETCH_MD5'] != md5_file($localBinary)) { sendFile($localBinary); //notification $deviceName = DeviceManager::getDeviceByMac($macAddress)['name']; $notificationMng = new NotificationManager; $notificationData = [ 'title' => 'Info', 'body' => $deviceName.' was just updated to new version', 'icon' => BASEDIR . '/app/templates/images/icon-192x192.png', ]; if ($notificationData != []) { $subscribers = $notificationMng->getSubscription(); foreach ($subscribers as $key => $subscriber) { $logManager->write("[NOTIFICATION] SENDING TO " . $subscriber['id'] . " ", LogRecordType::INFO); $answer = $notificationMng->sendSimpleNotification(SERVERKEY, $subscriber['token'], $notificationData); } } } else { header($_SERVER["SERVER_PROTOCOL"].' 304 Not Modified', true, 304); } } else { header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); } die();