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 | Hostname | IP Address | MAC Address | Wakeup |
\n"
+ body+="\n"
+ body+="Static leases
\n"
+ body+="\n | Hostname | IP Address | MAC Address | Wakeup |
\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+=""
+ body+=" X "
+ body+="✓ "
+ body+="? "
+ body+=" | \n"
+
+ body+="$hostname | "
+ body+="$ip | "
+ body+="$mac | "
+ body+=" | \n"
+ body+=" |
"
+ done
+
+ body+="
\n"
+ body+="Dynamic leases
\n"
+ body+="\n | Hostname | IP Address | MAC Address | Wakeup |
\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+=""
@@ -62,7 +91,7 @@ if [ -z "$REQUEST_PATH_SANE" -o "$REQUEST_PATH_SANE" == "index.html" ]; then
body+=" | $hostname | "
body+="$ip | "
body+="$mac | "
- body+=" | \n"
+ body+=" | | \n"
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);
}
}