mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
0a6f78d736
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
138 lines
3.7 KiB
C
138 lines
3.7 KiB
C
/*
|
|
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
|
|
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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "includes.h"
|
|
#include "rpcclient.h"
|
|
|
|
#if 0 /* don't uncomment this unless you remove the getopt() calls */
|
|
/* use net rpc shutdown instead */
|
|
|
|
/****************************************************************************
|
|
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;
|
|
uint32_t timeout = 20;
|
|
bool force = False;
|
|
bool reboot = False;
|
|
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;
|
|
}
|
|
#endif
|
|
|
|
|
|
/* List of commands exported by this module */
|
|
struct cmd_set shutdown_commands[] = {
|
|
|
|
{
|
|
.name = "SHUTDOWN",
|
|
},
|
|
|
|
#if 0
|
|
{
|
|
.name = "shutdowninit",
|
|
.returntype = RPC_RTYPE_NTSTATUS,
|
|
.ntfn = cmd_shutdown_init,
|
|
.wfn = NULL,
|
|
.table = &ndr_table_initshutdown.syntax_id,
|
|
.rpc_pipe = "Remote Shutdown (over shutdown pipe)",
|
|
.description = "syntax: shutdown [-m message] "
|
|
"[-t timeout] [-r] [-h] [-f] (-r == "
|
|
"reboot, -h == halt, -f == force)",
|
|
},
|
|
|
|
{
|
|
.name = "shutdownabort",
|
|
.returntype = RPC_RTYPE_NTSTATUS,
|
|
.ntfn = cmd_shutdown_abort,
|
|
.wfn = NULL,
|
|
.table = &ndr_table_initshutdown.syntax_id,
|
|
.rpc_pipe = "Abort Shutdown (over shutdown pipe)",
|
|
.description = "syntax: shutdownabort",
|
|
},
|
|
#endif
|
|
{
|
|
.name = NULL,
|
|
},
|
|
};
|