diff options
-rw-r--r-- | files/common/etc/fsm/inetable/common.sh | 26 | ||||
-rwxr-xr-x | files/common/etc/fsm/inetable/trans/boot.leave | 7 |
2 files changed, 33 insertions, 0 deletions
diff --git a/files/common/etc/fsm/inetable/common.sh b/files/common/etc/fsm/inetable/common.sh index 148c369..3625caa 100644 --- a/files/common/etc/fsm/inetable/common.sh +++ b/files/common/etc/fsm/inetable/common.sh @@ -23,3 +23,29 @@ delete network.mesh.proto delete network.mesh.netmask " | uci batch } + +# enable/disable uhttpd instance in uci config; the parameters are +# 1. instance name +# 2. addresses to listen on (white-space delimted list) +enable_httpd () { + uci set uhttpd.$1=uhttpd + for i in $2; do + uci add_list uhttpd.$1.listen_http=$i + done +} + +disable_httpd () { + uci set uhttpd.$1=disabled + uci delete uhttp.$1.listen_http &>/dev/null || true +} + +# change the interfaces the service httpd is listening on; +# automatically adds linklocal IPv6 addresses of br-mesh and br-lan +change_service_httpd_listen () { + uci delete uhttp.service.listen_http &>/dev/null || true + for i in $1 \ + [$(ifconfig br-mesh | egrep -o 'fe80[:0-9a-f]*')%br-mesh]:80 \ + [$(ifconfig br-lan | egrep -o 'fe80[:0-9a-f]*')%br-lan]:80; do + uci add_list uhttpd.service.listen_http=$i + done +} diff --git a/files/common/etc/fsm/inetable/trans/boot.leave b/files/common/etc/fsm/inetable/trans/boot.leave index 233ef9e..431c0b8 100755 --- a/files/common/etc/fsm/inetable/trans/boot.leave +++ b/files/common/etc/fsm/inetable/trans/boot.leave @@ -1,4 +1,5 @@ #!/bin/sh -e +. ../common.sh # init gwid table by merging it with a hand-crafted table in which all # available IPs are stored as free with version zero. This guarantees @@ -9,3 +10,9 @@ done > /tmp/gwip-init p2ptbl init /tmp/p2ptbl/gwip p2ptbl merge /tmp/p2ptbl/gwip /tmp/gwip-init rm /tmp/gwip-init + +# start service httpd, listening on the link-local addrs of mesh and +# lan +enable_httpd service +change_service_httpd_listen +/etc/init.d/uhttpd restart |