From patchwork Mon Mar 18 18:43:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adolf Belka X-Patchwork-Id: 7644 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384 client-signature ECDSA (secp384r1) client-digest SHA384) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4Tz3dp5dHXz3wmD for ; Mon, 18 Mar 2024 18:43:26 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature ECDSA (secp384r1)) (Client CN "mail02.haj.ipfire.org", Issuer "R3" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4Tz3dk522bz10q; Mon, 18 Mar 2024 18:43:22 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4Tz3dk2n3Lz32sh; Mon, 18 Mar 2024 18:43:22 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384 client-signature ECDSA (secp384r1) client-digest SHA384) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4Tz3dh23shz32sc for ; Mon, 18 Mar 2024 18:43:20 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4Tz3dg19X0zj1; Mon, 18 Mar 2024 18:43:19 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1710787399; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=95Eri90MoldZ1lRJFDq725Mxw9YLOIu9hSG79PGUi2E=; b=0vlL+gfdYInN02Nd9qAQDVn97pVfTEF/eCoVzkXDZhYyvifXjicLEiy/M4M539zZznHzIa VNP70KnvNUHF4tBA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1710787399; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=95Eri90MoldZ1lRJFDq725Mxw9YLOIu9hSG79PGUi2E=; b=pqu6xbqVjEmUg5+0kiH86ToIEMgRXUeRo+jsFxMhK/avtjNF/jXr1gtDaXxnHFzz+lBPPj 1kPdRpaw1LIHrEzeJjR+LqNBAS+EIjp1guwfu/auaJuWIvlyxQxWL7ZNd00hie5XOYYQe6 9oLqRGE9LsnIPjnKAQo7tToJBU7YQYcEmXESnKJRP2TKUOtwsLQpWS6NjeGM7QUA4wWMXm E1EqCgnUxpRGekIw5NVraKI4r2ASx5CGGEb8/RTj7DuFbVmGZZ/VWxMzT3K1/R8/77siCC s7RrSZseS1/yG2ymgHff7Zhc/yKsbdX0eXIjjzcSvY3fv5K/NkjPKzBDkV8v9w== From: Adolf Belka To: development@lists.ipfire.org Subject: [PATCH 1/4] samba: Integrate wsdd initscript into samba initscript - bug#13445 Date: Mon, 18 Mar 2024 19:43:11 +0100 Message-ID: <20240318184314.3683-1-adolf.belka@ipfire.org> MIME-Version: 1.0 Message-ID-Hash: 3RQOJYPLKWXM7ZDJQL7LIECEERKZ7X6J X-Message-ID-Hash: 3RQOJYPLKWXM7ZDJQL7LIECEERKZ7X6J X-MailFrom: adolf.belka@ipfire.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: IPFire development talk Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: - This integrates the wsdd initscript functions into the samba initscript. When samba is started or stopped or the status requested then wsdd is part of that process. - Tested in my vm testbed and confirmed to work for start, stop and status. Confirmed pid's shown with status command are in the appropriate pid files. Fixes: bug#13445 Tested-by: Adolf Belka Signed-off-by: Adolf Belka --- src/initscripts/packages/samba | 40 +++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/initscripts/packages/samba b/src/initscripts/packages/samba index 93f14cd29..3945f4384 100644 --- a/src/initscripts/packages/samba +++ b/src/initscripts/packages/samba @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2022 IPFire Team # +# Copyright (C) 2007-2024 IPFire Team # # # # 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 # @@ -30,6 +30,8 @@ function fix_permissions() { mkdir -p /var/run/samba/{nmbd,ncalrpc,winbindd} } +eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) + case "$1" in start) fix_permissions @@ -42,6 +44,35 @@ case "$1" in boot_mesg "Starting winbind..." loadproc /usr/sbin/winbindd + + # Arguments for wsdd command + ARGS=( + # Launch as non-privileged user + "--user" "wsdd:wsdd" + + # Launch in chroot + "--chroot" "/var/run/wsdd" + + # Only use IPv4 + "--ipv4only" + + # Configure the workgroup + "--workgroup" "$(testparm -s --parameter-name workgroup 2>/dev/null)" + ) + + # Conditionally add the GREEN/BLUE interface + for intf in GREEN_DEV BLUE_DEV; do + if [ -n "${!intf}" ]; then + ARGS+=( "--interface" "${!intf}" ) + fi + done + + # Create chroot directory for wsdd + mkdir -p /var/run/wsdd + + PIDFILE="/var/run/wsdd.pid" + boot_mesg "Starting Web Service Discovery Host Daemon..." + loadproc -b -p "${PIDFILE}" /usr/bin/wsdd "${ARGS[@]}" ;; stop) @@ -53,6 +84,10 @@ case "$1" in boot_mesg "Stopping winbind..." killproc /usr/sbin/winbindd + + PIDFILE="/var/run/wsdd.pid" + boot_mesg "Stopping Web Service Discovery Host Daemon..." + killproc -p "${PIDFILE}" /usr/bin/wsdd ;; reload) @@ -76,6 +111,9 @@ case "$1" in statusproc /usr/sbin/nmbd statusproc /usr/sbin/smbd statusproc /usr/sbin/winbindd + + PIDFILE="/var/run/wsdd.pid" + statusproc /usr/bin/wsdd ;; *)