diff --git a/bashserv b/bashserv index ef70aa4..0c8aad0 160000 --- a/bashserv +++ b/bashserv @@ -1 +1 @@ -Subproject commit ef70aa40f9be1b8006f8ec1d9cbf17f93f722f1d +Subproject commit 0c8aad069620421475301ebc680a2fed8ae829a8 diff --git a/handle_get.sh b/handle_get.sh index b987f9e..8cce0cd 100755 --- a/handle_get.sh +++ b/handle_get.sh @@ -41,16 +41,45 @@ if [ -z "$REQUEST_PATH_SANE" -o "$REQUEST_PATH_SANE" == "index.html" ]; then body+="\n\n" fi - body+="\n\n\n" + body+="\n" + body+="

Static leases

\n" + body+="
HostnameIP AddressMAC AddressWakeup
\n\n" + + hosts=$(grep -i "^dhcp-host=" /etc/dnsmasq.conf | cut -d '=' -f2 | tr '[:upper:]' '[:lower:]') + for host in $hosts; do + mac=$(echo "$host" | cut -d ',' -f1) + ip=$(echo "$host" | cut -d ',' -f2) + hostname="?" + lease_hostname=$(grep -i "$mac" /var/lib/misc/dnsmasq.leases | cut -d ' ' -f4) + if [ -n "$lease_hostname" ]; then + hostname="$lease_hostname" + fi + body+="\n" + body+="\n" + + body+="" + body+="" + body+="" + body+="" + done + + body+="
HostnameIP AddressMAC AddressWakeup
" + body+="
X
" + body+="" + body+="" + body+="
$hostname$ip$mac\n" + body+="
\n" + body+="

Dynamic leases

\n" + body+="\n\n" IFS=$'\n' leases=$(cat /var/lib/misc/dnsmasq.leases | cut -d ' ' -f2-4) for lease in $leases; do - mac=$(echo $lease | cut -d ' ' -f1) - ip=$(echo $lease | cut -d ' ' -f2) - hostname=$(echo $lease | cut -d ' ' -f3) + mac=$(echo "$lease" | cut -d ' ' -f1) + ip=$(echo "$lease" | cut -d ' ' -f2) + hostname=$(echo "$lease" | cut -d ' ' -f3) - if [ -n "$(grep -i "$mac" /etc/dnsmasq.conf)" ]; then + if [ -z "$(grep -i "$mac" /etc/dnsmasq.conf)" ]; then body+="\n" body+="" body+="" body+="" - body+="" fi done diff --git a/handle_post.sh b/handle_post.sh index 85e7309..86e010b 100755 --- a/handle_post.sh +++ b/handle_post.sh @@ -4,12 +4,10 @@ if [[ "$REQUEST_PATH_SANE" =~ ^refresh ]]; then ip=$(echo "$POST_DATA" | cut -d '=' -f2) body="{\n\"time\": \"$(date +%T)\",\n" - body+="\"status\": \"unknown\"\n}\n" + body+="\"status\": \"ok\"\n}\n" -cat < status/$ip diff --git a/static/main.js b/static/main.js index c940c78..0f10e92 100644 --- a/static/main.js +++ b/static/main.js @@ -1,20 +1,19 @@ -var request_status = function (host) { +var request_status = function (host, wol) { console.log("Update " + host.ip); var request = new XMLHttpRequest(); request.addEventListener("load", function () { var response; - console.log(this.status, this.responseText); if (this.status !== 200) { return; } response = JSON.parse(this.responseText); if (response.status === "up") { host.status_node.innerHTML = "✓"; - } else if (response.status === "unknown") { + } else if (response.status === "unknown" && wol) { setTimeout(function () { - request_status(host); - }, 1000); + request_status(host, wol); + }, 1000 + Math.random() * 1000); } else { host.status_node.innerHTML = "X"; } @@ -23,7 +22,7 @@ var request_status = function (host) { request.open("GET", "status/" + host.ip); request.send(); } -var request_refresh = function (host) { +var request_refresh = function (host, wol) { console.log("Refresh " + host.ip); var request = new XMLHttpRequest(); @@ -34,6 +33,7 @@ var request_refresh = function (host) { return; } response = JSON.parse(this.responseText); + console.log(response); if (response.status === "ok") { host.status_node.innerHTML = "✓"; } else { @@ -47,8 +47,8 @@ var request_refresh = function (host) { request.send(params); setTimeout(function () { - request_status(host); - }, 1000); + request_status(host, wol); + }, 4000 + Math.random() * 2000); } var request_wol = function (host) { @@ -77,8 +77,8 @@ var request_wol = function (host) { request.send(params); setTimeout(function () { - request_refresh(host); - }, 1000); + request_refresh(host, true); + }, 5000); } window.onload = function () { @@ -109,8 +109,10 @@ window.onload = function () { host_bound.wol_button.onclick = function (e) { request_wol(host_bound); } + setTimeout(function () { + request_refresh(host_bound, false); + }, Math.random() * 2000); }) (host); - request_refresh(host); } }
HostnameIP AddressMAC AddressWakeup
" @@ -62,7 +91,7 @@ if [ -z "$REQUEST_PATH_SANE" -o "$REQUEST_PATH_SANE" == "index.html" ]; then body+="$hostname$ip$mac\n" + body+="\n" body+="