From 31203ee2075e7c170ab540eb3b24131ba5c04dd7 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 3 Jul 2025 10:35:32 +0200 Subject: [PATCH] rpc_server: Remove the source4 implementation of wkssvc MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This was pretty much a stub anyway Signed-off-by: Stefan Metzmacher Reviewed-by: Guenther Deschner Autobuild-User(master): Günther Deschner Autobuild-Date(master): Thu Sep 11 15:16:17 UTC 2025 on atb-devel-224 --- .../protocol/dcerpcendpointservers.xml | 2 +- lib/param/loadparm.c | 6 +- source3/param/loadparm.c | 6 +- source3/rpc_server/rpcd_classic.c | 29 -- source4/rpc_server/wkssvc/dcesrv_wkssvc.c | 403 ------------------ source4/rpc_server/wscript_build | 9 - 6 files changed, 11 insertions(+), 444 deletions(-) delete mode 100644 source4/rpc_server/wkssvc/dcesrv_wkssvc.c diff --git a/docs-xml/smbdotconf/protocol/dcerpcendpointservers.xml b/docs-xml/smbdotconf/protocol/dcerpcendpointservers.xml index c6642b795fd..6c32d9e6e17 100644 --- a/docs-xml/smbdotconf/protocol/dcerpcendpointservers.xml +++ b/docs-xml/smbdotconf/protocol/dcerpcendpointservers.xml @@ -6,6 +6,6 @@ Specifies which DCE/RPC endpoint servers should be run. -epmapper, wkssvc, samr, netlogon, lsarpc, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver +epmapper, samr, netlogon, lsarpc, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver rpcecho diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 05b6ec48ac8..4af9638ffd7 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -2841,7 +2841,11 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lpcfg_do_global_parameter(lp_ctx, "ntvfs handler", "unixuid default"); lpcfg_do_global_parameter(lp_ctx, "max connections", "0"); - lpcfg_do_global_parameter(lp_ctx, "dcerpc endpoint servers", "epmapper wkssvc samr netlogon lsarpc drsuapi dssetup unixinfo browser eventlog6 backupkey dnsserver"); + lpcfg_do_global_parameter( + lp_ctx, + "dcerpc endpoint servers", + "epmapper samr netlogon lsarpc drsuapi dssetup unixinfo " + "browser eventlog6 backupkey dnsserver"); lpcfg_do_global_parameter(lp_ctx, "server services", "s3fs rpc nbt wrepl ldap cldap kdc drepl ft_scanner winbindd ntp_signd kcc dnsupdate dns"); lpcfg_do_global_parameter(lp_ctx, "kccsrv:samba_kcc", "true"); /* the winbind method for domain controllers is for both RODC diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index afe2aad5f33..1be550d9ad3 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -891,7 +891,11 @@ void loadparm_s3_init_globals(struct loadparm_context *lp_ctx, Globals.server_services = str_list_make_v3_const(NULL, "s3fs rpc nbt wrepl ldap cldap kdc drepl ft_scanner winbindd ntp_signd kcc dnsupdate dns", NULL); - Globals.dcerpc_endpoint_servers = str_list_make_v3_const(NULL, "epmapper wkssvc samr netlogon lsarpc drsuapi dssetup unixinfo browser eventlog6 backupkey dnsserver", NULL); + Globals.dcerpc_endpoint_servers = str_list_make_v3_const( + NULL, + "epmapper samr netlogon lsarpc drsuapi dssetup unixinfo " + "browser eventlog6 backupkey dnsserver", + NULL); Globals.tls_enabled = true; Globals.tls_verify_peer = TLS_VERIFY_PEER_AS_STRICT_AS_POSSIBLE; diff --git a/source3/rpc_server/rpcd_classic.c b/source3/rpc_server/rpcd_classic.c index 2b7e9398d90..8f5e0f3223d 100644 --- a/source3/rpc_server/rpcd_classic.c +++ b/source3/rpc_server/rpcd_classic.c @@ -46,27 +46,10 @@ static size_t classic_interfaces( &ndr_table_svcctl, &ndr_table_ntsvcs, &ndr_table_eventlog, - /* - * This last item is truncated from the list by the - * num_ifaces -= 1 below. Take care when adding new - * services. - */ &ndr_table_wkssvc, }; size_t num_ifaces = ARRAY_SIZE(ifaces); - switch(lp_server_role()) { - case ROLE_ACTIVE_DIRECTORY_DC: - /* - * On the AD DC wkssvc is provided by the 'samba' - * binary from source4/ - */ - num_ifaces -= 1; - break; - default: - break; - } - *pifaces = ifaces; return num_ifaces; @@ -91,18 +74,6 @@ static NTSTATUS classic_servers( ep_servers[5] = eventlog_get_ep_server(); ep_servers[6] = wkssvc_get_ep_server(); - switch(lp_server_role()) { - case ROLE_ACTIVE_DIRECTORY_DC: - /* - * On the AD DC wkssvc is provided by the 'samba' - * binary from source4/ - */ - num_servers -= 1; - break; - default: - break; - } - ok = secrets_init(); if (!ok) { DBG_ERR("secrets_init() failed\n"); diff --git a/source4/rpc_server/wkssvc/dcesrv_wkssvc.c b/source4/rpc_server/wkssvc/dcesrv_wkssvc.c deleted file mode 100644 index f638471824b..00000000000 --- a/source4/rpc_server/wkssvc/dcesrv_wkssvc.c +++ /dev/null @@ -1,403 +0,0 @@ -/* - Unix SMB/CIFS implementation. - - endpoint server for the wkssvc pipe - - Copyright (C) Stefan (metze) Metzmacher 2004 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "includes.h" -#include "rpc_server/dcerpc_server.h" -#include "librpc/gen_ndr/ndr_wkssvc.h" -#include "librpc/gen_ndr/ndr_srvsvc.h" -#include "rpc_server/common/common.h" -#include "param/param.h" - -/* - wkssvc_NetWkstaGetInfo -*/ -static WERROR dcesrv_wkssvc_NetWkstaGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetWkstaGetInfo *r) -{ - struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx; - struct dcerpc_server_info *server_info = lpcfg_dcerpc_server_info(mem_ctx, dce_ctx->lp_ctx); - - /* NOTE: win2k3 ignores r->in.server_name completely so we do --metze */ - - switch(r->in.level) { - case 100: - { - struct wkssvc_NetWkstaInfo100 *info100; - - info100 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo100); - W_ERROR_HAVE_NO_MEMORY(info100); - - info100->platform_id = dcesrv_common_get_platform_id(mem_ctx, dce_ctx); - info100->server_name = dcesrv_common_get_server_name(mem_ctx, dce_ctx, NULL); - W_ERROR_HAVE_NO_MEMORY(info100->server_name); - info100->domain_name = server_info->domain_name; - info100->version_major = server_info->version_major; - info100->version_minor = server_info->version_minor; - - r->out.info->info100 = info100; - return WERR_OK; - } - case 101: - { - struct wkssvc_NetWkstaInfo101 *info101; - - info101 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo101); - W_ERROR_HAVE_NO_MEMORY(info101); - - info101->platform_id = dcesrv_common_get_platform_id(mem_ctx, dce_ctx); - info101->server_name = dcesrv_common_get_server_name(mem_ctx, dce_ctx, NULL); - W_ERROR_HAVE_NO_MEMORY(info101->server_name); - info101->domain_name = server_info->domain_name; - info101->version_major = server_info->version_major; - info101->version_minor = server_info->version_minor; - info101->lan_root = dcesrv_common_get_lan_root(mem_ctx, dce_ctx); - - r->out.info->info101 = info101; - return WERR_OK; - } - case 102: - { - return WERR_ACCESS_DENIED; - } - case 502: - { - return WERR_ACCESS_DENIED; - } - default: - return WERR_INVALID_LEVEL; - } -} - - -/* - wkssvc_NetWkstaSetInfo -*/ -static WERROR dcesrv_wkssvc_NetWkstaSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetWkstaSetInfo *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetWkstaEnumUsers -*/ -static WERROR dcesrv_wkssvc_NetWkstaEnumUsers(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetWkstaEnumUsers *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrWkstaUserGetInfo -*/ -static WERROR dcesrv_wkssvc_NetrWkstaUserGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrWkstaUserGetInfo *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrWkstaUserSetInfo -*/ -static WERROR dcesrv_wkssvc_NetrWkstaUserSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrWkstaUserSetInfo *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetWkstaTransportEnum -*/ -static WERROR dcesrv_wkssvc_NetWkstaTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetWkstaTransportEnum *r) -{ - switch (r->in.info->level) { - case 0: - r->out.info->ctr.ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaTransportCtr0); - W_ERROR_HAVE_NO_MEMORY(r->out.info->ctr.ctr0); - - r->out.info->ctr.ctr0->count = 0; - r->out.info->ctr.ctr0->array = NULL; - - return WERR_NOT_SUPPORTED; - - default: - return WERR_INVALID_LEVEL; - } -} - - -/* - wkssvc_NetrWkstaTransportAdd -*/ -static WERROR dcesrv_wkssvc_NetrWkstaTransportAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrWkstaTransportAdd *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrWkstaTransportDel -*/ -static WERROR dcesrv_wkssvc_NetrWkstaTransportDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrWkstaTransportDel *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrUseAdd -*/ -static WERROR dcesrv_wkssvc_NetrUseAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrUseAdd *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrUseGetInfo -*/ -static WERROR dcesrv_wkssvc_NetrUseGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrUseGetInfo *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrUseDel -*/ -static WERROR dcesrv_wkssvc_NetrUseDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrUseDel *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrUseEnum -*/ -static WERROR dcesrv_wkssvc_NetrUseEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrUseEnum *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrMessageBufferSend -*/ -static WERROR dcesrv_wkssvc_NetrMessageBufferSend(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrMessageBufferSend *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrWorkstationStatisticsGet -*/ -static WERROR dcesrv_wkssvc_NetrWorkstationStatisticsGet(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrWorkstationStatisticsGet *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrLogonDomainNameAdd -*/ -static WERROR dcesrv_wkssvc_NetrLogonDomainNameAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrLogonDomainNameAdd *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrLogonDomainNameDel -*/ -static WERROR dcesrv_wkssvc_NetrLogonDomainNameDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrLogonDomainNameDel *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrJoinDomain -*/ -static WERROR dcesrv_wkssvc_NetrJoinDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrJoinDomain *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrUnjoinDomain -*/ -static WERROR dcesrv_wkssvc_NetrUnjoinDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrUnjoinDomain *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrRenameMachineInDomain -*/ -static WERROR dcesrv_wkssvc_NetrRenameMachineInDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrRenameMachineInDomain *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrValidateName -*/ -static WERROR dcesrv_wkssvc_NetrValidateName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrValidateName *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrGetJoinInformation -*/ -static WERROR dcesrv_wkssvc_NetrGetJoinInformation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrGetJoinInformation *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrGetJoinableOus -*/ -static WERROR dcesrv_wkssvc_NetrGetJoinableOus(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrGetJoinableOus *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - WKSSVC_NETRJOINDOMAIN2 -*/ -static WERROR dcesrv_wkssvc_NetrJoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrJoinDomain2 *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - WKSSVC_NETRUNJOINDOMAIN2 -*/ -static WERROR dcesrv_wkssvc_NetrUnjoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrUnjoinDomain2 *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrRenameMachineInDomain2 -*/ -static WERROR dcesrv_wkssvc_NetrRenameMachineInDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrRenameMachineInDomain2 *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrValidateName2 -*/ -static WERROR dcesrv_wkssvc_NetrValidateName2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrValidateName2 *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrGetJoinableOus2 -*/ -static WERROR dcesrv_wkssvc_NetrGetJoinableOus2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrGetJoinableOus2 *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrAddAlternateComputername -*/ -static WERROR dcesrv_wkssvc_NetrAddAlternateComputerName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrAddAlternateComputerName *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrRemoveAlternateComputername -*/ -static WERROR dcesrv_wkssvc_NetrRemoveAlternateComputerName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrRemoveAlternateComputerName *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrSetPrimaryComputername -*/ -static WERROR dcesrv_wkssvc_NetrSetPrimaryComputername(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrSetPrimaryComputername *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* - wkssvc_NetrEnumerateComputerNames -*/ -static WERROR dcesrv_wkssvc_NetrEnumerateComputerNames(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct wkssvc_NetrEnumerateComputerNames *r) -{ - DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); -} - - -/* include the generated boilerplate */ -#include "librpc/gen_ndr/ndr_wkssvc_s.c" diff --git a/source4/rpc_server/wscript_build b/source4/rpc_server/wscript_build index 8cb898df6e4..a3cc44a3e87 100644 --- a/source4/rpc_server/wscript_build +++ b/source4/rpc_server/wscript_build @@ -63,15 +63,6 @@ bld.SAMBA_MODULE('dcerpc_srvsvc', enabled=bld.CONFIG_SET('WITH_NTVFS_FILESERVER') ) - -bld.SAMBA_MODULE('dcerpc_wkssvc', - source='wkssvc/dcesrv_wkssvc.c', - subsystem='dcerpc_server', - init_function='dcerpc_server_wkssvc_init', - deps='DCERPC_COMMON ndr-standard' - ) - - bld.SAMBA_MODULE('dcerpc_unixinfo', source='unixinfo/dcesrv_unixinfo.c', subsystem='dcerpc_server', -- 2.47.3