From 17c1ea794f841823c003f006d765fbb0eda76855 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 9 May 2023 17:46:36 +0200 Subject: [PATCH 1/4] IP Discovery --- run/server.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/run/server.sh b/run/server.sh index a47eeb4..9c96951 100644 --- a/run/server.sh +++ b/run/server.sh @@ -14,8 +14,8 @@ trap 'stop' EXIT SIGINT SIGTERM SIGHUP html() { local h="VirtualDSM" - h="${h} " + h="${h} " h="${h}

$1

" echo "$h" @@ -26,7 +26,8 @@ if [[ "$2" != "/"* ]]; then BODY="$2" if [[ "$BODY" == "install" ]]; then - BODY="Please wait while Virtual DSM is installing..." + BODY="Please wait while Virtual DSM is being installed..." + BODY="$BODY" fi HTML=$(html "$BODY") @@ -44,14 +45,15 @@ else BODY="The location of DSM is http://\${IP}:\${PORT}" + WAIT="Please wait while discovering IP..." HTML=$(html "xxx") { echo "#!/bin/bash" - echo "INFO=\$(curl -s -m 5 -S http://127.0.0.1:2210/read?command=10 2>/dev/null)" + echo "INFO=\$(curl -s -m 2 -S http://127.0.0.1:2210/read?command=10 2>/dev/null)" echo "rest=\${INFO#*http_port}; rest=\${rest#*:}; rest=\${rest%%,*}; PORT=\${rest%%\\\"*}" echo "rest=\${INFO#*eth0}; rest=\${rest#*ip}; rest=\${rest#*:}; rest=\${rest#*\\\"}; IP=\${rest%%\\\"*}" - echo "HTML=\"$HTML\"; BODY=\"$BODY\"; HTML=\${HTML/xxx/\$BODY}" + echo "HTML=\"$HTML\"; [ -z \"\${IP}\" ] && BODY=\"$BODY\" || BODY=\"$WAIT\"; HTML=\${HTML/xxx/\$BODY}" echo "printf '%b' \"HTTP/1.1 200 OK\\nContent-Length: \${#HTML}\\nConnection: close\\n\\n\$HTML\"" } > "$TMP_FILE" From fd7d66be1e8560ebe69c358fb8c964268a2fc2b0 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 9 May 2023 17:53:35 +0200 Subject: [PATCH 2/4] IP Discovery --- run/server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/server.sh b/run/server.sh index 9c96951..37cd61b 100644 --- a/run/server.sh +++ b/run/server.sh @@ -53,7 +53,7 @@ else echo "INFO=\$(curl -s -m 2 -S http://127.0.0.1:2210/read?command=10 2>/dev/null)" echo "rest=\${INFO#*http_port}; rest=\${rest#*:}; rest=\${rest%%,*}; PORT=\${rest%%\\\"*}" echo "rest=\${INFO#*eth0}; rest=\${rest#*ip}; rest=\${rest#*:}; rest=\${rest#*\\\"}; IP=\${rest%%\\\"*}" - echo "HTML=\"$HTML\"; [ -z \"\${IP}\" ] && BODY=\"$BODY\" || BODY=\"$WAIT\"; HTML=\${HTML/xxx/\$BODY}" + echo "HTML=\"$HTML\"; [ -z \"\${IP}\" ] && BODY=\"$WAIT\" || BODY=\"$BODY\"; HTML=\${HTML/xxx/\$BODY}" echo "printf '%b' \"HTTP/1.1 200 OK\\nContent-Length: \${#HTML}\\nConnection: close\\n\\n\$HTML\"" } > "$TMP_FILE" From b7fd602bd096387fa5b515862666978f1eb6853a Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 10 May 2023 02:55:58 +0200 Subject: [PATCH 3/4] Multiline errors --- run/network.sh | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/run/network.sh b/run/network.sh index 000d870..dd798a5 100644 --- a/run/network.sh +++ b/run/network.sh @@ -47,8 +47,8 @@ configureDHCP() { { ip link add link "${VM_NET_DEV}" name "${VM_NET_TAP}" address "${VM_NET_MAC}" type macvtap mode bridge ; rc=$?; } || : if (( rc != 0 )); then - echo -n "ERROR: Capability NET_ADMIN has not been set most likely. Please add the " - echo "following docker setting to your container: --cap-add NET_ADMIN" && exit 16 + echo "ERROR: Capability NET_ADMIN has not been set most likely. Please add the " + echo "ERROR: following docker setting to your container: --cap-add NET_ADMIN" && exit 16 fi ip link set "${VM_NET_TAP}" up @@ -78,15 +78,15 @@ configureDHCP() { { exec 30>>"$TAP_PATH"; rc=$?; } || : if (( rc != 0 )); then - echo -n "ERROR: Cannot create TAP interface ($rc). Please add the following docker settings to your " - echo "container: --device-cgroup-rule='c ${MAJOR}:* rwm' --device=/dev/vhost-net" && exit 21 + echo "ERROR: Cannot create TAP interface ($rc). Please add the following docker settings to your " + echo "ERROR: container: --device-cgroup-rule='c ${MAJOR}:* rwm' --device=/dev/vhost-net" && exit 21 fi { exec 40>>/dev/vhost-net; rc=$?; } || : if (( rc != 0 )); then - echo -n "ERROR: VHOST can not be found ($rc). Please add the following " - echo "docker setting to your container: --device=/dev/vhost-net" && exit 22 + echo "ERROR: VHOST can not be found ($rc). Please add the following " + echo "ERROR: docker setting to your container: --device=/dev/vhost-net" && exit 22 fi NET_OPTS="-netdev tap,id=hostnet0,vhost=on,vhostfd=40,fd=30" @@ -102,8 +102,8 @@ configureNAT () { { ip link add dev dockerbridge type bridge ; rc=$?; } || : if (( rc != 0 )); then - echo -n "ERROR: Capability NET_ADMIN has not been set most likely. Please add the " - echo "following docker setting to your container: --cap-add NET_ADMIN" && exit 23 + echo "ERROR: Capability NET_ADMIN has not been set most likely. Please add the " + echo "ERROR: following docker setting to your container: --cap-add NET_ADMIN" && exit 23 fi ip address add ${VM_NET_IP%.*}.1/24 broadcast ${VM_NET_IP%.*}.255 dev dockerbridge @@ -131,8 +131,7 @@ configureNAT () { if [[ $(< /proc/sys/net/ipv4/ip_forward) -eq 0 ]]; then { sysctl -w net.ipv4.ip_forward=1 ; rc=$?; } || : if (( rc != 0 )); then - echo -n "ERROR: IP forwarding is disabled ($rc). Please add the following " - echo "docker setting to your container: --sysctl net.ipv4.ip_forward=1" && exit 24 + echo "ERROR: Please add the following docker setting to your container: --sysctl net.ipv4.ip_forward=1" && exit 24 fi fi From 55cffd0a55f7ed20225337ffe645feb27cf5d3c4 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 10 May 2023 03:00:38 +0200 Subject: [PATCH 4/4] Display IP --- run/check.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run/check.sh b/run/check.sh index b9024f3..6372d63 100644 --- a/run/check.sh +++ b/run/check.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -u -# Retrieve guest info for Docker healthcheck +# Retrieve IP from guest for Docker healthcheck RESPONSE=$(curl -s -m 6 -S http://127.0.0.1:2210/read?command=10 2>&1) if [[ ! "${RESPONSE}" =~ "\"success\"" ]] ; then @@ -49,5 +49,5 @@ if ! curl -m 3 -ILfSs "http://${IP}:${PORT}/" > /dev/null; then exit 1 fi -echo "Healthcheck OK" +echo "Healthcheck OK ($IP)" exit 0