packages/net/ksmbd-tools/Makefile
Rafał Miłecki d0406d4c95 ksmbd-tools: add package with hotplug.d script for auto sharing
One of common use cases for SMB3 server in routers is sharing hotplugged
drives. Users make many attempts setting that up which often are not
optimal.

This script handles it in the cleanest way by using:
1. hotplug.d mount subsystem
2. runtime config in the /var/run/config/

It provides a working basic solution that can be later adjusted by
modifying provided hotplug script.

A pretty much idential solution was part of the samba36 package. It was
added in the OpenWrt commit ef1efa756e0d0 ("samba36: add package with
hotplug.d script for auto sharing") as an answer for feature required by
the Rosinson company.

Cc: Jo-Philipp Wich <jo@mein.io>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2022-08-11 14:05:45 -07:00

144 lines
4 KiB
Makefile

include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd-tools
PKG_VERSION:=3.4.5
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/cifsd-team/ksmbd-tools/tar.gz/$(PKG_VERSION)?
PKG_HASH:=e22e5bef29ffa2670fc82c490ad4dc6eb00963b4f963dd1852c811b437c77ee1
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_BUILD_DEPENDS:=glib2
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/meson.mk
TAR_OPTIONS+= --strip-components 1
TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS)
define Package/ksmbd-tools/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=Filesystem
TITLE:=Kernel SMB
URL:=https://github.com/cifsd-team/ksmbd-tools
DEPENDS:= $(ICONV_DEPENDS) $(INTL_DEPENDS)
endef
define Package/ksmbd-tools/Default/description
Userspace tools to manage the SMB kernel fileserver (ksmbd.ko).
The config file location is /etc/ksmbd/smb.conf
endef
define Package/ksmbd-server
$(call Package/ksmbd-tools/Default)
TITLE+= server
DEPENDS+= +kmod-fs-ksmbd +libnl-core +libnl-genl
endef
define Package/ksmbd-server/description
installs: ksmbd.mountd
This provides the basic fileserver service and is the minimum needed to serve 'guest only' file shares or use a existing user database file ksmbdpwd.db.
endef
define Package/ksmbd-server/config
select PACKAGE_wsdd2
endef
define Package/ksmbd-utils
$(call Package/ksmbd-tools/Default)
TITLE+= user management-util
endef
define Package/ksmbd-utils/description
installs: ksmbd.adduser (ksmbd.addshare)
Tool needed to create the ksmbdpwd.db, to manage per user share passwords.
NOTE: Not needed for 'guest only' shares.
endef
define Package/ksmbd-utils/config
config KSMBD_UTILS_SHAREADD
bool "Add ksmbd.addshare util"
depends on PACKAGE_ksmbd-utils
help
Add the ksmbd.addshare tool, to directly manipulate the /etc/ksmbd/smb.conf.
default n
endef
define Package/ksmbd-avahi-service
$(call Package/ksmbd-tools/Default)
TITLE+= (Avahi service)
DEPENDS:= +avahi-daemon
endef
define Package/ksmbd-avahi-service/description
installs: smb.service
This package contains the service definition for announcing the
Ksmbd (smb/445) Daemon service via mDNS/DNS-SD.
endef
define Package/ksmbd-hotplug
$(call Package/ksmbd-tools/Default)
TITLE+= hotplug script for auto sharing
DEPENDS:=+blockd
endef
MESON_ARGS += \
-Db_lto=true \
-Dkrb5=disabled
TARGET_CFLAGS += -ffunction-sections -fdata-sections
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
define Package/ksmbd-server/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ksmbd.mountd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/ksmbd $(1)/etc/init.d
$(INSTALL_CONF) ./files/ksmbd.config $(1)/etc/config/ksmbd
$(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/ksmbd/
$(INSTALL_BIN) ./files/ksmbd.init $(1)/etc/init.d/ksmbd
# copy examples until we have a wiki page
$(INSTALL_DATA) ./files/ksmbd.config.example $(1)/etc/ksmbd/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/Documentation/configuration.txt $(1)/etc/ksmbd/
endef
define Package/ksmbd-utils/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ksmbd.adduser $(1)/usr/sbin/
ifeq ($(CONFIG_KSMBD_UTILS_SHAREADD),y)
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ksmbd.addshare $(1)/usr/sbin/
endif
endef
define Package/ksmbd-avahi-service/install
$(INSTALL_DIR) $(1)/etc/avahi/services
$(INSTALL_DATA) ./files/smb.service $(1)/etc/avahi/services/
endef
define Package/ksmbd-hotplug/install
$(INSTALL_DIR) $(1)/etc/hotplug.d/mount
$(INSTALL_CONF) ./files/ksmbd.hotplug $(1)/etc/hotplug.d/mount/60-ksmbd
endef
define Package/ksmbd-server/conffiles
/etc/config/ksmbd
/etc/ksmbd/smb.conf.template
/etc/ksmbd/smb.conf
/etc/ksmbd/ksmbdpwd.db
endef
define Package/ksmbd-avahi-service/conffiles
/etc/avahi/services/smb.service
endef
$(eval $(call BuildPackage,ksmbd-server))
$(eval $(call BuildPackage,ksmbd-utils))
$(eval $(call BuildPackage,ksmbd-avahi-service))
$(eval $(call BuildPackage,ksmbd-hotplug))