2001-02-26 23:06:25 +03:00
/*
2002-01-30 09:08:46 +03:00
* Unix SMB / CIFS implementation .
2001-02-26 23:06:25 +03:00
* RPC Pipe client / server routines
2006-09-21 03:49:13 +04:00
*
* Copyright ( C ) Andrew Tridgell 1992 - 1997 ,
* Copyright ( C ) Gerald ( Jerry ) Carter 2006.
2008-03-29 01:39:57 +03:00
* Copyright ( C ) Guenther Deschner 2007 - 2008.
*
2001-02-26 23:06:25 +03:00
* 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
2007-07-09 23:25:36 +04:00
* the Free Software Foundation ; either version 3 of the License , or
2001-02-26 23:06:25 +03:00
* ( 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
2007-07-10 09:23:25 +04:00
* along with this program ; if not , see < http : //www.gnu.org/licenses/>.
2001-02-26 23:06:25 +03:00
*/
/* This is the implementation of the wks interface. */
# include "includes.h"
2008-01-13 14:52:25 +03:00
# include "libnet/libnet.h"
2001-02-26 23:06:25 +03:00
2002-07-15 14:35:28 +04:00
# undef DBGC_CLASS
# define DBGC_CLASS DBGC_RPC_SRV
2001-02-26 23:06:25 +03:00
/*******************************************************************
2007-11-01 19:49:31 +03:00
Fill in the values for the struct wkssvc_NetWkstaInfo100 .
2001-02-26 23:06:25 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2006-09-20 23:26:21 +04:00
static void create_wks_info_100 ( struct wkssvc_NetWkstaInfo100 * info100 )
2001-02-26 23:06:25 +03:00
{
2007-12-21 00:17:16 +03:00
info100 - > platform_id = PLATFORM_ID_NT ; /* unknown */
2007-11-01 19:49:31 +03:00
info100 - > version_major = lp_major_announce_version ( ) ;
info100 - > version_minor = lp_minor_announce_version ( ) ;
2001-02-26 23:06:25 +03:00
2007-11-24 19:27:54 +03:00
info100 - > server_name = talloc_asprintf_strupper_m (
info100 , " %s " , global_myname ( ) ) ;
info100 - > domain_name = talloc_asprintf_strupper_m (
info100 , " %s " , lp_workgroup ( ) ) ;
2001-02-26 23:06:25 +03:00
2006-09-20 23:26:21 +04:00
return ;
2001-02-26 23:06:25 +03:00
}
2006-09-20 23:26:21 +04:00
/********************************************************************
2001-02-26 23:06:25 +03:00
only supports info level 100 at the moment .
2006-09-20 23:26:21 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetWkstaGetInfo ( pipes_struct * p , struct wkssvc_NetWkstaGetInfo * r )
2006-09-20 23:26:21 +04:00
{
struct wkssvc_NetWkstaInfo100 * wks100 = NULL ;
/* We only support info level 100 currently */
2007-01-18 13:18:59 +03:00
if ( r - > in . level ! = 100 ) {
2006-09-21 00:45:23 +04:00
return WERR_UNKNOWN_LEVEL ;
2006-09-20 23:26:21 +04:00
}
if ( ( wks100 = TALLOC_ZERO_P ( p - > mem_ctx , struct wkssvc_NetWkstaInfo100 ) ) = = NULL ) {
2006-09-21 00:45:23 +04:00
return WERR_NOMEM ;
2006-09-20 23:26:21 +04:00
}
2006-09-20 21:56:50 +04:00
2006-09-20 23:26:21 +04:00
create_wks_info_100 ( wks100 ) ;
2007-01-18 13:18:59 +03:00
r - > out . info - > info100 = wks100 ;
2006-09-20 23:26:21 +04:00
2006-09-21 00:45:23 +04:00
return WERR_OK ;
2006-09-20 23:26:21 +04:00
}
/********************************************************************
2006-09-20 21:56:50 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetWkstaSetInfo ( pipes_struct * p , struct wkssvc_NetWkstaSetInfo * r )
2006-09-20 21:56:50 +04:00
{
2006-09-20 23:26:21 +04:00
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
2006-09-20 21:56:50 +04:00
2006-09-20 23:26:21 +04:00
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2006-09-20 21:56:50 +04:00
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetWkstaEnumUsers ( pipes_struct * p , struct wkssvc_NetWkstaEnumUsers * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
2001-02-26 23:06:25 +03:00
2006-09-20 23:26:21 +04:00
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrWkstaUserGetInfo ( pipes_struct * p , struct wkssvc_NetrWkstaUserGetInfo * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrWkstaUserSetInfo ( pipes_struct * p , struct wkssvc_NetrWkstaUserSetInfo * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetWkstaTransportEnum ( pipes_struct * p , struct wkssvc_NetWkstaTransportEnum * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrWkstaTransportAdd ( pipes_struct * p , struct wkssvc_NetrWkstaTransportAdd * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrWkstaTransportDel ( pipes_struct * p , struct wkssvc_NetrWkstaTransportDel * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrUseAdd ( pipes_struct * p , struct wkssvc_NetrUseAdd * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrUseGetInfo ( pipes_struct * p , struct wkssvc_NetrUseGetInfo * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrUseDel ( pipes_struct * p , struct wkssvc_NetrUseDel * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrUseEnum ( pipes_struct * p , struct wkssvc_NetrUseEnum * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrMessageBufferSend ( pipes_struct * p , struct wkssvc_NetrMessageBufferSend * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrWorkstationStatisticsGet ( pipes_struct * p , struct wkssvc_NetrWorkstationStatisticsGet * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrLogonDomainNameAdd ( pipes_struct * p , struct wkssvc_NetrLogonDomainNameAdd * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrLogonDomainNameDel ( pipes_struct * p , struct wkssvc_NetrLogonDomainNameDel * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrJoinDomain ( pipes_struct * p , struct wkssvc_NetrJoinDomain * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrUnjoinDomain ( pipes_struct * p , struct wkssvc_NetrUnjoinDomain * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrRenameMachineInDomain ( pipes_struct * p , struct wkssvc_NetrRenameMachineInDomain * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrValidateName ( pipes_struct * p , struct wkssvc_NetrValidateName * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrGetJoinInformation ( pipes_struct * p , struct wkssvc_NetrGetJoinInformation * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrGetJoinableOus ( pipes_struct * p , struct wkssvc_NetrGetJoinableOus * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
2008-02-28 22:01:32 +03:00
_wkssvc_NetrJoinDomain2
2006-09-20 23:26:21 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-02-28 22:01:32 +03:00
WERROR _wkssvc_NetrJoinDomain2 ( pipes_struct * p ,
struct wkssvc_NetrJoinDomain2 * r )
2006-09-20 23:26:21 +04:00
{
2007-12-12 18:12:14 +03:00
struct libnet_JoinCtx * j = NULL ;
2008-01-16 13:02:52 +03:00
char * cleartext_pwd = NULL ;
2007-12-12 18:12:14 +03:00
char * admin_domain = NULL ;
char * admin_account = NULL ;
WERROR werr ;
2008-11-24 01:48:17 +03:00
struct nt_user_token * token = p - > server_info - > ptok ;
2007-12-12 18:12:14 +03:00
if ( ! r - > in . domain_name ) {
return WERR_INVALID_PARAM ;
}
2008-03-29 01:39:57 +03:00
if ( ! r - > in . admin_account | | ! r - > in . encrypted_password ) {
return WERR_INVALID_PARAM ;
}
2007-12-12 18:12:14 +03:00
if ( ! user_has_privileges ( token , & se_machine_account ) & &
! nt_token_check_domain_rid ( token , DOMAIN_GROUP_RID_ADMINS ) & &
! nt_token_check_domain_rid ( token , BUILTIN_ALIAS_RID_ADMINS ) ) {
2008-02-28 22:01:32 +03:00
DEBUG ( 5 , ( " _wkssvc_NetrJoinDomain2: account doesn't have "
" sufficient privileges \n " ) ) ;
2007-12-12 18:12:14 +03:00
return WERR_ACCESS_DENIED ;
}
2008-03-29 01:39:57 +03:00
if ( ( r - > in . join_flags & WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED ) | |
( r - > in . join_flags & WKSSVC_JOIN_FLAGS_JOIN_UNSECURE ) ) {
return WERR_NOT_SUPPORTED ;
}
2008-06-24 16:33:31 +04:00
werr = decode_wkssvc_join_password_buffer (
p - > mem_ctx , r - > in . encrypted_password ,
& p - > server_info - > user_session_key , & cleartext_pwd ) ;
2007-12-12 18:12:14 +03:00
if ( ! W_ERROR_IS_OK ( werr ) ) {
return werr ;
}
split_domain_user ( p - > mem_ctx ,
r - > in . admin_account ,
& admin_domain ,
& admin_account ) ;
2008-01-16 13:02:52 +03:00
werr = libnet_init_JoinCtx ( p - > mem_ctx , & j ) ;
if ( ! W_ERROR_IS_OK ( werr ) ) {
return werr ;
}
2007-12-12 18:12:14 +03:00
j - > in . domain_name = r - > in . domain_name ;
j - > in . account_ou = r - > in . account_ou ;
j - > in . join_flags = r - > in . join_flags ;
2008-01-16 13:02:52 +03:00
j - > in . admin_account = admin_account ;
j - > in . admin_password = cleartext_pwd ;
2008-02-28 22:01:32 +03:00
j - > in . debug = true ;
2008-04-14 16:46:30 +04:00
j - > in . modify_config = lp_config_backend_is_registry ( ) ;
2008-05-08 20:32:22 +04:00
j - > in . msg_ctx = smbd_messaging_context ( ) ;
2007-12-12 18:12:14 +03:00
become_root ( ) ;
werr = libnet_Join ( p - > mem_ctx , j ) ;
unbecome_root ( ) ;
2008-02-28 22:01:32 +03:00
if ( ! W_ERROR_IS_OK ( werr ) ) {
2008-03-29 01:39:57 +03:00
DEBUG ( 5 , ( " _wkssvc_NetrJoinDomain2: libnet_Join failed with: %s \n " ,
2008-02-28 22:01:32 +03:00
j - > out . error_string ? j - > out . error_string :
2008-11-01 19:19:26 +03:00
win_errstr ( werr ) ) ) ;
2008-02-28 22:01:32 +03:00
}
TALLOC_FREE ( j ) ;
2007-12-12 18:12:14 +03:00
return werr ;
2006-09-20 23:26:21 +04:00
}
/********************************************************************
2008-02-28 23:55:01 +03:00
_wkssvc_NetrUnjoinDomain2
2006-09-20 23:26:21 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-02-28 23:55:01 +03:00
WERROR _wkssvc_NetrUnjoinDomain2 ( pipes_struct * p ,
struct wkssvc_NetrUnjoinDomain2 * r )
2006-09-20 23:26:21 +04:00
{
2008-02-28 23:55:01 +03:00
struct libnet_UnjoinCtx * u = NULL ;
char * cleartext_pwd = NULL ;
char * admin_domain = NULL ;
char * admin_account = NULL ;
WERROR werr ;
2008-11-24 01:48:17 +03:00
struct nt_user_token * token = p - > server_info - > ptok ;
2008-02-28 23:55:01 +03:00
2008-03-29 01:39:57 +03:00
if ( ! r - > in . account | | ! r - > in . encrypted_password ) {
return WERR_INVALID_PARAM ;
}
2008-02-28 23:55:01 +03:00
if ( ! user_has_privileges ( token , & se_machine_account ) & &
! nt_token_check_domain_rid ( token , DOMAIN_GROUP_RID_ADMINS ) & &
! nt_token_check_domain_rid ( token , BUILTIN_ALIAS_RID_ADMINS ) ) {
DEBUG ( 5 , ( " _wkssvc_NetrUnjoinDomain2: account doesn't have "
" sufficient privileges \n " ) ) ;
return WERR_ACCESS_DENIED ;
}
2008-06-24 16:33:31 +04:00
werr = decode_wkssvc_join_password_buffer (
p - > mem_ctx , r - > in . encrypted_password ,
& p - > server_info - > user_session_key , & cleartext_pwd ) ;
2008-02-28 23:55:01 +03:00
if ( ! W_ERROR_IS_OK ( werr ) ) {
return werr ;
}
split_domain_user ( p - > mem_ctx ,
r - > in . account ,
& admin_domain ,
& admin_account ) ;
werr = libnet_init_UnjoinCtx ( p - > mem_ctx , & u ) ;
if ( ! W_ERROR_IS_OK ( werr ) ) {
return werr ;
}
u - > in . domain_name = lp_realm ( ) ;
u - > in . unjoin_flags = r - > in . unjoin_flags |
WKSSVC_JOIN_FLAGS_JOIN_TYPE ;
u - > in . admin_account = admin_account ;
u - > in . admin_password = cleartext_pwd ;
u - > in . debug = true ;
2008-04-17 01:59:43 +04:00
u - > in . modify_config = lp_config_backend_is_registry ( ) ;
2008-05-08 20:32:22 +04:00
u - > in . msg_ctx = smbd_messaging_context ( ) ;
2008-02-28 23:55:01 +03:00
become_root ( ) ;
werr = libnet_Unjoin ( p - > mem_ctx , u ) ;
unbecome_root ( ) ;
2008-03-29 01:39:57 +03:00
if ( ! W_ERROR_IS_OK ( werr ) ) {
DEBUG ( 5 , ( " _wkssvc_NetrUnjoinDomain2: libnet_Unjoin failed with: %s \n " ,
u - > out . error_string ? u - > out . error_string :
2008-11-01 19:19:26 +03:00
win_errstr ( werr ) ) ) ;
2008-03-29 01:39:57 +03:00
}
2008-02-28 23:55:01 +03:00
TALLOC_FREE ( u ) ;
return werr ;
2006-09-20 23:26:21 +04:00
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-01-18 13:18:59 +03:00
WERROR _wkssvc_NetrRenameMachineInDomain2 ( pipes_struct * p , struct wkssvc_NetrRenameMachineInDomain2 * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrValidateName2 ( pipes_struct * p , struct wkssvc_NetrValidateName2 * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrGetJoinableOus2 ( pipes_struct * p , struct wkssvc_NetrGetJoinableOus2 * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
2006-09-20 21:56:50 +04:00
2006-09-20 23:26:21 +04:00
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrAddAlternateComputerName ( pipes_struct * p , struct wkssvc_NetrAddAlternateComputerName * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
2006-09-20 21:56:50 +04:00
2006-09-20 23:26:21 +04:00
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2006-09-20 21:56:50 +04:00
2007-01-18 13:18:59 +03:00
WERROR _wkssvc_NetrRemoveAlternateComputerName ( pipes_struct * p , struct wkssvc_NetrRemoveAlternateComputerName * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
2006-09-20 21:56:50 +04:00
}
2006-09-20 23:26:21 +04:00
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrSetPrimaryComputername ( pipes_struct * p , struct wkssvc_NetrSetPrimaryComputername * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}
/********************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-11-30 03:44:44 +03:00
WERROR _wkssvc_NetrEnumerateComputerNames ( pipes_struct * p , struct wkssvc_NetrEnumerateComputerNames * r )
2006-09-20 23:26:21 +04:00
{
/* FIXME: Add implementation code here */
2006-10-10 12:39:11 +04:00
p - > rng_fault_state = True ;
2006-09-20 23:26:21 +04:00
return WERR_NOT_SUPPORTED ;
}