From: Michael Tremer <michael.tremer@ipfire.org>
To: development@lists.ipfire.org
Subject: Re: [PATCH 1/2] wsdd: Install wsdd - fixes bug13445
Date: Fri, 01 Mar 2024 17:17:37 +0100 [thread overview]
Message-ID: <BE6F1493-E2B0-4EA5-9BC3-A4FFB91A916A@ipfire.org> (raw)
In-Reply-To: <f5b3cf46-97d8-4e7e-824b-9f294feea88e@ipfire.org>
[-- Attachment #1: Type: text/plain, Size: 25742 bytes --]
Thank you for the notice. I merged the initscripts branch, too!
-Michael
> On 29 Feb 2024, at 14:38, Adolf Belka <adolf.belka(a)ipfire.org> wrote:
>
> Hi Michael,
>
> On 28/02/2024 17:45, Michael Tremer wrote:
>> Hello Adolf,
>>> On 16 Feb 2024, at 17:15, Adolf Belka <adolf.belka(a)ipfire.org> wrote:
>>>
>>> Hi Michael,
>>>
>>> On 16/01/2024 11:30, daniel.weismueller(a)ipfire.org wrote:
>>>> Hi there.
>>>> I've installed and testetd the latest / modified version of the wsdd addon on two machines.
>>>> Nearly everything works as exspected. Also my Winodws PCs see the IPFIRE as a menber of the workgroup and could browse and use the samba shares.
>>>> If you use the firewall option "Drop all Microsoft ports 135,137,138,139,445,1025" the clients in the blue network see the IPFIRE but aren't able to browse or connect to the shares.
>>>> I've recogniced only one thing that don't work like I exspected.
>>>> - If you stop or restart samba the wsdd addon won't stop or restart, too.
>>>> I think it would be better if the wssd stop too because if you change the workgroup and start the samba again the wsdd won't recognice it.
>>>
>>> To make a patch to support this I need to have the wsdd patches that you created merged into next. Then I can work on having samba trigger the start and stop of wsdd so that it does not run independently but is synchronised with samba.
>> Okay, I have merged the wsdd branch into next.
>> Please let me know if there is anything else you need from me.
> Thanks for the merge. Ran unstable on a vm system but wsdd failed to start. After a bit of investigating I realised that it was the same issue I had originally of pid not being correctly created.
>
> You also need to merge the two patches in your initscripts branch. I manually added the two patch changes into the functions file in my vm system and then wsdd started without any problems. So I can do the work on linking the start of samba with wsdd but those two patches will be needed for CU185.
>
> Regards,
> Adolf.
>>> Regards,
>>> Adolf.
>>>
>>>> -
>>>> Daniel
>>>> Am 12. Januar 2024 um 16:09 schrieb "Adolf Belka" <adolf.belka(a)ipfire.org<mailto:adolf.belka(a)ipfire.org?to=%22Adolf%20Belka%22%20%3Cadolf.belka%40ipfire.org%3E>>:
>>>> Hi Michael,
>>>> On 12/01/2024 14:40, Michael Tremer wrote:
>>>> Hello,
>>>> On 12 Jan 2024, at 11:14, Adolf Belka <adolf.belka(a)ipfire.org
>>>> <mailto:adolf.belka(a)ipfire.org>> wrote:
>>>> Hi Daniel,
>>>> On 11/01/2024 17:11, daniel.weismueller(a)ipfire.org
>>>> <mailto:daniel.weismueller(a)ipfire.org> wrote:
>>>> Hi Adolf.
>>>> We have looked at your work. First of all, thank you very much.
>>>> Your scripts seems to work fine. I will start tomorrow to test
>>>> them in whole. However we have made a few changes.
>>>> In particular, we have adapted the code to the existing code in
>>>> IPFire.
>>>> Please take look at Michaels wsdd branch.
>>>> https://git.ipfire.org/?p=people/ms/ipfire-2.x.git;a=shortlog;h=refs/heads/wsdd <https://git.ipfire.org/?p=people/ms/ipfire-2.x.git;a=shortlog;h=refs/heads/wsdd> <https://git.ipfire.org/?p=people/ms/ipfire-2.x.git;a=shortlog;h=refs/heads/wsdd> <https://git.ipfire.org/?p=people/ms/ipfire-2.x.git;a=shortlog;h=refs/heads/wsdd>>
>>>> That looks very good. I clearly still have a bit to learn
>>>> about how to code in a more tidy manner.
>>>> It worked… I was just in the swing of it :)
>>>> I also see that Michael fixed the pid fault in the
>>>> loadproc/statusproc/killproc while I just created a workaround
>>>> solution for the wsdd initscript alone.
>>>> loadproc/statusproc/killproc are really difficult to handle.
>>>> They are supposed to be LSB-conformant functions, but I believe
>>>> that it never really happened that they because universally used
>>>> and compatible between distributions. Now with systemd, there is
>>>> no more need…
>>>> And it is also because of systemd that daemons behave
>>>> differently now - actually not even like daemons whatsoever any
>>>> more. They used to fork themselves into the background which
>>>> made all the PID processing necessary, because the init script
>>>> could not know the PID of the process forked in the background.
>>>> Now, they don’t do this any more because without the fork,
>>>> things are easier for systemd to manage.
>>>> The new -b switch that was added some while ago is already
>>>> helping us to launch such new processes into the background, but
>>>> we don’t have PID files any more. And since scripts don’t work
>>>> with statusproc/killproc, I thought it might be a good idea to
>>>> add this to loadproc as I am expecting us to need this more
>>>> often in the future.
>>>> And while I was thinking about the problem, I figured it would
>>>> be easier to send a patch for those few lines instead of
>>>> explaining it in words - which probably would have been a little
>>>> bit longer.
>>>> The only noteworthy thing is that there was a potential security
>>>> issue in passing around the shell arguments as strings because
>>>> the workgroup variable could have been almost anything. I am not
>>>> sure what validation samba would do, but I thought it would be
>>>> best not to rely on that. A two words (with a space) workgroup
>>>> would have caused wsdd not to start, because it would have seen
>>>> a command line like “—-workgroup ABC DEF” with ABC being
>>>> interpreted as the workgroup and DEF being some garbage that
>>>> wsdd would not understand. The trick with the array is that it
>>>> would pass the arguments like this “—-workgroup ‘ABC DEF’” which
>>>> prevents that “DEF” would be interpreted as an extra parameter.
>>>> So, everything is fine :) Especially after I added the “restart”
>>>> command :)
>>>> I did have a look at the code in the functions file but
>>>> struggled to understand it enough to be able to figure out what
>>>> was giving the problem I was experiencing.
>>>> Which functions?
>>>> The /src/initscripts/system/functions file from the git repo that
>>>> has the loadproc, statusproc and killproc functions in it.
>>>> Regards,
>>>> Adolf.
>>>> I am glad that has been sorted and the initscript tidied up in
>>>> line with IPFire coding style.
>>>> That is why we are all working together...
>>>> Will try and remember that in future.
>>>> If not, we are here to help :)
>>>> -Michael
>>>> Regards,
>>>> Adolf.
>>>> -
>>>> Daniel
>>>> Am 10. Januar 2024 um 14:30 schrieb "Adolf Belka"
>>>> <adolf.belka(a)ipfire.org <mailto:adolf.belka(a)ipfire.org>
>>>> <mailto:adolf.belka(a)ipfire.org?to=%22Adolf%20Belka%22%20%3Cadolf
>>>> <mailto:adolf.belka(a)ipfire.org?to=%22Adolf%20Belka%22%20%3Cadolf>.belka%40ipfire.org%3E>>:
>>>> - 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(a)ipfire.org
>>>> <mailto:adolf.belka(a)ipfire.org>>
>>>> Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org
>>>> <mailto:adolf.belka(a)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/wsdd
>>>> create mode 100644 lfs/wsdd
>>>> create mode 100644 src/initscripts/packages/wsdd
>>>> create mode 100644 src/paks/wsdd/install.sh
>>>> create mode 100644 src/paks/wsdd/uninstall.sh
>>>> create mode 100644 src/paks/wsdd/update.sh
>>>> diff --git a/config/rootfiles/packages/wsdd
>>>> b/config/rootfiles/packages/wsdd
>>>> new file mode 100644
>>>> index 000000000..ce225043a
>>>> --- /dev/null
>>>> +++ b/config/rootfiles/packages/wsdd
>>>> @@ -0,0 +1,2 @@
>>>> +etc/rc.d/init.d/wsdd
>>>> +usr/bin/wsdd
>>>> diff --git a/lfs/wsdd b/lfs/wsdd
>>>> new file mode 100644
>>>> index 000000000..aa65e47ef
>>>> --- /dev/null
>>>> +++ b/lfs/wsdd
>>>> @@ -0,0 +1,89 @@
>>>> +###############################################################################
>>>> +# #
>>>> +# IPFire.org - A linux based firewall #
>>>> +# Copyright (C) 2007-2024 IPFire Team <info(a)ipfire.org
>>>> <mailto:info(a)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/> <http://www.gnu.org/licenses/>>
>>>> <http://www.gnu.org/licenses/>> <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.sh
>>>> index 06e09c9a3..5af3dedc3 100755
>>>> --- a/make.sh
>>>> +++ b/make.sh
>>>> @@ -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
>>>> diff --git a/src/initscripts/packages/wsdd
>>>> b/src/initscripts/packages/wsdd
>>>> new file mode 100644
>>>> index 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(a)ipfire.org
>>>> <mailto:info(a)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/> <http://www.gnu.org/licenses/>>
>>>> <http://www.gnu.org/licenses/>> <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.sh
>>>> new file mode 100644
>>>> index 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(a)ipfire.org
>>>> <mailto:info(a)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
>>>> diff --git a/src/paks/wsdd/uninstall.sh b/src/paks/wsdd/uninstall.sh
>>>> new file mode 100644
>>>> index 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(a)ipfire.org
>>>> <mailto:info(a)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
>>>> diff --git a/src/paks/wsdd/update.sh b/src/paks/wsdd/update.sh
>>>> new file mode 100644
>>>> index 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(a)ipfire.org
>>>> <mailto:info(a)ipfire.org>>. #
>>>> +# #
>>>> +############################################################################
>>>> +#
>>>> +. /opt/pakfire/lib/functions.sh
>>>> +extract_backup_includes
>>>> +./uninstall.sh
>>>> +./install.sh
>>>> -- 2.43.0
>>>> -- >> Sent from my laptop
>>>> -- Sent from my laptop
>>>
>>> --
>>> Sent from my laptop
next parent reply other threads:[~2024-03-01 16:17 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <f5b3cf46-97d8-4e7e-824b-9f294feea88e@ipfire.org>
2024-03-01 16:17 ` Michael Tremer [this message]
[not found] <14d2e2fe07dfcbad2fc01a7ab62025b0c2e3cf61@ipfire.org>
2024-02-16 17:15 ` Adolf Belka
2024-02-28 16:45 ` Michael Tremer
[not found] <31ed55928f921d6f36c4559a2e41b4a9e1c53e1c@ipfire.org>
2024-01-12 11:14 ` Adolf Belka
2024-01-12 13:40 ` Michael Tremer
2024-01-12 15:09 ` Adolf Belka
2024-01-10 13:30 Adolf Belka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BE6F1493-E2B0-4EA5-9BC3-A4FFB91A916A@ipfire.org \
--to=michael.tremer@ipfire.org \
--cc=development@lists.ipfire.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox