diff --git a/Makefile b/Makefile index 4207a13..384c79c 100644 --- a/Makefile +++ b/Makefile @@ -221,7 +221,7 @@ wmbusmeters_$(DEBVERSION)_$(DEBARCH).deb: @./install.sh $(BUILD)/wmbusmeters $(BUILD)/debian/wmbusmeters --no-adduser # Remove the conf files, they are to be installed by postinst. @rm $(BUILD)/debian/wmbusmeters/etc/wmbusmeters.conf - @rmdir $(BUILD)/debian/wmbusmeters/etc/wmbusmetersd + @rm -rf $(BUILD)/debian/wmbusmeters/etc/wmbusmetersd # Build the control file @echo "Package: wmbusmeters" >> $(BUILD)/debian/wmbusmeters/DEBIAN/control @echo "Version: $(DEBVERSION)" >> $(BUILD)/debian/wmbusmeters/DEBIAN/control diff --git a/deb/postinst b/deb/postinst index 316e7b9..85eb023 100755 --- a/deb/postinst +++ b/deb/postinst @@ -1,74 +1,6 @@ #!/bin/sh +ADD_WMBUSMETERS_USER + # Start wmbusmeters service - -if [ $(getent group wmbusmeters) ] -then - echo "group: wmbusmeters unmodified" -else - groupadd -f wmbusmeters - echo "group: added wmbusmeters" -fi - -ID=$(id -u wmbusmeters 2>/dev/null) - -if [ -f /usr/sbin/nologin ] -then - USERSHELL="/usr/sbin/nologin" -elif [ -f /sbin/nologin ] -then - USERSHELL="/sbin/nologin" -else - USERSHELL="/bin/false" -fi - -if [ -z "$ID" ] -then - # Create the wmbusmeters user - useradd --system --shell $USERSHELL -g wmbusmeters wmbusmeters - echo "user: added wmbusmeters" -else - echo "user: wmbusmeters unmodified" -fi - -if [ $(getent group dialout) ] -then - if [ "$(groups wmbusmeters | grep -o dialout)" = "" ] - then - # Add the wmbusmeters user to dialout - usermod -a -G dialout wmbusmeters - echo "user: added wmbusmeters to dialout group" - else - echo "user: wmbusmeters already added to dialout" - fi -else - echo "dialout group does not exist" -fi - -if [ $(getent group uucp) ] -then - if [ "$(groups wmbusmeters | grep -o uucp)" = "" ] - then - # Add the wmbusmeters user to uucp - usermod -a -G uucp wmbusmeters - echo "user: added wmbusmeters to uucp group" - else - echo "user: wmbusmeters already added to uucp" - fi -else - echo "uucp group does not exist" -fi - -if [ $(getent group plugdev) ] -then - if [ "$(groups wmbusmeters | grep -o plugdev)" = "" ] - then - # Add the wmbusmeters user to plugdev - usermod -a -G plugdev wmbusmeters - echo "user: added wmbusmeters to plugdev group" - else - echo user: wmbusmeters already added to plugdev - fi -else - echo "plugdev group does not exist" -fi +systemctl start wmbusmeters.service diff --git a/install.sh b/install.sh index e349863..0f646d2 100755 --- a/install.sh +++ b/install.sh @@ -44,297 +44,17 @@ do esac done -#################################################################### -## -## Intall binaries -## +ROOT=$ROOT /bin/sh ./scripts/install_binaries.sh -rm -f "$ROOT"/usr/bin/wmbusmeters "$ROOT"/usr/sbin/wmbusmetersd -mkdir -p "$ROOT"/usr/bin -mkdir -p "$ROOT"/usr/sbin -cp "$SRC" "$ROOT"/usr/bin/wmbusmeters -ln -s /usr/bin/wmbusmeters "$ROOT"/usr/sbin/wmbusmetersd - -echo "binaries: installed $ROOT/usr/bin/wmbusmeters and $ROOT/usr/sbin/wmbusmetersd" - -#################################################################### -## -## Intall wmbusmeters manual page -## - -rm -f "$ROOT"/usr/share/man/man1/wmbusmeters.1.gz -mkdir -p "$ROOT"/usr/share/man/man1 -gzip -v9 -c wmbusmeters.1 > "$ROOT"/usr/share/man/man1/wmbusmeters.1.gz - -echo "man page: installed $ROOT/usr/share/man/man1/wmbusmeters.1.gz" - -#################################################################### -## -## Create wmbusmeters user -## - -ID=$(id -u wmbusmeters 2>/dev/null) - -if [ -f "$ROOT"/usr/sbin/nologin ] -then - USERSHELL="$ROOT/usr/sbin/nologin" -elif [ -f "$ROOT"/sbin/nologin ] -then - USERSHELL="$ROOT/sbin/nologin" -else - USERSHELL="/bin/false" -fi +ROOT=$ROOT /bin/sh ./scripts/install_manpage.sh if [ "$ADDUSER" = "true" ] then - if [ $(getent group wmbusmeters) ] - then - echo "group: wmbusmeters unmodified" - else - groupadd -f wmbusmeters - echo "group: added wmbusmeters" - fi - - if [ -z "$ID" ] - then - # Create the wmbusmeters user - useradd --system --shell $USERSHELL -g wmbusmeters wmbusmeters - echo "user: added wmbusmeters" - else - echo "user: wmbusmeters unmodified" - fi - - if [ $(getent group dialout) ] - then - if [ "$(groups wmbusmeters | grep -o dialout)" = "" ] - then - # Add the wmbusmeters user to dialout - usermod -a -G dialout wmbusmeters - echo "user: added wmbusmeters to dialout group" - else - echo "user: wmbusmeters already added to dialout" - fi - else - echo "dialout group does not exist" - fi - - if [ $(getent group uucp) ] - then - if [ "$(groups wmbusmeters | grep -o uucp)" = "" ] - then - # Add the wmbusmeters user to uucp - usermod -a -G uucp wmbusmeters - echo "user: added wmbusmeters to uucp group" - else - echo "user: wmbusmeters already added to uucp" - fi - else - echo "uucp group does not exist" - fi - - if [ $(getent group plugdev) ] - then - if [ "$(groups wmbusmeters | grep -o plugdev)" = "" ] - then - # Add the wmbusmeters user to plugdev - usermod -a -G plugdev wmbusmeters - echo "user: added wmbusmeters to plugdev group" - else - echo user: wmbusmeters already added to plugdev - fi - else - echo "plugdev group does not exist" - fi + ROOT=$ROOT /bin/sh ./scripts/add_wmbusmeters_user.sh fi -#################################################################### -## -## Prepare for /run/wmbusmeters.pid -## +ROOT=$ROOT /bin/sh ./scripts/prepare_logfiles.sh -#if [ ! -d "$ROOT"/var/run ] -#then -# # Create /var/run -# mkdir -p "$ROOT"/var/run -# echo pid store: created /var/run -#fi +ROOT=$ROOT /bin/sh ./scripts/install_default_configuration.sh -#################################################################### -## -## Prepare for /var/log/wmbusmeters and /var/log/wmbusmeters/meter_readings -## - -if [ ! -d "$ROOT"/var/log/wmbusmeters/meter_readings ] -then - # Create the log directories - mkdir -p "$ROOT"/var/log/wmbusmeters/meter_readings - chown -R wmbusmeters:wmbusmeters "$ROOT"/var/log/wmbusmeters - echo "log: created $ROOT/var/log/wmbusmeters/meter_readings" -fi - -#################################################################### -## -## Install /etc/logrotate.d/wmbusmeters -## - -if [ ! -f "$ROOT"/etc/logrotate.d/wmbusmeters ] -then - mkdir -p "$ROOT"/etc/logrotate.d - # Create logrotate file - cat < "$ROOT"/etc/logrotate.d/wmbusmeters -/var/log/wmbusmeters/*.log { - rotate 12 - weekly - compress - missingok - postrotate - /bin/kill -HUP `cat /run/wmbusmeters/wmbusmeters.pid 2> /dev/null` 2> /dev/null || true - endscript -EOF - echo "logrotate: created $ROOT/etc/logrotate.d/wmbusmeters" -else - echo "conf file: $ROOT/etc/logrotate.d/wmbusmeters unchanged" -fi - -#################################################################### -## -## Install /etc/wmbusmeters.conf -## - -if [ ! -f "$ROOT"/etc/wmbusmeters.conf ] -then - # Create default configuration - mkdir -p "$ROOT"/etc/ - cat < "$ROOT"/etc/wmbusmeters.conf -loglevel=normal -device=auto:t1 -logtelegrams=false -format=json -meterfiles=/var/log/wmbusmeters/meter_readings -meterfilesaction=overwrite -logfile=/var/log/wmbusmeters/wmbusmeters.log -EOF - chmod 644 "$ROOT"/etc/wmbusmeters.conf - echo "conf file: created $ROOT/etc/wmbusmeters.conf" -else - echo "conf file: $ROOT/etc/wmbusmeters.conf unchanged" -fi - -#################################################################### -## -## Create /etc/wmbusmeters.d -## - -if [ ! -d "$ROOT"/etc/wmbusmeters.d ] -then - # Create the configuration directory - mkdir -p "$ROOT"/etc/wmbusmeters.d - chmod -R 755 "$ROOT"/etc/wmbusmeters.d - echo "conf dir: created $ROOT/etc/wmbusmeters.d" -else - echo "conf dir: $ROOT/etc/wmbusmeters.d unchanged" -fi - -#################################################################### -## -## Create /lib/systemd/system/wmbusmeters.service -## - -SYSTEMD_NEEDS_RELOAD=false -mkdir -p "$ROOT"/lib/systemd/system/ - -OLD_WMBS=~/old.wmbusmeters.service.backup -CURR_WMBS="$ROOT"/lib/systemd/system/wmbusmeters.service -if [ -f $CURR_WMBS ] -then - echo "systemd: backing up $CURR_WMBS to here: $OLD_WMBS" - cp $CURR_WMBS $OLD_WMBS 2>/dev/null -fi - -# Create service file for starting daemon without explicit device. -# This means that wmbusmeters will rely on the conf file device setting. -cat <<'EOF' > $CURR_WMBS -[Unit] -Description="wmbusmeters service" -Documentation=https://github.com/weetmuts/wmbusmeters -Documentation=man:wmbusmeters(1) -After=network.target -StopWhenUnneeded=false -StartLimitIntervalSec=10 -StartLimitInterval=10 -StartLimitBurst=3 - -[Service] -Type=forking -PrivateTmp=yes -User=wmbusmeters -Group=wmbusmeters -Restart=always -RestartSec=1 - -# Run ExecStartPre with root-permissions - -PermissionsStartOnly=true -ExecStartPre=-/bin/mkdir -p /var/log/wmbusmeters/meter_readings -ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /var/log/wmbusmeters -ExecStartPre=-/bin/mkdir -p /run/wmbusmeters -ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /run/wmbusmeters - -ExecStart=/usr/sbin/wmbusmetersd /run/wmbusmeters/wmbusmeters.pid -ExecReload=/bin/kill -HUP $MAINPID -PIDFile=/run/wmbusmeters/wmbusmeters.pid - -[Install] -WantedBy=multi-user.target -EOF - -if diff $OLD_WMBS $CURR_WMBS 1>/dev/null -then - echo "systemd: no changes to $CURR_WMBS" -else - echo "systemd: updated $CURR_WMBS" - SYSTEMD_NEEDS_RELOAD=true -fi - -OLD_WMBAS=~/old.wmbusmeters@.service.backup -CURR_WMBAS="$ROOT"/lib/systemd/system/wmbusmeters@.service -if [ -f $CURR_WMBAS ] -then - echo "systemd: removing $CURR_WMBAS" - echo "systemd: backing up $CURR_WMBAS to here: $OLD_WMBAS" - cp $CURR_WMBAS $OLD_WMBAS 2>/dev/null - rm $CURR_WMBAS - SYSTEMD_NEEDS_RELOAD=true -fi - -#################################################################### -## -## Remove any existing /etc/udev/rules.d/99-wmbus-usb-serial.rules -## The new wmbuseters daemon is not going to use these. -## - -if [ -f "$ROOT"/etc/udev/rules.d/99-wmbus-usb-serial.rules ] -then - echo "udev: removing "$ROOT"/etc/udev/rules.d/99-wmbus-usb-serial.rules" - echo "udev: backup stored here: ~/old.wmbusmeters-wmbus-usb-serial.rules.backup" - cp "$ROOT"/etc/udev/rules.d/99-wmbus-usb-serial.rules ~/old.wmbusmeters-wmbus-usb-serial.rules.backup - rm "$ROOT"/etc/udev/rules.d/99-wmbus-usb-serial.rules - UDEV_NEEDS_RELOAD=true -fi - -if [ "$SYSTEMD_NEEDS_RELOAD" = "true" ] -then - echo - echo - echo "You need to reload systemd configuration! Please do:" - echo "sudo systemctl daemon-reload" -fi - -if [ "$UDEV_NEEDS_RELOAD" = "true" ] -then - echo - echo - echo "You need to reload udev configuration! Please do:" - echo "sudo udevadm control --reload-rules" - echo "sudo udevadm trigger" -fi +ROOT=$ROOT /bin/sh ./scripts/install_systemd_service.sh