You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.9 KiB
Plaintext

NDG_VERSION=v0.8.1
NDG_URL_AARCH64=https://github.com/nakamochi/ndg/releases/download/v0.8.1/ndg-v0.8.1-aarch64.tar.gz
NDG_SHA256_AARCH64=d67fd26149dd13900125a6ebfc527028110f8f71dfb2ae311f7a9ca0f99ceff0
NDG_HOME=/home/uiuser
NDG_BINDIR=$NDG_HOME/$NDG_VERSION
ndg_bin_install() {
cd $NDG_HOME
test -f $NDG_BINDIR/nd && return 0;
local targz="ndg-$NDG_VERSION.tar.gz"
curl -sSL -o "$targz" "$NDG_URL_AARCH64"
if [ $? -ne 0 ]; then
printf "ERROR: unable to download $NDG_URL_AARCH64\n" 1>&2
return 1
fi
printf "$NDG_SHA256_AARCH64 $targz" | sha256sum --check
[ $? -ne 0 ] && return 1
mkdir -p $NDG_BINDIR
tar -C $NDG_BINDIR --no-same-owner -xf "$targz"
rm -f "$targz"
return $?
}
ndg_svc_install() {
local svdir=/etc/sv/nd
mkdir -p $svdir
if [ ! -f $svdir/log/run ]; then
mkdir -p $svdir/log
ln -sfT /usr/bin/vlogger $svdir/log/run
fi
cat <<EOF > $svdir/finish.new
#!/bin/sh
# workaround https://github.com/nakamochi/ndg/issues/12
pkill -9 ngui
EOF
chmod +x $svdir/finish.new
test -f $svdir/finish && diff $svdir/finish $svdir/finish.new
if [ $? -ne 0 ]; then
mv $svdir/finish.new $svdir/finish
fi
rm -f $svdir/finish.new
cat <<EOF > $svdir/run.new
#!/bin/sh
exec $NDG_BINDIR/nd -conf /home/uiuser/conf.json -gui $NDG_BINDIR/ngui -gui-user uiuser -wpa /var/run/wpa_supplicant/wlan0 2>&1
EOF
chmod +x $svdir/run.new
test -f $svdir/run && diff $svdir/run $svdir/run.new
if [ $? -ne 0 ]; then
mv $svdir/run.new $svdir/run
# don't touch the actual service if on manual control - the down file
test -f $svdir/down && return 0
sv stop nd || printf "ERROR: sv stop nd failed\n" 1>&2
sv start nd || printf "ERROR: sv start nd failed\n" 1>&2
fi
rm -f $svdir/run.new
}
ndg_apply() {
ndg_bin_install || return 1
ndg_svc_install || return 1
}