add webpage to repo

enable lightcommander to be piloted from webpage
master
Level2 Pidor 2015-07-27 22:02:17 +02:00
parent 5adb89133f
commit 3888e90402
14 changed files with 302 additions and 5 deletions

View File

@ -17,15 +17,15 @@ function dolight() {
dolight "labsocket" $2
dolight "alarm" $2
;;
main) /usr/local/bin/433send 2 1A 1 "$setvalue"
main) sudo /root/pidor/rcswitch-pi/send 2 1A 1 "$setvalue"
;;
chill) /usr/local/bin/433send 2 1A 2 "$setvalue"
chill) sudo /root/pidor/rcswitch-pi/send 2 1A 2 "$setvalue"
;;
status) /usr/local/bin/433send 2 2A 1 "$setvalue"
status) sudo /root/pidor/rcswitch-pi/send 2 2A 1 "$setvalue"
;;
labsocket) /usr/local/bin/433send 2 15A 6 "$setvalue"
labsocket) sudo /root/pidor/rcswitch-pi/send 2 15A 6 "$setvalue"
;;
alarm) /usr/local/bin/433send 2 15A 1 "$setvalue"
alarm) sudo /root/pidor/rcswitch-pi/send 2 15A 1 "$setvalue"
;;
esac
# type (2=10bit)

54
www/cgi-bin/parse_query Normal file
View File

@ -0,0 +1,54 @@
#!/bin/bash
#parse-query
# Copyright 2007 Chris F.A. Johnson
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# rebuilt by gunstick 2012 (http://cfajohnson.com/shell/articles/parse-query/ is non working version)
parse_query() #@ USAGE: parse_query var ...
{
local var val
local IFS='&'
vars="&$*&"
[ "$REQUEST_METHOD" = "POST" ] && read QUERY_STRING
set -f
for item in $QUERY_STRING
do
var=${item%%=*}
val=${item#*=}
val=${val//+/ }
# case $vars in
# *"&$var&"* )
case $val in
*%[0-9a-fA-F][0-9a-fA-F]*)
val=$( printf "%b" "${val//\%/\\x}." )
val=${val%.}
#printf -v val "%b" "${val//\%/\\x}"
;;
esac
val="$(echo "$val"|tr -d '\r')"
eval "FORM_$var=\$val"
# create var for use in form fields
val="$(echo "$val"|sed 's/&/\&#38/g;s/"/\&#34;/g;s/</\&#60;/g')"
eval "FORM_f_$var=\$val"
# ;;
# esac
done
set +f
}

39
www/cgi-bin/pidor.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
# TODO use functions
nai=`date +%s`;
echo "Content-type: text/html"
echo
echo "<html><body><pre>"
exec 2>&1
. "$(dirname "$0")"/parse_query
parse_query
logger -t $(basename $0) got $FORM_action from $REMOTE_USER
logger -t $(basename $0) spacestatus was $(cat /run/spacestatus)
if [ "$FORM_action" = "open" ]
then
/usr/local/bin/gpio mode 7 out
/usr/local/bin/gpio write 7 0
if [ "$(cat /run/spacestatus)" != "open" ] # do not modify timestamp on multiple clicks
then
echo "open" > /run/spacestatus
fi
echo "Performed action: $FORM_action"
fi
if [ "$FORM_action" = "close" ]
then
/usr/local/bin/gpio mode 7 out
/usr/local/bin/gpio write 7 1
if [ "$(cat /run/spacestatus)" != "closed" ] # do not modify timestamp on multiple clicks
then
echo "closed" > /run/spacestatus
fi
sudo /root/pidor/scripts/closetrigger.sh
logger -t $(basename $0) closetrigger ret=$?
echo "Performed action: $FORM_action"
fi
logger -t $(basename $0) spacestatus is now $(cat /run/spacestatus)
echo "</pre>"
echo "<script>history.back()</script>"

51
www/etc/000-default Normal file
View File

@ -0,0 +1,51 @@
<VirtualHost *:80>
ServerAdmin info@hackerspace.lu
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthName "Pi d'Or"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://127.0.0.1/ou=People,dc=hackerspace,dc=lu?uid"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=syn2cat_full_member,ou=Group,dc=hackerspace,dc=lu
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
AuthName "Pi d'Or"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://127.0.0.1/ou=People,dc=hackerspace,dc=lu?uid"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=syn2cat_full_member,ou=Group,dc=hackerspace,dc=lu
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

View File

@ -0,0 +1,19 @@
<VirtualHost *:80>
ServerAdmin info@hackerspace.lu
ServerName lights.level2.lu
DocumentRoot /var/www/lights.level2.lu
<Directory var/www/lights.level2.lu>
Options +FollowSymLinks -Indexes
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

BIN
www/htdocs/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

31
www/htdocs/index.html Normal file
View File

@ -0,0 +1,31 @@
<html>
<title>Level2</title>
<style>
* {
padding: 0;
margin: 0
}
.open {
background-color: #00ff00;
}
.close {
background-color: #ff0000;
}
.button {
height: 50%;
color: #ffffff;
border: 0;
font-size: 10em;
width: 100%;
}
</style>
<form action="/cgi-bin/pidor.sh" method="get">
<input type=hidden name="action" value="open">
<input class="button open" type="submit" value="Open">
</form>
<form action="/cgi-bin/pidor.sh" method="get">
<input type=hidden name="action" value="close">
<input class="button close" type="submit" value="Close">
</form>

View File

@ -0,0 +1,13 @@
<?php
if ( isset( $_GET['area'] ) ) {
$area = (string) $_GET['area'];
if ( isset( $_GET['status'] ) ) {
$status = (string) $_GET['status'];
if ( strtolower( $area ) != 'all' ) {
echo json_encode( array ( "level2" => "happy hacking ;)" ) );
$command = 'lightcommander ' . $area . ' ' . $status;
exec ( escapeshellcmd($command) );
}
}
}

File diff suppressed because one or more lines are too long

View File

View File

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="Thierry Degeling [@FAQ]">
<title>Control the lights of Level2</title>
<link href="bootstrap.min.css" rel="stylesheet">
<style type="text/css">
body {
padding-top: 15px;
}
.jumbotron {
padding: 0px;
}
.h1, .h2, .h3, h1, h2, h3 {
margin-top: 10px;
}
</style>
</head>
<body>
<div class="container">
<div class="jumbotron hidden-xs">
<div class="container">
<h1>Hello, human!</h1>
<p>Manage the Level2 lights here</p>
</div>
</div>
<div class="row marketing">
<div class="col-md-6">
<div class=" well">
<h2>Chill</h2>
<p>This enables/disables all the lights of the Chill area</p>
<p><a class="btn btn-success btn-block" data-area="chill" data-status="on" >On</a></p>
<p><a class="btn btn-danger btn-block" data-area="chill" data-status="off" >Off</a></p>
</div>
</div>
<div class="col-md-6">
<div class=" well">
<h2>Main</h2>
<p>This enables/disables all the lights of Level2</p>
<p><a class="btn btn-success btn-block" data-area="main" data-status="on" >On</a></p>
<p><a class="btn btn-danger btn-block" data-area="main" data-status="off" >Off</a></p>
</div>
</div>
</div> <!-- /container -->
<script src="jquery.min.js"></script>
<script type="text/javascript">
$( ".btn" ).on( "click", function() {
$.get( "http://lights.level2.lu/api.php", { area: $( this ).data( 'area' ), status: $( this ).data( 'status' ) } );
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

5
www/intallwebsite.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
cp -pr www/htdocs/* /var/www/
cp -pr www/cgi-bin/* /usr/lib/cgi-bin/*
cp -p etc/* /etc/apache2/sites-available
a2ensite lights.level2.lu.conf