smbd: update to 3.1.1, rename to "ksmbd", "ksmbd-tools"

* rename smbd->ksmbd (upstream name change)
* ksmbd-tools: build with static glib2 (usmbd = ~90kb, smbuseradd = ~40kb)
* new etc folder location = /etc/ksmbd/smb.conf
* new database name = /etc/ksmbd/ksmbdpwd.db
* fixes "map to guest = Bad User" while userdb is also used
* fixes missing ipv6 support
* update/rename to "luci-app-ksmbd"
* remove UCI samba compatibility code for section names (ksmbd uses [share] + [globals] not [sambashare] + [global])

* ksmbd: release 3.1.1 version
* ksmbd: does not work if ipv6 module is not loaded or compiled in
* ksmbd: capsule ifdef CONFIG_SMB_INSECURE_SERVER with smb1 codes
* ksmbd: release 3.1.0 version
* ksmbd: fix over 80 character warnings
* ksmbd: rename smbd-tools to ksmbd-tools in travis.yml
* ksmbd: fix password db file location in travis.yml
* ksmbd: rename smbd prefix function to ksmbd
* ksmbd: rename smbd prefix source files to ksmbd
* Revert "smbd: set connection status with SMBD_SESS_EXITING instead of direct destory"
* ksmbd: rename smbd to ksmbd in .travis.yml
* smbd: rename module name to ksmbd.ko
* smbd: set connection status with SMBD_SESS_EXITING instead of direct destory
* smbd: previous session with same user and same password should be deleted
* smbd: only use global session table in smb2 session
* smbd: add support for ipv6
* smbd: fix empty macro issue from smbd_debug
* cifsd: fix printing of file names in find_next

Signed-off-by: Andy Walsh <andy.walsh44+github@gmail.com>
This commit is contained in:
Andy Walsh 2020-01-26 16:32:53 +01:00
parent c488ebe588
commit 664479fa89
8 changed files with 153 additions and 156 deletions

View File

@ -1,12 +1,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=smbd
PKG_VERSION:=3.0.2
PKG_NAME:=ksmbd
PKG_VERSION:=3.1.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/cifsd-team/$(PKG_NAME)/archive/$(PKG_VERSION)/
PKG_HASH:=13e256fed6992fddec5027d0866bc1eb4ff8da1e5f6a41b3296007f5cceb1a0a
PKG_HASH:=5cf00902b77206a56f20b8ec499aea061292a15003bbdd8194fcb2299fb2343e
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
@ -15,11 +15,11 @@ PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
define KernelPackage/fs-smbd
define KernelPackage/fs-ksmbd
SUBMENU:=Filesystems
TITLE:=SMB kernel server support
URL:=https://github.com/cifsd-team/smbd
FILES:=$(PKG_BUILD_DIR)/smbd.ko
URL:=https://github.com/cifsd-team/ksmbd
FILES:=$(PKG_BUILD_DIR)/ksmbd.ko
DEPENDS:= \
+kmod-nls-base \
+kmod-nls-utf8 \
@ -37,8 +37,8 @@ define KernelPackage/fs-smbd
+kmod-crypto-gcm
endef
define KernelPackage/fs-smbd/description
Smbd is an In-kernel SMB2/3 fileserver.
define KernelPackage/fs-ksmbd/description
Ksmbd is an In-kernel SMB2/3 fileserver.
It's an implementation of the SMB protocol in kernel space for sharing files and IPC services over network.
endef
@ -49,4 +49,4 @@ define Build/Compile
modules
endef
$(eval $(call KernelPackage,fs-smbd))
$(eval $(call KernelPackage,fs-ksmbd))

View File

@ -1,8 +1,8 @@
--- a/glob.h 2019-12-08
+++ b/glob.h 2019-12-08
@@ -7,6 +7,8 @@
#ifndef __SMBD_GLOB_H
#define __SMBD_GLOB_H
#ifndef __KSMBD_GLOB_H
#define __KSMBD_GLOB_H
+#undef CONFIG_MODULE_STRIPPED
+

113
net/ksmbd-tools/Makefile Normal file
View File

@ -0,0 +1,113 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd-tools
PKG_VERSION:=3.1.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/cifsd-team/$(PKG_NAME)/archive/$(PKG_VERSION)/
PKG_HASH:=7a01b327028cb52824a394dc2c4e706d15145b823fd0ff399c359f7a4c991c4a
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_REMOVE_FILES:=autogen.sh
PKG_BUILD_DEPENDS:=glib2
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
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: usmbd
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: smbuseradd (smbshareadd)
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 smbshareadd util"
depends on PACKAGE_ksmbd-utils
help
Add the smbshareadd tool, to directly manipulate the /etc/ksmbd/smb.conf.
default n
endef
CONFIGURE_ARGS += \
--disable-shared \
--enable-static
CONFIGURE_VARS += GLIB_LIBS="$(STAGING_DIR)/usr/lib/libglib-2.0.a"
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed -liconv $(if $(INTL_FULL),-lintl)
define Package/ksmbd-server/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/usmbd $(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/smbuseradd $(1)/usr/sbin/
ifeq ($(CONFIG_KSMBD_UTILS_SHAREADD),y)
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/smbshareadd $(1)/usr/sbin/
endif
endef
define Package/ksmbd-server/conffiles
/etc/config/ksmbd
/etc/ksmbd/smb.conf.template
/etc/ksmbd/smb.conf
/etc/ksmbd/ksmbdpwd.db
endef
$(eval $(call BuildPackage,ksmbd-server))
$(eval $(call BuildPackage,ksmbd-utils))

View File

@ -1,3 +1,3 @@
config globals
option 'workgroup' 'WORKGROUP'
option 'description' 'SMBD on OpenWrt'
option 'description' 'Ksmbd on OpenWrt'

View File

@ -1,5 +1,5 @@
config globals
option 'description' 'SMBD on OpenWrt'
option 'description' 'Ksmbd on OpenWrt'
config share
option name 'testshare'

View File

@ -28,18 +28,18 @@ smb_header()
hostname="$(cat /proc/sys/kernel/hostname)"
config_get workgroup $1 workgroup "WORKGROUP"
config_get description $1 description "SMBD on OpenWrt"
config_get description $1 description "Ksmbd on OpenWrt"
sed -e "s#|NAME|#$hostname#g" \
-e "s#|WORKGROUP|#$workgroup#g" \
-e "s#|DESCRIPTION|#$description#g" \
-e "s#|INTERFACES|#$interfaces#g" \
/etc/smbd/smb.conf.template > /var/etc/smbd/smb.conf
/etc/ksmbd/smb.conf.template > /var/etc/ksmbd/smb.conf
[ -e /etc/smbd/smb.conf ] || ln -nsf /var/etc/smbd/smb.conf /etc/smbd/smb.conf
[ -e /etc/ksmbd/smb.conf ] || ln -nsf /var/etc/ksmbd/smb.conf /etc/ksmbd/smb.conf
if [ ! -L /etc/smbd/smb.conf ]; then
logger -p daemon.warn -t 'smbd' "Local custom /etc/smbd/smb.conf file detected, all UCI/Luci config settings are ignored!"
if [ ! -L /etc/ksmbd/smb.conf ]; then
logger -p daemon.warn -t 'ksmbd' "Local custom /etc/ksmbd/smb.conf file detected, all UCI/Luci config settings are ignored!"
fi
}
@ -113,26 +113,23 @@ smb_add_share()
[ -n "$hide_dot_files" ] && printf "\thide dot files = %s\n" "$hide_dot_files"
[ -n "$veto_files" ] && printf "\tveto files = %s\n" "$veto_files"
} >> /var/etc/smbd/smb.conf
} >> /var/etc/ksmbd/smb.conf
}
init_config()
{
mkdir -p /var/etc/smbd
mkdir -p /var/etc/ksmbd
config_load smbd
# allow copy&paste from samba UCI configs (we dont have a smbd wiki yet)
config_load ksmbd
config_foreach smb_header globals
config_foreach smb_header samba
config_foreach smb_add_share share
config_foreach smb_add_share sambashare
}
service_triggers()
{
# PROCD_RELOAD_DELAY=1000
procd_add_reload_trigger "dhcp" "system" "smbd"
procd_add_reload_trigger "dhcp" "system" "ksmbd"
local i
for i in $SMBD_IFACE; do
@ -142,10 +139,10 @@ service_triggers()
kill_server()
{
if [ -e /sys/module/smbd ]; then
if [ -e /sys/class/smbd-control/kill_server ]; then
logger -p daemon.info -t 'smbd' "triggering kill_server"
echo hard > /sys/class/smbd-control/kill_server
if [ -e /sys/module/ksmbd ]; then
if [ -e /sys/class/ksmbd-control/kill_server ]; then
logger -p daemon.info -t 'ksmbd' "triggering kill_server"
echo hard > /sys/class/ksmbd-control/kill_server
fi
fi
}
@ -154,44 +151,44 @@ start_service()
{
init_config
if [ ! -e /etc/smbd/smb.conf ]; then
logger -p daemon.error -t 'smbd' "missing config /etc/smbd/smb.conf!"
if [ ! -e /etc/ksmbd/smb.conf ]; then
logger -p daemon.error -t 'ksmbd' "missing config /etc/ksmbd/smb.conf!"
exit 1
fi
# NOTE: We don't do a soft-reload via signal, since [global] smb.conf setting changes will be ignored, so always reset hard.
kill_server
[ ! -e /sys/module/smbd ] && modprobe smbd 2> /dev/null
if [ ! -e /sys/module/smbd ]; then
logger -p daemon.error -t 'smbd' "modprobe of smbd module failed, can\'t start smbd!"
[ ! -e /sys/module/ksmbd ] && modprobe ksmbd 2> /dev/null
if [ ! -e /sys/module/ksmbd ]; then
logger -p daemon.error -t 'ksmbd' "modprobe of ksmbd module failed, can\'t start ksmbd!"
exit 1
fi
logger -p daemon.notice -t 'smbd' "Starting SMBD userspace service."
logger -p daemon.notice -t 'ksmbd' "Starting Ksmbd userspace service."
procd_open_instance
procd_add_mdns "smb" "tcp" "445"
procd_set_param command /usr/sbin/usmbd --n
procd_set_param file /etc/smbd/smb.conf
procd_set_param file /etc/ksmbd/smb.conf
procd_set_param limits nofile=16384
procd_close_instance
}
stop_service()
{
logger -p daemon.notice -t 'smbd' "Stopping SMBD userspace service."
logger -p daemon.notice -t 'ksmbd' "Stopping Ksmbd userspace service."
killall usmbd > /dev/null 2>&1
[ -e /sys/module/smbd ] && rmmod smbd > /dev/null 2>&1
[ -e /sys/module/ksmbd ] && rmmod ksmbd > /dev/null 2>&1
# kill server if we cant rmmod
[ -e /sys/module/smbd ] && kill_server
[ -e /sys/module/ksmbd ] && kill_server
# next try
[ -e /sys/module/smbd ] && rmmod smbd > /dev/null 2>&1
[ -e /sys/module/ksmbd ] && rmmod ksmbd > /dev/null 2>&1
if [ -e /sys/module/smbd ]; then
logger -p daemon.error -t 'smbd' "module still loaded after kill_server?"
if [ -e /sys/module/ksmbd ]; then
logger -p daemon.error -t 'ksmbd' "module still loaded after kill_server?"
fi
[ -f /tmp/smbd.lock ] && rm /tmp/smbd.lock
[ -f /tmp/usmbd.lock ] && rm /tmp/usmbd.lock
}
# reload_service() {

View File

@ -1,113 +0,0 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=smbd-tools
PKG_VERSION:=3.0.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/cifsd-team/$(PKG_NAME)/archive/$(PKG_VERSION)/
PKG_HASH:=29f85de8b39608d28ec406c8b557264e004f5dce9b307a37f8324508cdea6217
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_REMOVE_FILES:=autogen.sh
PKG_BUILD_DEPENDS:=glib2
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
define Package/smbd-tools/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=Filesystem
TITLE:=Kernel SMB
URL:=https://github.com/cifsd-team/smbd-tools
DEPENDS:= +glib2 $(ICONV_DEPENDS) $(INTL_DEPENDS)
endef
define Package/smbd-tools/Default/description
Userspace tools for the SMB kernel fileserver (smbd.ko).
The config file location is /etc/smbd/smb.conf
endef
define Package/smbd-server
$(call Package/smbd-tools/Default)
TITLE+= server
DEPENDS+= +kmod-fs-smbd +libnl-core +libnl-genl
endef
define Package/smbd-server/description
installs: usmbd
This provides the basic fileserver service and is the minimum needed to serve 'guest only' file shares or use a existing smbdpwd.db.
endef
define Package/smbd-server/config
select PACKAGE_wsdd2
endef
define Package/smbd-utils
$(call Package/smbd-tools/Default)
TITLE+= user management-util
endef
define Package/smbd-utils/description
installs: smbuseradd (smbshareadd)
Tool needed to create the smbdpwd.db, to manage per user share passwords.
NOTE: Not needed for 'guest only' shares.
endef
define Package/smbd-utils/config
config SMBD_UTILS_SHAREADD
bool "Add smbshareadd util"
depends on PACKAGE_smbd-utils
help
Add the smbshareadd tool, to directly manipulate the /etc/smbd/smb.conf.
default n
endef
CONFIGURE_ARGS += \
--disable-shared \
--enable-static
# CONFIGURE_VARS += GLIB_LIBS="$(STAGING_DIR)/usr/lib/libglib-2.0.a"
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed -liconv $(if $(INTL_FULL),-lintl)
define Package/smbd-server/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/usmbd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/smbd $(1)/etc/init.d
$(INSTALL_CONF) ./files/smbd.config $(1)/etc/config/smbd
$(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/smbd/
$(INSTALL_BIN) ./files/smbd.init $(1)/etc/init.d/smbd
# copy examples until we have a wiki page
$(INSTALL_DATA) ./files/smbd.config.example $(1)/etc/smbd/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/Documentation/configuration.txt $(1)/etc/smbd/
endef
define Package/smbd-utils/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/smbuseradd $(1)/usr/sbin/
ifeq ($(CONFIG_SMBD_UTILS_SHAREADD),y)
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/smbshareadd $(1)/usr/sbin/
endif
endef
define Package/smbd-server/conffiles
/etc/config/smbd
/etc/smbd/smb.conf.template
/etc/smbd/smb.conf
/etc/smbd/smbdpwd.db
endef
$(eval $(call BuildPackage,smbd-server))
$(eval $(call BuildPackage,smbd-utils))