You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
3.2 KiB
89 lines
3.2 KiB
|
2 months ago
|
#!/bin/sh
|
||
|
|
set -eu
|
||
|
|
stage=/tmp/tera-ui-settings
|
||
|
|
mkdir -p "$stage"
|
||
|
|
for name in api web logd; do wget -q -T 30 -O "$stage/$name" "http://192.168.0.100:9001/$name"; done
|
||
|
|
echo '__APIHASH__ '"$stage/api" | sha256sum -c -
|
||
|
|
echo '__WEBHASH__ '"$stage/web" | sha256sum -c -
|
||
|
|
echo '__LOGDHASH__ '"$stage/logd" | sha256sum -c -
|
||
|
|
grep -q '^PORT=80$' /etc/tera/teraweb.env
|
||
|
|
backup=/userdata/tera-backups/ui-settings-$(date +%Y%m%d-%H%M%S)
|
||
|
|
mkdir -p "$backup"
|
||
|
|
cp -p /usr/bin/tera-api "$backup/api"
|
||
|
|
cp -p /usr/bin/tera-clone-demo-web "$backup/web"
|
||
|
|
cp -p /usr/bin/tera-logd "$backup/logd"
|
||
|
|
echo "BACKUP=$backup"
|
||
|
|
start_logd() {
|
||
|
|
: > /run/tera-logd/deploy-startup.log
|
||
|
|
chown tera-logd:tera /run/tera-logd/deploy-startup.log
|
||
|
|
chmod 640 /run/tera-logd/deploy-startup.log
|
||
|
|
(
|
||
|
|
set -a
|
||
|
|
. /etc/tera/tera-logd.env
|
||
|
|
set +a
|
||
|
|
start-stop-daemon -S -q -b -m -p /run/tera-logd/tera-logd.pid -c tera-logd:tera -x /bin/sh -- -c 'exec /usr/bin/tera-logd > /run/tera-logd/deploy-startup.log 2>&1'
|
||
|
|
)
|
||
|
|
for n in $(seq 1 30); do
|
||
|
|
if [ -S /run/tera-logd/log-store.sock ] && grep -q 'serving authoritative log storage' /run/tera-logd/deploy-startup.log && kill -0 "$(cat /run/tera-logd/tera-logd.pid)" 2>/dev/null; then return 0; fi
|
||
|
|
sleep 1
|
||
|
|
done
|
||
|
|
cat /run/tera-logd/deploy-startup.log
|
||
|
|
return 1
|
||
|
|
}
|
||
|
|
start_api() {
|
||
|
|
(
|
||
|
|
set -a
|
||
|
|
. /etc/tera/tera-api.env
|
||
|
|
set +a
|
||
|
|
start-stop-daemon -S -q -b -m -p /run/tera-api.pid -c tera:tera -x /bin/sh -- -c 'exec /usr/bin/tera-api > /run/tera-api/ui-settings-startup.log 2>&1'
|
||
|
|
)
|
||
|
|
}
|
||
|
|
rollback() {
|
||
|
|
trap - EXIT
|
||
|
|
/etc/init.d/S61teraweb stop || true
|
||
|
|
/etc/init.d/S50tera-api stop || true
|
||
|
|
/etc/init.d/S44tera-logd stop || true
|
||
|
|
cp "$backup/api" /usr/bin/tera-api.restore
|
||
|
|
cp "$backup/web" /usr/bin/tera-clone-demo-web.restore
|
||
|
|
chmod 755 /usr/bin/tera-api.restore /usr/bin/tera-clone-demo-web.restore
|
||
|
|
mv /usr/bin/tera-api.restore /usr/bin/tera-api
|
||
|
|
mv /usr/bin/tera-clone-demo-web.restore /usr/bin/tera-clone-demo-web
|
||
|
|
cp "$backup/logd" /usr/bin/tera-logd.restore
|
||
|
|
chmod 755 /usr/bin/tera-logd.restore
|
||
|
|
mv /usr/bin/tera-logd.restore /usr/bin/tera-logd
|
||
|
|
start_logd || true
|
||
|
|
start_api || true
|
||
|
|
/etc/init.d/S61teraweb start || true
|
||
|
|
echo REPLACEMENT_DEFAULT_PORT_ROLLED_BACK
|
||
|
|
}
|
||
|
|
trap rollback EXIT
|
||
|
|
cp "$stage/logd" /usr/bin/tera-logd.next
|
||
|
|
chmod 755 /usr/bin/tera-logd.next
|
||
|
|
cp "$stage/api" /usr/bin/tera-api.next
|
||
|
|
cp "$stage/web" /usr/bin/tera-clone-demo-web.next
|
||
|
|
chmod 755 /usr/bin/tera-api.next /usr/bin/tera-clone-demo-web.next
|
||
|
|
/etc/init.d/S61teraweb stop
|
||
|
|
/etc/init.d/S50tera-api stop
|
||
|
|
/etc/init.d/S44tera-logd stop
|
||
|
|
mv /usr/bin/tera-logd.next /usr/bin/tera-logd
|
||
|
|
start_logd
|
||
|
|
mv /usr/bin/tera-api.next /usr/bin/tera-api
|
||
|
|
mv /usr/bin/tera-clone-demo-web.next /usr/bin/tera-clone-demo-web
|
||
|
|
start_api
|
||
|
|
/etc/init.d/S61teraweb start
|
||
|
|
ready=0
|
||
|
|
for n in $(seq 1 120); do
|
||
|
|
if wget -q -T 2 -O "$stage/status" http://127.0.0.1/login/backend-status && grep -q '"ready":true' "$stage/status"; then ready=1; break; fi
|
||
|
|
sleep 1
|
||
|
|
done
|
||
|
|
cat "$stage/status"
|
||
|
|
[ "$ready" = 1 ]
|
||
|
|
wget -q -T 3 -O "$stage/integration.js" http://127.0.0.1/static/js/integration.js
|
||
|
|
grep -q 'limit=48&runtime=false' "$stage/integration.js"
|
||
|
|
grep -q 'pendingNavigation' "$stage/integration.js"
|
||
|
|
grep -q '/logs/links/clear' "$stage/integration.js"
|
||
|
|
sha256sum /usr/bin/tera-api /usr/bin/tera-clone-demo-web /usr/bin/tera-logd
|
||
|
|
sync
|
||
|
|
trap - EXIT
|
||
|
|
echo REPLACEMENT_DEFAULT_PORT_DEPLOY_OK
|