86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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();
 |