2003-10-24 17:38:13 +04:00
/*
Unix SMB / CIFS implementation .
NT Domain Authentication SMB / MSRPC client
Copyright ( C ) Andrew Tridgell 1994 - 1997 ,
Copyright ( C ) Luke Kenneth Casson Leighton 1996 - 1997 ,
Copyright ( C ) Simo Sorce 2001 ,
Copyright ( C ) Jim McDonough ( jmcd @ us . ibm . com ) 2003.
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
2003-10-24 17:38:13 +04: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 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2003-10-24 17:38:13 +04:00
*/
# include "includes.h"
# include "rpcclient.h"
2005-03-22 21:07:58 +03:00
#if 0 /* don't uncomment this unless you remove the getopt() calls */
/* use net rpc shutdown instead */
2003-10-24 17:38:13 +04:00
/****************************************************************************
nt shutdown init
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static NTSTATUS cmd_shutdown_init ( struct cli_state * cli , TALLOC_CTX * mem_ctx ,
int argc , const char * * argv )
{
NTSTATUS result = NT_STATUS_UNSUCCESSFUL ;
fstring msg ;
2015-05-09 17:33:08 +03:00
uint32_t timeout = 20 ;
2007-10-19 04:40:25 +04:00
bool force = False ;
bool reboot = False ;
2003-10-24 17:38:13 +04:00
int opt ;
* msg = 0 ;
optind = 0 ; /* TODO: test if this hack works on other systems too --simo */
while ( ( opt = getopt ( argc , argv , " m:t:rf " ) ) ! = EOF )
{
/*fprintf (stderr, "[%s]\n", argv[argc-1]);*/
switch ( opt )
{
case ' m ' :
fstrcpy ( msg , optarg ) ;
/*fprintf (stderr, "[%s|%s]\n", optarg, msg);*/
break ;
case ' t ' :
timeout = atoi ( optarg ) ;
/*fprintf (stderr, "[%s|%d]\n", optarg, timeout);*/
break ;
case ' r ' :
reboot = True ;
break ;
case ' f ' :
force = True ;
break ;
}
}
/* create an entry */
result = cli_shutdown_init ( cli , mem_ctx , msg , timeout , reboot , force ) ;
if ( NT_STATUS_IS_OK ( result ) )
DEBUG ( 5 , ( " cmd_shutdown_init: query succeeded \n " ) ) ;
else
DEBUG ( 5 , ( " cmd_shutdown_init: query failed \n " ) ) ;
return result ;
}
/****************************************************************************
abort a shutdown
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static NTSTATUS cmd_shutdown_abort ( struct cli_state * cli ,
TALLOC_CTX * mem_ctx , int argc ,
const char * * argv )
{
NTSTATUS result = NT_STATUS_UNSUCCESSFUL ;
result = cli_shutdown_abort ( cli , mem_ctx ) ;
if ( NT_STATUS_IS_OK ( result ) )
DEBUG ( 5 , ( " cmd_shutdown_abort: query succeeded \n " ) ) ;
else
DEBUG ( 5 , ( " cmd_shutdown_abort: query failed \n " ) ) ;
return result ;
}
2005-03-22 21:07:58 +03:00
# endif
2003-10-24 17:38:13 +04:00
/* List of commands exported by this module */
struct cmd_set shutdown_commands [ ] = {
{ " SHUTDOWN " } ,
2005-03-22 21:07:58 +03:00
#if 0
2009-11-08 21:38:09 +03:00
{ " shutdowninit " , RPC_RTYPE_NTSTATUS , cmd_shutdown_init , NULL , & ndr_table_initshutdown . syntax_id , " Remote Shutdown (over shutdown pipe) " ,
" syntax: shutdown [-m message] [-t timeout] [-r] [-h] [-f] (-r == reboot, -h == halt, -f == force) " } ,
{ " shutdownabort " , RPC_RTYPE_NTSTATUS , cmd_shutdown_abort , NULL , & ndr_table_initshutdown . syntax_id , " Abort Shutdown (over shutdown pipe) " ,
" syntax: shutdownabort " } ,
2005-03-22 21:07:58 +03:00
# endif
2003-10-24 17:38:13 +04:00
{ NULL }
} ;