commit b3b9a88e9302e54a07ee6f421fb85a36988aabcdfe653aa3bdf31c96626dce74 Author: Marcus Meissner Date: Tue Apr 28 07:53:42 2020 +0000 Accepting request 798045 from home:hgraeber Implementation of a ws-discovery protocol daemon. Helps to make samba servers more discoverable by windows clients and dolphin 20.04 OBS-URL: https://build.opensuse.org/request/show/798045 OBS-URL: https://build.opensuse.org/package/show/network/wsdd?expand=0&rev=1 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/sysconfig.wsdd b/sysconfig.wsdd new file mode 100644 index 0000000..28d00ef --- /dev/null +++ b/sysconfig.wsdd @@ -0,0 +1,33 @@ +## Path: Network/WSD +## Description: WSD Configuration +## Type: string +## Default: "" +## ServiceRestart:·wsdd +# Windows domain +# If empty use the machines domain +WSDD_DOMAIN="" + +## Type: string +## Default: "" +## ServiceRestart:·wsdd +# Windows workgroup. +# If empty use the domain name +WSDD_WORKGROUP="" + +## Type: string +## Default: "" +## ServiceRestart:·wsdd +# Hostname +# If empty use the machines hostname +WSDD_HOSTNAME="" + +## Type: string +## Default: "" +## ServiceRestart:·wsdd +# If empty use all interfaces, except loopback interfaces +WSDD_INTERFACES="" + +## Type: string +## Default: "" +## ServiceRestart:·wsdd +WSDD_ARGS="" diff --git a/wsdapi.xml b/wsdapi.xml new file mode 100644 index 0000000..033b2c5 --- /dev/null +++ b/wsdapi.xml @@ -0,0 +1,6 @@ + + + wsdapi + Web Service Discovery API + + diff --git a/wsdd-0.5.tar.xz b/wsdd-0.5.tar.xz new file mode 100644 index 0000000..4c19eab --- /dev/null +++ b/wsdd-0.5.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c04852b053b78fd9d5b3e28b49a06f8ee707ccdaf82cc1e449ece031ad494bea +size 16820 diff --git a/wsdd-init.sh b/wsdd-init.sh new file mode 100644 index 0000000..8374bcf --- /dev/null +++ b/wsdd-init.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +WSDD_CONFIG=/etc/sysconfig/wsdd +if test -r "${WSDD_CONFIG}"; then + . "${WSDD_CONFIG}" +fi + +if [ "${WSDD_DOMAIN}" != "" ]; then + WSDD_DOMAIN="-d \"${WSDD_DOMAIN}\"" +fi + +if [ "${WSDD_WORKGROUP}" != "" ]; then + WSDD_DOMAIN="-w \"${WSDD_WORKGROUP}\"" +fi + +if [ "${WSDD_HOSTNAME}" != "" ]; then + WSDD_HOSTNAME="-n \"${WSDD_HOSTNAME}\"" +fi + +WSDD_INTERFACE_ARGS="" +if [ "${WSDD_INTERFACES}" != "" ]; then + for intf in "${WSDD_INTERFACES[@]}"; do + echo ${intf} + WSDD_INTERFACE_ARGS="${WSDD_INTERFACE_ARGS} -i \"${intf}\"" + done +fi + +install -o wsdd -g wsdd -p 0700 -d /run/sysconfig + +echo "WSDD_ARGS=${WSDD_HOSTNAME} ${WSDD_WORKGROUP} ${WSDD_DOMAIN} ${WSDD_INTERFACE_ARGS} \ + ${WSDD_ARGS}" >/run/sysconfig/wsdd diff --git a/wsdd-shebang.patch b/wsdd-shebang.patch new file mode 100644 index 0000000..f19d333 --- /dev/null +++ b/wsdd-shebang.patch @@ -0,0 +1,9 @@ +diff -up wsdd-0.4/src/wsdd.py.org wsdd-0.4/src/wsdd.py +--- wsdd-0.4/src/wsdd.py.org 2019-11-13 19:04:20.411758390 +0100 ++++ wsdd-0.4/src/wsdd.py 2019-11-13 19:03:26.339623059 +0100 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python3 ++#!/usr/bin/python3 + + # Implements a target service according to the Web Service Discovery + # specification. diff --git a/wsdd.changes b/wsdd.changes new file mode 100644 index 0000000..b92c8fa --- /dev/null +++ b/wsdd.changes @@ -0,0 +1,42 @@ +------------------------------------------------------------------- +Sun Apr 26 20:24:03 UTC 2020 - Herbert Graeber + +- Use wsdd for user and group of the ghost directories + +------------------------------------------------------------------- +Sun Apr 26 18:19:24 UTC 2020 - Herbert Graeber + +- Replace wsdd-wrapper by an ExecStartPre script +- Change the "WSD_" variable prefix by "WSDD_" +- Run wsdd as user and group wsdd +- Run wsdd in a chroot folder +- Merge firewall files into one + +------------------------------------------------------------------- +Tue Mar 31 16:05:23 UTC 2020 - Herbert Graeber + +- Update to version 0.5 +- Remove unneeded _service file + +------------------------------------------------------------------- +Mon Nov 18 19:41:19 UTC 2019 - Herbert Graeber + +- Remove debug output +- Respect libexecdir in systemd service file + +------------------------------------------------------------------- +Fri Nov 15 21:31:43 UTC 2019 - Herbert Graeber + +- Determine domain, and/or hostname +- Move wssd back to /usr/bin + +------------------------------------------------------------------- +Fri Nov 15 20:56:34 UTC 2019 - Herbert Graeber + +- Reload firewalld services +- Remove fillup_prereq post requires + +------------------------------------------------------------------- +Wed Nov 13 18:30:00 UTC 2019 - Herbert Graeber + +- Initial package diff --git a/wsdd.conf b/wsdd.conf new file mode 100644 index 0000000..b2cad71 --- /dev/null +++ b/wsdd.conf @@ -0,0 +1 @@ +d /run/wsdd 0755 wsdd wsdd diff --git a/wsdd.service b/wsdd.service new file mode 100644 index 0000000..1efd8e0 --- /dev/null +++ b/wsdd.service @@ -0,0 +1,19 @@ +[Unit] +Description=Web Services Dynamic Discovery host daemon +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +AmbientCapabilities=CAP_SYS_CHROOT +PermissionsStartOnly=true +Environment= WSDD_ARGS=-p +ExecStartPre=/usr/lib/wsdd/wsdd-init.sh +EnvironmentFile=-/run/sysconfig/wsdd +ExecStart=/usr/sbin/wsdd --shortlog -c /run/wsdd $WSDD_ARGS +ExecStartPost=/usr/bin/rm /run/sysconfig/wsdd +User=wsdd +Group=wsdd + +[Install] +WantedBy=multi-user.target diff --git a/wsdd.spec b/wsdd.spec new file mode 100644 index 0000000..4536fb9 --- /dev/null +++ b/wsdd.spec @@ -0,0 +1,102 @@ +# +# spec file for package wsdd +# +# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# + + +Name: wsdd +Version: 0.5 +Release: 0 +Summary: A Web Service Discovery host daemon +License: MIT +Url: https://github.com/christgau/wsdd +BuildArch: noarch +Source: https://github.com/christgau/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.xz +Source1: %{name}-init.sh +Source2: %{name}.service +Source3: %{name}.xml +Source4: sysconfig.%{name} +Source5: %{name}.conf +Patch1: %{name}-shebang.patch +BuildRequires: python3 +BuildRequires: firewall-macros +Requires: sysconfig +Supplements: samba +Supplements: samba-ad-dc + +%description +wsdd implements a Web Service Discovery host daemon. This enables (Samba) hosts, +like your local NAS device, to be found by Web Service Discovery Clients like Windows. + +Since NetBIOS discovery is not supported by Windows anymore, wsdd makes hosts to +appear in Windows again using the Web Service Discovery method. This is beneficial +for devices running Samba, like NAS or file sharing servers on your local network. + +%prep +%setup -q +%patch1 -p1 + +%build + +%install +install -m 755 -D src/wsdd.py %{buildroot}%{_sbindir}/%{name} +install -m 644 -D man/wsdd.1 %{buildroot}/%{_mandir}/man1/wsdd.1 +install -m 755 -D %{SOURCE1} %{buildroot}%{_libexecdir}/wsdd/wsdd-init.sh +install -m 644 -D %{SOURCE2} %{buildroot}%{_unitdir}/wsdd.service +install -m 644 -D %{SOURCE3} %{buildroot}%{_libexecdir}/firewalld/services/wsdd.xml +install -m 644 -D %{SOURCE4} %{buildroot}%{_fillupdir}/sysconfig.wsdd +install -m 755 -d %{buildroot}%{_sbindir} +ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name} +mkdir -p %{buildroot}/usr/lib/tmpfiles.d/ +install -m 644 %{SOURCE5} %{buildroot}/usr/lib/tmpfiles.d/ +mkdir -p %{buildroot}/run/wsdd +mkdir -p %{buildroot}/var/lib/wsdd + +%pre +getent group wsdd >/dev/null || %{_sbindir}/groupadd -r wsdd +getent passwd wsdd >/dev/null || %{_sbindir}/useradd -r -g wsdd -c "User for wsdd" -s /sbin/nologin -d /run/wsdd wsdd +%service_add_pre wsdd.service + +%post +%{fillup_only} +%service_add_post wsdd.service +%tmpfiles_create /usr/lib/tmpfiles.d/wsdd.conf +%firewalld_reload + +%preun +%service_del_preun wsdd.service + +%postun +%service_del_postun wsdd.service + +%files +%license LICENCE +%doc README.md +%{_sbindir}/%{name} +%{_mandir}/man1/wsdd.1.gz +%{_sbindir}/rc%{name} +%{_unitdir}/wsdd.service +%{_libexecdir}/wsdd +%dir /usr/lib/tmpfiles.d +/usr/lib/tmpfiles.d/wsdd.conf +%dir %{_libexecdir}/firewalld +%dir %{_libexecdir}/firewalld/services +%{_libexecdir}/firewalld/services/wsdd.xml +%{_fillupdir}/sysconfig.%{name} +%dir %attr(0755,wsdd,wsdd) %ghost /run/sysconfig +%attr(0644,wsdd,wsdd) %ghost /run/sysconfig/wsdd +%dir %attr(0755,wsdd,wsdd) %ghost /run/wsdd + +%changelog diff --git a/wsdd.xml b/wsdd.xml new file mode 100644 index 0000000..e3bf98f --- /dev/null +++ b/wsdd.xml @@ -0,0 +1,7 @@ + + + wsdd + Web Service Discovery + + +