sync
This commit is contained in:
		@@ -3,7 +3,7 @@
 | 
				
			|||||||
class RoomsApi extends ApiController{
 | 
					class RoomsApi extends ApiController{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public function default(){
 | 
						public function default(){
 | 
				
			||||||
		$this->requireAuth();
 | 
							//$this->requireAuth();
 | 
				
			||||||
		$response = [];
 | 
							$response = [];
 | 
				
			||||||
		$roomIds = [];
 | 
							$roomIds = [];
 | 
				
			||||||
		$roomsData = RoomManager::getRoomsDefault();
 | 
							$roomsData = RoomManager::getRoomsDefault();
 | 
				
			||||||
@@ -15,6 +15,7 @@ class RoomsApi extends ApiController{
 | 
				
			|||||||
		$subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds);
 | 
							$subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		foreach ($roomsData as $roomKey => $roomData) {
 | 
							foreach ($roomsData as $roomKey => $roomData) {
 | 
				
			||||||
 | 
								if ($roomData['device_count'] <= 0) continue;
 | 
				
			||||||
			$response[] = [
 | 
								$response[] = [
 | 
				
			||||||
				'room_id' => $roomData['room_id'],
 | 
									'room_id' => $roomData['room_id'],
 | 
				
			||||||
				'name' => $roomData['name'],
 | 
									'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();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -10,8 +10,10 @@ class UpdatesApi {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function default(){
 | 
					    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
 | 
					        //Filtrování IP adress
 | 
				
			||||||
        if (DEBUGMOD != 1) {
 | 
					        if (DEBUGMOD != 1) {
 | 
				
			||||||
@@ -21,7 +23,7 @@ class UpdatesApi {
 | 
				
			|||||||
                    'errorMSG' => "Using API from your IP insnt alowed!",
 | 
					                    'errorMSG' => "Using API from your IP insnt alowed!",
 | 
				
			||||||
                ));
 | 
					                ));
 | 
				
			||||||
                header($_SERVER["SERVER_PROTOCOL"]." 401 Unauthorized");
 | 
					                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();
 | 
					                exit();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -31,16 +33,16 @@ class UpdatesApi {
 | 
				
			|||||||
        $logManager->write("[Updater] url: " . $localBinary, LogRecordType::INFO);
 | 
					        $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)) {
 | 
					        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)) {
 | 
					            if ($_SERVER['HTTP_X_ESP8266_SKETCH_MD5'] != md5_file($localBinary)) {
 | 
				
			||||||
                sendFile($localBinary);
 | 
					                $this->sendFile($localBinary);
 | 
				
			||||||
                //get device data
 | 
					                //get device data
 | 
				
			||||||
                $device = DeviceManager::getDeviceByMac($macAddress);
 | 
					                $device = DeviceManager::getDeviceByMac($macAddress);
 | 
				
			||||||
                $deviceName = $device['name'];
 | 
					                $deviceName = $device['name'];
 | 
				
			||||||
                $deviceId = $device['device_id'];
 | 
					                $deviceId = $device['device_id'];
 | 
				
			||||||
                //logfile write
 | 
					                //logfile write
 | 
				
			||||||
                $logManager->write("[Device] device_ID " . $deviceId . " was just updated to new version", LogRecordType::WARNING);
 | 
					                $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
 | 
					                //notification
 | 
				
			||||||
                $notificationMng = new NotificationManager;
 | 
					                $notificationMng = new NotificationManager;
 | 
				
			||||||
                $notificationData = [
 | 
					                $notificationData = [
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,31 +3,34 @@ class WidgetApi extends ApiController{
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	public function run($subDeviceId){
 | 
						public function run($subDeviceId){
 | 
				
			||||||
		//$this->requireAuth();
 | 
							//$this->requireAuth();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$response = null;
 | 
							$response = null;
 | 
				
			||||||
 | 
							if (RecordManager::getLastRecord($subDeviceId)['execuded'] === 0) {
 | 
				
			||||||
 | 
								throw new Exception("Unreachable", 409);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$subDeviceData = SubDeviceManager::getSubDevice($subDeviceId);
 | 
							$subDeviceData = SubDeviceManager::getSubDevice($subDeviceId);
 | 
				
			||||||
		if ($subDeviceData['type'] == 'on/off'){
 | 
							if ($subDeviceData['type'] == 'on/off'){
 | 
				
			||||||
			$lastValue = RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value'];
 | 
								$lastValue = RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value'];
 | 
				
			||||||
			RecordManager::create($subDeviceData['device_id'], 'on/off', !$lastValue);
 | 
								RecordManager::create($subDeviceData['device_id'], 'on/off', !$lastValue);
 | 
				
			||||||
			$response = !$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]);
 | 
							$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){
 | 
						public function detail($subDeviceId){
 | 
				
			||||||
		//$this->requireAuth();
 | 
							//$this->requireAuth();
 | 
				
			||||||
		$response = null;
 | 
							$response = null;
 | 
				
			||||||
@@ -37,7 +40,7 @@ class WidgetApi extends ApiController{
 | 
				
			|||||||
		$deviceData = DeviceManager::getDeviceById($deviceId);
 | 
							$deviceData = DeviceManager::getDeviceById($deviceId);
 | 
				
			||||||
		$events = RecordManager::getLastRecord($subDeviceId, 5);
 | 
							$events = RecordManager::getLastRecord($subDeviceId, 5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$LastRecordTime = new DateTime($$events[4]['time']);
 | 
							$LastRecordTime = new DateTime($events[4]['time']);
 | 
				
			||||||
		$niceTime = Utilities::ago($LastRecordTime);
 | 
							$niceTime = Utilities::ago($LastRecordTime);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$interval = $LastRecordTime->diff(new DateTime());
 | 
							$interval = $LastRecordTime->diff(new DateTime());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ class RoomManager{
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	static function getRoomsDefault () {
 | 
						static function getRoomsDefault () {
 | 
				
			||||||
		$allRoom = Db::loadAll ("SELECT room_id, name FROM rooms");
 | 
							$allRoom = Db::loadAll ("SELECT rooms.room_id, rooms.name, COUNT(devices.device_id) as device_count FROM rooms LEFT JOIN devices ON (devices.room_id=rooms.room_id) GROUP BY rooms.room_id;");
 | 
				
			||||||
		return $allRoom;
 | 
							return $allRoom;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user