Signed-off-by: Andy Walsh <andy.walsh44+github@gmail.com>lilik-openwrt-22.03
@ -0,0 +1,90 @@ | |||
config SAMBA4_SERVER_ACL | |||
bool "ACL support (xattr)" | |||
depends on PACKAGE_samba4-server | |||
select PACKAGE_acl | |||
help | |||
installs: sharesec | |||
modules: vfs_acl_xattr vfs_acl_tdb vfs_posixacl | |||
Extended access control list support | |||
default n | |||
config SAMBA4_SERVER_AD_DC | |||
bool "Active Directory Domain Controller support (requires krb5-server) (EXPERIMENTAL)" | |||
depends on PACKAGE_samba4-server | |||
select PACKAGE_python-base | |||
select PACKAGE_python-crypto | |||
select PACKAGE_libopenssl | |||
select PACKAGE_libgnutls | |||
select PACKAGE_libopenldap | |||
help | |||
installs: samba (meta-daemon) python-crypt ntlm_auth | |||
scripts: samba-tool | |||
Run as a Active Directory Domain Controller | |||
see: https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller | |||
HINT: see section (# Using the Domain Controller as a File Server) | |||
NOTE: Extroot is recommend for this setup, as it is not optimized to run completely from RAM/tempfs! | |||
default n | |||
config SAMBA4_SERVER_AVAHI | |||
bool "Avahi support" | |||
depends on PACKAGE_samba4-server | |||
select PACKAGE_libavahi-client | |||
help | |||
Announce Samba resources via DNS/DNS-SD using the Avahi daemon | |||
default n | |||
config SAMBA4_SERVER_VFS | |||
bool "Common VFS modules" | |||
depends on PACKAGE_samba4-server | |||
help | |||
installs: | |||
modules: (vfs_btrfs) vfs_fruit vfs_shadow_copy2 vfs_recycle vfs_fake_perms vfs_readonly vfs_cap vfs_offline vfs_crossrename | |||
Commonly used VFS modules, vfs_btrfs requires kmod-fs-btrfs to be selected separately | |||
default y | |||
config SAMBA4_SERVER_QUOTAS | |||
bool "Disk quota support" | |||
depends on PACKAGE_samba4-server | |||
help | |||
installs: | |||
modules: vfs_default_quota | |||
Support for disk quotas using the quotas VFS module (vfs_default_quota) | |||
default n | |||
config SAMBA4_SERVER_VFSX | |||
bool "Extended VFS modules" | |||
depends on PACKAGE_samba4-server | |||
help | |||
installs: | |||
modules: vfs_virusfilter vfs_shell_snap vfs_commit vfs_worm vfs_xattr_tdb vfs_streams_xattr vfs_aio_fork vfs_aio_pthread (vfs_linux_xfs_sgid) vfs_netatalk vfs_dirsort vfs_fileid vfs_catia | |||
Additional VFS modules that aren't commonly used, vfs_linux_xfs_sgid requires kmod-fs-xfs to be selected separately | |||
default n | |||
config SAMBA4_SERVER_NETBIOS | |||
bool "NetBIOS support" | |||
depends on PACKAGE_samba4-server | |||
help | |||
installs: nmbd (daemon) | |||
Announce Samba resources via NetBIOS using the nmbd daemon | |||
WSD (Web Services for Devices) replaces the functionality of NetBIOS and is provided by the wsdd2 package (selected by default). | |||
Note: As of Windows 10 Fall Creators Update (1709) NetBIOS isn't supported unless the old SMB1 feature is reinstalled (not recommended). | |||
Network shares can be directly accessed via network paths '\\hostname\sharename' and mounted via 'map network drive' without NetBIOS or WSD. | |||
default n | |||
config SAMBA4_SERVER_WINBIND | |||
bool "Winbind support" | |||
depends on PACKAGE_samba4-server | |||
depends on SAMBA4_SERVER_AD_DC | |||
help | |||
installs: winbindd (daemon) wbinfo | |||
Support using domain users and groups in local commands, such as chown and chgrp. | |||
Display domain users and groups in local command's output, such as ls. | |||
see: https://wiki.samba.org/index.php/Configuring_Winbindd_on_a_Samba_AD_DC | |||
default n |
@ -0,0 +1,384 @@ | |||
# Based partially on (wongsyrone/hbl0307106015) versions | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=samba | |||
PKG_VERSION:=4.8.3 | |||
PKG_RELEASE:=1 | |||
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com> | |||
PKG_LICENSE:=GPL-3.0-only | |||
PKG_LICENSE_FILES:=COPYING | |||
PKG_SOURCE_URL:=https://download.samba.org/pub/samba/stable/ | |||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||
PKG_HASH:=e0569a8a605d5dfb49f1fdd11db796f4d36fe0351c4a7f21387ef253010b82ed | |||
# Buildroot bug? Can't add target deps via '+SAMBA4_SERVER_AD_DC:python-crypto' (as work-around we select via config.in) | |||
PKG_BUILD_DEPENDS:=perl/host python/host qemu-userspace/host SAMBA4_SERVER_AD_DC:python-crypto | |||
PKG_CONFIG_DEPENDS:= \ | |||
CONFIG_SAMBA4_SERVER_NETBIOS \ | |||
CONFIG_SAMBA4_SERVER_AVAHI \ | |||
CONFIG_SAMBA4_SERVER_VFS \ | |||
CONFIG_SAMBA4_SERVER_VFSX \ | |||
CONFIG_SAMBA4_SERVER_QUOTAS \ | |||
CONFIG_SAMBA4_SERVER_ACL \ | |||
CONFIG_SAMBA4_SERVER_AD_DC \ | |||
CONFIG_SAMBA4_SERVER_WINBIND \ | |||
CONFIG_PACKAGE_kmod-fs-btrfs \ | |||
CONFIG_PACKAGE_kmod-fs-xfs | |||
include $(INCLUDE_DIR)/package.mk | |||
define Package/samba4/Default | |||
SECTION:=net | |||
CATEGORY:=Network | |||
TITLE:=Samba $(PKG_VERSION) | |||
URL:=http://www.samba.org/ | |||
endef | |||
define Package/samba4/Default/description | |||
The Samba software suite is a collection of programs that implements the | |||
SMB/CIFS protocol for UNIX systems, allowing you to serve files and printers. | |||
Samba 4 implements up-to protocol version SMB v3.1.1 (Win10), supports mDNS via AVAHI and a AD-DC setup via krb5. | |||
NOTE: No cluster and printer support. | |||
endef | |||
define Package/samba4-libs | |||
$(call Package/samba4/Default) | |||
TITLE+= libs | |||
DEPENDS:= +zlib +libtirpc +krb5-libs +libpopt \ | |||
+PACKAGE_libcap:libcap +PACKAGE_jansson:jansson +PACKAGE_libpthread:libpthread +PACKAGE_libnettle:libnettle +PACKAGE_libarchive:libarchive \ | |||
+SAMBA4_SERVER_ACL:acl +SAMBA4_SERVER_ACL:attr \ | |||
+SAMBA4_SERVER_AVAHI:libavahi-client \ | |||
+SAMBA4_SERVER_AD_DC:python-base +SAMBA4_SERVER_AD_DC:libopenssl +SAMBA4_SERVER_AD_DC:libgnutls +SAMBA4_SERVER_AD_DC:libopenldap | |||
endef | |||
define Package/samba4-server | |||
$(call Package/samba4/Default) | |||
TITLE+= server | |||
DEPENDS:= +samba4-libs | |||
endef | |||
define Package/samba4-server/description | |||
installs: smbd (daemon) smbpasswd pdbedit testparm | |||
This provides the basic fileserver service and is the minimum needed to serve file shares. | |||
HINT: https://fitzcarraldoblog.wordpress.com/2016/10/17/a-correct-method-of-configuring-samba-for-browsing-smb-shares-in-a-home-network/ | |||
endef | |||
define Package/samba4-server/config | |||
select PACKAGE_wsdd2 | |||
source "$(SOURCE)/Config.in" | |||
endef | |||
define Package/samba4-client | |||
$(call Package/samba4/Default) | |||
TITLE+= client | |||
DEPENDS:= +samba4-libs | |||
endef | |||
define Package/samba4-client/description | |||
installs: smbclient cifsdd | |||
The smbclient program implements a simple ftp-like client for accessing SMB shares | |||
endef | |||
define Package/samba4-admin | |||
$(call Package/samba4/Default) | |||
TITLE+= admin tools | |||
DEPENDS:= +samba4-libs | |||
endef | |||
define Package/samba4-admin/description | |||
installs: net smbcontrol profiles rpcclient smbcacls smbcquotas | |||
Administration tools collection | |||
endef | |||
define Package/samba4-utils | |||
$(call Package/samba4/Default) | |||
TITLE+= utils | |||
DEPENDS:= +samba4-libs | |||
endef | |||
define Package/samba4-utils/description | |||
installs: smbstatus smbtree smbget nmblookup mvxattr | |||
Utilities collection | |||
endef | |||
TARGET_CFLAGS += -ffunction-sections -fdata-sections | |||
TARGET_LDFLAGS += -Wl,--gc-sections | |||
CONFIGURE_VARS += \ | |||
CPP="$(TARGET_CROSS)cpp" | |||
CONFIGURE_CMD = ./buildtools/bin/waf | |||
# Strip options that WAF configure script does not recognize | |||
CONFIGURE_ARGS:=$(filter-out \ | |||
--host=% \ | |||
--build=% \ | |||
--program-suffix=% \ | |||
--disable-nls \ | |||
--disable-ipv6 \ | |||
, $(CONFIGURE_ARGS)) | |||
CONFIGURE_ARGS += \ | |||
--hostcc="$(HOSTCC)" \ | |||
--cross-compile \ | |||
--cross-execute="qemu-$(ARCH) -L $(STAGING_DIR_ROOT)" \ | |||
--disable-cups \ | |||
--disable-iprint \ | |||
--disable-cephfs \ | |||
--disable-fault-handling \ | |||
--disable-glusterfs \ | |||
--disable-rpath \ | |||
--disable-rpath-install \ | |||
--disable-rpath-private-install \ | |||
--enable-fhs \ | |||
--without-automount \ | |||
--without-iconv \ | |||
--without-lttng \ | |||
--without-ntvfs-fileserver \ | |||
--without-pam \ | |||
--without-systemd \ | |||
--without-utmp \ | |||
--without-dmapi \ | |||
--without-fam \ | |||
--without-gettext \ | |||
--without-regedit \ | |||
--without-gpgme | |||
# Optional AES-NI support - https://lists.samba.org/archive/samba-technical/2017-September/122738.html | |||
# Support for Nettle wasn't comitted | |||
CONFIGURE_ARGS += --accel-aes=none | |||
CONFIGURE_ARGS += \ | |||
--with-lockdir=/var/lock \ | |||
--with-logfilebase=/var/log \ | |||
--with-piddir=/var/run \ | |||
--with-privatedir=/etc/samba | |||
CONFIGURE_ARGS += \ | |||
--with-system-mitkrb5 "$(STAGING_DIR)/usr" \ | |||
--with-system-mitkdc=/usr/sbin/krb5kdc | |||
## embedded-heimdal | |||
# --bundled-libraries=talloc,tevent,tdb,ldb,com_err,cmocka,roken,wind,hx509,asn1,heimbase,hcrypto,krb5,gssapi,heimntlm,hdb,kdc,NONE | |||
ifeq ($(CONFIG_SAMBA4_SERVER_AVAHI),y) | |||
CONFIGURE_ARGS += --enable-avahi | |||
else | |||
CONFIGURE_ARGS += --disable-avahi | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_QUOTAS),y) | |||
CONFIGURE_ARGS += --with-quotas | |||
else | |||
CONFIGURE_ARGS += --without-quotas | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y) | |||
CONFIGURE_ARGS += --with-acl-support | |||
else | |||
CONFIGURE_ARGS += --without-acl-support | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||
CONFIGURE_ARGS += --enable-gnutls --with-dnsupdate --with-ads --with-ldap | |||
TARGET_CFLAGS := -I$(STAGING_DIR)/usr/include/python2.7 $(TARGET_CFLAGS) | |||
else | |||
CONFIGURE_ARGS += --without-ad-dc --disable-python --nopyc --nopyo --disable-gnutls --without-dnsupdate --without-ads --without-ldap | |||
CONFIGURE_VARS += \ | |||
python_LDFLAGS="" \ | |||
python_LIBDIR="" | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y) | |||
CONFIGURE_ARGS += --with-winbind | |||
else | |||
CONFIGURE_ARGS += --without-winbind | |||
endif | |||
SAMBA4_IDMAP_MODULES := | |||
SAMBA4_IDMAP_MODULES_SHARED := | |||
SAMBA4_PDB_MODULES :=pdb_smbpasswd,pdb_tdbsam, | |||
SAMBA4_AUTH_MODULES :=auth_builtin,auth_sam,auth_unix,auth_script, | |||
SAMBA4_VFS_MODULES :=vfs_default, | |||
ifeq ($(CONFIG_SAMBA4_SERVER_VFS),y) | |||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_fruit,vfs_shadow_copy2,vfs_recycle,vfs_fake_perms,vfs_readonly,vfs_cap,vfs_offline,vfs_crossrename, | |||
ifeq ($(CONFIG_PACKAGE_kmod-fs-btrfs),y) | |||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_btrfs, | |||
endif | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_VFSX),y) | |||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_virusfilter,vfs_shell_snap,vfs_commit,vfs_worm,vfs_xattr_tdb,vfs_streams_xattr,vfs_aio_fork,vfs_aio_pthread,vfs_netatalk,vfs_dirsort,vfs_fileid,vfs_catia, | |||
ifeq ($(CONFIG_PACKAGE_kmod-fs-xfs),y) | |||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_linux_xfs_sgid, | |||
endif | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_QUOTAS),y) | |||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_default_quota, | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y) | |||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_posixacl,vfs_acl_xattr,vfs_acl_tdb, | |||
# vfs_zfsacl needs https://github.com/zfsonlinux/zfs/tree/master/include/sys/zfs_acl.h | |||
# vfs_nfs4acl_xattr needs https://github.com/notriddle/libdrpc/blob/master/rpc/xdr.h | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||
SAMBA4_PDB_MODULES :=$(SAMBA4_PDB_MODULES)pdb_samba_dsdb, | |||
SAMBA4_AUTH_MODULES :=$(SAMBA4_AUTH_MODULES)auth_samba4, | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y) | |||
SAMBA4_IDMAP_MODULES :=$(SAMBA4_IDMAP_MODULES)idmap_passdb,idmap_nss,idmap_tdb,idmap_tdb2,idmap_script,nss_info_template, | |||
SAMBA4_IDMAP_MODULES_SHARED :=$(SAMBA4_IDMAP_MODULES_SHARED)idmap_autorid,idmap_rid,idmap_ad,idmap_rfc2307, | |||
# idmap_ad needs --with-ads | |||
# idmap_rfc2307 needs ldap headers | |||
SAMBA4_AUTH_MODULES :=$(SAMBA4_AUTH_MODULES)auth_winbind, | |||
endif | |||
SAMBA4_MODULES :=${SAMBA4_AUTH_MODULES}${SAMBA4_PDB_MODULES}${SAMBA4_IDMAP_MODULES}${SAMBA4_VFS_MODULES} | |||
SAMBA4_MODULES_SHARDED :=${SAMBA4_IDMAP_MODULES_SHARED} | |||
CONFIGURE_ARGS += \ | |||
--with-static-modules=$(SAMBA4_MODULES)!DEFAULT,!FORCED \ | |||
--with-shared-modules=$(SAMBA4_MODULES_SHARDED)!DEFAULT,!FORCED | |||
# Setup build/install targets | |||
# CONFIG_PACKAGE_samba4-server | |||
BUILD_TARGETS_SERVER :=smbd/smbd,smbpasswd,pdbedit,testparm | |||
# Optional server targets | |||
ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y) | |||
BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),sharesec | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_NETBIOS),y) | |||
BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),nmbd | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||
BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),samba,nsstest,ntlm_auth | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y) | |||
BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),winbindd,wbinfo,winbind_krb5_locator | |||
endif | |||
# CONFIG_PACKAGE_samba4-client | |||
BUILD_TARGETS_CLIENT :=client/smbclient,client/cifsdd | |||
# CONFIG_PACKAGE_samba4-admin | |||
BUILD_TARGETS_ADMIN :=net,smbcontrol,profiles,rpcclient,smbcacls,smbcquotas | |||
# CONFIG_PACKAGE_samba4-utils | |||
BUILD_TARGETS_UTILS :=smbstatus,smbtree,smbget,mvxattr,nmblookup | |||
# lib bundling | |||
# NOTE: Compile some unique libs into related bins, so we end-up with a unified samba4-libs base, mainly to allow package separation (server, client, admin, utils) | |||
CONFIGURE_ARGS += --builtin-libraries=smbclient,netapi,samba-passdb,ads,auth,cli-spoolss,libcli-lsa3,gpext,talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace | |||
#CONFIGURE_ARGS += --nonshared-binary=$(BUILD_TARGETS_SERVER) | |||
# NOTE: bundle + make private, we want to avoid version configuration (build, link) conflicts | |||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||
CONFIGURE_ARGS += --bundled-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace,pytalloc-util,pyldb-util,NONE | |||
else | |||
CONFIGURE_ARGS += --bundled-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace,NONE | |||
endif | |||
CONFIGURE_ARGS += --private-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace | |||
define Build/Prepare | |||
$(Build/Prepare/Default) | |||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),) | |||
# un-bundle dnspython | |||
$(SED) '/"dns.resolver":/d' $(PKG_BUILD_DIR)/third_party/wscript | |||
# unbundle iso8601 | |||
$(SED) '/"iso8601":/d' $(PKG_BUILD_DIR)/third_party/wscript | |||
endif | |||
endef | |||
define Build/Configure | |||
$(call Build/Configure/Default,configure) | |||
endef | |||
# BUG: We need to use "waf install --targets=" otherwise a "make install" or "waf install" will retrigger a full recompile of all possible targets! | |||
define Build/Compile | |||
(cd $(PKG_BUILD_DIR); \ | |||
./buildtools/bin/waf install -j$(shell nproc) \ | |||
--targets=$(SAMBA4_MODULES)$(SAMBA4_MODULES_SHARDED)$(BUILD_TARGETS_SERVER),$(BUILD_TARGETS_UTILS),$(BUILD_TARGETS_ADMIN),$(BUILD_TARGETS_CLIENT) \ | |||
--destdir="$(PKG_INSTALL_DIR)" \ | |||
) | |||
endef | |||
# No default install see above | |||
define Build/Install | |||
endef | |||
define Package/samba4-libs/install | |||
$(INSTALL_DIR) $(1)/usr/lib | |||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/ | |||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/*.so* $(1)/usr/lib/ | |||
endef | |||
define Package/samba4-client/install | |||
$(INSTALL_DIR) $(1)/usr/bin | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbclient,cifsdd} $(1)/usr/bin/ | |||
endef | |||
define Package/samba4-admin/install | |||
$(INSTALL_DIR) $(1)/usr/bin | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{net,smbcontrol,profiles,rpcclient,smbcacls,smbcquotas} $(1)/usr/bin/ | |||
endef | |||
define Package/samba4-utils/install | |||
$(INSTALL_DIR) $(1)/usr/bin | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbstatus,smbtree,smbget,mvxattr,nmblookup} $(1)/usr/bin/ | |||
endef | |||
define Package/samba4-server/install | |||
$(INSTALL_DIR) $(1)/usr/lib/samba | |||
if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/idmap ]; then \ | |||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/idmap $(1)/usr/lib/samba/; \ | |||
fi | |||
if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/auth ]; then \ | |||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/auth $(1)/usr/lib/samba/; \ | |||
fi | |||
if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/vfs ]; then \ | |||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/vfs $(1)/usr/lib/samba/; \ | |||
fi | |||
if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/pdb ]; then \ | |||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/pdb $(1)/usr/lib/samba/; \ | |||
fi | |||
$(INSTALL_DIR) $(1)/usr/bin | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbpasswd,pdbedit,testparm} $(1)/usr/bin/ | |||
$(INSTALL_DIR) $(1)/usr/sbin | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/smbd $(1)/usr/sbin/ | |||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/python2.7 $(1)/usr/lib/ | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{samba-tool,ntlm_auth} $(1)/usr/bin | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{samba,samba_gpoupdate,samba_dnsupdate,samba_kcc,samba_spnupdate,samba_upgradedns} $(1)/usr/sbin/ | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_NETBIOS),y) | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nmbd $(1)/usr/sbin/ | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y) | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wbinfo $(1)/usr/bin/ | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/winbindd $(1)/usr/sbin/ | |||
endif | |||
ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y) | |||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sharesec $(1)/usr/bin/ | |||
endif | |||
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/samba $(1)/etc/init.d | |||
$(INSTALL_DATA) ./files/samba.config $(1)/etc/config/samba4 | |||
$(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/samba | |||
$(INSTALL_BIN) ./files/samba.init $(1)/etc/init.d/samba4 | |||
endef | |||
define Package/samba4-server/conffiles | |||
/etc/config/samba4 | |||
/etc/samba/smb.conf.template | |||
/etc/samba/smb.conf | |||
/etc/samba/smbpasswd | |||
/etc/samba/secrets.tdb | |||
/etc/samba/passdb.tdb | |||
/etc/samba/idmap.ldb | |||
/etc/samba/lmhosts | |||
/etc/nsswitch.conf | |||
endef | |||
$(eval $(call BuildPackage,samba4-libs)) | |||
$(eval $(call BuildPackage,samba4-server)) | |||
$(eval $(call BuildPackage,samba4-client)) | |||
$(eval $(call BuildPackage,samba4-admin)) | |||
$(eval $(call BuildPackage,samba4-utils)) |
@ -0,0 +1,7 @@ | |||
config samba | |||
option 'name' 'OpenWrt-SMB' | |||
option 'workgroup' 'WORKGROUP' | |||
option 'description' 'Samba on OpenWrt' | |||
option 'charset' 'UTF-8' | |||
option 'homes' '0' | |||
@ -0,0 +1,192 @@ | |||
#!/bin/sh /etc/rc.common | |||
START=99 | |||
USE_PROCD=1 | |||
smb_header() { | |||
config_get samba_iface $1 interface "loopback lan" | |||
# resolve interfaces | |||
local interfaces=$( | |||
. /lib/functions/network.sh | |||
local net | |||
for net in $samba_iface; do | |||
local device | |||
network_is_up $net || continue | |||
network_get_device device "$net" | |||
echo -n "${device:-$net} " | |||
done | |||
) | |||
local name workgroup description charset | |||
local hostname="$(uci_get system.@system[0].hostname)" | |||
config_get name $1 name "${hostname:-OpenWrt}" | |||
config_get workgroup $1 workgroup "${hostname:-WORKGROUP}" | |||
config_get description $1 description "Samba on ${hostname:-OpenWrt}" | |||
config_get charset $1 charset "UTF-8" | |||
config_get_bool DISABLE_NETBIOS $1 disable_netbios 0 | |||
config_get_bool DISABLE_AD_DC $1 disable_ad_dc 0 | |||
config_get_bool DISABLE_WINBIND $1 disable_winbind 0 | |||
mkdir -p /var/etc | |||
sed -e "s#|NAME|#$name#g" \ | |||
-e "s#|WORKGROUP|#$workgroup#g" \ | |||
-e "s#|DESCRIPTION|#$description#g" \ | |||
-e "s#|INTERFACES|#$interfaces#g" \ | |||
-e "s#|CHARSET|#$charset#g" \ | |||
/etc/samba/smb.conf.template > /var/etc/smb.conf | |||
echo -e "\n######### Dynamic written config options #########\n" >> /var/etc/smb.conf | |||
if [ "$DISABLE_NETBIOS" -eq 1 ] || [ ! -x /usr/sbin/nmbd ]; then | |||
echo -e "\tdisable netbios = yes" >> /var/etc/smb.conf | |||
fi | |||
local homes | |||
config_get_bool homes $1 homes 0 | |||
[ $homes -gt 0 ] && { | |||
cat <<EOT >> /var/etc/smb.conf | |||
[homes] | |||
comment = Home Directories | |||
browsable = no | |||
writable = yes | |||
read only = no | |||
create mask = 0750 | |||
EOT | |||
} | |||
[ -L /etc/samba/smb.conf ] || ln -nsf /var/etc/smb.conf /etc/samba/smb.conf | |||
} | |||
smb_add_share() { | |||
local name | |||
local path | |||
local users | |||
local public | |||
local writable | |||
local printable | |||
local create_mask | |||
local browseable | |||
local read_only | |||
local guest_ok | |||
local guest_only | |||
local inherit_owner | |||
local vfs_objects | |||
config_get name $1 name | |||
config_get path $1 path | |||
config_get users $1 users | |||
config_get public $1 public | |||
config_get writable $1 writable | |||
config_get printable $1 printable | |||
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 guest_ok $1 guest_ok | |||
config_get guest_only $1 guest_only | |||
config_get inherit_owner $1 inherit_owner | |||
config_get vfs_objects $1 vfs_objects | |||
[ -z "$name" -o -z "$path" ] && return | |||
echo -e "\n[$name]\n\tpath = $path" >> /var/etc/smb.conf | |||
[ -n "$users" ] && echo -e "\tvalid users = $users" >> /var/etc/smb.conf | |||
[ -n "$public" ] && echo -e "\tpublic = $public" >> /var/etc/smb.conf | |||
[ -n "$writable" ] && echo -e "\twritable = $writable" >> /var/etc/smb.conf | |||
[ -n "$printable" ] && echo -e "\tprintable = $printable" >> /var/etc/smb.conf | |||
[ -n "$create_mask" ] && echo -e "\tcreate mask = $create_mask" >> /var/etc/smb.conf | |||
[ -n "$dir_mask" ] && echo -e "\tdirectory mask = $dir_mask" >> /var/etc/smb.conf | |||
[ -n "$browseable" ] && echo -e "\tbrowseable = $browseable" >> /var/etc/smb.conf | |||
[ -n "$read_only" ] && echo -e "\tread only = $read_only" >> /var/etc/smb.conf | |||
[ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /var/etc/smb.conf | |||
[ -n "$guest_only" ] && echo -e "\tguest only = $guest_only" >> /var/etc/smb.conf | |||
[ -n "$inherit_owner" ] && echo -e "\tinherit owner = $inherit_owner" >> /var/etc/smb.conf | |||
[ -n "$vfs_objects" ] && echo -e "\tvfs objects = $vfs_objects" >> /var/etc/smb.conf | |||
} | |||
init_config() { | |||
# Create samba dirs | |||
[ -d /var/lib/samba ] || mkdir -p /var/lib/samba | |||
[ -d /var/cache/samba ] || mkdir -p /var/cache/samba | |||
[ -d /var/run/samba ] || mkdir -p /var/run/samba | |||
[ -d /var/log/samba ] || mkdir -p /var/log/samba | |||
[ -d /var/lock ] && chmod 0755 /var/lock || { | |||
mkdir -p /var/lock | |||
chmod 0755 /var/lock | |||
} | |||
config_load samba4 | |||
config_foreach smb_header samba | |||
config_foreach smb_add_share sambashare | |||
} | |||
reload_service() { | |||
init_config | |||
killall -HUP samba | |||
killall -HUP smbd | |||
killall -HUP nmbd | |||
killall -HUP winbindd | |||
} | |||
service_triggers() { | |||
procd_add_reload_trigger samba4 | |||
local i | |||
for i in $samba_iface; do | |||
procd_add_reload_interface_trigger $i | |||
done | |||
} | |||
start_service() { | |||
init_config | |||
# start main AC-DC daemon, will spawn (smbd,nmbd,winbindd) as needed/configured. | |||
if [ "$DISABLE_AD_DC" -ne 1 ] && [ -x /usr/sbin/samba ]; then | |||
procd_open_instance | |||
procd_set_param command /usr/sbin/samba -F | |||
procd_set_param respawn | |||
procd_set_param file /var/etc/smb.conf | |||
procd_close_instance | |||
else | |||
# start fileserver daemon | |||
procd_open_instance | |||
procd_set_param command /usr/sbin/smbd -F | |||
procd_set_param respawn | |||
procd_set_param file /var/etc/smb.conf | |||
procd_close_instance | |||
# start netbios daemon | |||
if [ "$DISABLE_NETBIOS" -ne 1 ] && [ -x /usr/sbin/nmbd ]; then | |||
procd_open_instance | |||
procd_set_param command /usr/sbin/nmbd -F | |||
procd_set_param respawn | |||
procd_set_param file /var/etc/smb.conf | |||
procd_close_instance | |||
fi | |||
# start winbind daemon | |||
if [ "$DISABLE_WINBIND" -ne 1 ] && [ -x /usr/sbin/winbindd ]; then | |||
procd_open_instance | |||
procd_set_param command /usr/sbin/winbindd -F | |||
procd_set_param respawn | |||
procd_set_param file /var/etc/smb.conf | |||
procd_close_instance | |||
fi | |||
fi | |||
# lower priority using renice (if found) | |||
if [ -x /usr/bin/renice ]; then | |||
[ -x /usr/sbin/samba ] && renice -n 2 $(pidof samba) | |||
[ -x /usr/sbin/smbd ] && renice -n 2 $(pidof smbd) | |||
[ -x /usr/sbin/nmbd ] && renice -n 2 $(pidof nmbd) | |||
[ -x /usr/sbin/winbindd ] && renice -n 2 $(pidof winbindd) | |||
fi | |||
} |
@ -0,0 +1,100 @@ | |||
[global] | |||
netbios name = |NAME| | |||
interfaces = |INTERFACES| | |||
server string = |DESCRIPTION| | |||
unix charset = |CHARSET| | |||
workgroup = |WORKGROUP| | |||
## This global parameter allows the Samba admin to limit what interfaces on a machine will serve SMB requests. | |||
bind interfaces only = yes | |||
## time for inactive connections to-be closed in minutes | |||
deadtime = 15 | |||
## disable core dumps | |||
enable core files = no | |||
## set security (auto, user, domain, ads) | |||
security = user | |||
## This parameter controls whether a remote client is allowed or required to use SMB encryption. | |||
## It has different effects depending on whether the connection uses SMB1 or SMB2 and newer: | |||
## If the connection uses SMB1, then this option controls the use of a Samba-specific extension to the SMB protocol introduced in Samba 3.2 that makes use of the Unix extensions. | |||
## If the connection uses SMB2 or newer, then this option controls the use of the SMB-level encryption that is supported in SMB version 3.0 and above and available in Windows 8 and newer. | |||
##(default/auto,desired,required,off) | |||
#smb encrypt = default | |||
## set invalid users | |||
invalid users = root | |||
## map unknow users to guest | |||
map to guest = Bad User | |||
## allow client access to accounts that have null passwords. | |||
null passwords = yes | |||
## The old plaintext passdb backend. Some Samba features will not work if this passdb backend is used. (NOTE: enabled for size reasons) | |||
## (tdbsam,smbpasswd,ldapsam) | |||
passdb backend = smbpasswd | |||
## Set location of smbpasswd ('smbd -b' will show default compiled location) | |||
#smb passwd file = /etc/samba/smbpasswd | |||
## LAN/WAN options (IPTOS_LOWDELAY TCP_NODELAY) WAN (IPTOS_THROUGHPUT) | |||
socket options = IPTOS_LOWDELAY TCP_NODELAY | |||
## lower CPU useage if supported | |||
use sendfile = yes | |||
## samba will behave as previous versions of Samba would and will fail the lock request immediately if the lock range cannot be obtained. | |||
#blocking locks = No | |||
## disable loading of all printcap printers by default (iprint, cups, lpstat) | |||
load printers = No | |||
printcap name = /dev/null | |||
## Disable that nmbd is acting as a WINS server for unknow netbios names | |||
#dns proxy = No | |||
## win/unix user mapping backend | |||
#idmap config * : backend = tdb | |||
## Allows the server name that is advertised through MDNS to be set to the hostname rather than the Samba NETBIOS name. | |||
## This allows an administrator to make Samba registered MDNS records match the case of the hostname rather than being in all capitals. | |||
## (netbios, mdns) | |||
#mdns name = mdns | |||
## Clients that only support netbios won't be able to see your samba server when netbios support is disabled. | |||
#disable netbios = Yes | |||
## Setting this value to no will cause nmbd never to become a local master browser. | |||
#local master = no | |||
## (auto, yes) If this is set to yes, on startup, nmbd will force an election, and it will have a slight advantage in winning the election. It is recommended that this parameter is used in conjunction with domain master = yes, so that nmbd can guarantee becoming a domain master. | |||
#preferred master = yes | |||
## (445 139) Specifies which ports the server should listen on for SMB traffic. | |||
## 139 is netbios/nmbd | |||
#smb ports = 445 139 | |||
## This is a list of files and directories that are neither visible nor accessible. | |||
## Each entry in the list must be separated by a '/', which allows spaces to be included in the entry. '*' and '?' can be used to specify multiple files or directories as in DOS wildcards. | |||
veto files = /Thumbs.db/.DS_Store/._.DS_Store/.apdisk/ | |||
## If a directory that is to be deleted contains nothing but veto files this deletion will fail unless you also set the delete veto files parameter to yes. | |||
delete veto files = yes | |||
################ Filesystem and creation rules ################ | |||
## reported filesystem type (NTFS,Samba,FAT) | |||
#fstype = FAT | |||
## Allows a user who has write access to the file (by whatever means, including an ACL permission) to modify the permissions (including ACL) on it. | |||
#dos filemode = Yes | |||
## file/dir creating rules | |||
#create mask = 0666 | |||
#directory mask = 0777 | |||
#force group = root | |||
#force user = root | |||
#inherit owner = windows and unix | |||
################################################################ |
@ -0,0 +1,29 @@ | |||
--- samba-4.4.0rc2/source3/wscript | |||
+++ samba-4.4.0rc2/source3/wscript | |||
@@ -870,7 +870,7 @@ | |||
if conf.env.with_iconv: | |||
conf.DEFINE('HAVE_ICONV', 1) | |||
- if Options.options.with_pam: | |||
+ if Options.options.with_pam != False: | |||
use_pam=True | |||
conf.CHECK_HEADERS('security/pam_appl.h pam/pam_appl.h') | |||
if not conf.CONFIG_SET('HAVE_SECURITY_PAM_APPL_H') and not conf.CONFIG_SET('HAVE_PAM_PAM_APPL_H'): | |||
@@ -943,6 +943,17 @@ | |||
conf.DEFINE('WITH_PAM', 1) | |||
conf.DEFINE('WITH_PAM_MODULES', 1) | |||
+ else: | |||
+ Logs.warn("PAM disabled") | |||
+ use_pam=False | |||
+ conf.undefine('WITH_PAM') | |||
+ conf.undefine('WITH_PAM_MODULES') | |||
+ conf.undefine('HAVE_SECURITY_PAM_APPL_H') | |||
+ conf.undefine('PAM_RHOST') | |||
+ conf.undefine('PAM_TTY') | |||
+ conf.undefine('HAVE_PAM_PAM_APPL_H') | |||
+ | |||
+ | |||
seteuid = False | |||
# |
@ -0,0 +1,19 @@ | |||
samba: build dnsserver_common code | |||
Just 'install' does not seem to do it. | |||
Upstream-Status: Pending | |||
Signed-off-by: Joe Slater <joe.slater@windriver.com> | |||
--- a/source4/dns_server/wscript_build | |||
+++ b/source4/dns_server/wscript_build | |||
@@ -4,7 +4,7 @@ bld.SAMBA_LIBRARY('dnsserver_common', | |||
source='dnsserver_common.c', | |||
deps='samba-util samba-errors ldbsamba clidns', | |||
private_library=True, | |||
- install=bld.AD_DC_BUILD_IS_ENABLED() | |||
+ enabled=bld.AD_DC_BUILD_IS_ENABLED() | |||
) | |||
bld.SAMBA_MODULE('service_dns', |
@ -0,0 +1,20 @@ | |||
--- a/source3/lib/messages.c | |||
+++ b/source3/lib/messages.c | |||
@@ -221,7 +221,7 @@ struct messaging_context *messaging_init | |||
return NULL; | |||
} | |||
- priv_path = private_path("msg.sock"); | |||
+ priv_path = lock_path("msg.sock"); | |||
if (priv_path == NULL) { | |||
TALLOC_FREE(ctx); | |||
return NULL; | |||
@@ -311,7 +311,7 @@ NTSTATUS messaging_reinit(struct messagi | |||
msg_ctx->msg_dgm_ref = messaging_dgm_ref( | |||
msg_ctx, msg_ctx->event_ctx, &msg_ctx->id.unique_id, | |||
- private_path("msg.sock"), lck_path, | |||
+ lock_path("msg.sock"), lck_path, | |||
messaging_recv_cb, msg_ctx, &ret); | |||
if (msg_ctx->msg_dgm_ref == NULL) { |
@ -0,0 +1,11 @@ | |||
--- a/source4/lib/messaging/messaging.c | |||
+++ b/source4/lib/messaging/messaging.c | |||
@@ -323,7 +323,7 @@ struct imessaging_context *imessaging_in | |||
goto fail; | |||
} | |||
- msg->sock_dir = lpcfg_private_path(msg, lp_ctx, "msg.sock"); | |||
+ msg->sock_dir = lpcfg_lock_path(msg, lp_ctx, "msg.sock"); | |||
if (msg->sock_dir == NULL) { | |||
goto fail; | |||
} |
@ -0,0 +1,58 @@ | |||
Some modules such as dynamic library maybe cann't be imported while cross compile, | |||
we just check whether does the module exist. | |||
Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> | |||
Index: samba-4.4.2/buildtools/wafsamba/samba_bundled.py | |||
=================================================================== | |||
--- samba-4.4.2.orig/buildtools/wafsamba/samba_bundled.py | |||
+++ samba-4.4.2/buildtools/wafsamba/samba_bundled.py | |||
@@ -2,6 +2,7 @@ | |||
import sys | |||
import Build, Options, Logs | |||
+import imp, os | |||
from Configure import conf | |||
from samba_utils import TO_LIST | |||
@@ -230,17 +231,32 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, li | |||
# versions | |||
minversion = minimum_library_version(conf, libname, minversion) | |||
- try: | |||
- m = __import__(modulename) | |||
- except ImportError: | |||
- found = False | |||
- else: | |||
+ # Find module in PYTHONPATH | |||
+ stuff = imp.find_module(modulename, [os.environ["PYTHONPATH"]]) | |||
+ if stuff: | |||
try: | |||
- version = m.__version__ | |||
- except AttributeError: | |||
+ m = imp.load_module(modulename, stuff[0], stuff[1], stuff[2]) | |||
+ except ImportError: | |||
found = False | |||
+ | |||
+ if conf.env.CROSS_COMPILE: | |||
+ # Some modules such as dynamic library maybe cann't be imported | |||
+ # while cross compile, we just check whether the module exist | |||
+ Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (stuff[1])) | |||
+ found = True | |||
else: | |||
- found = tuplize_version(version) >= tuplize_version(minversion) | |||
+ try: | |||
+ version = m.__version__ | |||
+ except AttributeError: | |||
+ found = False | |||
+ else: | |||
+ found = tuplize_version(version) >= tuplize_version(minversion) | |||
+ finally: | |||
+ if stuff[0]: | |||
+ stuff[0].close() | |||
+ else: | |||
+ found = False | |||
+ | |||
if not found and not conf.LIB_MAY_BE_BUNDLED(libname): | |||
Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion)) | |||
sys.exit(1) |
@ -0,0 +1,43 @@ | |||
Don't check xsltproc manpages | |||
Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> | |||
Index: samba-4.4.2/lib/ldb/wscript | |||
=================================================================== | |||
--- samba-4.4.2.orig/lib/ldb/wscript | |||
+++ samba-4.4.2/lib/ldb/wscript | |||
@@ -65,7 +65,7 @@ def configure(conf): | |||
conf.define('USING_SYSTEM_LDB', 1) | |||
if conf.env.standalone_ldb: | |||
- conf.CHECK_XSLTPROC_MANPAGES() | |||
+ #conf.CHECK_XSLTPROC_MANPAGES() | |||
# we need this for the ldap backend | |||
if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'): | |||
Index: samba-4.4.2/lib/talloc/wscript | |||
=================================================================== | |||
--- samba-4.4.2.orig/lib/talloc/wscript | |||
+++ samba-4.4.2/lib/talloc/wscript | |||
@@ -56,7 +56,7 @@ def configure(conf): | |||
if conf.env.standalone_talloc: | |||
conf.env.TALLOC_COMPAT1 = Options.options.TALLOC_COMPAT1 | |||
- conf.CHECK_XSLTPROC_MANPAGES() | |||
+ #conf.CHECK_XSLTPROC_MANPAGES() | |||
if not conf.env.disable_python: | |||
# also disable if we don't have the python libs installed | |||
Index: samba-4.4.2/lib/tdb/wscript | |||
=================================================================== | |||
--- samba-4.4.2.orig/lib/tdb/wscript | |||
+++ samba-4.4.2/lib/tdb/wscript | |||
@@ -92,7 +92,7 @@ def configure(conf): | |||
not conf.env.disable_tdb_mutex_locking): | |||
conf.define('USE_TDB_MUTEX_LOCKING', 1) | |||
- conf.CHECK_XSLTPROC_MANPAGES() | |||
+ #conf.CHECK_XSLTPROC_MANPAGES() | |||
if not conf.env.disable_python: | |||
# also disable if we don't have the python libs installed |
@ -0,0 +1,21 @@ | |||
--- a/libcli/smbreadline/wscript_configure | |||
+++ b/libcli/smbreadline/wscript_configure | |||
@@ -1,11 +1,13 @@ | |||
#!/usr/bin/env python | |||
-conf.CHECK_HEADERS('readline.h history.h readline/readline.h readline/history.h') | |||
-for termlib in ['ncurses', 'curses', 'termcap', 'terminfo', 'termlib', 'tinfo']: | |||
- if conf.CHECK_FUNCS_IN('tgetent', termlib): | |||
- conf.env['READLINE_TERMLIB'] = termlib | |||
- break | |||
+#conf.CHECK_HEADERS('readline.h history.h readline/readline.h readline/history.h') | |||
+#for termlib in ['ncurses', 'curses', 'termcap', 'terminfo', 'termlib', 'tinfo']: | |||
+# if conf.CHECK_FUNCS_IN('tgetent', termlib): | |||
+# conf.env['READLINE_TERMLIB'] = termlib | |||
+# break | |||
+ | |||
+conf.undefine('HAVE_READLINE_READLINE_H') | |||
# | |||
# Check if we need to work around readline/readline.h |
@ -0,0 +1,46 @@ | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=wsdd2 | |||
PKG_RELEASE:=1 | |||
PKG_SOURCE_PROTO:=git | |||
PKG_SOURCE_URL:=https://github.com/Andy2244/wsdd2.git | |||
PKG_SOURCE_DATE:=2018-07-24 | |||
PKG_SOURCE_VERSION:=2c31ba3b720af81848c47dff7ad7c6c30c0c0f50 | |||
PKG_MIRROR_HASH:=eb903a870d99c6001996dbfc22c15e1020278c45ed2441ceb61bc5395f417afa | |||
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com> | |||
PKG_LICENSE:=GPL-3.0-only | |||
PKG_LICENSE_FILES:=COPYING | |||
include $(INCLUDE_DIR)/package.mk | |||
define Package/wsdd2 | |||
SECTION:=net | |||
CATEGORY:=Network | |||
SUBMENU:=IP Addresses and Names | |||
TITLE:=Web Services for Devices (WSD) daemon | |||
URL:=https://kb.netgear.com/2649/NETGEAR-Open-Source-Code-for-Programmers-GPL | |||
endef | |||
define Package/wsdd2/description | |||
Web Services for Devices or Web Services on Devices (WSD), | |||
is a Microsoft API to simplify programming connections to web service | |||
enabled devices, such as printers, scanners and file shares. | |||
This daemon advertises and responds to probe requests from Windows clients looking for file shares. | |||
It also implements LLMNR multicast name lookup services. | |||
endef | |||
define Build/Compile | |||
$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(PKG_BUILD_DIR)/{wsdd2.c,wsd.c,llmnr.c} -o $(PKG_BUILD_DIR)/wsdd2 | |||
endef | |||
define Package/wsdd2/install | |||
$(INSTALL_DIR) $(1)/usr/bin | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/wsdd2 $(1)/usr/bin/ | |||
$(INSTALL_DIR) $(1)/etc/init.d | |||
$(INSTALL_BIN) ./files/wsdd2.init $(1)/etc/init.d/wsdd2 | |||
endef | |||
$(eval $(call BuildPackage,wsdd2)) |
@ -0,0 +1,12 @@ | |||
#!/bin/sh /etc/rc.common | |||
START=99 | |||
USE_PROCD=1 | |||
start_service() { | |||
procd_open_instance | |||
procd_set_param command /usr/bin/wsdd2 -w | |||
procd_set_param respawn | |||
procd_set_param file /var/etc/smb.conf | |||
procd_close_instance | |||
} |
@ -0,0 +1,22 @@ | |||
--- a/wsd.c 2018-07-20 | |||
+++ b/wsd.c 2018-07-20 | |||
@@ -97,12 +97,17 @@ static void uuid_endpoint(char *uuid, si | |||
FILE *fp = fopen("/etc/machine-id", "r"); | |||
int c, i = 0; | |||
+ if (!fp) { | |||
+ DEBUG(0, W, "Can't open '/etc/machine-id', trying '/proc/sys/kernel/random/boot_id'"); | |||
+ fp = fopen("/proc/sys/kernel/random/boot_id", "r"); | |||
+ } | |||
+ | |||
if (!fp) | |||
return; | |||
while (i < 36 && (c = getc(fp)) != EOF && | |||
- (isdigit(c) || (islower(c) && isxdigit(c)))) { | |||
- if (i == 8 || i == 13 || i == 18 || i == 23) | |||
+ ((c == '-') || isdigit(c) || (islower(c) && isxdigit(c)))) { | |||
+ if ((c != '-') && (i == 8 || i == 13 || i == 18 || i == 23)) | |||
uuid[i++] = '-'; | |||
uuid[i++] = c; | |||
} |
@ -0,0 +1,149 @@ | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=qemu | |||
PKG_VERSION:=3.0.0-rc2 | |||
PKG_RELEASE:=1 | |||
PKG_SOURCE_URL:=https://download.qemu.org/ | |||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | |||
PKG_HASH:=b02b30c7d460996835416ef09161f6faef2700e339cf11cd99481ca51b5954f2 | |||
PKG_LICENSE:=GPL-2.0 | |||
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com> | |||
HOST_BUILD_PARALLEL:=1 | |||
PKG_BUILD_PARALLEL:=1 | |||
PKG_INSTALL:=1 | |||
include $(INCLUDE_DIR)/host-build.mk | |||
include $(INCLUDE_DIR)/package.mk | |||
HOST_BUILD_DEPENDS:=glib2/host | |||
define Package/qemu-userspace | |||
SECTION:=utils | |||
CATEGORY:=Utilities | |||
SUBMENU:=Virtualization | |||
TITLE:=qemu $(PKG_VERSION) (Linux/BSD User space emulation) | |||
URL:=https://www.qemu.org | |||
DEPENDS:=+glib2 +zlib +libpthread @BROKEN | |||
endef | |||
define Package/qemu-userspace/description | |||
QEMU is a generic and open source machine emulator and virtualizer. | |||
(This package version is for user space emulation only, not full system.) | |||
endef | |||
HOST_CONFIGURE_ARGS += \ | |||
--audio-drv-list='' \ | |||
--disable-slirp \ | |||
--disable-debug-info \ | |||
--disable-modules \ | |||
--disable-sdl \ | |||
--disable-qom-cast-debug \ | |||
--disable-virtfs \ | |||
--disable-vnc \ | |||
--disable-debug-tcg \ | |||
--disable-sparse \ | |||
--disable-strip \ | |||
--disable-vnc-sasl \ | |||
--disable-vnc-jpeg \ | |||
--disable-vnc-png \ | |||
--disable-vde \ | |||
--disable-netmap \ | |||
--disable-xen \ | |||
--disable-xen-pci-passthrough \ | |||
--disable-xen-pv-domain-build \ | |||
--disable-brlapi \ | |||
--disable-bluez \ | |||
--disable-tcg-interpreter \ | |||
--disable-cap-ng \ | |||
--disable-spice \ | |||
--disable-libiscsi \ | |||
--disable-libnfs \ | |||
--disable-cocoa \ | |||
--disable-werror \ | |||
--disable-stack-protector \ | |||
--disable-curl \ | |||
--disable-crypto-afalg \ | |||
--disable-docs \ | |||
--disable-vhost-net \ | |||
--disable-vhost-scsi \ | |||
--disable-vhost-vsock \ | |||
--disable-opengl \ | |||
--disable-rbd \ | |||
--disable-xfsctl \ | |||
--disable-smartcard \ | |||
--disable-libusb \ | |||
--disable-usb-redir \ | |||
--disable-zlib-test \ | |||
--disable-lzo \ | |||
--disable-snappy \ | |||
--disable-bzip2 \ | |||
--disable-guest-agent-msi \ | |||
--without-vss-sdk \ | |||
--without-win-sdk \ | |||
--disable-tools \ | |||
--disable-glusterfs \ | |||
--disable-gtk \ | |||
--disable-gnutls \ | |||
--disable-nettle \ | |||
--disable-gcrypt \ | |||
--disable-rdma \ | |||
--disable-vte \ | |||
--disable-virglrenderer \ | |||
--disable-tpm \ | |||
--disable-libssh2 \ | |||
--disable-strip \ | |||
--disable-replication \ | |||
--disable-vxhs \ | |||
--disable-system \ | |||
--disable-guest-agent \ | |||
--disable-pie \ | |||
--disable-live-block-migration \ | |||
--disable-numa \ | |||
--disable-libxml2 \ | |||
--disable-capstone \ | |||
--disable-debug-mutex \ | |||
--disable-git-update \ | |||
--disable-hax \ | |||
--disable-kvm \ | |||
--disable-hvf \ | |||
--disable-whpx \ | |||
--disable-blobs | |||
# --disable-tcg | |||
# --disable-bsd-user | |||
# --disable-linux-aio | |||
# --disable-attr | |||
# --disable-seccomp | |||
# --disable-coroutine-pool | |||
# --disable-tcmalloc | |||
# --disable-jemalloc | |||
# --disable-vhost-user | |||
# QEMU configure script does not recognize these options | |||
HOST_CONFIGURE_ARGS:=$(filter-out \ | |||
--target=% \ | |||
--host=% \ | |||
--build=% \ | |||
--program-prefix=% \ | |||
--program-suffix=% \ | |||
--exec-prefix=% \ | |||
--disable-nls \ | |||
, $(HOST_CONFIGURE_ARGS)) | |||
# does this do anything in usermode? | |||
CONFIGURE_ARGS:=$(filter-out \ | |||
--disable-hax \ | |||
--disable-kvm \ | |||
--disable-hvf \ | |||
--disable-blobs \ | |||
, $(HOST_CONFIGURE_ARGS)) | |||
CONFIGURE_ARGS += \ | |||
--cross-prefix=$(TARGET_CROSS) \ | |||
--host-cc="$(HOSTCC)" | |||
$(eval $(call HostBuild)) | |||
$(eval $(call BuildPackage,qemu-userspace)) |