sync
This commit is contained in:
		@@ -3,7 +3,7 @@
 | 
			
		||||
class RoomsApi extends ApiController{
 | 
			
		||||
 | 
			
		||||
	public function default(){
 | 
			
		||||
		$this->requireAuth();
 | 
			
		||||
		//$this->requireAuth();
 | 
			
		||||
		$response = [];
 | 
			
		||||
		$roomIds = [];
 | 
			
		||||
		$roomsData = RoomManager::getRoomsDefault();
 | 
			
		||||
@@ -15,6 +15,7 @@ class RoomsApi extends ApiController{
 | 
			
		||||
		$subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds);
 | 
			
		||||
 | 
			
		||||
		foreach ($roomsData as $roomKey => $roomData) {
 | 
			
		||||
			if ($roomData['device_count'] <= 0) continue;
 | 
			
		||||
			$response[] = [
 | 
			
		||||
				'room_id' => $roomData['room_id'],
 | 
			
		||||
				'name' => $roomData['name'],
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										67
									
								
								app/api/UpdaterApi.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								app/api/UpdaterApi.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
<?php
 | 
			
		||||
class UpdatesApi {
 | 
			
		||||
    private 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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function default(){
 | 
			
		||||
		 header('Content-type: text/plain; charset=utf8', true);
 | 
			
		||||
        $logManager = new LogManager('../logs/ota/'. date("Y-m-d").'.log');
 | 
			
		||||
 | 
			
		||||
        //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();
 | 
			
		||||
            }
 | 
			
		||||
        }*/
 | 
			
		||||
 | 
			
		||||
        $macAddress = $_SERVER['HTTP_X_ESP8266_STA_MAC'];
 | 
			
		||||
		  $localBinary = "../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: \n" . md5_file($localBinary), LogRecordType::INFO);
 | 
			
		||||
            if ($_SERVER['HTTP_X_ESP8266_SKETCH_MD5'] != md5_file($localBinary)) {
 | 
			
		||||
                $this->sendFile($localBinary);
 | 
			
		||||
                //get device data
 | 
			
		||||
                $device = DeviceManager::getDeviceByMac($macAddress);
 | 
			
		||||
                $deviceName = $device['name'];
 | 
			
		||||
                $deviceId = $device['device_id'];
 | 
			
		||||
                //logfile write
 | 
			
		||||
                $logManager->write("[Device] device_ID " . $deviceId . " was just updated to new version", LogRecordType::WARNING);
 | 
			
		||||
                $logManager->write("[Device] version hash: \n" . md5_file($localBinary), LogRecordType::INFO);
 | 
			
		||||
                //notification
 | 
			
		||||
                $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();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<?php 
 | 
			
		||||
class UpdatesApi {  
 | 
			
		||||
<?php
 | 
			
		||||
class UpdatesApi {
 | 
			
		||||
    private function sendFile($path)	{
 | 
			
		||||
        header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK', true, 200);
 | 
			
		||||
        header('Content-Type: application/octet-stream', true);
 | 
			
		||||
@@ -8,11 +8,13 @@ class UpdatesApi {
 | 
			
		||||
        header('x-MD5: ' . md5_file($path), true);
 | 
			
		||||
        readfile($path);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public function default(){
 | 
			
		||||
        $logManager = new LogManager();
 | 
			
		||||
        header('Content-type: text/plain; charset=utf8', true);
 | 
			
		||||
        
 | 
			
		||||
		 header('Content-type: text/plain; charset=utf8', true);
 | 
			
		||||
        $logManager = new LogManager('../logs/ota/'. date("Y-m-d").'.log');
 | 
			
		||||
		  $logManager->write("[Updater] Client Connected", LogRecordType::WARNING);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //Filtrování IP adress
 | 
			
		||||
        if (DEBUGMOD != 1) {
 | 
			
		||||
            if (!in_array($_SERVER['REMOTE_ADDR'], HOMEIP)) {
 | 
			
		||||
@@ -21,26 +23,26 @@ class UpdatesApi {
 | 
			
		||||
                    '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);
 | 
			
		||||
                $logManager->write("[Updater] acces denied from " . $_SERVER['REMOTE_ADDR'], LogRecordType::INFO);
 | 
			
		||||
                exit();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        $macAddress = $_SERVER['HTTP_X_ESP8266_STA_MAC'];
 | 
			
		||||
        $localBinary = "../updater/" . str_replace(':', '', $macAddress) . ".bin";
 | 
			
		||||
        $logManager->write("[Updater] url: " . $localBinary, LogRecordType::INFO);
 | 
			
		||||
        $logManager->write("[Updater] version: " . $_SERVER['HTTP_X_ESP8266_SKETCH_MD5'], LogRecordType::INFO);
 | 
			
		||||
        $logManager->write("[Updater] version:      " . $_SERVER['HTTP_X_ESP8266_SKETCH_MD5'], LogRecordType::INFO);
 | 
			
		||||
        if (file_exists($localBinary)) {
 | 
			
		||||
            $logManager->write("[Updater] version PHP: \n" . md5_file($localBinary), LogRecordType::INFO);
 | 
			
		||||
            $logManager->write("[Updater] version PHP: " . md5_file($localBinary), LogRecordType::INFO);
 | 
			
		||||
            if ($_SERVER['HTTP_X_ESP8266_SKETCH_MD5'] != md5_file($localBinary)) {
 | 
			
		||||
                sendFile($localBinary);
 | 
			
		||||
                $this->sendFile($localBinary);
 | 
			
		||||
                //get device data
 | 
			
		||||
                $device = DeviceManager::getDeviceByMac($macAddress);
 | 
			
		||||
                $deviceName = $device['name'];
 | 
			
		||||
                $deviceId = $device['device_id'];
 | 
			
		||||
                //logfile write
 | 
			
		||||
                $logManager->write("[Device] device_ID " . $deviceId . " was just updated to new version", LogRecordType::WARNING);
 | 
			
		||||
                $logManager->write("[Device] version hash: \n" . md5_file($localBinary), LogRecordType::INFO);
 | 
			
		||||
                $logManager->write("[Device] version hash: " . md5_file($localBinary), LogRecordType::INFO);
 | 
			
		||||
                //notification
 | 
			
		||||
                $notificationMng = new NotificationManager;
 | 
			
		||||
                $notificationData = [
 | 
			
		||||
@@ -63,4 +65,4 @@ class UpdatesApi {
 | 
			
		||||
        }
 | 
			
		||||
        die();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,31 +3,34 @@ class WidgetApi extends ApiController{
 | 
			
		||||
 | 
			
		||||
	public function run($subDeviceId){
 | 
			
		||||
		//$this->requireAuth();
 | 
			
		||||
 | 
			
		||||
		$response = null;
 | 
			
		||||
		if (RecordManager::getLastRecord($subDeviceId)['execuded'] === 0) {
 | 
			
		||||
			throw new Exception("Unreachable", 409);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$subDeviceData = SubDeviceManager::getSubDevice($subDeviceId);
 | 
			
		||||
		if ($subDeviceData['type'] == 'on/off'){
 | 
			
		||||
			$lastValue = RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value'];
 | 
			
		||||
			RecordManager::create($subDeviceData['device_id'], 'on/off', !$lastValue);
 | 
			
		||||
			$response = !$lastValue;
 | 
			
		||||
		} else {
 | 
			
		||||
			throw new Exception("Bad Request", 403);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$i = 0;
 | 
			
		||||
		$timeout = 20;
 | 
			
		||||
		while (RecordManager::getLastRecord($subDeviceId)['execuded'] == 0){
 | 
			
		||||
			if ($i == $timeout) {
 | 
			
		||||
				throw new Exception("Timeout", 444);
 | 
			
		||||
			}
 | 
			
		||||
			$i++;
 | 
			
		||||
			usleep(250000);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$this->response(['value' => $response]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function check($subDeviceId){
 | 
			
		||||
		//$this->requireAuth();
 | 
			
		||||
		$response = null;
 | 
			
		||||
		$lastRecord = RecordManager::getLastRecord($subDeviceId);
 | 
			
		||||
 | 
			
		||||
		$response = [
 | 
			
		||||
			'executet' => $lastRecord['execuded'],
 | 
			
		||||
			'value' => $lastRecord['value'],
 | 
			
		||||
		];
 | 
			
		||||
 | 
			
		||||
		$this->response($response);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function detail($subDeviceId){
 | 
			
		||||
		//$this->requireAuth();
 | 
			
		||||
		$response = null;
 | 
			
		||||
@@ -37,7 +40,7 @@ class WidgetApi extends ApiController{
 | 
			
		||||
		$deviceData = DeviceManager::getDeviceById($deviceId);
 | 
			
		||||
		$events = RecordManager::getLastRecord($subDeviceId, 5);
 | 
			
		||||
 | 
			
		||||
		$LastRecordTime = new DateTime($$events[4]['time']);
 | 
			
		||||
		$LastRecordTime = new DateTime($events[4]['time']);
 | 
			
		||||
		$niceTime = Utilities::ago($LastRecordTime);
 | 
			
		||||
 | 
			
		||||
		$interval = $LastRecordTime->diff(new DateTime());
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user