lokinet/debian/lokinet-router.postinst
2020-10-02 18:03:56 -03:00

79 lines
2.9 KiB
Bash

#!/bin/sh -e
set -e
. /usr/share/debconf/confmodule
if [ "$1" = configure ]; then
mkdir -p /etc/loki
datadir=/var/lib/lokinet/router
tn_datadir=/var/lib/lokinet/testnet-router
mkdir -p $datadir $tn_datadir /var/lib/lokinet/testnet
for d in $datadir $tn_datadir /var/lib/lokinet/testnet; do
su -s /bin/sh _lokinet -c "test -O $d && test -G $d" || \
chown _lokinet:_loki $d
done
if ! [ -e /var/lib/lokinet/bootstrap.signed ]; then
/usr/bin/lokinet-bootstrap lokinet /var/lib/lokinet/bootstrap.signed
chown _lokinet:_loki /var/lib/lokinet/bootstrap.signed
fi
if ! [ -e /var/lib/lokinet/testnet/bootstrap.signed ]; then
/usr/bin/lokinet-bootstrap testnet /var/lib/lokinet/testnet/bootstrap.signed
chown _lokinet:_loki /var/lib/lokinet/testnet/bootstrap.signed
fi
tmpdir=$(mktemp --tmpdir -d lokinet.XXXXXXXXXX)
/usr/bin/lokinet -r -g $tmpdir/lokinet.ini
perl -pi -e "
s#$tmpdir#$datadir#;
if (/^\[bootstrap/ ... /^\[/) {
s{^#?add-node=.*}{add-node=/var/lib/lokinet/bootstrap.signed};
}
if (/^\[lokid/ ... /^\[/) {
s{^#?enabled=.*}{enabled=1};
s{^#?rpc=.*}{rpc=ipc:///var/lib/loki/lokid.sock};
}" $tmpdir/lokinet.ini
chmod 640 $tmpdir/lokinet.ini
chgrp _loki $tmpdir/lokinet.ini
ucf --debconf-ok $tmpdir/lokinet.ini /etc/loki/lokinet-router.ini
ucfr lokinet /etc/loki/lokinet-router.ini
tmpdir=$(mktemp --tmpdir -d lokinet.XXXXXXXXXX)
/usr/bin/lokinet -r -g $tmpdir/lokinet.ini
perl -pi -e "
s#$tmpdir#$tn_datadir#;
if (/^\[bootstrap/ ... /^\[/) {
s{^#?add-node=.*}{add-node=/var/lib/lokinet/testnet/bootstrap.signed};
}
if (/^\[router/ ... /^\[/) {
s{^#?netid=.*}{netid=gamma};
}
if (/^\[lokid/ ... /^\[/) {
s{^#?enabled=.*}{enabled=1};
s{^#?rpc=.*}{rpc=ipc:///var/lib/loki/testnet/lokid.sock};
}" $tmpdir/lokinet.ini
chmod 640 $tmpdir/lokinet.ini
chgrp _loki $tmpdir/lokinet.ini
ucf --debconf-ok $tmpdir/lokinet.ini /etc/loki/lokinet-testnet-router.ini
ucfr lokinet /etc/loki/lokinet-testnet-router.ini
# If this system has only private IPs and warn the user that they need to update the config file
if ! grep -q '^public-\(ip\|address\)=' /etc/loki/lokinet-router.ini; then
if ! ip -4 addr show | perl -le '
while (<>) {
next if !m{^ +inet +(\d+)\.(\d+)\.(\d+)\.(\d+)/};
exit 0 if not ($1 == 0 or $1 == 10 or ($1 == 100 and ($2 >= 64 and $2 <= 127)) or $1 == 127 or
($1 == 169 and $1 == 254) or ($1 == 172 and $2 >= 16 and $2 <= 31) or ($1 == 192 and $2 == 168) or $1 >= 224);
}
exit 1'; then
db_reset lokinet-router/no-public-ip || true
db_input critical lokinet-router/no-public-ip || true
db_go || true
fi
fi
fi
#DEBHELPER#