-
Am 10. Januar 2024 um 14:30 schrieb "Adolf Belka" <adolf.belka@ipfire.org>:
- lfs and toorfile created for wsdd- wsdd added to make.sh script- created install/update/uninstall scripts for wsdd that create an unpriveleged user andgroup.- initscript created for wsdd. As wsdd is a python3 script, when it is run as a daemon thepidof command does not find any pid for wsdd. So a directory/file for a pid file wascreated. This is then passed to the loadproc and killproc commands. After the loadproccommand has been created the pid is extracted from the ps aux command and put into thepid file. This then works when running the killproc command for it to know what to goand stop. The statusproc command does not have the ability to feed in the pid from apid file and so it fails to find a running wsdd as it uses the pidof command. Code wasadded to the status section of the initscript to check if the pid file exists and if soto print the same command as used with the statusproc command, and also the samewording if the pid file does not exist because wsdd is not running.- info from the ethernet/settings file is used to identify if only green0 is available orif blue0 is also used and based on this the appropriate interface commands are added tothe wsdd command.- wsdd is also set up to run in a chroot- Has been tested on my vm testbed, initially by editing the files on the vm clone. Aftereverything confiremd to be working, the build was successfully carried out and the.ipfire package was copied to a new vm clone installed and shown to perform as expected.This test only confirms that wsdd is correctly installed and started. Shutsdown andrestarts on reboot successfully. Confirmed from the ps aux info that wsdd has beenstarted with the correct options. Thge testing can not evaluate if wsdd enables windowssystems newer than version 7 top be able to detect the samba shares as I have nowindows systems.Fixes: Bug13445Tested-by: Adolf Belka <adolf.belka@ipfire.org>Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>---config/rootfiles/packages/wsdd | 2 +lfs/wsdd | 89 ++++++++++++++++++++++++++++++++++make.sh | 1 +src/initscripts/packages/wsdd | 63 ++++++++++++++++++++++++src/paks/wsdd/install.sh | 40 +++++++++++++++src/paks/wsdd/uninstall.sh | 30 ++++++++++++src/paks/wsdd/update.sh | 27 +++++++++++7 files changed, 252 insertions(+)create mode 100644 config/rootfiles/packages/wsddcreate mode 100644 lfs/wsddcreate mode 100644 src/initscripts/packages/wsddcreate mode 100644 src/paks/wsdd/install.shcreate mode 100644 src/paks/wsdd/uninstall.shcreate mode 100644 src/paks/wsdd/update.shdiff --git a/config/rootfiles/packages/wsdd b/config/rootfiles/packages/wsddnew file mode 100644index 000000000..ce225043a--- /dev/null+++ b/config/rootfiles/packages/wsdd@@ -0,0 +1,2 @@+etc/rc.d/init.d/wsdd+usr/bin/wsdddiff --git a/lfs/wsdd b/lfs/wsddnew file mode 100644index 000000000..aa65e47ef--- /dev/null+++ b/lfs/wsdd@@ -0,0 +1,89 @@+###############################################################################+# #+# IPFire.org - A linux based firewall #+# Copyright (C) 2007-2024 IPFire Team <info@ipfire.org> #+# #+# This program is free software: you can redistribute it and/or modify #+# it under the terms of the GNU General Public License as published by #+# the Free Software Foundation, either version 3 of the License, or #+# (at your option) any later version. #+# #+# This program is distributed in the hope that it will be useful, #+# but WITHOUT ANY WARRANTY; without even the implied warranty of #+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #+# GNU General Public License for more details. #+# #+# You should have received a copy of the GNU General Public License #+# along with this program. If not, see <http://www.gnu.org/licenses/>. #+# #+###############################################################################++###############################################################################+# Definitions+###############################################################################++include Config++VER = 0.7.1+SUMMARY = A Web Service Discovery host daemon.++THISAPP = wsdd-$(VER)+DL_FILE = $(THISAPP).tar.gz+DL_FROM = $(URL_IPFIRE)+DIR_APP = $(DIR_SRC)/$(THISAPP)+TARGET = $(DIR_INFO)/$(THISAPP)+PROG = wsdd+PAK_VER = 1++DEPS =++SERVICES = wsdd++###############################################################################+# Top-level Rules+###############################################################################++objects = $(DL_FILE)++$(DL_FILE) = $(DL_FROM)/$(DL_FILE)++$(DL_FILE)_BLAKE2 = ce43022c3bd9f7ff1fd7169ac0d5ab6b2ff78d35c221c05b2e20908a5772d563ab2aca571d4e6ae48a55d19d4adcb9cde60f720ae47af8ee950198224fcfdb26++install : $(TARGET)++check : $(patsubst %,$(DIR_CHK)/%,$(objects))++download :$(patsubst %,$(DIR_DL)/%,$(objects))++b2 : $(subst %,%_BLAKE2,$(objects))++dist:+ @$(PAK)++###############################################################################+# Downloading, checking, b2sum+###############################################################################++$(patsubst %,$(DIR_CHK)/%,$(objects)) :+ @$(CHECK)++$(patsubst %,$(DIR_DL)/%,$(objects)) :+ @$(LOAD)++$(subst %,%_BLAKE2,$(objects)) :+ @$(B2SUM)++###############################################################################+# Installation Details+###############################################################################++$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))+ @$(PREBUILD)+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)+ cd $(DIR_APP) && cp src/wsdd.py /usr/bin/wsdd++ #install initscripts+ $(call INSTALL_INITSCRIPTS,$(SERVICES))++ @rm -rf $(DIR_APP)+ @$(POSTBUILD)diff --git a/make.sh b/make.shindex 06e09c9a3..5af3dedc3 100755--- a/make.sh+++ b/make.sh@@ -1699,6 +1699,7 @@ buildipfire() {lfsmake2 perl-MIME-Base32lfsmake2 perl-URI-Encodelfsmake2 rsnapshot+ lfsmake2 wsdd# Kernelbuild ... current we have no platform that need# multi kernel builds so KCFG is emptydiff --git a/src/initscripts/packages/wsdd b/src/initscripts/packages/wsddnew file mode 100644index 000000000..c5207f872--- /dev/null+++ b/src/initscripts/packages/wsdd@@ -0,0 +1,63 @@+#!/bin/sh+###############################################################################+# #+# IPFire.org - A linux based firewall #+# Copyright (C) 2007-2024 IPFire Team <info@ipfire.org> #+# #+# This program is free software: you can redistribute it and/or modify #+# it under the terms of the GNU General Public License as published by #+# the Free Software Foundation, either version 3 of the License, or #+# (at your option) any later version. #+# #+# This program is distributed in the hope that it will be useful, #+# but WITHOUT ANY WARRANTY; without even the implied warranty of #+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #+# GNU General Public License for more details. #+# #+# You should have received a copy of the GNU General Public License #+# along with this program. If not, see <http://www.gnu.org/licenses/>. #+# #+###############################################################################++. /etc/sysconfig/rc+. $rc_functions++eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)++# Create chroot directory for wsdd+mkdir -p /var/run/wsdd++INTERFACES="-i ${GREEN_DEV}"+ if [ -n "${BLUE_DEV}" ]; then+ INTERFACES="${INTERFACES} -i ${BLUE_DEV}"+ fi+WSDD_WORKGROUP="-w $(/usr/bin/testparm -s --parameter-name workgroup 2>/dev/null)"+WSDD_USER="-u wsdd:wsdd"+WSDD_CHROOT="-c /var/run/wsdd"++case "$1" in+ start)+ boot_mesg "Starting wsdd daemon..."+ loadproc -b /usr/bin/wsdd -4 ${WSDD_USER} ${INTERFACES} ${WSDD_WORKGROUP} ${WSDD_CHROOT}+ sleep 1+ echo $(ps aux | grep "/usr/bin/wsdd" | grep -v grep | awk '{print $2}') > /var/run/wsdd/pid+ ;;+ stop)+ boot_mesg "Stopping wsdd daemon..."+ killproc -p /var/run/wsdd/pid /usr/bin/wsdd+ ;;+ status)+ WSDD_PID=$(ps aux | grep "/usr/bin/wsdd" | grep -v grep | awk '{print $2}')+ if [ -n "${WSDD_PID}" ]; then+ echo -e "\\033[1;36m /usr/bin/wsdd is running with Process"\+ "ID(s) $WSDD_PID.\\033[0;39m"+ else+ echo -e "\\033[1;36m /usr/bin/wsdd is not running.\\033[0;39m"+ fi+ ;;+ *)+ echo "Usage: $0 (start|stop|status)"+ exit 1+ ;;+esac+diff --git a/src/paks/wsdd/install.sh b/src/paks/wsdd/install.shnew file mode 100644index 000000000..181b84eb9--- /dev/null+++ b/src/paks/wsdd/install.sh@@ -0,0 +1,40 @@+#!/bin/bash+############################################################################+# #+# This file is part of the IPFire Firewall. #+# #+# IPFire is free software; you can redistribute it and/or modify #+# it under the terms of the GNU General Public License as published by #+# the Free Software Foundation; either version 2 of the License, or #+# (at your option) any later version. #+# #+# IPFire is distributed in the hope that it will be useful, #+# but WITHOUT ANY WARRANTY; without even the implied warranty of #+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #+# GNU General Public License for more details. #+# #+# You should have received a copy of the GNU General Public License #+# along with IPFire; if not, write to the Free Software #+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #+# #+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #+# #+############################################################################+#+. /opt/pakfire/lib/functions.sh++# If the wsdd user does not exist yet, then create it and add to wsdd group.+if ! getent user wsdd >/dev/null; then+ useradd -r -U -d / -s /bin/false -c "wsdd user" wsdd+ usermod -a -G wsdd wsdd+fi++extract_files+restore_backup ${NAME}++# Create startlinks+ln -sf ../init.d/wsdd /etc/rc.d/rc0.d/K35wsdd+ln -sf ../init.d/wsdd /etc/rc.d/rc3.d/S65wsdd+ln -sf ../init.d/wsdd /etc/rc.d/rc6.d/K35wsdd+start_service ${NAME}+exit 0diff --git a/src/paks/wsdd/uninstall.sh b/src/paks/wsdd/uninstall.shnew file mode 100644index 000000000..4c52ee281--- /dev/null+++ b/src/paks/wsdd/uninstall.sh@@ -0,0 +1,30 @@+#!/bin/bash+############################################################################+# #+# This file is part of the IPFire Firewall. #+# #+# IPFire is free software; you can redistribute it and/or modify #+# it under the terms of the GNU General Public License as published by #+# the Free Software Foundation; either version 2 of the License, or #+# (at your option) any later version. #+# #+# IPFire is distributed in the hope that it will be useful, #+# but WITHOUT ANY WARRANTY; without even the implied warranty of #+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #+# GNU General Public License for more details. #+# #+# You should have received a copy of the GNU General Public License #+# along with IPFire; if not, write to the Free Software #+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #+# #+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #+# #+############################################################################+#+. /opt/pakfire/lib/functions.sh+stop_service ${NAME}+make_backup ${NAME}+remove_files+# Remove all start links.+rm -rf /etc/rc.d/rc*.d/*wsdd+exit 0diff --git a/src/paks/wsdd/update.sh b/src/paks/wsdd/update.shnew file mode 100644index 000000000..99776659c--- /dev/null+++ b/src/paks/wsdd/update.sh@@ -0,0 +1,27 @@+#!/bin/bash+############################################################################+# #+# This file is part of the IPFire Firewall. #+# #+# IPFire is free software; you can redistribute it and/or modify #+# it under the terms of the GNU General Public License as published by #+# the Free Software Foundation; either version 2 of the License, or #+# (at your option) any later version. #+# #+# IPFire is distributed in the hope that it will be useful, #+# but WITHOUT ANY WARRANTY; without even the implied warranty of #+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #+# GNU General Public License for more details. #+# #+# You should have received a copy of the GNU General Public License #+# along with IPFire; if not, write to the Free Software #+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #+# #+# Copyright (C) 2007-2020 IPFire-Team <info@ipfire.org>. #+# #+############################################################################+#+. /opt/pakfire/lib/functions.sh+extract_backup_includes+./uninstall.sh+./install.sh--2.43.0