smbd: update to 3.1.1, rename to "ksmbd", "ksmbd-tools"
authorAndy Walsh <andy.walsh44+github@gmail.com>
Mon, 27 Jan 2020 21:03:28 +0000 (22:03 +0100)
committerAndy Walsh <andy.walsh44+github@gmail.com>
Mon, 27 Jan 2020 21:03:28 +0000 (22:03 +0100)
* 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>
14 files changed:
kernel/ksmbd/Makefile [new file with mode: 0644]
kernel/ksmbd/patches/01-keep_kmod_metadata.patch [new file with mode: 0644]
kernel/smbd/Makefile [deleted file]
kernel/smbd/patches/01-keep_kmod_metadata.patch [deleted file]
net/ksmbd-tools/Makefile [new file with mode: 0644]
net/ksmbd-tools/files/ksmbd.config [new file with mode: 0644]
net/ksmbd-tools/files/ksmbd.config.example [new file with mode: 0644]
net/ksmbd-tools/files/ksmbd.init [new file with mode: 0644]
net/ksmbd-tools/files/smb.conf.template [new file with mode: 0644]
net/smbd-tools/Makefile [deleted file]
net/smbd-tools/files/smb.conf.template [deleted file]
net/smbd-tools/files/smbd.config [deleted file]
net/smbd-tools/files/smbd.config.example [deleted file]
net/smbd-tools/files/smbd.init [deleted file]

diff --git a/kernel/ksmbd/Makefile b/kernel/ksmbd/Makefile
new file mode 100644 (file)
index 0000000..9673294
--- /dev/null
@@ -0,0 +1,51 @@
+include $(TOPDIR)/rules.mk
+
+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:=5cf00902b77206a56f20b8ec499aea061292a15003bbdd8194fcb2299fb2343e
+
+PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
+
+include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/fs-ksmbd
+       SUBMENU:=Filesystems
+       TITLE:=SMB kernel server support
+       URL:=https://github.com/cifsd-team/ksmbd
+       FILES:=$(PKG_BUILD_DIR)/ksmbd.ko
+       DEPENDS:= \
+               +kmod-nls-base \
+               +kmod-nls-utf8 \
+               +kmod-crypto-md4 \
+               +kmod-crypto-md5 \
+               +kmod-crypto-hmac \
+               +kmod-crypto-ecb \
+               +kmod-crypto-des \
+               +kmod-crypto-sha256 \
+               +kmod-crypto-cmac \
+               +kmod-crypto-sha512 \
+               +kmod-crypto-aead \
+               +kmod-crypto-ccm \
+               +kmod-crypto-gcm
+endef
+
+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
+
+define Build/Compile
+       $(KERNEL_MAKE) SUBDIRS="$(PKG_BUILD_DIR)" \
+       EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
+       CONFIG_SMB_SERVER=m \
+       modules
+endef
+
+$(eval $(call KernelPackage,fs-ksmbd))
diff --git a/kernel/ksmbd/patches/01-keep_kmod_metadata.patch b/kernel/ksmbd/patches/01-keep_kmod_metadata.patch
new file mode 100644 (file)
index 0000000..9fc547f
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/glob.h   2019-12-08
++++ b/glob.h   2019-12-08
+@@ -7,6 +7,8 @@
+ #ifndef __KSMBD_GLOB_H
+ #define __KSMBD_GLOB_H
++#undef CONFIG_MODULE_STRIPPED
++
+ #include <linux/ctype.h>
+ #include <linux/version.h>
diff --git a/kernel/smbd/Makefile b/kernel/smbd/Makefile
deleted file mode 100644 (file)
index f864489..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=smbd
-PKG_VERSION:=3.0.2
-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_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
-PKG_LICENSE:=GPL-2.0-or-later
-PKG_LICENSE_FILES:=COPYING
-
-include $(INCLUDE_DIR)/kernel.mk
-include $(INCLUDE_DIR)/package.mk
-
-define KernelPackage/fs-smbd
-       SUBMENU:=Filesystems
-       TITLE:=SMB kernel server support
-       URL:=https://github.com/cifsd-team/smbd
-       FILES:=$(PKG_BUILD_DIR)/smbd.ko
-       DEPENDS:= \
-               +kmod-nls-base \
-               +kmod-nls-utf8 \
-               +kmod-crypto-md4 \
-               +kmod-crypto-md5 \
-               +kmod-crypto-hmac \
-               +kmod-crypto-ecb \
-               +kmod-crypto-des \
-               +kmod-crypto-sha256 \
-               +kmod-crypto-cmac \
-               +kmod-crypto-sha512 \
-               +kmod-crypto-aead \
-               +kmod-crypto-ccm \
-               +kmod-crypto-gcm
-endef
-
-define KernelPackage/fs-smbd/description
-  Smbd 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
-
-define Build/Compile
-       $(KERNEL_MAKE) SUBDIRS="$(PKG_BUILD_DIR)" \
-       EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
-       CONFIG_SMB_SERVER=m \
-       modules
-endef
-
-$(eval $(call KernelPackage,fs-smbd))
diff --git a/kernel/smbd/patches/01-keep_kmod_metadata.patch b/kernel/smbd/patches/01-keep_kmod_metadata.patch
deleted file mode 100644 (file)
index 9240852..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/glob.h   2019-12-08
-+++ b/glob.h   2019-12-08
-@@ -7,6 +7,8 @@
- #ifndef __SMBD_GLOB_H
- #define __SMBD_GLOB_H
-+#undef CONFIG_MODULE_STRIPPED
-+
- #include <linux/ctype.h>
- #include <linux/version.h>
diff --git a/net/ksmbd-tools/Makefile b/net/ksmbd-tools/Makefile
new file mode 100644 (file)
index 0000000..5543a7f
--- /dev/null
@@ -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))
diff --git a/net/ksmbd-tools/files/ksmbd.config b/net/ksmbd-tools/files/ksmbd.config
new file mode 100644 (file)
index 0000000..52c6518
--- /dev/null
@@ -0,0 +1,3 @@
+config globals
+       option 'workgroup'              'WORKGROUP'
+       option 'description'    'Ksmbd on OpenWrt'
diff --git a/net/ksmbd-tools/files/ksmbd.config.example b/net/ksmbd-tools/files/ksmbd.config.example
new file mode 100644 (file)
index 0000000..9a457e0
--- /dev/null
@@ -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'
diff --git a/net/ksmbd-tools/files/ksmbd.init b/net/ksmbd-tools/files/ksmbd.init
new file mode 100644 (file)
index 0000000..6ae7cdb
--- /dev/null
@@ -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 "$@"
+# }
diff --git a/net/ksmbd-tools/files/smb.conf.template b/net/ksmbd-tools/files/smb.conf.template
new file mode 100644 (file)
index 0000000..4cb7be3
--- /dev/null
@@ -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
diff --git a/net/smbd-tools/Makefile b/net/smbd-tools/Makefile
deleted file mode 100644 (file)
index b8e4a0a..0000000
+++ /dev/null
@@ -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))
diff --git a/net/smbd-tools/files/smb.conf.template b/net/smbd-tools/files/smb.conf.template
deleted file mode 100644 (file)
index 4cb7be3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-[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
diff --git a/net/smbd-tools/files/smbd.config b/net/smbd-tools/files/smbd.config
deleted file mode 100644 (file)
index 0393ea7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-config globals
-       option 'workgroup'              'WORKGROUP'
-       option 'description'    'SMBD on OpenWrt'
diff --git a/net/smbd-tools/files/smbd.config.example b/net/smbd-tools/files/smbd.config.example
deleted file mode 100644 (file)
index 2c515d9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-config globals
-       option 'description'    'SMBD 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'
diff --git a/net/smbd-tools/files/smbd.init b/net/smbd-tools/files/smbd.init
deleted file mode 100644 (file)
index 00f1cf7..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/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  "SMBD 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
-
-       [ -e /etc/smbd/smb.conf ] || ln -nsf /var/etc/smbd/smb.conf /etc/smbd/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!"
-       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/smbd/smb.conf
-}
-
-init_config()
-{
-       mkdir -p /var/etc/smbd
-
-       config_load smbd
-       # allow copy&paste from samba UCI configs (we dont have a smbd wiki yet)
-       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"
-
-       local i
-       for i in $SMBD_IFACE; do
-               procd_add_reload_interface_trigger $i
-       done
-}
-
-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
-               fi
-       fi
-}
-
-start_service()
-{
-       init_config
-
-       if [ ! -e /etc/smbd/smb.conf ]; then
-               logger -p daemon.error -t 'smbd' "missing config /etc/smbd/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!"
-               exit 1
-       fi
-
-       logger -p daemon.notice -t 'smbd' "Starting SMBD 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 limits nofile=16384
-       procd_close_instance
-}
-
-stop_service()
-{
-       logger -p daemon.notice -t 'smbd' "Stopping SMBD userspace service."
-       killall usmbd > /dev/null 2>&1
-       
-       [ -e /sys/module/smbd ] && rmmod smbd > /dev/null 2>&1
-       # kill server if we cant rmmod
-       [ -e /sys/module/smbd ] && kill_server
-       # next try
-       [ -e /sys/module/smbd ] && rmmod smbd > /dev/null 2>&1
-       
-       if [ -e /sys/module/smbd ]; then
-               logger -p daemon.error -t 'smbd' "module still loaded after kill_server?"
-       fi
-       [ -f /tmp/smbd.lock ] && rm /tmp/smbd.lock
-}
-
-# reload_service() {
-       # restart "$@"
-# }