Skip to content

Commit

Permalink
Ajax Conversion
Browse files Browse the repository at this point in the history
Remove Time Stamp Requirment
Change Web GUI To All Ajax Calls
  • Loading branch information
The009 committed Oct 15, 2018
1 parent 40d5014 commit b4168c2
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 61 deletions.
63 changes: 37 additions & 26 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,37 +34,48 @@
<!-- Custom styles for this template -->
<link href="css/heroic-features.css" rel="stylesheet">
<!-- Custom Icon for this template -->
<link rel="icon" type="image/png" href="vendor/icon/48px-System-shutdown.svg.png" rel="icon"/>
<link rel="icon" type="image/png" href="vendor/icon/48px-System-shutdown.svg.png"/>
<!-- Java Script For Dimmer -->
<script src="vendor/jquery/jquery.min.js"></script>

<!-- Java Script Timestamp Generation -->
<script type="text/javascript">
function sendRequest(untimedURL, rowID = "top"){
var timeStamp = new Date();
var pageTo = '#' + rowID;
var timedURL = untimedURL + ((timeStamp.getTime() - timeStamp.getTimezoneOffset())) + pageTo;
window.location = timedURL;
}
</script>
<!-- Java Script Dimmer Controller -->
<script type="text/javascript">
$( document ).ready(function() {
$("#dimmverValue").change(function() {
var timeStamp = new Date();
var moddedTimeStamp = ((timeStamp.getTime() - timeStamp.getTimezoneOffset()));
$.ajax({
url: 'send.php',
type: 'get',
data: $("form").serialize() + "&timeStamp=" + moddedTimeStamp,
data: $("form").serialize(),
success: function(response){
//check if what response is
console.log("Enable debug in send.php for response");
console.log( response );
}
});
});
});
</script>

function SingleSend( givenIp, givenPort, reqAction, devTyp){
var ip = givenIp;
var port = givenPort;
var action = reqAction;
var deviceType = devTyp;
return $.ajax({
url: 'send.php',
type: 'get',
data: { ip: ip, port: port, action: action, deviceType: deviceType },
});
};

function GroupSend( groupName, reqAction){
var group = groupName;
var action = reqAction;
return $.ajax({
url: 'send.php',
type: 'get',
data: { group: group, action: action},
});
};
</script>

</head>

<body>
Expand Down Expand Up @@ -95,8 +106,8 @@ function displayDeviceList($csv){
<p class='card-text'></p>
</div>
<div class='card-footer'>
<a href="javascript:sendRequest('?group=all&amp;action=On&amp;timeStamp=');" class='btn btn-primary'>On</a>
<a href="javascript:sendRequest('?group=all&amp;action=Off&amp;timeStamp=');" class='btn btn-primary'>Off</a>
<a href="#" onclick="GroupSend('all', 'On').always(function(data){console.log(data)});" class='btn btn-primary'>On</a>
<a href="#" onclick="GroupSend('all', 'Off').always(function(data){console.log(data)});" class='btn btn-primary'>Off</a>
</div>
</div>
</div>
Expand All @@ -107,7 +118,7 @@ function displayDeviceList($csv){
foreach ($unique as $key2 => $uniqueGroupIDs){
if($uniqueGroupIDs != ""){
echo <<<EOD
<a name = "{i}"></a>
<a name = "Group{$key2}"></a>
<div class='col-lg-3 col-md-6 mb-4'>
<div class='card'>
<div class='card-body'>
Expand All @@ -123,27 +134,27 @@ function displayDeviceList($csv){
</p>
</div>
<div class='card-footer'>
<a href="javascript:sendRequest('?group={$uniqueGroupIDs}&amp;action=On&amp;timeStamp=');" class='btn btn-primary'>On</a> -
<a href="javascript:sendRequest('?group={$uniqueGroupIDs}&amp;action=Off&amp;timeStamp=');" class='btn btn-primary'>Off</a>
<a href="#Group{$key2}" onclick="GroupSend('{$uniqueGroupIDs}', 'On').always(function(data){console.log(data)});" class='btn btn-primary'>On</a>
<a href="#Group{$key2}" onclick="GroupSend('{$uniqueGroupIDs}', 'Off').always(function(data){console.log(data)});" class='btn btn-primary'>Off</a>
</div>
</div>
</div>
EOD;
}
}
}

foreach($csv as $i => $item) {
echo <<<EOD
<a name = "{i}"></a>
<a name = "{$i}"></a>
<div class='col-lg-3 col-md-6 mb-4'>
<div class='card'>
<div class='card-body'>
<h4 class='card-title'>{$item["deviceName"]}</h4>
<p class='card-text'></p>
</div>
<div class='card-footer'>
<a href="javascript:sendRequest('?ip={$item["deviceIP"]}&amp;port={$item["devicePort"]}&amp;action=On&amp;deviceType={$item["deviceType"]}&amp;timeStamp=', {$i});" class='btn btn-primary'>On</a> -
<a href="javascript:sendRequest('?ip={$item["deviceIP"]}&amp;port={$item["devicePort"]}&amp;action=Off&amp;deviceType={$item["deviceType"]}&amp;timeStamp=', {$i});" class='btn btn-primary'>Off</a>
<a href="#{$i}" onclick="SingleSend('{$item["deviceIP"]}','{$item["devicePort"]}','On','{$item["deviceType"]}').always(function(data){console.log(data)});" class='btn btn-primary'>On</a> -
<a href="#{$i}" onclick="SingleSend('{$item["deviceIP"]}','{$item["devicePort"]}','off','{$item["deviceType"]}').always(function(data){console.log(data)});" class='btn btn-primary'>Off</a>
EOD;
if($item['deviceType'] == "HS220"){
echo <<<EOD
Expand Down Expand Up @@ -184,7 +195,7 @@ function displayDeviceList($csv){
<footer class="py-5 bg-dark">
<div class="container">
<p class="m-0 text-center text-white">Copyright &copy; The009 <a href="https://www.the009.net" target="_blank">www.the009.net</a> 2018</p>
<p class="m-0 text-center text-white"><a href="https://programs.the009.net/SmartSwitchPHPController/" target="_blank">Version 1.1.0.4</a><br />
<p class="m-0 text-center text-white"><a href="https://programs.the009.net/SmartSwitchPHPController/" target="_blank">Version 1.1.1.4</a><br />
This work is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">The GNU General Public License v3.0</a>.
</p>
</div>
Expand Down
37 changes: 2 additions & 35 deletions send.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,10 @@
//Enable Debug Ouput (Works better in CLI mode))
define('debug', false);

//The Max Amout Of Time in MILLISECONDS A Command Can Be Accepted For (Helps with browsers who open the last url you had open so you don't randomly change switch modes)
define('maxCMDAcceptTime', 500);


//No Further Options

define('currentTime', (time()) * 1000);

$csv = array();
$devicesDisplayed = false;
$group = "";
$timeStamp = 0;

if(getenv('SERVER_ADDR') == null){
if($argv[1] == "group"){
Expand All @@ -43,6 +35,7 @@
$ip = "";
$port = "";
$deviceType = "";
$dimmerValue = "";
}
else{
$ip = $argv[1];
Expand All @@ -54,6 +47,7 @@
$rawCommand = "";
}else if(count($argv) == 6){
$rawCommand = $argv[5];
$dimmerValue = "";
}else{
$rawCommand = "";
$dimmerValue = "";
Expand All @@ -66,7 +60,6 @@
$action = isset($_GET['action']) ? $_GET['action'] : '';
$deviceType = isset($_GET['deviceType']) ? $_GET['deviceType'] : '';
$group = isset($_GET['group']) ? $_GET['group'] : '';
$timeStamp = isset($_GET['timeStamp']) ? $_GET['timeStamp'] : '';
$rawCommand = isset($_GET['rawCommand']) ? $_GET['rawCommand'] : '';
$dimmerValue = isset($_GET['dimmerValue']) ? $_GET['dimmerValue'] : '';
}
Expand All @@ -76,35 +69,9 @@
echo("Port: " . $port . "\n");
echo("Action: " . $action . "\n");
echo("DevTyp: " . $deviceType . "\n" );
if($timeStamp)echo("Time Stamp: " . $timeStamp . "\n" );
if($dimmerValue)echo("Dimmer Value: " . $dimmerValue . "\n");
}

if(getenv('SERVER_ADDR') == null){
if(!$timeStamp){
$timeStamp = (currentTime + maxCMDAcceptTime) + 55;
}

if(!is_numeric($timeStamp)){ die("Invalid Timestamp Format Detected");}

if(currentTime <= ($timeStamp + maxCMDAcceptTime)){
if(debug){
echo("Current Time Stamp " . currentTime . "\n");
echo("Given Time Stamp " . $timeStamp . "\n");
echo("Time Stamp Diff " . ($timeStamp - currentTime)) . "\n";
}
}
else{
$ip = "";
$port = "";
$action = "";
$deviceType = "";
$group = "";
$timeStamp = "";
header("location: ?");
}
}

if($group != "" && $action != ""){
if(debug)echo("Sending Group: " . $group . "\n Action: " . $action . "\n");
if($group)if(preg_match("/^[a-zA-Z0-9 \s]+$/", $group) == 1){} else { die("$group is not a valid Group"); }
Expand Down

0 comments on commit b4168c2

Please sign in to comment.