Robert Marshall vor 9 Jahren
Ursprung
Commit
e5c2d84641

+ 44 - 4
Controller/Desktop.php

@@ -1,10 +1,50 @@
 <?php
+
+ApplicationSettings::RegisterDefaultSetting("desktop", "mac_address", "");
+ApplicationSettings::RegisterDefaultSetting("desktop", "wake_command", "wakeonlan");
+ApplicationSettings::RegisterDefaultSetting("desktop", "ip_command", "/usr/sbin/arp -n | grep <mac> | awk '{print $1}'");
+ApplicationSettings::RegisterDefaultSetting("desktop", "hardware_monitor_port", "8085");
+
 class Desktop {
-	public function Index($params){
+
+	public function Index($params) {
 		return new View("Desktop/index.view");
 	}
-	
-	public function Wake($params){
-		return $output=shell_exec("wakeonlan c8:60:00:16:a8:39");
+
+	public function Wake($params) {
+		$command=ApplicationSettings::GetSetting("desktop", "wake_command");
+		$mac=ApplicationSettings::GetSetting("desktop", "mac_address");
+		return $output=shell_exec(sprintf("%s %s", $command, $mac));
 	}
+
+	public function GetDesktopMonitor($params) {
+		if (!isset($params['file']))
+			$params['file']="";
+		
+		$ipCommand=ApplicationSettings::GetSetting("desktop", "ip_command");
+		$mac=ApplicationSettings::GetSetting("desktop", "mac_address");
+		$hwmPort=ApplicationSettings::GetSetting("desktop", "hardware_monitor_port");
+		$ipCommand=str_replace("<mac>", $mac, $ipCommand);
+		$ipAddress=shell_exec($ipCommand);
+		
+		if ($ipAddress=="")
+			return "Waiting for PC to wake<script>GetHWM(5000)</script>";
+		
+		ob_start();
+		$ch=curl_init("http://$ipAddress:$hwmPort/".$params['file']);
+		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
+		curl_setopt($ch, CURLOPT_TIMEOUT, 500);
+		$output=curl_exec($ch);
+		$html=ob_get_clean();
+		
+		if ($output===true){
+			if ($params['file']==""){ // remove tags we don't want from html page
+				$html=str_replace(array("<html>","</html>","<body>","</body>","<head>","</head>"),"",$html);
+				$html=preg_replace("/<title>(.*)<\/title>/im","",$html);
+			}
+			return $html;
+		} else
+			return "Waiting for hardware monitor to start<script>GetHWM(1000)</script>";
+	}
+
 }

+ 1 - 0
DB Scripts/6/insert_permissions_data.sql

@@ -0,0 +1 @@
+INSERT INTO permissions (permission_value, permission_default_grant) VALUES ('desktop/GetDesktopMonitor', 1);

+ 22 - 13
View/Desktop/index.view

@@ -1,33 +1,42 @@
 @Title{Desktop}@
 @JavaScript{
-	function formSuccess(data){
+	function wakeSuccess(data){
 		$("#wakeSuccess").html(data);
 		$("#wakeSuccess").show();
 	}
+	
+	function hwmSuccess(data){
+		$("#hwmOutput").html(data);
+		console.log(data);
+	}
+	
+	function GetHWM(timeout){
+		setTimeout(function(){
+			$("#hwmForm").submit();
+		},timeout);
+	}
+	
+	$(function(){
+		$("#wakeButton").click(function(e){
+			GetHWM(1000);
+		});
+	});
 }@
 @Body{
 <div class="row col-lg-2">
 	<div class="col">
 		<h2>Wake Desktop</h2>
-		<form ajaxForm action="/desktop/wake" method="post" style="text-align: center" onsuccess="formSuccess" onerror="asdasd">
-			<button type="submit" name="wake" title="Send wake command">
+		<form ajaxForm action="/desktop/wake" method="post" style="text-align: center" onsuccess="wakeSuccess">
+			<button type="submit" name="wake" id="wakeButton" title="Send wake command">
 				<img src="/images/power.svg" width="128" alt="Wake" />
 			</button>
 			<div id="wakeSuccess" style="display:none"></div>
 		</form>
 	</div>
-	<div class="col">
-		<h2>Browse Files</h2>
-	</div>
-</div>
-<div class="row col-lg-2">
 	<div class="col">
 		<h2>Desktop Hardware Monitor</h2>
-		<div id="sensors"><img src="/loading.gif" /></div>
-	</div>
-	<div class="col">
-		<h2>Screenshot</h2>
-		<img id="screenshot" src="/loading.gif" />
+		<form id="hwmForm" ajaxForm action="/desktop/GetDesktopMonitor" method="post" onsuccess="hwmSuccess"></form>
+		<div id="hwmOutput">Wake desktop to get data</div>
 	</div>
 </div>
 }@

+ 1 - 5
base/Application.php

@@ -9,11 +9,6 @@ spl_autoload_register(function($class){
 		include("Model/$class.php");
 });
 
-/*include_once 'ApplicationSettings.php';
-include_once 'View.php';
-include_once 'Helper.php';
-include_once 'IConvertible.php';*/
-
 $files=glob("base/*.php");
 foreach ($files as $file)
 		require_once $file;
@@ -27,6 +22,7 @@ class Application{
 			$page="E404";
 			$controller="Controller/E404.php";
 			$params=array($this->_url);
+			http_response_code(404);
 		}
 		
 		include_once $controller;

+ 7 - 2
base/UserRestrictedApplication.php

@@ -8,8 +8,13 @@ class UserRestrictedApplication extends Application {
 			$action="index";
 		if ($user->HasAccess($page.'/'.$action))
 			parent::LoadPage($page, $action, $params);
-		else
-			parent::LoadPage("member", "index", array("permission_error"=>true)/*Serialise URL, or something*/);
+		else {
+			if (parent::FindControllerPath($page)){
+				parent::LoadPage("member", "index", array("permission_error"=>true)/*Serialise URL, or something*/);
+				http_response_code(403);
+			} else
+				parent::LoadPage($page, $action, $params);
+		}
 	}
 	
 	public function __construct($url) {

+ 3 - 0
settings.ini

@@ -15,3 +15,6 @@ pages=HomeNav,BlogNav,ProjectsNav,GalleryNav,DesktopNav,MemberNav
 
 [blog]
 posts_per_page=10
+
+[desktop]
+mac_address=c8:60:00:16:a8:39