mirror of
https://github.com/novatiq/packages.git
synced 2026-04-30 15:38:40 +01:00
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:
@@ -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))
|
||||
@@ -0,0 +1,3 @@
|
||||
config globals
|
||||
option 'workgroup' 'WORKGROUP'
|
||||
option 'description' 'Ksmbd on OpenWrt'
|
||||
@@ -0,0 +1,11 @@
|
||||
config globals
|
||||
option 'description' 'Ksmbd on OpenWrt'
|
||||
|
||||
config share
|
||||
option name 'testshare'
|
||||
option path '/tmp'
|
||||
option read_only 'no'
|
||||
option guest_ok 'yes'
|
||||
option create_mask '0666'
|
||||
option dir_mask '0777'
|
||||
option force_root '1'
|
||||
@@ -0,0 +1,196 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=98
|
||||
USE_PROCD=1
|
||||
|
||||
SMBD_IFACE=""
|
||||
|
||||
smb_header()
|
||||
{
|
||||
config_get SMBD_IFACE $1 interface "lan"
|
||||
|
||||
# resolve interfaces
|
||||
local interfaces
|
||||
interfaces=$(
|
||||
. /lib/functions/network.sh
|
||||
|
||||
local net
|
||||
for net in $SMBD_IFACE; do
|
||||
local device
|
||||
network_is_up $net || continue
|
||||
network_get_device device "$net"
|
||||
echo -n "${device:-$net} "
|
||||
done
|
||||
)
|
||||
|
||||
local workgroup description
|
||||
local hostname
|
||||
hostname="$(cat /proc/sys/kernel/hostname)"
|
||||
|
||||
config_get workgroup $1 workgroup "WORKGROUP"
|
||||
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/ksmbd/smb.conf.template > /var/etc/ksmbd/smb.conf
|
||||
|
||||
[ -e /etc/ksmbd/smb.conf ] || ln -nsf /var/etc/ksmbd/smb.conf /etc/ksmbd/smb.conf
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
smb_add_share()
|
||||
{
|
||||
local name
|
||||
local path
|
||||
local comment
|
||||
local users
|
||||
local create_mask
|
||||
local dir_mask
|
||||
local browseable
|
||||
local read_only
|
||||
local writeable
|
||||
local guest_ok
|
||||
local force_root
|
||||
local write_list
|
||||
local read_list
|
||||
local hide_dot_files
|
||||
local veto_files
|
||||
local inherit_owner
|
||||
local force_create_mode
|
||||
local force_directory_mode
|
||||
|
||||
config_get name $1 name
|
||||
config_get path $1 path
|
||||
config_get comment $1 comment
|
||||
config_get users $1 users
|
||||
config_get create_mask $1 create_mask
|
||||
config_get dir_mask $1 dir_mask
|
||||
config_get browseable $1 browseable
|
||||
config_get read_only $1 read_only
|
||||
config_get writeable $1 writeable
|
||||
config_get guest_ok $1 guest_ok
|
||||
config_get_bool force_root $1 force_root 0
|
||||
config_get write_list $1 write_list
|
||||
config_get read_list $1 read_list
|
||||
config_get hide_dot_files $1 hide_dot_files
|
||||
config_get veto_files $1 veto_files
|
||||
config_get inherit_owner $1 inherit_owner
|
||||
config_get force_create_mode $1 force_create_mode
|
||||
config_get force_directory_mode $1 force_directory_mode
|
||||
|
||||
[ -z "$name" ] || [ -z "$path" ] && return
|
||||
|
||||
{
|
||||
printf "\n[%s]\n\tpath = %s\n" "$name" "$path"
|
||||
[ -n "$comment" ] && printf "\tcomment = %s\n" "$comment"
|
||||
|
||||
if [ "$force_root" -eq 1 ]; then
|
||||
printf "\tforce user = %s\n" "root"
|
||||
printf "\tforce group = %s\n" "root"
|
||||
else
|
||||
[ -n "$users" ] && printf "\tvalid users = %s\n" "$users"
|
||||
fi
|
||||
|
||||
[ -n "$create_mask" ] && printf "\tcreate mask = %s\n" "$create_mask"
|
||||
[ -n "$dir_mask" ] && printf "\tdirectory mask = %s\n" "$dir_mask"
|
||||
[ -n "$force_create_mode" ] && printf "\tforce create mode = %s\n" "$force_create_mode"
|
||||
[ -n "$force_directory_mode" ] && printf "\tforce directory mode = %s\n" "$force_directory_mode"
|
||||
|
||||
[ -n "$browseable" ] && printf "\tbrowseable = %s\n" "$browseable"
|
||||
[ -n "$read_only" ] && printf "\tread only = %s\n" "$read_only"
|
||||
[ -n "$writeable" ] && printf "\twriteable = %s\n" "$writeable"
|
||||
|
||||
[ -n "$guest_ok" ] && printf "\tguest ok = %s\n" "$guest_ok"
|
||||
[ -n "$inherit_owner" ] && printf "\tinherit owner = %s\n" "$inherit_owner"
|
||||
|
||||
[ -n "$write_list" ] && printf "\twrite list = %s\n" "$write_list"
|
||||
[ -n "$read_list" ] && printf "\tread list = %s\n" "$read_list"
|
||||
|
||||
[ -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/ksmbd/smb.conf
|
||||
}
|
||||
|
||||
init_config()
|
||||
{
|
||||
mkdir -p /var/etc/ksmbd
|
||||
|
||||
config_load ksmbd
|
||||
config_foreach smb_header globals
|
||||
config_foreach smb_add_share share
|
||||
}
|
||||
|
||||
service_triggers()
|
||||
{
|
||||
# PROCD_RELOAD_DELAY=1000
|
||||
|
||||
procd_add_reload_trigger "dhcp" "system" "ksmbd"
|
||||
|
||||
local i
|
||||
for i in $SMBD_IFACE; do
|
||||
procd_add_reload_interface_trigger $i
|
||||
done
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
start_service()
|
||||
{
|
||||
init_config
|
||||
|
||||
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/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 '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/ksmbd/smb.conf
|
||||
procd_set_param limits nofile=16384
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop_service()
|
||||
{
|
||||
logger -p daemon.notice -t 'ksmbd' "Stopping Ksmbd userspace service."
|
||||
killall usmbd > /dev/null 2>&1
|
||||
|
||||
[ -e /sys/module/ksmbd ] && rmmod ksmbd > /dev/null 2>&1
|
||||
# kill server if we cant rmmod
|
||||
[ -e /sys/module/ksmbd ] && kill_server
|
||||
# next try
|
||||
[ -e /sys/module/ksmbd ] && rmmod ksmbd > /dev/null 2>&1
|
||||
|
||||
if [ -e /sys/module/ksmbd ]; then
|
||||
logger -p daemon.error -t 'ksmbd' "module still loaded after kill_server?"
|
||||
fi
|
||||
[ -f /tmp/usmbd.lock ] && rm /tmp/usmbd.lock
|
||||
}
|
||||
|
||||
# reload_service() {
|
||||
# restart "$@"
|
||||
# }
|
||||
@@ -0,0 +1,14 @@
|
||||
[global]
|
||||
netbios name = |NAME|
|
||||
server string = |DESCRIPTION|
|
||||
workgroup = |WORKGROUP|
|
||||
interfaces = |INTERFACES|
|
||||
bind interfaces only = yes
|
||||
ipc timeout = 20
|
||||
deadtime = 15
|
||||
map to guest = Bad User
|
||||
smb2 max read = 64K
|
||||
smb2 max write = 64K
|
||||
smb2 max trans = 64K
|
||||
cache read buffers = no
|
||||
cache trans buffers = no
|
||||
Reference in New Issue
Block a user