diff mbox series

[1/1] package/mdnsd: new package

Message ID 20230123055259.2285749-1-troglobit@gmail.com
State Accepted
Headers show
Series [1/1] package/mdnsd: new package | expand

Commit Message

Joachim Wiberg Jan. 23, 2023, 5:52 a.m. UTC
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
---
 DEVELOPERS                    |  1 +
 package/Config.in             |  1 +
 package/mdnsd/Config.in       | 50 +++++++++++++++++++++++
 package/mdnsd/S50mdnsd        | 51 ++++++++++++++++++++++++
 package/mdnsd/ftp.service     |  2 +
 package/mdnsd/http.service    |  2 +
 package/mdnsd/ipp.service     |  2 +
 package/mdnsd/mdnsd.hash      |  6 +++
 package/mdnsd/mdnsd.mk        | 75 +++++++++++++++++++++++++++++++++++
 package/mdnsd/printer.service |  2 +
 package/mdnsd/ssh.service     |  2 +
 11 files changed, 194 insertions(+)
 create mode 100644 package/mdnsd/Config.in
 create mode 100755 package/mdnsd/S50mdnsd
 create mode 100644 package/mdnsd/ftp.service
 create mode 100644 package/mdnsd/http.service
 create mode 100644 package/mdnsd/ipp.service
 create mode 100644 package/mdnsd/mdnsd.hash
 create mode 100644 package/mdnsd/mdnsd.mk
 create mode 100644 package/mdnsd/printer.service
 create mode 100644 package/mdnsd/ssh.service

Comments

Thomas Petazzoni July 30, 2023, 2:16 p.m. UTC | #1
Hello,

On Mon, 23 Jan 2023 06:52:58 +0100
Joachim Wiberg <troglobit@gmail.com> wrote:

> Signed-off-by: Joachim Wiberg <troglobit@gmail.com>

Thanks, I've applied with those changes. See below.

> diff --git a/package/mdnsd/Config.in b/package/mdnsd/Config.in
> new file mode 100644
> index 0000000000..095a924e98
> --- /dev/null
> +++ b/package/mdnsd/Config.in
> @@ -0,0 +1,50 @@
> +config BR2_PACKAGE_MDNSD
> +	bool "mdnsd"
> +	depends on BR2_USE_MMU # fork()
> +	help
> +	  Small mDNS-SD daemon for advertising services and device discovery,
> +	  similar to Avahi and Bonjour.
> +
> +	  By default, mdnsd runs on all interfaces that support multicast.
> +	  It reads services to announce from /etc/mdns.d/*.service, a few
> +	  common services are included below.  To override the defaults,
> +	  e.g., path to services, TTL of multicast frames, or the default
> +	  interface, set MDNSD_ARGS in /etc/default/mdnsd
> +
> +	  Note: currently no NSS integration with GLIBC.

Some of the lines here were too long, causing a check-package warning.
Also the upstream URL of the project was missing as a last line in the
help text.

> +
> +if BR2_PACKAGE_MDNSD
> +
> +config BR2_PACKAGE_MDNSD_MQUERY
> +	bool "mquery"
> +	default n

Not needed, being disabled is the default.

> +	help
> +  	  Scan a LAN for mDNS capable devices, or query specific records,
> +	  similar to the mdns-scan tool.  Useful for verifying multicast
> +	  connectivity or locating neighbors with link-local address.

Some of the lines here were too long, causing a check-package warning.

> +comment "Services to advertise"
> +
> +config BR2_PACKAGE_MDNSD_FTP_SERVICE
> +	bool "FTP service"
> +	default n
> +
> +config BR2_PACKAGE_MDNSD_HTTP_SERVICE
> +	bool "HTTP service"
> +	default n
> +
> +config BR2_PACKAGE_MDNSD_IPP_SERVICE
> +	bool "IPP service"
> +	default n
> +
> +config BR2_PACKAGE_MDNSD_PRINTER_SERVICE
> +	bool "Printer service"
> +	default n

Same comment as above about "default n".

> diff --git a/package/mdnsd/mdnsd.hash b/package/mdnsd/mdnsd.hash
> new file mode 100644
> index 0000000000..2fa7552d85
> --- /dev/null
> +++ b/package/mdnsd/mdnsd.hash
> @@ -0,0 +1,6 @@
> +# Upstream sha256 from GitHub
> +sha256  1af8742ab82a0af88d99d0b15508358ad4305879ab039631bea889138f5c87e8  mdnsd-0.12.tar.gz
> +
> +# Locally computed
> +sha256  2969546227b58ce1b431cc4c36c9a9b45d604e6b94fb8b787ea5d3696f3eee3b  LICENSE
> +

This final empty line was causing a check-package warning.

> diff --git a/package/mdnsd/mdnsd.mk b/package/mdnsd/mdnsd.mk
> new file mode 100644
> index 0000000000..90a4d4c051
> --- /dev/null
> +++ b/package/mdnsd/mdnsd.mk
> @@ -0,0 +1,75 @@
> +################################################################################
> +#
> +# mdnsd
> +#
> +################################################################################
> +
> +MDNSD_VERSION = 0.12
> +MDNSD_SITE = https://github.com/troglobit/mdnsd/releases/download/v$(MDNSD_VERSION)
> +MDNSD_LICENSE = BSD-3-Clause
> +MDNSD_LICENSE_FILES = LICENSE
> +MDNSD_DEPENDENCIES = host-pkgconf
> +
> +ifeq ($(BR2_PACKAGE_MDNSD_MQUERY),y)
> +MDNSD_CONF_OPTS += --with-mquery
> +else
> +MDNSD_CONF_OPTS += --without-mquery
> +endif
> +
> +ifeq ($(BR2_PACKAGE_SYSTEMD),y)
> +MDNSD_DEPENDENCIES += systemd
> +MDNSD_CONF_OPTS += --with-systemd
> +else
> +MDNSD_CONF_OPTS += --without-systemd
> +endif
> +
> +ifeq ($(BR2_PACKAGE_MDNSD_FTP_SERVICE),y)
> +define MDNSD_INSTALL_FTP_SERVICE
> +	$(INSTALL) -D -m 0644 package/mdnsd/ftp.service \
> +		$(TARGET_DIR)/etc/mdns.d/
> +endef
> +MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_FTP_SERVICE
> +endif
> +
> +ifeq ($(BR2_PACKAGE_MDNSD_HTTP_SERVICE),y)
> +define MDNSD_INSTALL_HTTP_SERVICE
> +	$(INSTALL) -D -m 0644 package/mdnsd/http.service \
> +		$(TARGET_DIR)/etc/mdns.d/
> +endef
> +MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_HTTP_SERVICE
> +endif
> +
> +ifeq ($(BR2_PACKAGE_MDNSD_IPP_SERVICE),y)
> +define MDNSD_INSTALL_IPP_SERVICE
> +	$(INSTALL) -D -m 0644 package/mdnsd/ipp.service \
> +		$(TARGET_DIR)/etc/mdns.d/
> +endef
> +MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_IPP_SERVICE
> +endif
> +
> +ifeq ($(BR2_PACKAGE_MDNSD_PRINTER_SERVICE),y)
> +define MDNSD_INSTALL_PRINTER_SERVICE
> +	$(INSTALL) -D -m 0644 package/mdnsd/printer.service \
> +		$(TARGET_DIR)/etc/mdns.d/
> +endef
> +MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_PRINTER_SERVICE
> +endif
> +
> +ifeq ($(BR2_PACKAGE_MDNSD_SSH_SERVICE),y)
> +define MDNSD_INSTALL_SSH_SERVICE
> +	$(INSTALL) -D -m 0644 package/mdnsd/ssh.service \
> +		$(TARGET_DIR)/etc/mdns.d/
> +endef
> +MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_SSH_SERVICE
> +endif

All of this service handling stuff was very verbose. I've refactored it
like this:

MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_FTP_SERVICE) += ftp
MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_HTTP_SERVICE) += http
MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_IPP_SERVICE) += ipp
MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_PRINTER_SERVICE) += printer
MDNSD_SERVICES_$(BR2_PACKAGE_MDNSD_SSH_SERVICE) += ssh

define MDNSD_INSTALL_SERVICES
        $(foreach service,$(MDNSD_SERVICES_y),\
                $(INSTALL) -D -m 0644 package/mdnsd/$(service).service \
                        $(TARGET_DIR)/etc/mdns.d/$(service).service
        )
endef
MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_SERVICES

> +define MDNSD_INSTALL_INIT_SYSV
> +	$(INSTALL) -m 755 -D package/mdnsd/S50mdnsd $(TARGET_DIR)/etc/init.d/

You need a full destination path here.

As said above: I fixed those various small things when applying.

Thanks!

Thomas
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index e8e0dffcd3..bb12d79b11 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1491,6 +1491,7 @@  F:	package/libnet/
 F:	package/libteam/
 F:	package/libuev/
 F:	package/mg/
+F:	package/mdnsd/
 F:	package/mini-snmpd/
 F:	package/mrouted/
 F:	package/netcalc/
diff --git a/package/Config.in b/package/Config.in
index 995dae2c57..faa7e7d628 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1932,6 +1932,7 @@  menu "Networking"
 	source "package/libyang/Config.in"
 	source "package/lksctp-tools/Config.in"
 	source "package/mbuffer/Config.in"
+	source "package/mdnsd/Config.in"
 	source "package/mongoose/Config.in"
 	source "package/nanomsg/Config.in"
 	source "package/neon/Config.in"
diff --git a/package/mdnsd/Config.in b/package/mdnsd/Config.in
new file mode 100644
index 0000000000..095a924e98
--- /dev/null
+++ b/package/mdnsd/Config.in
@@ -0,0 +1,50 @@ 
+config BR2_PACKAGE_MDNSD
+	bool "mdnsd"
+	depends on BR2_USE_MMU # fork()
+	help
+	  Small mDNS-SD daemon for advertising services and device discovery,
+	  similar to Avahi and Bonjour.
+
+	  By default, mdnsd runs on all interfaces that support multicast.
+	  It reads services to announce from /etc/mdns.d/*.service, a few
+	  common services are included below.  To override the defaults,
+	  e.g., path to services, TTL of multicast frames, or the default
+	  interface, set MDNSD_ARGS in /etc/default/mdnsd
+
+	  Note: currently no NSS integration with GLIBC.
+
+if BR2_PACKAGE_MDNSD
+
+config BR2_PACKAGE_MDNSD_MQUERY
+	bool "mquery"
+	default n
+	help
+  	  Scan a LAN for mDNS capable devices, or query specific records,
+	  similar to the mdns-scan tool.  Useful for verifying multicast
+	  connectivity or locating neighbors with link-local address.
+
+comment "Services to advertise"
+
+config BR2_PACKAGE_MDNSD_FTP_SERVICE
+	bool "FTP service"
+	default n
+
+config BR2_PACKAGE_MDNSD_HTTP_SERVICE
+	bool "HTTP service"
+	default n
+
+config BR2_PACKAGE_MDNSD_IPP_SERVICE
+	bool "IPP service"
+	default n
+
+config BR2_PACKAGE_MDNSD_PRINTER_SERVICE
+	bool "Printer service"
+	default n
+
+config BR2_PACKAGE_MDNSD_SSH_SERVICE
+	bool "SSH service"
+	default y if BR2_PACKAGE_DROPBEAR
+	default y if BR2_PACKAGE_OPENSSH
+	default y if BR2_PACKAGE_LIBSSH_SERVER
+
+endif
diff --git a/package/mdnsd/S50mdnsd b/package/mdnsd/S50mdnsd
new file mode 100755
index 0000000000..1c2b71802c
--- /dev/null
+++ b/package/mdnsd/S50mdnsd
@@ -0,0 +1,51 @@ 
+#!/bin/sh
+
+DAEMON=mdnsd
+MDNSD=/usr/sbin/$DAEMON
+PIDFILE=/var/run/$DAEMON.pid
+CFGFILE=/etc/default/$DAEMON
+
+MDNSD_ARGS=""
+
+# Read configuration variable file if it is present
+# shellcheck source=/dev/null
+[ -r "$CFGFILE" ] && . "$CFGFILE"
+
+# shellcheck disable=SC2086
+start() {
+	[ -n "$1" ] || printf 'Starting %s: ' "$DAEMON"
+	start-stop-daemon -S -q -p "$PIDFILE" -x "$MDNSD" -- $MDNSD_ARGS
+}
+
+stop() {
+	[ -n "$1" ] || printf 'Stopping %s: ' "$DAEMON"
+	start-stop-daemon -K -q -p "$PIDFILE" -x "$MDNSD"
+}
+
+restart() {
+	printf 'Restarting %s: ' "$DAEMON"
+	stop  silent
+	start silent
+}
+
+# SIGHUP reloads /etc/mdns.d/*.service
+reload() {
+	printf 'Reloading %s: ' "$DAEMON"
+	start-stop-daemon -K -s HUP -q -p "$PIDFILE" -x "$MDNSD"
+}
+
+case "$1" in
+	start|stop|restart|reload)
+		if "$1"; then
+			echo "OK"
+		else
+			echo "FAIL"
+		fi
+		;;
+	*)
+		echo "Usage: $0 {start|stop|restart|reload}"
+		exit 1
+		;;
+esac
+
+exit $?
diff --git a/package/mdnsd/ftp.service b/package/mdnsd/ftp.service
new file mode 100644
index 0000000000..200a379efd
--- /dev/null
+++ b/package/mdnsd/ftp.service
@@ -0,0 +1,2 @@ 
+type _ftp._tcp
+port 21
diff --git a/package/mdnsd/http.service b/package/mdnsd/http.service
new file mode 100644
index 0000000000..7a40d2405f
--- /dev/null
+++ b/package/mdnsd/http.service
@@ -0,0 +1,2 @@ 
+type _http._tcp
+port 80
diff --git a/package/mdnsd/ipp.service b/package/mdnsd/ipp.service
new file mode 100644
index 0000000000..0d43e780d1
--- /dev/null
+++ b/package/mdnsd/ipp.service
@@ -0,0 +1,2 @@ 
+type _ipp._tcp
+port 631
diff --git a/package/mdnsd/mdnsd.hash b/package/mdnsd/mdnsd.hash
new file mode 100644
index 0000000000..2fa7552d85
--- /dev/null
+++ b/package/mdnsd/mdnsd.hash
@@ -0,0 +1,6 @@ 
+# Upstream sha256 from GitHub
+sha256  1af8742ab82a0af88d99d0b15508358ad4305879ab039631bea889138f5c87e8  mdnsd-0.12.tar.gz
+
+# Locally computed
+sha256  2969546227b58ce1b431cc4c36c9a9b45d604e6b94fb8b787ea5d3696f3eee3b  LICENSE
+
diff --git a/package/mdnsd/mdnsd.mk b/package/mdnsd/mdnsd.mk
new file mode 100644
index 0000000000..90a4d4c051
--- /dev/null
+++ b/package/mdnsd/mdnsd.mk
@@ -0,0 +1,75 @@ 
+################################################################################
+#
+# mdnsd
+#
+################################################################################
+
+MDNSD_VERSION = 0.12
+MDNSD_SITE = https://github.com/troglobit/mdnsd/releases/download/v$(MDNSD_VERSION)
+MDNSD_LICENSE = BSD-3-Clause
+MDNSD_LICENSE_FILES = LICENSE
+MDNSD_DEPENDENCIES = host-pkgconf
+
+ifeq ($(BR2_PACKAGE_MDNSD_MQUERY),y)
+MDNSD_CONF_OPTS += --with-mquery
+else
+MDNSD_CONF_OPTS += --without-mquery
+endif
+
+ifeq ($(BR2_PACKAGE_SYSTEMD),y)
+MDNSD_DEPENDENCIES += systemd
+MDNSD_CONF_OPTS += --with-systemd
+else
+MDNSD_CONF_OPTS += --without-systemd
+endif
+
+ifeq ($(BR2_PACKAGE_MDNSD_FTP_SERVICE),y)
+define MDNSD_INSTALL_FTP_SERVICE
+	$(INSTALL) -D -m 0644 package/mdnsd/ftp.service \
+		$(TARGET_DIR)/etc/mdns.d/
+endef
+MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_FTP_SERVICE
+endif
+
+ifeq ($(BR2_PACKAGE_MDNSD_HTTP_SERVICE),y)
+define MDNSD_INSTALL_HTTP_SERVICE
+	$(INSTALL) -D -m 0644 package/mdnsd/http.service \
+		$(TARGET_DIR)/etc/mdns.d/
+endef
+MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_HTTP_SERVICE
+endif
+
+ifeq ($(BR2_PACKAGE_MDNSD_IPP_SERVICE),y)
+define MDNSD_INSTALL_IPP_SERVICE
+	$(INSTALL) -D -m 0644 package/mdnsd/ipp.service \
+		$(TARGET_DIR)/etc/mdns.d/
+endef
+MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_IPP_SERVICE
+endif
+
+ifeq ($(BR2_PACKAGE_MDNSD_PRINTER_SERVICE),y)
+define MDNSD_INSTALL_PRINTER_SERVICE
+	$(INSTALL) -D -m 0644 package/mdnsd/printer.service \
+		$(TARGET_DIR)/etc/mdns.d/
+endef
+MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_PRINTER_SERVICE
+endif
+
+ifeq ($(BR2_PACKAGE_MDNSD_SSH_SERVICE),y)
+define MDNSD_INSTALL_SSH_SERVICE
+	$(INSTALL) -D -m 0644 package/mdnsd/ssh.service \
+		$(TARGET_DIR)/etc/mdns.d/
+endef
+MDNSD_POST_INSTALL_TARGET_HOOKS += MDNSD_INSTALL_SSH_SERVICE
+endif
+
+define MDNSD_INSTALL_INIT_SYSV
+	$(INSTALL) -m 755 -D package/mdnsd/S50mdnsd $(TARGET_DIR)/etc/init.d/
+endef
+
+define MDNSD_INSTALL_INIT_SYSTEMD
+	$(INSTALL) -D -m 644 $(@D)/mdnsd.service \
+		$(TARGET_DIR)/usr/lib/systemd/system/mdnsd.service
+endef
+
+$(eval $(autotools-package))
diff --git a/package/mdnsd/printer.service b/package/mdnsd/printer.service
new file mode 100644
index 0000000000..cd32295471
--- /dev/null
+++ b/package/mdnsd/printer.service
@@ -0,0 +1,2 @@ 
+type _printer._tcp
+port 515
diff --git a/package/mdnsd/ssh.service b/package/mdnsd/ssh.service
new file mode 100644
index 0000000000..596d20ba17
--- /dev/null
+++ b/package/mdnsd/ssh.service
@@ -0,0 +1,2 @@ 
+type _ssh._tcp
+port 22