From 6b950e96627e0d79d6a5da3633ba4c3db0ebb8f2 Mon Sep 17 00:00:00 2001 From: Jason Rhinelander Date: Sun, 15 Dec 2019 23:20:08 -0400 Subject: [PATCH] deb: add separate mainnet/testnet systemd services --- debian/lokinet-router.links | 1 + debian/lokinet-router.lokinet-router.service | 1 + ...inet-router.lokinet-testnet-router.service | 17 +++++++++++++ debian/lokinet-router.postinst | 24 +++++++++++++++---- debian/lokinet.lokinet-testnet.service | 19 +++++++++++++++ debian/lokinet.lokinet.service | 1 + debian/lokinet.postinst | 22 ++++++++++++++--- debian/rules | 2 ++ 8 files changed, 80 insertions(+), 7 deletions(-) create mode 100644 debian/lokinet-router.lokinet-testnet-router.service create mode 100644 debian/lokinet.lokinet-testnet.service diff --git a/debian/lokinet-router.links b/debian/lokinet-router.links index f3b894be9..efd7e53a9 100644 --- a/debian/lokinet-router.links +++ b/debian/lokinet-router.links @@ -1 +1,2 @@ /etc/loki/lokinet-router.ini /var/lib/lokinet/router/lokinet.ini +/etc/loki/lokinet-testnet-router.ini /var/lib/lokinet/testnet-router/lokinet.ini diff --git a/debian/lokinet-router.lokinet-router.service b/debian/lokinet-router.lokinet-router.service index 68304567a..3a1f846da 100644 --- a/debian/lokinet-router.lokinet-router.service +++ b/debian/lokinet-router.lokinet-router.service @@ -9,6 +9,7 @@ SyslogIdentifier=lokinet-router WorkingDirectory=/var/lib/lokinet/router AssertFileNotEmpty=/var/lib/lokinet/bootstrap.signed ExecStart=/usr/bin/lokinet /var/lib/lokinet/router/lokinet.ini +Environment=LOKINET_NETID=lokinet Restart=always RestartSec=5s diff --git a/debian/lokinet-router.lokinet-testnet-router.service b/debian/lokinet-router.lokinet-testnet-router.service new file mode 100644 index 000000000..118b57461 --- /dev/null +++ b/debian/lokinet-router.lokinet-testnet-router.service @@ -0,0 +1,17 @@ +[Unit] +Description=LokiNET: Anonymous Network layer thingydoo, router (testnet) +Wants=network-online.target +After=network-online.target + +[Service] +User=_lokinet +SyslogIdentifier=lokinet-router +WorkingDirectory=/var/lib/lokinet/testnet-router +AssertFileNotEmpty=/var/lib/lokinet/testnet/bootstrap.signed +ExecStart=/usr/bin/lokinet /var/lib/lokinet/testnet-router/lokinet.ini +Environment=LOKINET_NETID=gamma +Restart=always +RestartSec=5s + +[Install] +WantedBy=multi-user.target diff --git a/debian/lokinet-router.postinst b/debian/lokinet-router.postinst index b7d67238a..5ab05d0ff 100644 --- a/debian/lokinet-router.postinst +++ b/debian/lokinet-router.postinst @@ -5,15 +5,23 @@ set -e if [ "$1" = configure ]; then mkdir -p /etc/loki datadir=/var/lib/lokinet/router - mkdir -p $datadir - su -s /bin/sh _lokinet -c "test -O $datadir && test -G $datadir" || \ - chown _lokinet:_loki $datadir + 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 "" /var/lib/lokinet/bootstrap.signed + /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 $tmpdir/lokinet.ini sed -i -e "s#$tmpdir#$datadir#; s#$datadir/bootstrap.signed#/var/lib/lokinet/bootstrap.signed#" $tmpdir/lokinet.ini @@ -21,6 +29,14 @@ if [ "$1" = configure ]; then chgrp _loki $tmpdir/lokinet.ini ucf $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 $tmpdir/lokinet.ini + sed -i -e "s#$tmpdir#$tn_datadir#" $tmpdir/lokinet.ini + chmod 640 $tmpdir/lokinet.ini + chgrp _loki $tmpdir/lokinet.ini + ucf $tmpdir/lokinet.ini /etc/loki/lokinet-testnet-router.ini + ucfr lokinet /etc/loki/lokinet-testnet-router.ini fi #DEBHELPER# diff --git a/debian/lokinet.lokinet-testnet.service b/debian/lokinet.lokinet-testnet.service new file mode 100644 index 000000000..3e457f80b --- /dev/null +++ b/debian/lokinet.lokinet-testnet.service @@ -0,0 +1,19 @@ +[Unit] +Description=LokiNET: Anonymous Network layer thingydoo, client +Wants=network-online.target +After=network-online.target + +[Service] +User=_lokinet +SyslogIdentifier=lokinet +WorkingDirectory=/var/lib/lokinet +AssertFileNotEmpty=/var/lib/lokinet/bootstrap.signed +ExecStart=/usr/bin/lokinet /var/lib/lokinet/lokinet.ini +ExecStartPost=+/usr/sbin/lokinet-resolvconf add /var/lib/lokinet/lokinet.ini +ExecStopPost=+/usr/sbin/lokinet-resolvconf remove /var/lib/lokinet/lokinet.ini +Environment=LOKINET_NETID=gamma +Restart=always +RestartSec=5s + +[Install] +WantedBy=multi-user.target diff --git a/debian/lokinet.lokinet.service b/debian/lokinet.lokinet.service index 167e335e7..1dae40910 100644 --- a/debian/lokinet.lokinet.service +++ b/debian/lokinet.lokinet.service @@ -11,6 +11,7 @@ AssertFileNotEmpty=/var/lib/lokinet/bootstrap.signed ExecStart=/usr/bin/lokinet /var/lib/lokinet/lokinet.ini ExecStartPost=+/usr/sbin/lokinet-resolvconf add /var/lib/lokinet/lokinet.ini ExecStopPost=+/usr/sbin/lokinet-resolvconf remove /var/lib/lokinet/lokinet.ini +Environment=LOKINET_NETID=lokinet Restart=always RestartSec=5s diff --git a/debian/lokinet.postinst b/debian/lokinet.postinst index 49c64e62f..7ffd194e1 100644 --- a/debian/lokinet.postinst +++ b/debian/lokinet.postinst @@ -5,23 +5,39 @@ set -e if [ "$1" = configure ]; then mkdir -p /etc/loki datadir=/var/lib/lokinet - mkdir -p $datadir + tn_datadir=/var/lib/lokinet/testnet + mkdir -p $datadir $tn_datadir su -s /bin/sh _lokinet -c "test -O $datadir && test -G $datadir" || \ chown _lokinet:_loki $datadir + su -s /bin/sh _lokinet -c "test -O $tn_datadir && test -G $tn_datadir" || \ + chown _lokinet:_loki $tn_datadir if ! [ -e /var/lib/lokinet/bootstrap.signed ]; then - /usr/bin/lokinet-bootstrap "" /var/lib/lokinet/bootstrap.signed + /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 -g $tmpdir/lokinet.ini - sed -i -e "s#$tmpdir#$datadir#; s#$datadir/bootstrap.signed#/var/lib/lokinet/bootstrap.signed#" $tmpdir/lokinet.ini + sed -i -e "s#$tmpdir#$datadir#" $tmpdir/lokinet.ini chmod 640 $tmpdir/lokinet.ini chgrp _loki $tmpdir/lokinet.ini ucf $tmpdir/lokinet.ini /etc/loki/lokinet.ini ucfr lokinet /etc/loki/lokinet.ini + tmpdir=$(mktemp --tmpdir -d lokinet.XXXXXXXXXX) + /usr/bin/lokinet -g $tmpdir/lokinet.ini + sed -i -e "s#$tmpdir#$tn_datadir#" $tmpdir/lokinet.ini + chmod 640 $tmpdir/lokinet.ini + chgrp _loki $tmpdir/lokinet.ini + ucf $tmpdir/lokinet.ini /etc/loki/lokinet-testnet.ini + ucfr lokinet /etc/loki/lokinet-testnet.ini + if [ -x /bin/systemctl ] && /bin/systemctl --quiet is-active systemd-resolved.service; then /bin/systemctl restart systemd-resolved.service fi diff --git a/debian/rules b/debian/rules index a5e4cb78d..fe96d7930 100755 --- a/debian/rules +++ b/debian/rules @@ -43,6 +43,8 @@ override_dh_auto_configure: override_dh_installsystemd: dh_installsystemd --name=lokinet dh_installsystemd --name=lokinet-router + dh_installsystemd --name=lokinet-testnet --no-enable --no-start + dh_installsystemd --name=lokinet-testnet-router --no-enable --no-start #override_dh_auto_test: # make check