diff options
Diffstat (limited to 'index.php.in')
-rw-r--r-- | index.php.in | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/index.php.in b/index.php.in new file mode 100644 index 0000000..c3dc987 --- /dev/null +++ b/index.php.in @@ -0,0 +1,87 @@ +<?php + +$f = popen('#BINDIR#/lights-out get power', 'r'); +if ($f === false) { + print 'Cannot getpower status' . "\n"; + die(); +} +$power = trim(fgets($f)); +pclose($f); + +if ($power == '') { + print 'Cannot read gpio - is it installed?' . "\n"; + die(); +} + +$f = popen('#BINDIR#/lights-out name', 'r'); +if ($f === false) { + print 'Error reading server name' . "\n"; + die(); +} +$server = trim(fgets($f)); +pclose($f); + +if ($server == '') { + print 'Empty server name in config' . "\n"; + die(); +} + +if (array_key_exists('HTTPS', $_SERVER) +&& ($_SERVER['HTTPS'] == 'on')) + $https = true; +else + $https = false; + +function push_it() { + if (!array_key_exists('password', $_POST)) + return; + $f = fopen('../password', 'r'); + if ($f === false) { + print '<font color="ff0000">Cannot read password file</font><br>' . "\n"; + return; + } + $saved_hash = trim(fgets($f)); + fclose($f); + $entered_hash = hash('sha512', $_POST['password']); + if ($saved_hash != $entered_hash) { + print '<font color="ff0000">Wrong password: ' . $entered_hash . '</font><br>' . "\n"; + return; + } + foreach ($_POST as $key => $dummy) + if (preg_match('/^push_([0-9]+)$/', $key, $duration)) + break; + if (count($duration) != 2) + return; + $duration = $duration[1]; + if (($duration > 0) + && ($duration < 300)) { + print 'pushing power button for ' . ($duration * 0.1) . ' seconds ... <br>' . "\n"; + flush(); + shell_exec('#BINDIR#/lights-out push power ' . ($duration * 0.1)); + print '... done<br>' . "\n"; + } +} + +print '<html>' . "\n"; +print '<head>' . "\n"; +print '<title>fenster lights-out</title>' . "\n"; +if (array_key_exists('password', $_POST)) + print '<meta http-equiv="refresh" content="1;/">' . "\n"; +print '</head>' . "\n"; +print '<body>' . "\n"; +print 'Fenster is currently '; +if ($power == '0') + print '<font color="ff0000">off</font>'; +else + print '<font color="00ff00">on</font>'; +print '<br>' . "\n"; +if ($https) { + push_it(); + print '<form action="" method="post">' . "\n"; + print 'Passwort: <input name="password" type="password"><br>' . "\n"; + print '<input type="submit" name="push_1" value="short power button push"><br>' . "\n"; + print '<input type="submit" name="push_150" value="long power button push"><br>' . "\n"; + print '</form>' . "\n"; +} +print '</body>' . "\n"; +print '</html>' . "\n"; |