wsdd: Install wsdd - fixes bug13445

- lfs and toorfile created for wsdd
- wsdd added to make.sh script
- created install/update/uninstall scripts for wsdd that create an unpriveleged user and
   group.
- initscript created for wsdd. As wsdd is a python3 script, when it is run as a daemon the
   pidof command does not find any pid for wsdd. So a directory/file for a pid file was
   created. This is then passed to the loadproc and killproc commands. After the loadproc
   command has been created the pid is extracted from the ps aux command and put into the
   pid file. This then works when running the killproc command for it to know what to go
   and stop. The statusproc command does not have the ability to feed in the pid from a
   pid file and so it fails to find a running wsdd as it uses the pidof command. Code was
   added to the status section of the initscript to check if the pid file exists and if so
   to print the same command as used with the statusproc command, and also the same
   wording 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 or
   if blue0 is also used and based on this the appropriate interface commands are added to
   the 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. After
   everything 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 and
   restarts on reboot successfully. Confirmed from the ps aux info that wsdd has been
   started with the correct options. Thge testing can not evaluate if wsdd enables windows
   systems newer than version 7 top be able to detect the samba shares as I have no
   windows systems.

Fixes: Bug13445
Tested-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
This commit is contained in:
Adolf Belka
2024-01-10 14:30:20 +01:00
committed by Daniel Weismüller
parent 4c7266a39e
commit 605217e96f
7 changed files with 252 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
etc/rc.d/init.d/wsdd
usr/bin/wsdd

89
lfs/wsdd Normal file
View File

@@ -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)

View File

@@ -1699,6 +1699,7 @@ buildipfire() {
lfsmake2 perl-MIME-Base32
lfsmake2 perl-URI-Encode
lfsmake2 rsnapshot
lfsmake2 wsdd
# Kernelbuild ... current we have no platform that need
# multi kernel builds so KCFG is empty

View File

@@ -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

40
src/paks/wsdd/install.sh Normal file
View File

@@ -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 0

View File

@@ -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 0

27
src/paks/wsdd/update.sh Normal file
View File

@@ -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