From 6cf3db91499ebd245b08997a319edf36cfee3365 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 28 Jul 2009 15:06:11 -0400 Subject: s3:winbind: Add NDR-based parent-child communication to winbind --- source3/Makefile.in | 8 +- source3/librpc/gen_ndr/cli_wbint.c | 159 ++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 15 ++ source3/librpc/gen_ndr/ndr_wbint.c | 110 ++++++++++++++ source3/librpc/gen_ndr/ndr_wbint.h | 18 +++ source3/librpc/gen_ndr/srv_wbint.c | 130 +++++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 9 ++ source3/librpc/gen_ndr/wbint.h | 22 +++ source3/librpc/idl/wbint.idl | 14 ++ source3/winbindd/winbindd.h | 1 + source3/winbindd/winbindd_domain.c | 4 + source3/winbindd/winbindd_dual.c | 13 ++ source3/winbindd/winbindd_dual_ndr.c | 273 +++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 30 ++++ source3/winbindd/winbindd_idmap.c | 4 + source3/winbindd/winbindd_locator.c | 4 + source3/winbindd/winbindd_proto.h | 6 + 17 files changed, 819 insertions(+), 1 deletion(-) create mode 100644 source3/librpc/gen_ndr/cli_wbint.c create mode 100644 source3/librpc/gen_ndr/cli_wbint.h create mode 100644 source3/librpc/gen_ndr/ndr_wbint.c create mode 100644 source3/librpc/gen_ndr/ndr_wbint.h create mode 100644 source3/librpc/gen_ndr/srv_wbint.c create mode 100644 source3/librpc/gen_ndr/srv_wbint.h create mode 100644 source3/librpc/gen_ndr/wbint.h create mode 100644 source3/librpc/idl/wbint.idl create mode 100644 source3/winbindd/winbindd_dual_ndr.c create mode 100644 source3/winbindd/winbindd_dual_srv.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index ecfbcd0b9c..1686a9c809 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1138,6 +1138,11 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_ads.o \ winbindd/winbindd_passdb.o \ winbindd/winbindd_dual.o \ + winbindd/winbindd_dual_ndr.o \ + winbindd/winbindd_dual_srv.o \ + librpc/gen_ndr/cli_wbint.o \ + librpc/gen_ndr/srv_wbint.o \ + librpc/gen_ndr/ndr_wbint.o \ winbindd/winbindd_async.o \ winbindd/winbindd_creds.o \ winbindd/winbindd_cred_cache.o \ @@ -1322,7 +1327,8 @@ samba3-idl:: srcdir="$(srcdir)" ../librpc/build_idl.sh ../librpc/idl/*.idl @PIDL_OUTPUTDIR="librpc/gen_ndr" PIDL_ARGS="$(PIDL_ARGS)" CPP="$(CPP)" PIDL="../pidl/pidl" \ srcdir="$(srcdir)" $(srcdir)/script/build_idl.sh \ - librpc/idl/messaging.idl librpc/idl/libnetapi.idl librpc/idl/notify.idl + librpc/idl/messaging.idl librpc/idl/libnetapi.idl librpc/idl/notify.idl \ + librpc/idl/wbint.idl ##################################################################### diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c new file mode 100644 index 0000000000..044fdf9d1c --- /dev/null +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -0,0 +1,159 @@ +/* + * Unix SMB/CIFS implementation. + * client auto-generated by pidl. DO NOT MODIFY! + */ + +#include "includes.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct rpccli_wbint_Ping_state { + struct wbint_Ping orig; + struct wbint_Ping tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_Ping_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_Ping_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + uint32_t _in_data /* [in] */, + uint32_t *_out_data /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_Ping_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_Ping_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.in_data = _in_data; + + /* Out parameters */ + state->orig.out.out_data = _out_data; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Ping, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_Ping_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_PING, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_Ping_done, req); + return req; +} + +static void rpccli_wbint_Ping_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_Ping_state *state = tevent_req_data( + req, struct rpccli_wbint_Ping_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.out_data = *state->tmp.out.out_data; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Ping, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_Ping_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx) +{ + struct rpccli_wbint_Ping_state *state = tevent_req_data( + req, struct rpccli_wbint_Ping_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_Ping(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + uint32_t in_data /* [in] */, + uint32_t *out_data /* [out] [ref] */) +{ + struct wbint_Ping r; + NTSTATUS status; + + /* In parameters */ + r.in.in_data = in_data; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Ping, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_PING, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Ping, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *out_data = *r.out.out_data; + + /* Return result */ + return NT_STATUS_OK; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h new file mode 100644 index 0000000000..25b13f2b64 --- /dev/null +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -0,0 +1,15 @@ +#include "librpc/gen_ndr/ndr_wbint.h" +#ifndef __CLI_WBINT__ +#define __CLI_WBINT__ +struct tevent_req *rpccli_wbint_Ping_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + uint32_t _in_data /* [in] */, + uint32_t *_out_data /* [out] [ref] */); +NTSTATUS rpccli_wbint_Ping_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx); +NTSTATUS rpccli_wbint_Ping(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + uint32_t in_data /* [in] */, + uint32_t *out_data /* [out] [ref] */); +#endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c new file mode 100644 index 0000000000..fed1ce2f1e --- /dev/null +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -0,0 +1,110 @@ +/* parser auto-generated by pidl */ + +#include "includes.h" +#include "librpc/gen_ndr/ndr_wbint.h" + +static enum ndr_err_code ndr_push_wbint_Ping(struct ndr_push *ndr, int flags, const struct wbint_Ping *r) +{ + if (flags & NDR_IN) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.in_data)); + } + if (flags & NDR_OUT) { + if (r->out.out_data == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.out_data)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_Ping(struct ndr_pull *ndr, int flags, struct wbint_Ping *r) +{ + TALLOC_CTX *_mem_save_out_data_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.in_data)); + NDR_PULL_ALLOC(ndr, r->out.out_data); + ZERO_STRUCTP(r->out.out_data); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.out_data); + } + _mem_save_out_data_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.out_data, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.out_data)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_out_data_0, LIBNDR_FLAG_REF_ALLOC); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r) +{ + ndr_print_struct(ndr, name, "wbint_Ping"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_Ping"); + ndr->depth++; + ndr_print_uint32(ndr, "in_data", r->in.in_data); + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_Ping"); + ndr->depth++; + ndr_print_ptr(ndr, "out_data", r->out.out_data); + ndr->depth++; + ndr_print_uint32(ndr, "out_data", *r->out.out_data); + ndr->depth--; + ndr->depth--; + } + ndr->depth--; +} + +static const struct ndr_interface_call wbint_calls[] = { + { + "wbint_Ping", + sizeof(struct wbint_Ping), + (ndr_push_flags_fn_t) ndr_push_wbint_Ping, + (ndr_pull_flags_fn_t) ndr_pull_wbint_Ping, + (ndr_print_function_t) ndr_print_wbint_Ping, + false, + }, + { NULL, 0, NULL, NULL, NULL, false } +}; + +static const char * const wbint_endpoint_strings[] = { + "ncalrpc:", +}; + +static const struct ndr_interface_string_array wbint_endpoints = { + .count = 1, + .names = wbint_endpoint_strings +}; + +static const char * const wbint_authservice_strings[] = { + "host", +}; + +static const struct ndr_interface_string_array wbint_authservices = { + .count = 1, + .names = wbint_authservice_strings +}; + + +const struct ndr_interface_table ndr_table_wbint = { + .name = "wbint", + .syntax_id = { + {0xbf09192c,0xed60,0x4928,{0x9d,0xff},{0xd0,0xd7,0xbc,0xb0,0x3e,0xd8}}, + NDR_WBINT_VERSION + }, + .helpstring = NDR_WBINT_HELPSTRING, + .num_calls = 1, + .calls = wbint_calls, + .endpoints = &wbint_endpoints, + .authservices = &wbint_authservices +}; + diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h new file mode 100644 index 0000000000..6c38087687 --- /dev/null +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -0,0 +1,18 @@ +/* header auto-generated by pidl */ + +#include "librpc/ndr/libndr.h" +#include "librpc/gen_ndr/wbint.h" + +#ifndef _HEADER_NDR_wbint +#define _HEADER_NDR_wbint + +#define NDR_WBINT_UUID "bf09192c-ed60-4928-9dff-d0d7bcb03ed8" +#define NDR_WBINT_VERSION 1.0 +#define NDR_WBINT_NAME "wbint" +#define NDR_WBINT_HELPSTRING "winbind parent-child protocol" +extern const struct ndr_interface_table ndr_table_wbint; +#define NDR_WBINT_PING (0x00) + +#define NDR_WBINT_CALL_COUNT (1) +void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); +#endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c new file mode 100644 index 0000000000..0a3569b874 --- /dev/null +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -0,0 +1,130 @@ +/* + * Unix SMB/CIFS implementation. + * server auto-generated by pidl. DO NOT MODIFY! + */ + +#include "includes.h" +#include "librpc/gen_ndr/srv_wbint.h" + +static bool api_wbint_Ping(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_Ping *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_PING]; + + r = talloc(talloc_tos(), struct wbint_Ping); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Ping, r); + } + + ZERO_STRUCT(r->out); + r->out.out_data = talloc_zero(r, uint32_t); + if (r->out.out_data == NULL) { + talloc_free(r); + return false; + } + + _wbint_Ping(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Ping, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + + +/* Tables */ +static struct api_struct api_wbint_cmds[] = +{ + {"WBINT_PING", NDR_WBINT_PING, api_wbint_Ping}, +}; + +void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) +{ + *fns = api_wbint_cmds; + *n_fns = sizeof(api_wbint_cmds) / sizeof(struct api_struct); +} + +NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *_r) +{ + if (cli->pipes_struct == NULL) { + return NT_STATUS_INVALID_PARAMETER; + } + + switch (opnum) + { + case NDR_WBINT_PING: { + struct wbint_Ping *r = (struct wbint_Ping *)_r; + ZERO_STRUCT(r->out); + r->out.out_data = talloc_zero(mem_ctx, uint32_t); + if (r->out.out_data == NULL) { + return NT_STATUS_NO_MEMORY; + } + + _wbint_Ping(cli->pipes_struct, r); + return NT_STATUS_OK; + } + + default: + return NT_STATUS_NOT_IMPLEMENTED; + } +} + +NTSTATUS rpc_wbint_init(void) +{ + return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "wbint", "wbint", &ndr_table_wbint, api_wbint_cmds, sizeof(api_wbint_cmds) / sizeof(struct api_struct)); +} diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h new file mode 100644 index 0000000000..af3d21a43d --- /dev/null +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -0,0 +1,9 @@ +#include "librpc/gen_ndr/ndr_wbint.h" +#ifndef __SRV_WBINT__ +#define __SRV_WBINT__ +void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); +void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); +NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); +void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); +NTSTATUS rpc_wbint_init(void); +#endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h new file mode 100644 index 0000000000..641d960a1b --- /dev/null +++ b/source3/librpc/gen_ndr/wbint.h @@ -0,0 +1,22 @@ +/* header auto-generated by pidl */ + +#include + +#include "libcli/util/ntstatus.h" + +#ifndef _HEADER_wbint +#define _HEADER_wbint + + +struct wbint_Ping { + struct { + uint32_t in_data; + } in; + + struct { + uint32_t *out_data;/* [ref] */ + } out; + +}; + +#endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl new file mode 100644 index 0000000000..40a4545a3a --- /dev/null +++ b/source3/librpc/idl/wbint.idl @@ -0,0 +1,14 @@ +[ + uuid("bf09192c-ed60-4928-9dff-d0d7bcb03ed8"), + endpoint("ncalrpc:"), + pointer_default(unique), + version(1.0), + helpstring("winbind parent-child protocol") +] +interface wbint +{ + void wbint_Ping( + [in] uint32 in_data, + [out] uint32 *out_data + ); +} \ No newline at end of file diff --git a/source3/winbindd/winbindd.h b/source3/winbindd/winbindd.h index 8f0db44617..baab7fd11a 100644 --- a/source3/winbindd/winbindd.h +++ b/source3/winbindd/winbindd.h @@ -138,6 +138,7 @@ struct winbindd_child { int sock; struct tevent_queue *queue; + struct rpc_pipe_client *rpccli; struct timed_event *lockout_policy_event; struct timed_event *machine_password_change_event; diff --git a/source3/winbindd/winbindd_domain.c b/source3/winbindd/winbindd_domain.c index 8c52df3e16..5ff2e16abb 100644 --- a/source3/winbindd/winbindd_domain.c +++ b/source3/winbindd/winbindd_domain.c @@ -121,6 +121,10 @@ static const struct winbindd_child_dispatch_table domain_dispatch_table[] = { .name = "CCACHE_NTLM_AUTH", .struct_cmd = WINBINDD_CCACHE_NTLMAUTH, .struct_fn = winbindd_dual_ccache_ntlm_auth, + },{ + .name = "NDRCMD", + .struct_cmd = WINBINDD_DUAL_NDRCMD, + .struct_fn = winbindd_dual_ndrcmd, },{ .name = NULL, } diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c index 1985dd8b12..2158834bdd 100644 --- a/source3/winbindd/winbindd_dual.c +++ b/source3/winbindd/winbindd_dual.c @@ -592,6 +592,8 @@ void setup_child(struct winbindd_child *child, child->table = table; child->queue = tevent_queue_create(NULL, "winbind_child"); SMB_ASSERT(child->queue != NULL); + child->rpccli = wbint_rpccli_create(NULL, child); + SMB_ASSERT(child->rpccli != NULL); } struct winbindd_child *children = NULL; @@ -1307,6 +1309,16 @@ bool winbindd_reinit_after_fork(const char *logfilename) return true; } +/* + * In a child there will be only one domain, reference that here. + */ +static struct winbindd_domain *child_domain; + +struct winbindd_domain *wb_child_domain(void) +{ + return child_domain; +} + static bool fork_domain_child(struct winbindd_child *child) { int fdpair[2]; @@ -1321,6 +1333,7 @@ static bool fork_domain_child(struct winbindd_child *child) } else { DEBUG(10, ("fork_domain_child called without domain.\n")); } + child_domain = child->domain; if (socketpair(AF_UNIX, SOCK_STREAM, 0, fdpair) != 0) { DEBUG(0, ("Could not open child pipe: %s\n", diff --git a/source3/winbindd/winbindd_dual_ndr.c b/source3/winbindd/winbindd_dual_ndr.c new file mode 100644 index 0000000000..f72d6615a0 --- /dev/null +++ b/source3/winbindd/winbindd_dual_ndr.c @@ -0,0 +1,273 @@ +/* + Unix SMB/CIFS implementation. + + Provide parent->child communication based on NDR marshalling + + Copyright (C) Volker Lendecke 2009 + + 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 . +*/ + +/* + * This file implements an RPC between winbind parent and child processes, + * leveraging the autogenerated marshalling routines for MSRPC. This is not + * MSRPC, as it does not go through the whole DCERPC fragmentation, we just + * leverage much the same infrastructure we already have for it. + */ + +#include "includes.h" +#include "winbindd/winbindd.h" +#include "winbindd/winbindd_proto.h" +#include "librpc/gen_ndr/srv_wbint.h" + +struct wb_ndr_transport_priv { + struct winbindd_child *child; +}; + +struct wb_ndr_dispatch_state { + const struct ndr_interface_call *call; + void *r; + struct ndr_push *push; + struct winbindd_request request; + struct winbindd_response *response; +}; + +static void wb_ndr_dispatch_done(struct tevent_req *subreq); + +static struct tevent_req *wb_ndr_dispatch_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const struct ndr_interface_table *table, + uint32_t opnum, + void *r) +{ + struct tevent_req *req, *subreq; + struct wb_ndr_dispatch_state *state; + struct wb_ndr_transport_priv *transport = talloc_get_type_abort( + cli->transport->priv, struct wb_ndr_transport_priv); + DATA_BLOB blob; + enum ndr_err_code ndr_err; + + req = tevent_req_create(mem_ctx, &state, + struct wb_ndr_dispatch_state); + if (req == NULL) { + return NULL; + } + + state->r = r; + state->call = &table->calls[opnum]; + + state->push = ndr_push_init_ctx(state, NULL); + if (tevent_req_nomem(state->push, req)) { + return tevent_req_post(req, ev); + } + + ndr_err = state->call->ndr_push(state->push, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + tevent_req_nterror(req, ndr_map_error2ntstatus(ndr_err)); + TALLOC_FREE(state->push); + return tevent_req_post(req, ev); + } + + blob = ndr_push_blob(state->push); + + state->request.cmd = WINBINDD_DUAL_NDRCMD; + state->request.data.ndrcmd = opnum; + state->request.extra_data.data = (char *)blob.data; + state->request.extra_len = blob.length; + + subreq = wb_child_request_send(state, ev, transport->child, + &state->request); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_ndr_dispatch_done, req); + return req; +} + +static void wb_ndr_dispatch_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_ndr_dispatch_state *state = tevent_req_data( + req, struct wb_ndr_dispatch_state); + int ret, err; + + ret = wb_child_request_recv(subreq, state, &state->response, &err); + TALLOC_FREE(subreq); + if (ret == -1) { + tevent_req_nterror(req, map_nt_error_from_unix(err)); + return; + } + tevent_req_done(req); +} + +static NTSTATUS wb_ndr_dispatch_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx) +{ + struct wb_ndr_dispatch_state *state = tevent_req_data( + req, struct wb_ndr_dispatch_state); + NTSTATUS status; + struct ndr_pull *pull; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + + blob.data = (uint8_t *)state->response->extra_data.data; + blob.length = state->response->length + - sizeof(struct winbindd_response); + + pull = ndr_pull_init_blob(&blob, mem_ctx, NULL); + if (pull == NULL) { + return NT_STATUS_NO_MEMORY; + } + + /* have the ndr parser alloc memory for us */ + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = state->call->ndr_pull(pull, NDR_OUT, state->r); + TALLOC_FREE(pull); + + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + return ndr_map_error2ntstatus(ndr_err); + } + + return NT_STATUS_OK; +} + +static NTSTATUS wb_ndr_dispatch(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const struct ndr_interface_table *table, + uint32_t opnum, void *r) +{ + TALLOC_CTX *frame = talloc_stackframe(); + struct event_context *ev; + struct tevent_req *req; + NTSTATUS status = NT_STATUS_OK; + + ev = event_context_init(frame); + if (ev == NULL) { + status = NT_STATUS_NO_MEMORY; + goto fail; + } + + req = wb_ndr_dispatch_send(frame, ev, cli, table, opnum, r); + if (req == NULL) { + status = NT_STATUS_NO_MEMORY; + goto fail; + } + + if (!tevent_req_poll(req, ev)) { + status = map_nt_error_from_unix(errno); + goto fail; + } + + status = wb_ndr_dispatch_recv(req, mem_ctx); + fail: + TALLOC_FREE(frame); + return status; +} + +struct rpc_pipe_client *wbint_rpccli_create(TALLOC_CTX *mem_ctx, + struct winbindd_child *child) +{ + struct rpc_pipe_client *result; + struct wb_ndr_transport_priv *transp; + + result = talloc(mem_ctx, struct rpc_pipe_client); + if (result == NULL) { + return NULL; + } + result->abstract_syntax = ndr_table_wbint.syntax_id; + result->transfer_syntax = ndr_transfer_syntax; + result->dispatch = wb_ndr_dispatch; + result->dispatch_send = wb_ndr_dispatch_send; + result->dispatch_recv = wb_ndr_dispatch_recv; + result->max_xmit_frag = RPC_MAX_PDU_FRAG_LEN; + result->max_recv_frag = RPC_MAX_PDU_FRAG_LEN; + result->desthost = NULL; + result->srv_name_slash = NULL; + + /* + * Initialize a fake transport. Due to our own wb_ndr_dispatch + * function we don't use all the fragmentation engine in + * cli_pipe, which would use all the _read and _write + * functions in rpc_cli_transport. But we need a place to + * store the child struct in, and we're re-using + * result->transport->priv for that. + */ + + result->transport = talloc_zero(result, struct rpc_cli_transport); + if (result->transport == NULL) { + TALLOC_FREE(result); + return NULL; + } + transp = talloc(result->transport, struct wb_ndr_transport_priv); + if (transp == NULL) { + TALLOC_FREE(result); + return NULL; + } + transp->child = child; + result->transport->priv = transp; + return result; +} + +enum winbindd_result winbindd_dual_ndrcmd(struct winbindd_domain *domain, + struct winbindd_cli_state *state) +{ + pipes_struct p; + struct api_struct *fns; + int num_fns; + bool ret; + + wbint_get_pipe_fns(&fns, &num_fns); + + if (state->request->data.ndrcmd >= num_fns) { + return WINBINDD_ERROR; + } + + ZERO_STRUCT(p); + p.mem_ctx = talloc_stackframe(); + p.in_data.data.buffer_size = state->request->extra_len; + p.in_data.data.data_p = state->request->extra_data.data; + prs_init(&p.out_data.rdata, 0, state->mem_ctx, false); + + ret = fns[state->request->data.ndrcmd].fn(&p); + TALLOC_FREE(p.mem_ctx); + if (!ret) { + return WINBINDD_ERROR; + } + + state->response->extra_data.data = + talloc_memdup(state->mem_ctx, p.out_data.rdata.data_p, + p.out_data.rdata.data_offset); + state->response->length += p.out_data.rdata.data_offset; + prs_mem_free(&p.out_data.rdata); + if (state->response->extra_data.data == NULL) { + return WINBINDD_ERROR; + } + return WINBINDD_OK; +} + +/* + * Just a dummy to make srv_wbint.c happy + */ +NTSTATUS rpc_srv_register(int version, const char *clnt, const char *srv, + const struct ndr_interface_table *iface, + const struct api_struct *cmds, int size) +{ + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c new file mode 100644 index 0000000000..5d2d7f389d --- /dev/null +++ b/source3/winbindd/winbindd_dual_srv.c @@ -0,0 +1,30 @@ +/* + Unix SMB/CIFS implementation. + + In-Child server implementation of the routines defined in wbint.idl + + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd/winbindd.h" +#include "winbindd/winbindd_proto.h" +#include "librpc/gen_ndr/srv_wbint.h" + +void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r) +{ + *r->out.out_data = r->in.in_data; +} diff --git a/source3/winbindd/winbindd_idmap.c b/source3/winbindd/winbindd_idmap.c index 6e24a9c212..7bcc58a014 100644 --- a/source3/winbindd/winbindd_idmap.c +++ b/source3/winbindd/winbindd_idmap.c @@ -564,6 +564,10 @@ static const struct winbindd_child_dispatch_table idmap_dispatch_table[] = { .name = "ALLOCATE_GID", .struct_cmd = WINBINDD_ALLOCATE_GID, .struct_fn = winbindd_dual_allocate_gid, + },{ + .name = "NDRCMD", + .struct_cmd = WINBINDD_DUAL_NDRCMD, + .struct_fn = winbindd_dual_ndrcmd, },{ .name = NULL, } diff --git a/source3/winbindd/winbindd_locator.c b/source3/winbindd/winbindd_locator.c index 43dadfae29..b35d8dcf54 100644 --- a/source3/winbindd/winbindd_locator.c +++ b/source3/winbindd/winbindd_locator.c @@ -164,6 +164,10 @@ static const struct winbindd_child_dispatch_table locator_dispatch_table[] = { .name = "DSGETDCNAME", .struct_cmd = WINBINDD_DSGETDCNAME, .struct_fn = dual_dsgetdcname, + },{ + .name = "NDRCMD", + .struct_cmd = WINBINDD_DUAL_NDRCMD, + .struct_fn = winbindd_dual_ndrcmd, },{ .name = NULL, } diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index c9decf8cc4..f9ef776c5d 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -330,6 +330,7 @@ void winbind_msg_dump_domain_list(struct messaging_context *msg_ctx, struct server_id server_id, DATA_BLOB *data); bool winbindd_reinit_after_fork(const char *logfilename); +struct winbindd_domain *wb_child_domain(void); /* The following definitions come from winbindd/winbindd_group.c */ @@ -594,4 +595,9 @@ NTSTATUS wb_ping_recv(struct tevent_req *req, enum winbindd_result winbindd_dual_ping(struct winbindd_domain *domain, struct winbindd_cli_state *state); +struct rpc_pipe_client *wbint_rpccli_create(TALLOC_CTX *mem_ctx, + struct winbindd_child *child); +enum winbindd_result winbindd_dual_ndrcmd(struct winbindd_domain *domain, + struct winbindd_cli_state *state); + #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 2d6589fb0243cb2b73615de1aaea38a3059c08ed Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 1 Aug 2009 12:16:11 +0200 Subject: s3:winbind: Make wcache_sid_to_name externally visible --- source3/winbindd/winbindd_cache.c | 85 ++++++++++++++++++++------------------- source3/winbindd/winbindd_proto.h | 6 +++ 2 files changed, 49 insertions(+), 42 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index bec2a714c8..f273f2c8d6 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -1678,42 +1678,65 @@ do_query: return status; } -/* convert a sid to a user or group name. The sid is guaranteed to be in the domain - given */ -static NTSTATUS sid_to_name(struct winbindd_domain *domain, +NTSTATUS wcache_sid_to_name(struct winbindd_domain *domain, + const struct dom_sid *sid, TALLOC_CTX *mem_ctx, - const DOM_SID *sid, char **domain_name, char **name, enum lsa_SidType *type) { struct winbind_cache *cache = get_cache(domain); - struct cache_entry *centry = NULL; + struct cache_entry *centry; + char *sid_string; NTSTATUS status; - fstring sid_string; - if (!cache->tdb) - goto do_query; + if (cache->tdb == NULL) { + return NT_STATUS_NOT_FOUND; + } - centry = wcache_fetch(cache, domain, "SN/%s", - sid_to_fstring(sid_string, sid)); - if (!centry) - goto do_query; + sid_string = sid_string_tos(sid); + if (sid_string == NULL) { + return NT_STATUS_NO_MEMORY; + } - status = centry->status; - if (NT_STATUS_IS_OK(status)) { + centry = wcache_fetch(cache, domain, "SN/%s", sid_string); + TALLOC_FREE(sid_string); + if (centry == NULL) { + return NT_STATUS_NOT_FOUND; + } + + if (NT_STATUS_IS_OK(centry->status)) { *type = (enum lsa_SidType)centry_uint32(centry); *domain_name = centry_string(centry, mem_ctx); *name = centry_string(centry, mem_ctx); } - DEBUG(10,("sid_to_name: [Cached] - cached name for domain %s status: %s\n", - domain->name, nt_errstr(status) )); - + status = centry->status; centry_free(centry); + + DEBUG(10,("sid_to_name: [Cached] - cached name for domain %s status: " + "%s\n", domain->name, nt_errstr(status) )); + return status; +} + +/* convert a sid to a user or group name. The sid is guaranteed to be in the domain + given */ +static NTSTATUS sid_to_name(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const DOM_SID *sid, + char **domain_name, + char **name, + enum lsa_SidType *type) +{ + NTSTATUS status; + + status = wcache_sid_to_name(domain, sid, mem_ctx, domain_name, name, + type); + if (!NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { + return status; + } -do_query: *name = NULL; *domain_name = NULL; @@ -2625,36 +2648,14 @@ bool lookup_cached_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid, enum lsa_SidType *type) { struct winbindd_domain *domain; - struct winbind_cache *cache; - struct cache_entry *centry = NULL; NTSTATUS status; - fstring tmp; domain = find_lookup_domain_from_sid(sid); if (domain == NULL) { return false; } - - cache = get_cache(domain); - - if (cache->tdb == NULL) { - return false; - } - - centry = wcache_fetch(cache, domain, "SN/%s", - sid_to_fstring(tmp, sid)); - if (centry == NULL) { - return false; - } - - if (NT_STATUS_IS_OK(centry->status)) { - *type = (enum lsa_SidType)centry_uint32(centry); - *domain_name = centry_string(centry, mem_ctx); - *name = centry_string(centry, mem_ctx); - } - - status = centry->status; - centry_free(centry); + status = wcache_sid_to_name(domain, sid, mem_ctx, domain_name, name, + type); return NT_STATUS_IS_OK(status); } diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index f9ef776c5d..182534a1fa 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -149,6 +149,12 @@ bool wcache_invalidate_cache(void); bool init_wcache(void); bool initialize_winbindd_cache(void); void close_winbindd_cache(void); +NTSTATUS wcache_sid_to_name(struct winbindd_domain *domain, + const struct dom_sid *sid, + TALLOC_CTX *mem_ctx, + char **domain_name, + char **name, + enum lsa_SidType *type); bool lookup_cached_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **domain_name, char **name, enum lsa_SidType *type); -- cgit From bb359c780aee3fd7e1074db93a28c95590ae5d36 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 3 Aug 2009 23:44:46 +0200 Subject: s3:winbind: Add async wb_lookupsid --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 171 ++++++++++++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 16 +++ source3/librpc/gen_ndr/ndr_wbint.c | 184 ++++++++++++++++++++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 5 +- source3/librpc/gen_ndr/srv_wbint.c | 115 ++++++++++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 16 +++ source3/librpc/idl/wbint.idl | 10 ++ source3/winbindd/wb_lookupsid.c | 132 +++++++++++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 24 +++++ source3/winbindd/winbindd_proto.h | 7 ++ 12 files changed, 681 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_lookupsid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 1686a9c809..a9f9c16598 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1152,6 +1152,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_locator.o \ winbindd/winbindd_ndr.o \ winbindd/wb_ping.o \ + winbindd/wb_lookupsid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index 044fdf9d1c..491413ee76 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -157,3 +157,174 @@ NTSTATUS rpccli_wbint_Ping(struct rpc_pipe_client *cli, return NT_STATUS_OK; } +struct rpccli_wbint_LookupSid_state { + struct wbint_LookupSid orig; + struct wbint_LookupSid tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_LookupSid_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_LookupSid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct dom_sid *_sid /* [in] [ref] */, + enum lsa_SidType *_type /* [out] [ref] */, + const char **_domain /* [out] [ref,charset(UTF8)] */, + const char **_name /* [out] [ref,charset(UTF8)] */) +{ + struct tevent_req *req; + struct rpccli_wbint_LookupSid_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_LookupSid_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.sid = _sid; + + /* Out parameters */ + state->orig.out.type = _type; + state->orig.out.domain = _domain; + state->orig.out.name = _name; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupSid, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_LookupSid_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_LOOKUPSID, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_LookupSid_done, req); + return req; +} + +static void rpccli_wbint_LookupSid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_LookupSid_state *state = tevent_req_data( + req, struct rpccli_wbint_LookupSid_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.type = *state->tmp.out.type; + *state->orig.out.domain = *state->tmp.out.domain; + *state->orig.out.name = *state->tmp.out.name; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupSid, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_LookupSid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_LookupSid_state *state = tevent_req_data( + req, struct rpccli_wbint_LookupSid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_LookupSid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct dom_sid *sid /* [in] [ref] */, + enum lsa_SidType *type /* [out] [ref] */, + const char **domain /* [out] [ref,charset(UTF8)] */, + const char **name /* [out] [ref,charset(UTF8)] */) +{ + struct wbint_LookupSid r; + NTSTATUS status; + + /* In parameters */ + r.in.sid = sid; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupSid, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_LOOKUPSID, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupSid, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *type = *r.out.type; + *domain = *r.out.domain; + *name = *r.out.name; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index 25b13f2b64..b79fd19a36 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -12,4 +12,20 @@ NTSTATUS rpccli_wbint_Ping(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t in_data /* [in] */, uint32_t *out_data /* [out] [ref] */); +struct tevent_req *rpccli_wbint_LookupSid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct dom_sid *_sid /* [in] [ref] */, + enum lsa_SidType *_type /* [out] [ref] */, + const char **_domain /* [out] [ref,charset(UTF8)] */, + const char **_name /* [out] [ref,charset(UTF8)] */); +NTSTATUS rpccli_wbint_LookupSid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_LookupSid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct dom_sid *sid /* [in] [ref] */, + enum lsa_SidType *type /* [out] [ref] */, + const char **domain /* [out] [ref,charset(UTF8)] */, + const char **name /* [out] [ref,charset(UTF8)] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index fed1ce2f1e..1e8ea207b7 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -3,6 +3,7 @@ #include "includes.h" #include "librpc/gen_ndr/ndr_wbint.h" +#include "librpc/gen_ndr/ndr_lsa.h" static enum ndr_err_code ndr_push_wbint_Ping(struct ndr_push *ndr, int flags, const struct wbint_Ping *r) { if (flags & NDR_IN) { @@ -64,6 +65,179 @@ _PUBLIC_ void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_LookupSid(struct ndr_push *ndr, int flags, const struct wbint_LookupSid *r) +{ + if (flags & NDR_IN) { + if (r->in.sid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + } + if (flags & NDR_OUT) { + if (r->out.type == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_lsa_SidType(ndr, NDR_SCALARS, *r->out.type)); + if (r->out.domain == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.domain)); + if (*r->out.domain) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.domain, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.domain, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.domain, ndr_charset_length(*r->out.domain, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + if (r->out.name == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.name)); + if (*r->out.name) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.name, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.name, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.name, ndr_charset_length(*r->out.name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_LookupSid(struct ndr_pull *ndr, int flags, struct wbint_LookupSid *r) +{ + uint32_t _ptr_domain; + uint32_t _ptr_name; + TALLOC_CTX *_mem_save_sid_0; + TALLOC_CTX *_mem_save_type_0; + TALLOC_CTX *_mem_save_domain_0; + TALLOC_CTX *_mem_save_domain_1; + TALLOC_CTX *_mem_save_name_0; + TALLOC_CTX *_mem_save_name_1; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->in.sid); + } + _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_PULL_ALLOC(ndr, r->out.type); + ZERO_STRUCTP(r->out.type); + NDR_PULL_ALLOC(ndr, r->out.domain); + ZERO_STRUCTP(r->out.domain); + NDR_PULL_ALLOC(ndr, r->out.name); + ZERO_STRUCTP(r->out.name); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.type); + } + _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.type, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_lsa_SidType(ndr, NDR_SCALARS, r->out.type)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, LIBNDR_FLAG_REF_ALLOC); + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.domain); + } + _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.domain, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain)); + if (_ptr_domain) { + NDR_PULL_ALLOC(ndr, *r->out.domain); + } else { + *r->out.domain = NULL; + } + if (*r->out.domain) { + _mem_save_domain_1 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, *r->out.domain, 0); + NDR_CHECK(ndr_pull_array_size(ndr, r->out.domain)); + NDR_CHECK(ndr_pull_array_length(ndr, r->out.domain)); + if (ndr_get_array_length(ndr, r->out.domain) > ndr_get_array_size(ndr, r->out.domain)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.domain), ndr_get_array_length(ndr, r->out.domain)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.domain), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.domain, ndr_get_array_length(ndr, r->out.domain), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_1, 0); + } + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, LIBNDR_FLAG_REF_ALLOC); + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.name); + } + _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.name, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name)); + if (_ptr_name) { + NDR_PULL_ALLOC(ndr, *r->out.name); + } else { + *r->out.name = NULL; + } + if (*r->out.name) { + _mem_save_name_1 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, *r->out.name, 0); + NDR_CHECK(ndr_pull_array_size(ndr, r->out.name)); + NDR_CHECK(ndr_pull_array_length(ndr, r->out.name)); + if (ndr_get_array_length(ndr, r->out.name) > ndr_get_array_size(ndr, r->out.name)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.name), ndr_get_array_length(ndr, r->out.name)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.name), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.name, ndr_get_array_length(ndr, r->out.name), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_1, 0); + } + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r) +{ + ndr_print_struct(ndr, name, "wbint_LookupSid"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_LookupSid"); + ndr->depth++; + ndr_print_ptr(ndr, "sid", r->in.sid); + ndr->depth++; + ndr_print_dom_sid(ndr, "sid", r->in.sid); + ndr->depth--; + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_LookupSid"); + ndr->depth++; + ndr_print_ptr(ndr, "type", r->out.type); + ndr->depth++; + ndr_print_lsa_SidType(ndr, "type", *r->out.type); + ndr->depth--; + ndr_print_ptr(ndr, "domain", r->out.domain); + ndr->depth++; + ndr_print_ptr(ndr, "domain", *r->out.domain); + ndr->depth++; + if (*r->out.domain) { + ndr_print_string(ndr, "domain", *r->out.domain); + } + ndr->depth--; + ndr->depth--; + ndr_print_ptr(ndr, "name", r->out.name); + ndr->depth++; + ndr_print_ptr(ndr, "name", *r->out.name); + ndr->depth++; + if (*r->out.name) { + ndr_print_string(ndr, "name", *r->out.name); + } + ndr->depth--; + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -73,6 +247,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_Ping, false, }, + { + "wbint_LookupSid", + sizeof(struct wbint_LookupSid), + (ndr_push_flags_fn_t) ndr_push_wbint_LookupSid, + (ndr_pull_flags_fn_t) ndr_pull_wbint_LookupSid, + (ndr_print_function_t) ndr_print_wbint_LookupSid, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -102,7 +284,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 1, + .num_calls = 2, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index 6c38087687..9a76cddd99 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -13,6 +13,9 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_PING (0x00) -#define NDR_WBINT_CALL_COUNT (1) +#define NDR_WBINT_LOOKUPSID (0x01) + +#define NDR_WBINT_CALL_COUNT (2) void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); +void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index 0a3569b874..85ebf5dd3a 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -86,11 +86,104 @@ static bool api_wbint_Ping(pipes_struct *p) return true; } +static bool api_wbint_LookupSid(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_LookupSid *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_LOOKUPSID]; + + r = talloc(talloc_tos(), struct wbint_LookupSid); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupSid, r); + } + + ZERO_STRUCT(r->out); + r->out.type = talloc_zero(r, enum lsa_SidType); + if (r->out.type == NULL) { + talloc_free(r); + return false; + } + + r->out.domain = talloc_zero(r, const char *); + if (r->out.domain == NULL) { + talloc_free(r); + return false; + } + + r->out.name = talloc_zero(r, const char *); + if (r->out.name == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_LookupSid(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupSid, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = { {"WBINT_PING", NDR_WBINT_PING, api_wbint_Ping}, + {"WBINT_LOOKUPSID", NDR_WBINT_LOOKUPSID, api_wbint_LookupSid}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -119,6 +212,28 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_LOOKUPSID: { + struct wbint_LookupSid *r = (struct wbint_LookupSid *)_r; + ZERO_STRUCT(r->out); + r->out.type = talloc_zero(mem_ctx, enum lsa_SidType); + if (r->out.type == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.domain = talloc_zero(mem_ctx, const char *); + if (r->out.domain == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.name = talloc_zero(mem_ctx, const char *); + if (r->out.name == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_LookupSid(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index af3d21a43d..6e6183989c 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -2,8 +2,10 @@ #ifndef __SRV_WBINT__ #define __SRV_WBINT__ void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); +NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); +NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index 641d960a1b..2cc59b3f96 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -4,6 +4,7 @@ #include "libcli/util/ntstatus.h" +#include "librpc/gen_ndr/lsa.h" #ifndef _HEADER_wbint #define _HEADER_wbint @@ -19,4 +20,19 @@ struct wbint_Ping { }; + +struct wbint_LookupSid { + struct { + struct dom_sid *sid;/* [ref] */ + } in; + + struct { + enum lsa_SidType *type;/* [ref] */ + const char **domain;/* [ref,charset(UTF8)] */ + const char **name;/* [ref,charset(UTF8)] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index 40a4545a3a..d0611e8a1b 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -1,3 +1,6 @@ +#include "idl_types.h" +import "lsa.idl"; + [ uuid("bf09192c-ed60-4928-9dff-d0d7bcb03ed8"), endpoint("ncalrpc:"), @@ -11,4 +14,11 @@ interface wbint [in] uint32 in_data, [out] uint32 *out_data ); + + NTSTATUS wbint_LookupSid( + [in] dom_sid *sid, + [out] lsa_SidType *type, + [out,string,charset(UTF8)] char **domain, + [out,string,charset(UTF8)] char **name + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_lookupsid.c b/source3/winbindd/wb_lookupsid.c new file mode 100644 index 0000000000..f258828048 --- /dev/null +++ b/source3/winbindd/wb_lookupsid.c @@ -0,0 +1,132 @@ +/* + Unix SMB/CIFS implementation. + async lookupsid + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_lookupsid_state { + struct tevent_context *ev; + struct winbindd_domain *lookup_domain; + struct dom_sid sid; + enum lsa_SidType type; + const char *domname; + const char *name; +}; + +static void wb_lookupsid_done(struct tevent_req *subreq); + +struct tevent_req *wb_lookupsid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *sid) +{ + struct tevent_req *req, *subreq; + struct wb_lookupsid_state *state; + char *dom_name, *name; + NTSTATUS status; + + req = tevent_req_create(mem_ctx, &state, struct wb_lookupsid_state); + if (req == NULL) { + return NULL; + } + sid_copy(&state->sid, sid); + state->ev = ev; + + state->lookup_domain = find_lookup_domain_from_sid(sid); + if (state->lookup_domain == NULL) { + DEBUG(5, ("Could not find domain for sid %s\n", + sid_string_dbg(sid))); + tevent_req_nterror(req, NT_STATUS_NONE_MAPPED); + return tevent_req_post(req, ev); + } + + status = wcache_sid_to_name(state->lookup_domain, sid, state, + &dom_name, &name, &state->type); + if (NT_STATUS_IS_OK(status)) { + state->domname = dom_name; + state->name = name; + tevent_req_done(req); + return tevent_req_post(req, ev); + } + + subreq = rpccli_wbint_LookupSid_send( + state, ev, state->lookup_domain->child.rpccli, + &state->sid, &state->type, &state->domname, &state->name); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_lookupsid_done, req); + return req; +} + +static void wb_lookupsid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_lookupsid_state *state = tevent_req_data( + req, struct wb_lookupsid_state); + struct winbindd_domain *forest_root; + NTSTATUS status, result; + + status = rpccli_wbint_LookupSid_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (NT_STATUS_IS_OK(result)) { + tevent_req_done(req); + return; + } + + /* + * Let's try the forest root + */ + forest_root = find_root_domain(); + if ((forest_root == NULL) || (forest_root == state->lookup_domain)) { + tevent_req_nterror(req, result); + return; + } + state->lookup_domain = forest_root; + + subreq = rpccli_wbint_LookupSid_send( + state, state->ev, state->lookup_domain->child.rpccli, + &state->sid, &state->type, &state->domname, &state->name); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_lookupsid_done, req); +} + +NTSTATUS wb_lookupsid_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + enum lsa_SidType *type, const char **domain, + const char **name) +{ + struct wb_lookupsid_state *state = tevent_req_data( + req, struct wb_lookupsid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + *type = state->type; + *domain = talloc_move(mem_ctx, &state->domname); + *name = talloc_move(mem_ctx, &state->name); + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 5d2d7f389d..b4e18c82c1 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -28,3 +28,27 @@ void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r) { *r->out.out_data = r->in.in_data; } + +NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r) +{ + struct winbindd_domain *domain = wb_child_domain(); + char *dom_name; + char *name; + enum lsa_SidType type; + NTSTATUS status; + + if (domain == NULL) { + return NT_STATUS_REQUEST_NOT_ACCEPTED; + } + + status = domain->methods->sid_to_name(domain, p->mem_ctx, r->in.sid, + &dom_name, &name, &type); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + *r->out.domain = dom_name; + *r->out.name = name; + *r->out.type = type; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 182534a1fa..172e143ba0 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -606,4 +606,11 @@ struct rpc_pipe_client *wbint_rpccli_create(TALLOC_CTX *mem_ctx, enum winbindd_result winbindd_dual_ndrcmd(struct winbindd_domain *domain, struct winbindd_cli_state *state); +struct tevent_req *wb_lookupsid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *sid); +NTSTATUS wb_lookupsid_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + enum lsa_SidType *type, const char **domain, + const char **name); + #endif /* _WINBINDD_PROTO_H_ */ -- cgit From fa59f9720d56ffaf07c13376118c452a4162f3df Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 06:57:13 -0400 Subject: s3:winbind: Convert WINBINDD_LOOKUPSID to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_lookupsid.c | 101 ++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_proto.h | 7 +++ source3/winbindd/winbindd_sid.c | 42 -------------- 5 files changed, 111 insertions(+), 43 deletions(-) create mode 100644 source3/winbindd/winbindd_lookupsid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index a9f9c16598..df37cff8ad 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1153,6 +1153,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_ndr.o \ winbindd/wb_ping.o \ winbindd/wb_lookupsid.o \ + winbindd/winbindd_lookupsid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 4b6ebd2c42..e76a0de30f 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -469,7 +469,6 @@ static struct winbindd_dispatch_table { /* SID related functions */ - { WINBINDD_LOOKUPSID, winbindd_lookupsid, "LOOKUPSID" }, { WINBINDD_LOOKUPNAME, winbindd_lookupname, "LOOKUPNAME" }, { WINBINDD_LOOKUPRIDS, winbindd_lookuprids, "LOOKUPRIDS" }, @@ -526,6 +525,8 @@ struct winbindd_async_dispatch_table { static struct winbindd_async_dispatch_table async_nonpriv_table[] = { { WINBINDD_PING, "PING", wb_ping_send, wb_ping_recv }, + { WINBINDD_LOOKUPSID, "LOOKUPSID", + winbindd_lookupsid_send, winbindd_lookupsid_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_lookupsid.c b/source3/winbindd/winbindd_lookupsid.c new file mode 100644 index 0000000000..7647f1d682 --- /dev/null +++ b/source3/winbindd/winbindd_lookupsid.c @@ -0,0 +1,101 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GETPWNAM + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_lookupsid_state { + struct tevent_context *ev; + struct dom_sid sid; + enum lsa_SidType type; + const char *domname; + const char *name; +}; + +static void winbindd_lookupsid_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_lookupsid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_lookupsid_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_lookupsid_state); + if (req == NULL) { + return NULL; + } + state->ev = ev; + + /* Ensure null termination */ + request->data.sid[sizeof(request->data.sid)-1]='\0'; + + DEBUG(3, ("lookupsid %s\n", request->data.sid)); + + if (!string_to_sid(&state->sid, request->data.sid)) { + DEBUG(5, ("%s not a SID\n", request->data.sid)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev);; + } + + subreq = wb_lookupsid_send(state, ev, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_lookupsid_done, req); + return req; +} + +static void winbindd_lookupsid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_lookupsid_state *state = tevent_req_data( + req, struct winbindd_lookupsid_state); + NTSTATUS status; + + status = wb_lookupsid_recv(subreq, state, &state->type, + &state->domname, &state->name); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_lookupsid_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_lookupsid_state *state = tevent_req_data( + req, struct winbindd_lookupsid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not lookup sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + + fstrcpy(response->data.name.dom_name, state->domname); + fstrcpy(response->data.name.name, state->name); + response->data.name.type = state->type; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 172e143ba0..9d4c09283a 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -613,4 +613,11 @@ NTSTATUS wb_lookupsid_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, enum lsa_SidType *type, const char **domain, const char **name); +struct tevent_req *winbindd_lookupsid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_lookupsid_recv(struct tevent_req *req, + struct winbindd_response *response); + + #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c index f8cf7db920..287dfb7f6b 100644 --- a/source3/winbindd/winbindd_sid.c +++ b/source3/winbindd/winbindd_sid.c @@ -27,48 +27,6 @@ /* Convert a string */ -static void lookupsid_recv(void *private_data, bool success, - const char *dom_name, const char *name, - enum lsa_SidType type); - -void winbindd_lookupsid(struct winbindd_cli_state *state) -{ - DOM_SID sid; - - /* Ensure null termination */ - state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - - DEBUG(3, ("[%5lu]: lookupsid %s\n", (unsigned long)state->pid, - state->request->data.sid)); - - if (!string_to_sid(&sid, state->request->data.sid)) { - DEBUG(5, ("%s not a SID\n", state->request->data.sid)); - request_error(state); - return; - } - - winbindd_lookupsid_async(state->mem_ctx, &sid, lookupsid_recv, state); -} - -static void lookupsid_recv(void *private_data, bool success, - const char *dom_name, const char *name, - enum lsa_SidType type) -{ - struct winbindd_cli_state *state = - talloc_get_type_abort(private_data, struct winbindd_cli_state); - - if (!success) { - DEBUG(5, ("lookupsid returned an error\n")); - request_error(state); - return; - } - - fstrcpy(state->response->data.name.dom_name, dom_name); - fstrcpy(state->response->data.name.name, name); - state->response->data.name.type = type; - request_ok(state); -} - /** * Look up the SID for a qualified name. **/ -- cgit From 74b45ba46cbf58c1bf9ef89f5f88509065cd81d2 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 06:58:28 -0400 Subject: s3:winbind: Remove old version of WINBINDD_PING --- source3/winbindd/winbindd.c | 1 - source3/winbindd/winbindd_misc.c | 6 ------ 2 files changed, 7 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index e76a0de30f..867e9df8d9 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -487,7 +487,6 @@ static struct winbindd_dispatch_table { /* Miscellaneous */ { WINBINDD_CHECK_MACHACC, winbindd_check_machine_acct, "CHECK_MACHACC" }, - { WINBINDD_PING, winbindd_ping, "PING" }, { WINBINDD_INFO, winbindd_info, "INFO" }, { WINBINDD_INTERFACE_VERSION, winbindd_interface_version, "INTERFACE_VERSION" }, diff --git a/source3/winbindd/winbindd_misc.c b/source3/winbindd/winbindd_misc.c index 3f71910023..c6608316d1 100644 --- a/source3/winbindd/winbindd_misc.c +++ b/source3/winbindd/winbindd_misc.c @@ -741,12 +741,6 @@ static void domain_info_done(struct tevent_req *req) request_ok(state->cli); } -void winbindd_ping(struct winbindd_cli_state *state) -{ - DEBUG(3, ("[%5lu]: ping\n", (unsigned long)state->pid)); - request_ok(state); -} - /* List various tidbits of information */ void winbindd_info(struct winbindd_cli_state *state) -- cgit From f6554611ab90aa113a7579ce3a9fef765c19d98c Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 1 Aug 2009 00:10:46 +0200 Subject: s3:winbind: Make wcache_name_to_sid visible externally --- source3/winbindd/winbindd_cache.c | 79 ++++++++++++++++++--------------------- source3/winbindd/winbindd_proto.h | 5 +++ 2 files changed, 42 insertions(+), 42 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index f273f2c8d6..87594542cf 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -1605,28 +1605,31 @@ skip_save: return status; } -/* convert a single name to a sid in a domain */ -static NTSTATUS name_to_sid(struct winbindd_domain *domain, - TALLOC_CTX *mem_ctx, +NTSTATUS wcache_name_to_sid(struct winbindd_domain *domain, const char *domain_name, const char *name, - uint32_t flags, - DOM_SID *sid, + struct dom_sid *sid, enum lsa_SidType *type) { struct winbind_cache *cache = get_cache(domain); - struct cache_entry *centry = NULL; + struct cache_entry *centry; NTSTATUS status; - fstring uname; + char *uname; - if (!cache->tdb) - goto do_query; + if (cache->tdb == NULL) { + return NT_STATUS_NOT_FOUND; + } + + uname = talloc_strdup_upper(talloc_tos(), name); + if (uname == NULL) { + return NT_STATUS_NO_MEMORY; + } - fstrcpy(uname, name); - strupper_m(uname); centry = wcache_fetch(cache, domain, "NS/%s/%s", domain_name, uname); - if (!centry) - goto do_query; + TALLOC_FREE(uname); + if (centry == NULL) { + return NT_STATUS_NOT_FOUND; + } status = centry->status; if (NT_STATUS_IS_OK(status)) { @@ -1634,13 +1637,29 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain, centry_sid(centry, sid); } - DEBUG(10,("name_to_sid: [Cached] - cached name for domain %s status: %s\n", - domain->name, nt_errstr(status) )); + DEBUG(10,("name_to_sid: [Cached] - cached name for domain %s status: " + "%s\n", domain->name, nt_errstr(status) )); centry_free(centry); return status; +} + +/* convert a single name to a sid in a domain */ +static NTSTATUS name_to_sid(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const char *domain_name, + const char *name, + uint32_t flags, + DOM_SID *sid, + enum lsa_SidType *type) +{ + NTSTATUS status; + + status = wcache_name_to_sid(domain, domain_name, name, sid, type); + if (!NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { + return status; + } -do_query: ZERO_STRUCTP(sid); /* If the seq number check indicated that there is a problem @@ -2666,46 +2685,22 @@ bool lookup_cached_name(TALLOC_CTX *mem_ctx, enum lsa_SidType *type) { struct winbindd_domain *domain; - struct winbind_cache *cache; - struct cache_entry *centry = NULL; NTSTATUS status; - fstring uname; - bool original_online_state; + bool original_online_state; domain = find_lookup_domain_from_name(domain_name); if (domain == NULL) { return false; } - cache = get_cache(domain); - - if (cache->tdb == NULL) { - return false; - } - - fstrcpy(uname, name); - strupper_m(uname); - /* If we are doing a cached logon, temporarily set the domain offline so the cache won't expire the entry */ original_online_state = domain->online; domain->online = false; - centry = wcache_fetch(cache, domain, "NS/%s/%s", domain_name, uname); + status = wcache_name_to_sid(domain, domain_name, name, sid, type); domain->online = original_online_state; - if (centry == NULL) { - return false; - } - - if (NT_STATUS_IS_OK(centry->status)) { - *type = (enum lsa_SidType)centry_uint32(centry); - centry_sid(centry, sid); - } - - status = centry->status; - centry_free(centry); - return NT_STATUS_IS_OK(status); } diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 9d4c09283a..e76e0cde1f 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -166,6 +166,11 @@ bool lookup_cached_name(TALLOC_CTX *mem_ctx, void cache_name2sid(struct winbindd_domain *domain, const char *domain_name, const char *name, enum lsa_SidType type, const DOM_SID *sid); +NTSTATUS wcache_name_to_sid(struct winbindd_domain *domain, + const char *domain_name, + const char *name, + struct dom_sid *sid, + enum lsa_SidType *type); void wcache_flush_cache(void); NTSTATUS wcache_count_cached_creds(struct winbindd_domain *domain, int *count); NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const DOM_SID *sid) ; -- cgit From a5416770776c0ade8518e8875d47097662b026a6 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 07:22:34 -0400 Subject: s3:winbind: Add async wb_lookupname --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 174 +++++++++++++++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 18 ++++ source3/librpc/gen_ndr/ndr_wbint.c | 128 +++++++++++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 5 +- source3/librpc/gen_ndr/srv_wbint.c | 104 +++++++++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 16 ++++ source3/librpc/idl/wbint.idl | 8 ++ source3/winbindd/wb_lookupname.c | 104 +++++++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 13 +++ source3/winbindd/winbindd_proto.h | 7 ++ 12 files changed, 578 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_lookupname.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index df37cff8ad..0f97d66cad 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1153,6 +1153,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_ndr.o \ winbindd/wb_ping.o \ winbindd/wb_lookupsid.o \ + winbindd/wb_lookupname.o \ winbindd/winbindd_lookupsid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index 491413ee76..7502d5f5e4 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -328,3 +328,177 @@ NTSTATUS rpccli_wbint_LookupSid(struct rpc_pipe_client *cli, return r.out.result; } +struct rpccli_wbint_LookupName_state { + struct wbint_LookupName orig; + struct wbint_LookupName tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_LookupName_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_LookupName_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_domain /* [in] [ref,charset(UTF8)] */, + const char *_name /* [in] [ref,charset(UTF8)] */, + uint32_t _flags /* [in] */, + enum lsa_SidType *_type /* [out] [ref] */, + struct dom_sid *_sid /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_LookupName_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_LookupName_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.domain = _domain; + state->orig.in.name = _name; + state->orig.in.flags = _flags; + + /* Out parameters */ + state->orig.out.type = _type; + state->orig.out.sid = _sid; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupName, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_LookupName_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_LOOKUPNAME, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_LookupName_done, req); + return req; +} + +static void rpccli_wbint_LookupName_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_LookupName_state *state = tevent_req_data( + req, struct rpccli_wbint_LookupName_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.type = *state->tmp.out.type; + *state->orig.out.sid = *state->tmp.out.sid; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupName, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_LookupName_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_LookupName_state *state = tevent_req_data( + req, struct rpccli_wbint_LookupName_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_LookupName(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *domain /* [in] [ref,charset(UTF8)] */, + const char *name /* [in] [ref,charset(UTF8)] */, + uint32_t flags /* [in] */, + enum lsa_SidType *type /* [out] [ref] */, + struct dom_sid *sid /* [out] [ref] */) +{ + struct wbint_LookupName r; + NTSTATUS status; + + /* In parameters */ + r.in.domain = domain; + r.in.name = name; + r.in.flags = flags; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupName, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_LOOKUPNAME, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupName, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *type = *r.out.type; + *sid = *r.out.sid; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index b79fd19a36..e2cb963970 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -28,4 +28,22 @@ NTSTATUS rpccli_wbint_LookupSid(struct rpc_pipe_client *cli, enum lsa_SidType *type /* [out] [ref] */, const char **domain /* [out] [ref,charset(UTF8)] */, const char **name /* [out] [ref,charset(UTF8)] */); +struct tevent_req *rpccli_wbint_LookupName_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_domain /* [in] [ref,charset(UTF8)] */, + const char *_name /* [in] [ref,charset(UTF8)] */, + uint32_t _flags /* [in] */, + enum lsa_SidType *_type /* [out] [ref] */, + struct dom_sid *_sid /* [out] [ref] */); +NTSTATUS rpccli_wbint_LookupName_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_LookupName(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *domain /* [in] [ref,charset(UTF8)] */, + const char *name /* [in] [ref,charset(UTF8)] */, + uint32_t flags /* [in] */, + enum lsa_SidType *type /* [out] [ref] */, + struct dom_sid *sid /* [out] [ref] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index 1e8ea207b7..40554c0fd1 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -238,6 +238,124 @@ _PUBLIC_ void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_LookupName(struct ndr_push *ndr, int flags, const struct wbint_LookupName *r) +{ + if (flags & NDR_IN) { + if (r->in.domain == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain, ndr_charset_length(r->in.domain, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + if (r->in.name == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.name, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.name, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.name, ndr_charset_length(r->in.name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags)); + } + if (flags & NDR_OUT) { + if (r->out.type == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_lsa_SidType(ndr, NDR_SCALARS, *r->out.type)); + if (r->out.sid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->out.sid)); + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_LookupName(struct ndr_pull *ndr, int flags, struct wbint_LookupName *r) +{ + TALLOC_CTX *_mem_save_type_0; + TALLOC_CTX *_mem_save_sid_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain)); + if (ndr_get_array_length(ndr, &r->in.domain) > ndr_get_array_size(ndr, &r->in.domain)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain), ndr_get_array_length(ndr, &r->in.domain)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain, ndr_get_array_length(ndr, &r->in.domain), sizeof(uint8_t), CH_UTF8)); + NDR_CHECK(ndr_pull_array_size(ndr, &r->in.name)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->in.name)); + if (ndr_get_array_length(ndr, &r->in.name) > ndr_get_array_size(ndr, &r->in.name)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.name), ndr_get_array_length(ndr, &r->in.name)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.name), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.name, ndr_get_array_length(ndr, &r->in.name), sizeof(uint8_t), CH_UTF8)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags)); + NDR_PULL_ALLOC(ndr, r->out.type); + ZERO_STRUCTP(r->out.type); + NDR_PULL_ALLOC(ndr, r->out.sid); + ZERO_STRUCTP(r->out.sid); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.type); + } + _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.type, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_lsa_SidType(ndr, NDR_SCALARS, r->out.type)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, LIBNDR_FLAG_REF_ALLOC); + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.sid); + } + _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.sid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->out.sid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupName *r) +{ + ndr_print_struct(ndr, name, "wbint_LookupName"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_LookupName"); + ndr->depth++; + ndr_print_ptr(ndr, "domain", r->in.domain); + ndr->depth++; + ndr_print_string(ndr, "domain", r->in.domain); + ndr->depth--; + ndr_print_ptr(ndr, "name", r->in.name); + ndr->depth++; + ndr_print_string(ndr, "name", r->in.name); + ndr->depth--; + ndr_print_uint32(ndr, "flags", r->in.flags); + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_LookupName"); + ndr->depth++; + ndr_print_ptr(ndr, "type", r->out.type); + ndr->depth++; + ndr_print_lsa_SidType(ndr, "type", *r->out.type); + ndr->depth--; + ndr_print_ptr(ndr, "sid", r->out.sid); + ndr->depth++; + ndr_print_dom_sid(ndr, "sid", r->out.sid); + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -255,6 +373,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_LookupSid, false, }, + { + "wbint_LookupName", + sizeof(struct wbint_LookupName), + (ndr_push_flags_fn_t) ndr_push_wbint_LookupName, + (ndr_pull_flags_fn_t) ndr_pull_wbint_LookupName, + (ndr_print_function_t) ndr_print_wbint_LookupName, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -284,7 +410,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 2, + .num_calls = 3, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index 9a76cddd99..c2d7ad3f3a 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -15,7 +15,10 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_LOOKUPSID (0x01) -#define NDR_WBINT_CALL_COUNT (2) +#define NDR_WBINT_LOOKUPNAME (0x02) + +#define NDR_WBINT_CALL_COUNT (3) void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r); +void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupName *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index 85ebf5dd3a..25e3246004 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -178,12 +178,99 @@ static bool api_wbint_LookupSid(pipes_struct *p) return true; } +static bool api_wbint_LookupName(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_LookupName *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_LOOKUPNAME]; + + r = talloc(talloc_tos(), struct wbint_LookupName); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupName, r); + } + + ZERO_STRUCT(r->out); + r->out.type = talloc_zero(r, enum lsa_SidType); + if (r->out.type == NULL) { + talloc_free(r); + return false; + } + + r->out.sid = talloc_zero(r, struct dom_sid); + if (r->out.sid == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_LookupName(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupName, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = { {"WBINT_PING", NDR_WBINT_PING, api_wbint_Ping}, {"WBINT_LOOKUPSID", NDR_WBINT_LOOKUPSID, api_wbint_LookupSid}, + {"WBINT_LOOKUPNAME", NDR_WBINT_LOOKUPNAME, api_wbint_LookupName}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -234,6 +321,23 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_LOOKUPNAME: { + struct wbint_LookupName *r = (struct wbint_LookupName *)_r; + ZERO_STRUCT(r->out); + r->out.type = talloc_zero(mem_ctx, enum lsa_SidType); + if (r->out.type == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.sid = talloc_zero(mem_ctx, struct dom_sid); + if (r->out.sid == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_LookupName(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index 6e6183989c..259eef7c4f 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -3,9 +3,11 @@ #define __SRV_WBINT__ void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); +NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); +NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index 2cc59b3f96..a007b95b18 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -35,4 +35,20 @@ struct wbint_LookupSid { }; + +struct wbint_LookupName { + struct { + const char *domain;/* [ref,charset(UTF8)] */ + const char *name;/* [ref,charset(UTF8)] */ + uint32_t flags; + } in; + + struct { + enum lsa_SidType *type;/* [ref] */ + struct dom_sid *sid;/* [ref] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index d0611e8a1b..d72309bd80 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -21,4 +21,12 @@ interface wbint [out,string,charset(UTF8)] char **domain, [out,string,charset(UTF8)] char **name ); + + NTSTATUS wbint_LookupName( + [in,string,charset(UTF8)] char *domain, + [in,string,charset(UTF8)] char *name, + [in] uint32 flags, + [out] lsa_SidType *type, + [out] dom_sid *sid + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_lookupname.c b/source3/winbindd/wb_lookupname.c new file mode 100644 index 0000000000..d4e9b9ae6c --- /dev/null +++ b/source3/winbindd/wb_lookupname.c @@ -0,0 +1,104 @@ +/* + Unix SMB/CIFS implementation. + async lookupname + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_lookupname_state { + struct dom_sid sid; + enum lsa_SidType type; +}; + +static void wb_lookupname_done(struct tevent_req *subreq); + +struct tevent_req *wb_lookupname_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const char *dom_name, const char *name, + uint32_t flags) +{ + struct tevent_req *req, *subreq; + struct wb_lookupname_state *state; + struct winbindd_domain *domain; + NTSTATUS status; + + req = tevent_req_create(mem_ctx, &state, struct wb_lookupname_state); + if (req == NULL) { + return NULL; + } + + domain = find_lookup_domain_from_name(dom_name); + if (domain == NULL) { + DEBUG(5, ("Could not find domain for %s\n", dom_name)); + tevent_req_nterror(req, NT_STATUS_NONE_MAPPED); + return tevent_req_post(req, ev); + } + + status = wcache_name_to_sid(domain, dom_name, name, + &state->sid, &state->type); + if (NT_STATUS_IS_OK(status)) { + tevent_req_done(req); + return tevent_req_post(req, ev); + } + + subreq = rpccli_wbint_LookupName_send( + state, ev, domain->child.rpccli, dom_name, name, flags, + &state->type, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_lookupname_done, req); + return req; +} + +static void wb_lookupname_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_lookupname_state *state = tevent_req_data( + req, struct wb_lookupname_state); + NTSTATUS status, result; + + status = rpccli_wbint_LookupName_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!NT_STATUS_IS_OK(result)) { + tevent_req_nterror(req, result); + return; + } + tevent_req_done(req); +} + +NTSTATUS wb_lookupname_recv(struct tevent_req *req, struct dom_sid *sid, + enum lsa_SidType *type) +{ + struct wb_lookupname_state *state = tevent_req_data( + req, struct wb_lookupname_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + sid_copy(sid, &state->sid); + *type = state->type; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index b4e18c82c1..568084fd54 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -52,3 +52,16 @@ NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r) *r->out.type = type; return NT_STATUS_OK; } + +NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r) +{ + struct winbindd_domain *domain = wb_child_domain(); + + if (domain == NULL) { + return NT_STATUS_REQUEST_NOT_ACCEPTED; + } + + return domain->methods->name_to_sid( + domain, p->mem_ctx, r->in.domain, r->in.name, r->in.flags, + r->out.sid, r->out.type); +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index e76e0cde1f..2b493b2a67 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -624,5 +624,12 @@ struct tevent_req *winbindd_lookupsid_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_lookupsid_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *wb_lookupname_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const char *dom_name, const char *name, + uint32_t flags); +NTSTATUS wb_lookupname_recv(struct tevent_req *req, struct dom_sid *sid, + enum lsa_SidType *type); + #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 9c6f4cd12a3e62165782e34226888648649a0fef Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 07:29:03 -0400 Subject: s3:winbind: Convert WINBINDD_LOOKUPNAME to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_lookupname.c | 110 +++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_proto.h | 5 ++ source3/winbindd/winbindd_sid.c | 60 ------------------ 5 files changed, 118 insertions(+), 61 deletions(-) create mode 100644 source3/winbindd/winbindd_lookupname.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 0f97d66cad..af2a960457 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1155,6 +1155,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_lookupsid.o \ winbindd/wb_lookupname.o \ winbindd/winbindd_lookupsid.o \ + winbindd/winbindd_lookupname.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 867e9df8d9..a5374a99f4 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -469,7 +469,6 @@ static struct winbindd_dispatch_table { /* SID related functions */ - { WINBINDD_LOOKUPNAME, winbindd_lookupname, "LOOKUPNAME" }, { WINBINDD_LOOKUPRIDS, winbindd_lookuprids, "LOOKUPRIDS" }, /* Lookup related functions */ @@ -526,6 +525,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { wb_ping_send, wb_ping_recv }, { WINBINDD_LOOKUPSID, "LOOKUPSID", winbindd_lookupsid_send, winbindd_lookupsid_recv }, + { WINBINDD_LOOKUPNAME, "LOOKUPNAME", + winbindd_lookupname_send, winbindd_lookupname_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_lookupname.c b/source3/winbindd/winbindd_lookupname.c new file mode 100644 index 0000000000..0918076717 --- /dev/null +++ b/source3/winbindd/winbindd_lookupname.c @@ -0,0 +1,110 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GETPWNAM + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_lookupname_state { + struct tevent_context *ev; + struct dom_sid sid; + enum lsa_SidType type; +}; + +static void winbindd_lookupname_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_lookupname_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_lookupname_state *state; + char *domname, *name, *p; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_lookupname_state); + if (req == NULL) { + return NULL; + } + state->ev = ev; + + /* Ensure null termination */ + request->data.name.dom_name[ + sizeof(request->data.name.dom_name)-1]='\0'; + request->data.name.name[sizeof(request->data.name.name)-1]='\0'; + + /* cope with the name being a fully qualified name */ + p = strstr(request->data.name.name, lp_winbind_separator()); + if (p) { + *p = 0; + domname = request->data.name.name; + name = p+1; + } else if ((p = strchr(request->data.name.name, '@')) != NULL) { + /* upn */ + domname = p + 1; + *p = 0; + name = request->data.name.name; + } else { + domname = request->data.name.dom_name; + name = request->data.name.name; + } + + DEBUG(3, ("lookupname %s%s%s\n", domname, lp_winbind_separator(), + name)); + + subreq = wb_lookupname_send(state, ev, domname, name, 0); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_lookupname_done, req); + return req; +} + +static void winbindd_lookupname_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_lookupname_state *state = tevent_req_data( + req, struct winbindd_lookupname_state); + NTSTATUS status; + + status = wb_lookupname_recv(subreq, &state->sid, &state->type); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_lookupname_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_lookupname_state *state = tevent_req_data( + req, struct winbindd_lookupname_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + sid_to_fstring(response->data.sid.sid, &state->sid); + response->data.sid.type = state->type; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 2b493b2a67..678a9231de 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -631,5 +631,10 @@ struct tevent_req *wb_lookupname_send(TALLOC_CTX *mem_ctx, NTSTATUS wb_lookupname_recv(struct tevent_req *req, struct dom_sid *sid, enum lsa_SidType *type); +struct tevent_req *winbindd_lookupname_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_lookupname_recv(struct tevent_req *req, + struct winbindd_response *response); #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c index 287dfb7f6b..ee1ee2b6bb 100644 --- a/source3/winbindd/winbindd_sid.c +++ b/source3/winbindd/winbindd_sid.c @@ -27,66 +27,6 @@ /* Convert a string */ -/** - * Look up the SID for a qualified name. - **/ - -static void lookupname_recv(void *private_data, bool success, - const DOM_SID *sid, enum lsa_SidType type); - -void winbindd_lookupname(struct winbindd_cli_state *state) -{ - char *name_domain, *name_user; - char *p; - - /* Ensure null termination */ - state->request->data.name.dom_name[sizeof(state->request->data.name.dom_name)-1]='\0'; - - /* Ensure null termination */ - state->request->data.name.name[sizeof(state->request->data.name.name)-1]='\0'; - - /* cope with the name being a fully qualified name */ - p = strstr(state->request->data.name.name, lp_winbind_separator()); - if (p) { - *p = 0; - name_domain = state->request->data.name.name; - name_user = p+1; - } else if ((p = strchr(state->request->data.name.name, '@')) != NULL) { - /* upn */ - name_domain = p + 1; - *p = 0; - name_user = state->request->data.name.name; - } else { - name_domain = state->request->data.name.dom_name; - name_user = state->request->data.name.name; - } - - DEBUG(3, ("[%5lu]: lookupname %s%s%s\n", (unsigned long)state->pid, - name_domain, lp_winbind_separator(), name_user)); - - winbindd_lookupname_async(state->mem_ctx, name_domain, name_user, - lookupname_recv, WINBINDD_LOOKUPNAME, - state); -} - -static void lookupname_recv(void *private_data, bool success, - const DOM_SID *sid, enum lsa_SidType type) -{ - struct winbindd_cli_state *state = - talloc_get_type_abort(private_data, struct winbindd_cli_state); - - if (!success) { - DEBUG(5, ("lookupname returned an error\n")); - request_error(state); - return; - } - - sid_to_fstring(state->response->data.sid.sid, sid); - state->response->data.sid.type = type; - request_ok(state); - return; -} - void winbindd_lookuprids(struct winbindd_cli_state *state) { struct winbindd_domain *domain; -- cgit From ea286fed7adf93311b0ca14c3ff1e7bac74a0b9b Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 13:28:59 -0400 Subject: s3:winbind: Add async wb_sid2uid --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 165 ++++++++++++++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 14 +++ source3/librpc/gen_ndr/ndr_wbint.c | 120 ++++++++++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 5 +- source3/librpc/gen_ndr/srv_wbint.c | 93 +++++++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 14 +++ source3/librpc/idl/wbint.idl | 6 ++ source3/winbindd/wb_sid2uid.c | 168 +++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 14 +++ source3/winbindd/winbindd_proto.h | 7 ++ 12 files changed, 607 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_sid2uid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index af2a960457..703f54e1f2 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1154,6 +1154,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_ping.o \ winbindd/wb_lookupsid.o \ winbindd/wb_lookupname.o \ + winbindd/wb_sid2uid.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ auth/token_util.o \ diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index 7502d5f5e4..e0b31705c1 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -502,3 +502,168 @@ NTSTATUS rpccli_wbint_LookupName(struct rpc_pipe_client *cli, return r.out.result; } +struct rpccli_wbint_Sid2Uid_state { + struct wbint_Sid2Uid orig; + struct wbint_Sid2Uid tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_Sid2Uid_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_Sid2Uid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_dom_name /* [in] [unique,charset(UTF8)] */, + struct dom_sid *_sid /* [in] [ref] */, + uint64_t *_uid /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_Sid2Uid_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_Sid2Uid_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.dom_name = _dom_name; + state->orig.in.sid = _sid; + + /* Out parameters */ + state->orig.out.uid = _uid; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Sid2Uid, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_Sid2Uid_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_SID2UID, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_Sid2Uid_done, req); + return req; +} + +static void rpccli_wbint_Sid2Uid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_Sid2Uid_state *state = tevent_req_data( + req, struct rpccli_wbint_Sid2Uid_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.uid = *state->tmp.out.uid; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Sid2Uid, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_Sid2Uid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_Sid2Uid_state *state = tevent_req_data( + req, struct rpccli_wbint_Sid2Uid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_Sid2Uid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *dom_name /* [in] [unique,charset(UTF8)] */, + struct dom_sid *sid /* [in] [ref] */, + uint64_t *uid /* [out] [ref] */) +{ + struct wbint_Sid2Uid r; + NTSTATUS status; + + /* In parameters */ + r.in.dom_name = dom_name; + r.in.sid = sid; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Sid2Uid, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_SID2UID, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Sid2Uid, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *uid = *r.out.uid; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index e2cb963970..eb533012dc 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -46,4 +46,18 @@ NTSTATUS rpccli_wbint_LookupName(struct rpc_pipe_client *cli, uint32_t flags /* [in] */, enum lsa_SidType *type /* [out] [ref] */, struct dom_sid *sid /* [out] [ref] */); +struct tevent_req *rpccli_wbint_Sid2Uid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_dom_name /* [in] [unique,charset(UTF8)] */, + struct dom_sid *_sid /* [in] [ref] */, + uint64_t *_uid /* [out] [ref] */); +NTSTATUS rpccli_wbint_Sid2Uid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_Sid2Uid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *dom_name /* [in] [unique,charset(UTF8)] */, + struct dom_sid *sid /* [in] [ref] */, + uint64_t *uid /* [out] [ref] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index 40554c0fd1..0773ed0e10 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -356,6 +356,116 @@ _PUBLIC_ void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_Sid2Uid(struct ndr_push *ndr, int flags, const struct wbint_Sid2Uid *r) +{ + if (flags & NDR_IN) { + NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dom_name)); + if (r->in.dom_name) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dom_name, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dom_name, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dom_name, ndr_charset_length(r->in.dom_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + if (r->in.sid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + } + if (flags & NDR_OUT) { + if (r->out.uid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, *r->out.uid)); + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_Sid2Uid(struct ndr_pull *ndr, int flags, struct wbint_Sid2Uid *r) +{ + uint32_t _ptr_dom_name; + TALLOC_CTX *_mem_save_dom_name_0; + TALLOC_CTX *_mem_save_sid_0; + TALLOC_CTX *_mem_save_uid_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dom_name)); + if (_ptr_dom_name) { + NDR_PULL_ALLOC(ndr, r->in.dom_name); + } else { + r->in.dom_name = NULL; + } + if (r->in.dom_name) { + _mem_save_dom_name_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.dom_name, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dom_name)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dom_name)); + if (ndr_get_array_length(ndr, &r->in.dom_name) > ndr_get_array_size(ndr, &r->in.dom_name)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dom_name), ndr_get_array_length(ndr, &r->in.dom_name)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dom_name), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dom_name, ndr_get_array_length(ndr, &r->in.dom_name), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_name_0, 0); + } + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->in.sid); + } + _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_PULL_ALLOC(ndr, r->out.uid); + ZERO_STRUCTP(r->out.uid); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.uid); + } + _mem_save_uid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.uid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, r->out.uid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_uid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_Sid2Uid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Uid *r) +{ + ndr_print_struct(ndr, name, "wbint_Sid2Uid"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_Sid2Uid"); + ndr->depth++; + ndr_print_ptr(ndr, "dom_name", r->in.dom_name); + ndr->depth++; + if (r->in.dom_name) { + ndr_print_string(ndr, "dom_name", r->in.dom_name); + } + ndr->depth--; + ndr_print_ptr(ndr, "sid", r->in.sid); + ndr->depth++; + ndr_print_dom_sid(ndr, "sid", r->in.sid); + ndr->depth--; + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_Sid2Uid"); + ndr->depth++; + ndr_print_ptr(ndr, "uid", r->out.uid); + ndr->depth++; + ndr_print_hyper(ndr, "uid", *r->out.uid); + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -381,6 +491,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_LookupName, false, }, + { + "wbint_Sid2Uid", + sizeof(struct wbint_Sid2Uid), + (ndr_push_flags_fn_t) ndr_push_wbint_Sid2Uid, + (ndr_pull_flags_fn_t) ndr_pull_wbint_Sid2Uid, + (ndr_print_function_t) ndr_print_wbint_Sid2Uid, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -410,7 +528,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 3, + .num_calls = 4, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index c2d7ad3f3a..0570df6cd1 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -17,8 +17,11 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_LOOKUPNAME (0x02) -#define NDR_WBINT_CALL_COUNT (3) +#define NDR_WBINT_SID2UID (0x03) + +#define NDR_WBINT_CALL_COUNT (4) void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r); void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupName *r); +void ndr_print_wbint_Sid2Uid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Uid *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index 25e3246004..2fd6c17c28 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -264,6 +264,86 @@ static bool api_wbint_LookupName(pipes_struct *p) return true; } +static bool api_wbint_Sid2Uid(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_Sid2Uid *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_SID2UID]; + + r = talloc(talloc_tos(), struct wbint_Sid2Uid); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Sid2Uid, r); + } + + ZERO_STRUCT(r->out); + r->out.uid = talloc_zero(r, uint64_t); + if (r->out.uid == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_Sid2Uid(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Sid2Uid, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = @@ -271,6 +351,7 @@ static struct api_struct api_wbint_cmds[] = {"WBINT_PING", NDR_WBINT_PING, api_wbint_Ping}, {"WBINT_LOOKUPSID", NDR_WBINT_LOOKUPSID, api_wbint_LookupSid}, {"WBINT_LOOKUPNAME", NDR_WBINT_LOOKUPNAME, api_wbint_LookupName}, + {"WBINT_SID2UID", NDR_WBINT_SID2UID, api_wbint_Sid2Uid}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -338,6 +419,18 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_SID2UID: { + struct wbint_Sid2Uid *r = (struct wbint_Sid2Uid *)_r; + ZERO_STRUCT(r->out); + r->out.uid = talloc_zero(mem_ctx, uint64_t); + if (r->out.uid == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_Sid2Uid(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index 259eef7c4f..21c59b85bb 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -4,10 +4,12 @@ void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); +NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); +NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index a007b95b18..f4dc8cfcb1 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -51,4 +51,18 @@ struct wbint_LookupName { }; + +struct wbint_Sid2Uid { + struct { + const char *dom_name;/* [unique,charset(UTF8)] */ + struct dom_sid *sid;/* [ref] */ + } in; + + struct { + uint64_t *uid;/* [ref] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index d72309bd80..ce0329cc61 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -29,4 +29,10 @@ interface wbint [out] lsa_SidType *type, [out] dom_sid *sid ); + + NTSTATUS wbint_Sid2Uid( + [in,unique,string,charset(UTF8)] char *dom_name, + [in] dom_sid *sid, + [out] hyper *uid + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_sid2uid.c b/source3/winbindd/wb_sid2uid.c new file mode 100644 index 0000000000..abfe257bfa --- /dev/null +++ b/source3/winbindd/wb_sid2uid.c @@ -0,0 +1,168 @@ +/* + Unix SMB/CIFS implementation. + async sid2uid + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_sid2uid_state { + struct tevent_context *ev; + struct dom_sid sid; + char *dom_name; + uint64 uid64; + uid_t uid; +}; + +static void wb_sid2uid_lookup_done(struct tevent_req *subreq); +static void wb_sid2uid_done(struct tevent_req *subreq); + +struct tevent_req *wb_sid2uid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *sid) +{ + struct tevent_req *req, *subreq; + struct wb_sid2uid_state *state; + bool expired; + + req = tevent_req_create(mem_ctx, &state, struct wb_sid2uid_state); + if (req == NULL) { + return NULL; + } + sid_copy(&state->sid, sid); + state->ev = ev; + + if (winbindd_use_idmap_cache() + && idmap_cache_find_sid2uid(sid, &state->uid, &expired)) { + + DEBUG(10, ("idmap_cache_find_sid2uid found %d%s\n", + (int)state->uid, expired ? " (expired)": "")); + + if (!expired || IS_DOMAIN_OFFLINE(find_our_domain())) { + if (state->uid == -1) { + tevent_req_nterror(req, NT_STATUS_NONE_MAPPED); + } else { + tevent_req_done(req); + } + return tevent_req_post(req, ev); + } + } + + /* + * We need to make sure the sid is of the right type to not flood + * idmap with wrong entries + */ + + subreq = wb_lookupsid_send(state, ev, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_sid2uid_lookup_done, req); + return req; +} + +static void wb_sid2uid_lookup_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_sid2uid_state *state = tevent_req_data( + req, struct wb_sid2uid_state); + struct winbindd_domain *domain; + const char *domname; + const char *name; + enum lsa_SidType type; + NTSTATUS status; + struct winbindd_child *child; + + status = wb_lookupsid_recv(subreq, talloc_tos(), &type, &domname, + &name); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + if ((type != SID_NAME_USER) && (type != SID_NAME_COMPUTER)) { + DEBUG(5, ("Sid %s is not a user or a computer.\n", + sid_string_dbg(&state->sid))); + /* + * We have to set the cache ourselves here, the child + * which is normally responsible was not queried yet. + */ + idmap_cache_set_sid2uid(&state->sid, -1); + tevent_req_nterror(req, NT_STATUS_INVALID_SID); + return; + } + + domain = find_domain_from_sid_noinit(&state->sid); + + /* + * TODO: Issue a gettrustinfo here in case we don't have "domain" yet? + */ + + if ((domain != NULL) && domain->have_idmap_config) { + state->dom_name = domain->name; + } else { + state->dom_name = NULL; + } + + child = idmap_child(); + + subreq = rpccli_wbint_Sid2Uid_send(state, state->ev, child->rpccli, + state->dom_name, &state->sid, + &state->uid64); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_sid2uid_done, req); +} + +static void wb_sid2uid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_sid2uid_state *state = tevent_req_data( + req, struct wb_sid2uid_state); + NTSTATUS status, result; + + status = rpccli_wbint_Sid2Uid_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!NT_STATUS_IS_OK(result)) { + tevent_req_nterror(req, result); + return; + } + + state->uid = state->uid64; + tevent_req_done(req); +} + +NTSTATUS wb_sid2uid_recv(struct tevent_req *req, uid_t *uid) +{ + struct wb_sid2uid_state *state = tevent_req_data( + req, struct wb_sid2uid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + *uid = state->uid; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 568084fd54..3f449d5cd3 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -65,3 +65,17 @@ NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r) domain, p->mem_ctx, r->in.domain, r->in.name, r->in.flags, r->out.sid, r->out.type); } + +NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r) +{ + uid_t uid; + NTSTATUS status; + + status = idmap_sid_to_uid(r->in.dom_name ? r->in.dom_name : "", + r->in.sid, &uid); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + *r->out.uid = uid; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 678a9231de..2a07ae2d4d 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -637,4 +637,11 @@ struct tevent_req *winbindd_lookupname_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_lookupname_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *wb_sid2uid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *sid); +NTSTATUS wb_sid2uid_recv(struct tevent_req *req, uid_t *uid); + + + #endif /* _WINBINDD_PROTO_H_ */ -- cgit From fb7150f23b154fe53a91f3433ea33cf680d4fa93 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 13:33:56 -0400 Subject: s3:winbind: Convert WINBINDD_SID_TO_UID to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_proto.h | 5 ++ source3/winbindd/winbindd_sid.c | 109 --------------------------------- source3/winbindd/winbindd_sid_to_uid.c | 94 ++++++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 110 deletions(-) create mode 100644 source3/winbindd/winbindd_sid_to_uid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 703f54e1f2..5a6cb43ef1 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1157,6 +1157,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_sid2uid.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ + winbindd/winbindd_sid_to_uid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index a5374a99f4..1d91a608c4 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -473,7 +473,6 @@ static struct winbindd_dispatch_table { /* Lookup related functions */ - { WINBINDD_SID_TO_UID, winbindd_sid_to_uid, "SID_TO_UID" }, { WINBINDD_SID_TO_GID, winbindd_sid_to_gid, "SID_TO_GID" }, { WINBINDD_UID_TO_SID, winbindd_uid_to_sid, "UID_TO_SID" }, { WINBINDD_GID_TO_SID, winbindd_gid_to_sid, "GID_TO_SID" }, @@ -527,6 +526,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_lookupsid_send, winbindd_lookupsid_recv }, { WINBINDD_LOOKUPNAME, "LOOKUPNAME", winbindd_lookupname_send, winbindd_lookupname_recv }, + { WINBINDD_SID_TO_UID, "SID_TO_UID", + winbindd_sid_to_uid_send, winbindd_sid_to_uid_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 2a07ae2d4d..e326f49559 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -642,6 +642,11 @@ struct tevent_req *wb_sid2uid_send(TALLOC_CTX *mem_ctx, const struct dom_sid *sid); NTSTATUS wb_sid2uid_recv(struct tevent_req *req, uid_t *uid); +struct tevent_req *winbindd_sid_to_uid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_sid_to_uid_recv(struct tevent_req *req, + struct winbindd_response *response); #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c index ee1ee2b6bb..ae3d369846 100644 --- a/source3/winbindd/winbindd_sid.c +++ b/source3/winbindd/winbindd_sid.c @@ -55,115 +55,6 @@ void winbindd_lookuprids(struct winbindd_cli_state *state) sendto_domain(state, domain); } -/* Convert a sid to a uid. We assume we only have one rid attached to the - sid. */ - -static void sid2uid_recv(void *private_data, bool success, uid_t uid) -{ - struct winbindd_cli_state *state = - talloc_get_type_abort(private_data, struct winbindd_cli_state); - struct dom_sid sid; - - string_to_sid(&sid, state->request->data.sid); - - if (!success) { - DEBUG(5, ("Could not convert sid %s\n", - state->request->data.sid)); - request_error(state); - return; - } - - state->response->data.uid = uid; - request_ok(state); -} - -static void sid2uid_lookupsid_recv( void *private_data, bool success, - const char *domain_name, - const char *name, - enum lsa_SidType type) -{ - struct winbindd_cli_state *state = - talloc_get_type_abort(private_data, struct winbindd_cli_state); - DOM_SID sid; - - if (!string_to_sid(&sid, state->request->data.sid)) { - DEBUG(1, ("sid2uid_lookupsid_recv: Could not get convert sid " - "%s from string\n", state->request->data.sid)); - request_error(state); - return; - } - - if (!success) { - DEBUG(5, ("sid2uid_lookupsid_recv Could not convert get sid type for %s\n", - state->request->data.sid)); - goto fail; - } - - if ( (type!=SID_NAME_USER) && (type!=SID_NAME_COMPUTER) ) { - DEBUG(5,("sid2uid_lookupsid_recv: Sid %s is not a user or a computer.\n", - state->request->data.sid)); - goto fail; - } - - /* always use the async interface (may block) */ - winbindd_sid2uid_async(state->mem_ctx, &sid, sid2uid_recv, state); - return; - - fail: - /* - * We have to set the cache ourselves here, the child which is - * normally responsible was not queried yet. - */ - idmap_cache_set_sid2uid(&sid, -1); - request_error(state); - return; -} - -void winbindd_sid_to_uid(struct winbindd_cli_state *state) -{ - DOM_SID sid; - uid_t uid; - bool expired; - - /* Ensure null termination */ - state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - - DEBUG(3, ("[%5lu]: sid to uid %s\n", (unsigned long)state->pid, - state->request->data.sid)); - - if (!string_to_sid(&sid, state->request->data.sid)) { - DEBUG(1, ("Could not get convert sid %s from string\n", - state->request->data.sid)); - request_error(state); - return; - } - - if (idmap_cache_find_sid2uid(&sid, &uid, &expired)) { - DEBUG(10, ("idmap_cache_find_sid2uid found %d%s\n", - (int)uid, expired ? " (expired)": "")); - if (expired && IS_DOMAIN_ONLINE(find_our_domain())) { - DEBUG(10, ("revalidating expired entry\n")); - goto backend; - } - if (uid == -1) { - DEBUG(10, ("Returning negative cache entry\n")); - request_error(state); - return; - } - DEBUG(10, ("Returning positive cache entry\n")); - state->response->data.uid = uid; - request_ok(state); - return; - } - - /* Validate the SID as a user. Hopefully this will hit cache. - Needed to prevent DoS by exhausting the uid allocation - range from random SIDs. */ - - backend: - winbindd_lookupsid_async( state->mem_ctx, &sid, sid2uid_lookupsid_recv, state ); -} - /* Convert a sid to a gid. We assume we only have one rid attached to the sid.*/ diff --git a/source3/winbindd/winbindd_sid_to_uid.c b/source3/winbindd/winbindd_sid_to_uid.c new file mode 100644 index 0000000000..a6ff6cbaf4 --- /dev/null +++ b/source3/winbindd/winbindd_sid_to_uid.c @@ -0,0 +1,94 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_SID_TO_UID + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_sid_to_uid_state { + struct dom_sid sid; + uid_t uid; +}; + +static void winbindd_sid_to_uid_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_sid_to_uid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_sid_to_uid_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_sid_to_uid_state); + if (req == NULL) { + return NULL; + } + + /* Ensure null termination */ + request->data.sid[sizeof(request->data.sid)-1]='\0'; + + DEBUG(3, ("sid to uid %s\n", request->data.sid)); + + if (!string_to_sid(&state->sid, request->data.sid)) { + DEBUG(1, ("Could not get convert sid %s from string\n", + request->data.sid)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev); + } + + subreq = wb_sid2uid_send(state, ev, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_sid_to_uid_done, req); + return req; +} + +static void winbindd_sid_to_uid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_sid_to_uid_state *state = tevent_req_data( + req, struct winbindd_sid_to_uid_state); + NTSTATUS status; + + status = wb_sid2uid_recv(subreq, &state->uid); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_sid_to_uid_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_sid_to_uid_state *state = tevent_req_data( + req, struct winbindd_sid_to_uid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + response->data.uid = state->uid; + return NT_STATUS_OK; +} -- cgit From 153ae58d7d37daffc7c5547ef9174baf64f9aaa7 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 13:38:52 -0400 Subject: s3:winbind: Add async wb_sid2gid --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 165 ++++++++++++++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 14 +++ source3/librpc/gen_ndr/ndr_wbint.c | 120 ++++++++++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 5 +- source3/librpc/gen_ndr/srv_wbint.c | 93 +++++++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 14 +++ source3/librpc/idl/wbint.idl | 6 ++ source3/winbindd/wb_sid2gid.c | 170 +++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 14 +++ source3/winbindd/winbindd_proto.h | 4 + 12 files changed, 606 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_sid2gid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 5a6cb43ef1..f0cc654af0 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1155,6 +1155,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_lookupsid.o \ winbindd/wb_lookupname.o \ winbindd/wb_sid2uid.o \ + winbindd/wb_sid2gid.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ winbindd/winbindd_sid_to_uid.o \ diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index e0b31705c1..c64de272b3 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -667,3 +667,168 @@ NTSTATUS rpccli_wbint_Sid2Uid(struct rpc_pipe_client *cli, return r.out.result; } +struct rpccli_wbint_Sid2Gid_state { + struct wbint_Sid2Gid orig; + struct wbint_Sid2Gid tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_Sid2Gid_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_Sid2Gid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_dom_name /* [in] [unique,charset(UTF8)] */, + struct dom_sid *_sid /* [in] [ref] */, + uint64_t *_gid /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_Sid2Gid_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_Sid2Gid_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.dom_name = _dom_name; + state->orig.in.sid = _sid; + + /* Out parameters */ + state->orig.out.gid = _gid; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Sid2Gid, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_Sid2Gid_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_SID2GID, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_Sid2Gid_done, req); + return req; +} + +static void rpccli_wbint_Sid2Gid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_Sid2Gid_state *state = tevent_req_data( + req, struct rpccli_wbint_Sid2Gid_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.gid = *state->tmp.out.gid; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Sid2Gid, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_Sid2Gid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_Sid2Gid_state *state = tevent_req_data( + req, struct rpccli_wbint_Sid2Gid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_Sid2Gid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *dom_name /* [in] [unique,charset(UTF8)] */, + struct dom_sid *sid /* [in] [ref] */, + uint64_t *gid /* [out] [ref] */) +{ + struct wbint_Sid2Gid r; + NTSTATUS status; + + /* In parameters */ + r.in.dom_name = dom_name; + r.in.sid = sid; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Sid2Gid, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_SID2GID, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Sid2Gid, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *gid = *r.out.gid; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index eb533012dc..e74804debd 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -60,4 +60,18 @@ NTSTATUS rpccli_wbint_Sid2Uid(struct rpc_pipe_client *cli, const char *dom_name /* [in] [unique,charset(UTF8)] */, struct dom_sid *sid /* [in] [ref] */, uint64_t *uid /* [out] [ref] */); +struct tevent_req *rpccli_wbint_Sid2Gid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_dom_name /* [in] [unique,charset(UTF8)] */, + struct dom_sid *_sid /* [in] [ref] */, + uint64_t *_gid /* [out] [ref] */); +NTSTATUS rpccli_wbint_Sid2Gid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_Sid2Gid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *dom_name /* [in] [unique,charset(UTF8)] */, + struct dom_sid *sid /* [in] [ref] */, + uint64_t *gid /* [out] [ref] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index 0773ed0e10..d7dedf84ec 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -466,6 +466,116 @@ _PUBLIC_ void ndr_print_wbint_Sid2Uid(struct ndr_print *ndr, const char *name, i ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_Sid2Gid(struct ndr_push *ndr, int flags, const struct wbint_Sid2Gid *r) +{ + if (flags & NDR_IN) { + NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dom_name)); + if (r->in.dom_name) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dom_name, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dom_name, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dom_name, ndr_charset_length(r->in.dom_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + if (r->in.sid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + } + if (flags & NDR_OUT) { + if (r->out.gid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, *r->out.gid)); + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_Sid2Gid(struct ndr_pull *ndr, int flags, struct wbint_Sid2Gid *r) +{ + uint32_t _ptr_dom_name; + TALLOC_CTX *_mem_save_dom_name_0; + TALLOC_CTX *_mem_save_sid_0; + TALLOC_CTX *_mem_save_gid_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dom_name)); + if (_ptr_dom_name) { + NDR_PULL_ALLOC(ndr, r->in.dom_name); + } else { + r->in.dom_name = NULL; + } + if (r->in.dom_name) { + _mem_save_dom_name_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.dom_name, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dom_name)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dom_name)); + if (ndr_get_array_length(ndr, &r->in.dom_name) > ndr_get_array_size(ndr, &r->in.dom_name)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dom_name), ndr_get_array_length(ndr, &r->in.dom_name)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dom_name), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dom_name, ndr_get_array_length(ndr, &r->in.dom_name), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_name_0, 0); + } + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->in.sid); + } + _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_PULL_ALLOC(ndr, r->out.gid); + ZERO_STRUCTP(r->out.gid); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.gid); + } + _mem_save_gid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.gid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, r->out.gid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_Sid2Gid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Gid *r) +{ + ndr_print_struct(ndr, name, "wbint_Sid2Gid"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_Sid2Gid"); + ndr->depth++; + ndr_print_ptr(ndr, "dom_name", r->in.dom_name); + ndr->depth++; + if (r->in.dom_name) { + ndr_print_string(ndr, "dom_name", r->in.dom_name); + } + ndr->depth--; + ndr_print_ptr(ndr, "sid", r->in.sid); + ndr->depth++; + ndr_print_dom_sid(ndr, "sid", r->in.sid); + ndr->depth--; + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_Sid2Gid"); + ndr->depth++; + ndr_print_ptr(ndr, "gid", r->out.gid); + ndr->depth++; + ndr_print_hyper(ndr, "gid", *r->out.gid); + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -499,6 +609,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_Sid2Uid, false, }, + { + "wbint_Sid2Gid", + sizeof(struct wbint_Sid2Gid), + (ndr_push_flags_fn_t) ndr_push_wbint_Sid2Gid, + (ndr_pull_flags_fn_t) ndr_pull_wbint_Sid2Gid, + (ndr_print_function_t) ndr_print_wbint_Sid2Gid, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -528,7 +646,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 4, + .num_calls = 5, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index 0570df6cd1..37644473bd 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -19,9 +19,12 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_SID2UID (0x03) -#define NDR_WBINT_CALL_COUNT (4) +#define NDR_WBINT_SID2GID (0x04) + +#define NDR_WBINT_CALL_COUNT (5) void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r); void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupName *r); void ndr_print_wbint_Sid2Uid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Uid *r); +void ndr_print_wbint_Sid2Gid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Gid *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index 2fd6c17c28..119a263c20 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -344,6 +344,86 @@ static bool api_wbint_Sid2Uid(pipes_struct *p) return true; } +static bool api_wbint_Sid2Gid(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_Sid2Gid *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_SID2GID]; + + r = talloc(talloc_tos(), struct wbint_Sid2Gid); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Sid2Gid, r); + } + + ZERO_STRUCT(r->out); + r->out.gid = talloc_zero(r, uint64_t); + if (r->out.gid == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_Sid2Gid(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Sid2Gid, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = @@ -352,6 +432,7 @@ static struct api_struct api_wbint_cmds[] = {"WBINT_LOOKUPSID", NDR_WBINT_LOOKUPSID, api_wbint_LookupSid}, {"WBINT_LOOKUPNAME", NDR_WBINT_LOOKUPNAME, api_wbint_LookupName}, {"WBINT_SID2UID", NDR_WBINT_SID2UID, api_wbint_Sid2Uid}, + {"WBINT_SID2GID", NDR_WBINT_SID2GID, api_wbint_Sid2Gid}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -431,6 +512,18 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_SID2GID: { + struct wbint_Sid2Gid *r = (struct wbint_Sid2Gid *)_r; + ZERO_STRUCT(r->out); + r->out.gid = talloc_zero(mem_ctx, uint64_t); + if (r->out.gid == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_Sid2Gid(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index 21c59b85bb..e8ad0ac764 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -5,11 +5,13 @@ void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); +NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); +NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index f4dc8cfcb1..82160d9494 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -65,4 +65,18 @@ struct wbint_Sid2Uid { }; + +struct wbint_Sid2Gid { + struct { + const char *dom_name;/* [unique,charset(UTF8)] */ + struct dom_sid *sid;/* [ref] */ + } in; + + struct { + uint64_t *gid;/* [ref] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index ce0329cc61..da437fe2c2 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -35,4 +35,10 @@ interface wbint [in] dom_sid *sid, [out] hyper *uid ); + + NTSTATUS wbint_Sid2Gid( + [in,unique,string,charset(UTF8)] char *dom_name, + [in] dom_sid *sid, + [out] hyper *gid + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_sid2gid.c b/source3/winbindd/wb_sid2gid.c new file mode 100644 index 0000000000..a578746ea2 --- /dev/null +++ b/source3/winbindd/wb_sid2gid.c @@ -0,0 +1,170 @@ +/* + Unix SMB/CIFS implementation. + async sid2gid + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_sid2gid_state { + struct tevent_context *ev; + struct dom_sid sid; + char *dom_name; + uint64 gid64; + gid_t gid; +}; + +static void wb_sid2gid_lookup_done(struct tevent_req *subreq); +static void wb_sid2gid_done(struct tevent_req *subreq); + + +struct tevent_req *wb_sid2gid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *sid) +{ + struct tevent_req *req, *subreq; + struct wb_sid2gid_state *state; + bool expired; + + req = tevent_req_create(mem_ctx, &state, struct wb_sid2gid_state); + if (req == NULL) { + return NULL; + } + sid_copy(&state->sid, sid); + state->ev = ev; + + if (winbindd_use_idmap_cache() + && idmap_cache_find_sid2gid(sid, &state->gid, &expired)) { + + DEBUG(10, ("idmap_cache_find_sid2gid found %d%s\n", + (int)state->gid, expired ? " (expired)": "")); + + if (!expired || IS_DOMAIN_OFFLINE(find_our_domain())) { + if (state->gid == -1) { + tevent_req_nterror(req, NT_STATUS_NONE_MAPPED); + } else { + tevent_req_done(req); + } + return tevent_req_post(req, ev); + } + } + + /* + * We need to make sure the sid is of the right type to not flood + * idmap with wrong entries + */ + + subreq = wb_lookupsid_send(state, ev, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_sid2gid_lookup_done, req); + return req; +} + +static void wb_sid2gid_lookup_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_sid2gid_state *state = tevent_req_data( + req, struct wb_sid2gid_state); + struct winbindd_domain *domain; + const char *domname; + const char *name; + enum lsa_SidType type; + NTSTATUS status; + struct winbindd_child *child; + + status = wb_lookupsid_recv(subreq, talloc_tos(), &type, &domname, + &name); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + if ((type != SID_NAME_DOM_GRP) && (type != SID_NAME_ALIAS) + && (type != SID_NAME_WKN_GRP)) { + DEBUG(5, ("Sid %s is not a group.\n", + sid_string_dbg(&state->sid))); + /* + * We have to set the cache ourselves here, the child + * which is normally responsible was not queried yet. + */ + idmap_cache_set_sid2gid(&state->sid, -1); + tevent_req_nterror(req, NT_STATUS_INVALID_SID); + return; + } + + domain = find_domain_from_sid_noinit(&state->sid); + + /* + * TODO: Issue a gettrustinfo here in case we don't have "domain" yet? + */ + + if ((domain != NULL) && domain->have_idmap_config) { + state->dom_name = domain->name; + } else { + state->dom_name = NULL; + } + + child = idmap_child(); + + subreq = rpccli_wbint_Sid2Gid_send(state, state->ev, child->rpccli, + state->dom_name, &state->sid, + &state->gid64); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_sid2gid_done, req); +} + +static void wb_sid2gid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_sid2gid_state *state = tevent_req_data( + req, struct wb_sid2gid_state); + NTSTATUS status, result; + + status = rpccli_wbint_Sid2Gid_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!NT_STATUS_IS_OK(result)) { + tevent_req_nterror(req, result); + return; + } + + state->gid = state->gid64; + tevent_req_done(req); +} + +NTSTATUS wb_sid2gid_recv(struct tevent_req *req, gid_t *gid) +{ + struct wb_sid2gid_state *state = tevent_req_data( + req, struct wb_sid2gid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + *gid = state->gid; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 3f449d5cd3..670e53d0a9 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -79,3 +79,17 @@ NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r) *r->out.uid = uid; return NT_STATUS_OK; } + +NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r) +{ + gid_t gid; + NTSTATUS status; + + status = idmap_sid_to_gid(r->in.dom_name ? r->in.dom_name : "", + r->in.sid, &gid); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + *r->out.gid = gid; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index e326f49559..d26a85796d 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -648,5 +648,9 @@ struct tevent_req *winbindd_sid_to_uid_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_sid_to_uid_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *wb_sid2gid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *sid); +NTSTATUS wb_sid2gid_recv(struct tevent_req *req, gid_t *gid); #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 5db561a608a11895d8a9a038a98a9fcc7c867d59 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 13:42:22 -0400 Subject: s3:winbind: Convert WINBINDD_SID_TO_GID the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_proto.h | 6 ++ source3/winbindd/winbindd_sid.c | 113 --------------------------------- source3/winbindd/winbindd_sid_to_gid.c | 94 +++++++++++++++++++++++++++ 5 files changed, 103 insertions(+), 114 deletions(-) create mode 100644 source3/winbindd/winbindd_sid_to_gid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index f0cc654af0..9f5a7dedf7 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1159,6 +1159,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ winbindd/winbindd_sid_to_uid.o \ + winbindd/winbindd_sid_to_gid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 1d91a608c4..0f320850d2 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -473,7 +473,6 @@ static struct winbindd_dispatch_table { /* Lookup related functions */ - { WINBINDD_SID_TO_GID, winbindd_sid_to_gid, "SID_TO_GID" }, { WINBINDD_UID_TO_SID, winbindd_uid_to_sid, "UID_TO_SID" }, { WINBINDD_GID_TO_SID, winbindd_gid_to_sid, "GID_TO_SID" }, { WINBINDD_ALLOCATE_UID, winbindd_allocate_uid, "ALLOCATE_UID" }, @@ -528,6 +527,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_lookupname_send, winbindd_lookupname_recv }, { WINBINDD_SID_TO_UID, "SID_TO_UID", winbindd_sid_to_uid_send, winbindd_sid_to_uid_recv }, + { WINBINDD_SID_TO_GID, "SID_TO_GID", + winbindd_sid_to_gid_send, winbindd_sid_to_gid_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index d26a85796d..d17d47a0d7 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -653,4 +653,10 @@ struct tevent_req *wb_sid2gid_send(TALLOC_CTX *mem_ctx, const struct dom_sid *sid); NTSTATUS wb_sid2gid_recv(struct tevent_req *req, gid_t *gid); +struct tevent_req *winbindd_sid_to_gid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_sid_to_gid_recv(struct tevent_req *req, + struct winbindd_response *response); + #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c index ae3d369846..718345b5e3 100644 --- a/source3/winbindd/winbindd_sid.c +++ b/source3/winbindd/winbindd_sid.c @@ -55,119 +55,6 @@ void winbindd_lookuprids(struct winbindd_cli_state *state) sendto_domain(state, domain); } -/* Convert a sid to a gid. We assume we only have one rid attached to the - sid.*/ - -static void sid2gid_recv(void *private_data, bool success, gid_t gid) -{ - struct winbindd_cli_state *state = - talloc_get_type_abort(private_data, struct winbindd_cli_state); - struct dom_sid sid; - - string_to_sid(&sid, state->request->data.sid); - - if (!success) { - DEBUG(5, ("Could not convert sid %s\n", - state->request->data.sid)); - request_error(state); - return; - } - - state->response->data.gid = gid; - request_ok(state); -} - -static void sid2gid_lookupsid_recv( void *private_data, bool success, - const char *domain_name, - const char *name, - enum lsa_SidType type) -{ - struct winbindd_cli_state *state = - talloc_get_type_abort(private_data, struct winbindd_cli_state); - DOM_SID sid; - - if (!string_to_sid(&sid, state->request->data.sid)) { - DEBUG(1, ("sid2gid_lookupsid_recv: Could not get convert sid " - "%s from string\n", state->request->data.sid)); - request_error(state); - return; - } - - if (!success) { - DEBUG(5, ("sid2gid_lookupsid_recv: Could not get sid type for %s\n", - state->request->data.sid)); - goto fail; - } - - if ( (type!=SID_NAME_DOM_GRP) && - (type!=SID_NAME_ALIAS) && - (type!=SID_NAME_WKN_GRP) ) - { - DEBUG(5,("sid2gid_lookupsid_recv: Sid %s is not a group.\n", - state->request->data.sid)); - goto fail; - } - - /* always use the async interface (may block) */ - winbindd_sid2gid_async(state->mem_ctx, &sid, sid2gid_recv, state); - return; - - fail: - /* - * We have to set the cache ourselves here, the child which is - * normally responsible was not queried yet. - */ - idmap_cache_set_sid2gid(&sid, -1); - request_error(state); - return; -} - -void winbindd_sid_to_gid(struct winbindd_cli_state *state) -{ - DOM_SID sid; - gid_t gid; - bool expired; - - /* Ensure null termination */ - state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - - DEBUG(3, ("[%5lu]: sid to gid %s\n", (unsigned long)state->pid, - state->request->data.sid)); - - if (!string_to_sid(&sid, state->request->data.sid)) { - DEBUG(1, ("Could not get convert sid %s from string\n", - state->request->data.sid)); - request_error(state); - return; - } - - if (idmap_cache_find_sid2gid(&sid, &gid, &expired)) { - DEBUG(10, ("idmap_cache_find_sid2gid found %d%s\n", - (int)gid, expired ? " (expired)": "")); - if (expired && IS_DOMAIN_ONLINE(find_our_domain())) { - DEBUG(10, ("revalidating expired entry\n")); - goto backend; - } - if (gid == -1) { - DEBUG(10, ("Returning negative cache entry\n")); - request_error(state); - return; - } - DEBUG(10, ("Returning positive cache entry\n")); - state->response->data.gid = gid; - request_ok(state); - return; - } - - /* Validate the SID as a group. Hopefully this will hit cache. - Needed to prevent DoS by exhausting the uid allocation - range from random SIDs. */ - - backend: - winbindd_lookupsid_async( state->mem_ctx, &sid, sid2gid_lookupsid_recv, - state ); -} - static void set_mapping_recv(void *private_data, bool success) { struct winbindd_cli_state *state = diff --git a/source3/winbindd/winbindd_sid_to_gid.c b/source3/winbindd/winbindd_sid_to_gid.c new file mode 100644 index 0000000000..323b44d7f9 --- /dev/null +++ b/source3/winbindd/winbindd_sid_to_gid.c @@ -0,0 +1,94 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_SID_TO_GID + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_sid_to_gid_state { + struct dom_sid sid; + gid_t gid; +}; + +static void winbindd_sid_to_gid_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_sid_to_gid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_sid_to_gid_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_sid_to_gid_state); + if (req == NULL) { + return NULL; + } + + /* Ensure null termination */ + request->data.sid[sizeof(request->data.sid)-1]='\0'; + + DEBUG(3, ("sid to gid %s\n", request->data.sid)); + + if (!string_to_sid(&state->sid, request->data.sid)) { + DEBUG(1, ("Could not get convert sid %s from string\n", + request->data.sid)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev); + } + + subreq = wb_sid2gid_send(state, ev, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_sid_to_gid_done, req); + return req; +} + +static void winbindd_sid_to_gid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_sid_to_gid_state *state = tevent_req_data( + req, struct winbindd_sid_to_gid_state); + NTSTATUS status; + + status = wb_sid2gid_recv(subreq, &state->gid); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_sid_to_gid_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_sid_to_gid_state *state = tevent_req_data( + req, struct winbindd_sid_to_gid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + response->data.gid = state->gid; + return NT_STATUS_OK; +} -- cgit From 3eff8e93e283828afdb3413aec2dae5c01b101b3 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 13:52:39 -0400 Subject: s3:winbind: Add async wb_uid2sid --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 165 +++++++++++++++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 14 +++ source3/librpc/gen_ndr/ndr_wbint.c | 107 ++++++++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 5 +- source3/librpc/gen_ndr/srv_wbint.c | 93 ++++++++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 14 +++ source3/librpc/idl/wbint.idl | 6 ++ source3/winbindd/wb_uid2sid.c | 119 +++++++++++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 12 +++ source3/winbindd/winbindd_proto.h | 6 ++ 12 files changed, 542 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_uid2sid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 9f5a7dedf7..50e9ebf56d 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1156,6 +1156,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_lookupname.o \ winbindd/wb_sid2uid.o \ winbindd/wb_sid2gid.o \ + winbindd/wb_uid2sid.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ winbindd/winbindd_sid_to_uid.o \ diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index c64de272b3..847c937fe8 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -832,3 +832,168 @@ NTSTATUS rpccli_wbint_Sid2Gid(struct rpc_pipe_client *cli, return r.out.result; } +struct rpccli_wbint_Uid2Sid_state { + struct wbint_Uid2Sid orig; + struct wbint_Uid2Sid tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_Uid2Sid_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_Uid2Sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_dom_name /* [in] [unique,charset(UTF8)] */, + uint64_t _uid /* [in] */, + struct dom_sid *_sid /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_Uid2Sid_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_Uid2Sid_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.dom_name = _dom_name; + state->orig.in.uid = _uid; + + /* Out parameters */ + state->orig.out.sid = _sid; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Uid2Sid, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_Uid2Sid_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_UID2SID, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_Uid2Sid_done, req); + return req; +} + +static void rpccli_wbint_Uid2Sid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_Uid2Sid_state *state = tevent_req_data( + req, struct rpccli_wbint_Uid2Sid_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.sid = *state->tmp.out.sid; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Uid2Sid, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_Uid2Sid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_Uid2Sid_state *state = tevent_req_data( + req, struct rpccli_wbint_Uid2Sid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_Uid2Sid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *dom_name /* [in] [unique,charset(UTF8)] */, + uint64_t uid /* [in] */, + struct dom_sid *sid /* [out] [ref] */) +{ + struct wbint_Uid2Sid r; + NTSTATUS status; + + /* In parameters */ + r.in.dom_name = dom_name; + r.in.uid = uid; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Uid2Sid, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_UID2SID, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Uid2Sid, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *sid = *r.out.sid; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index e74804debd..458e69211b 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -74,4 +74,18 @@ NTSTATUS rpccli_wbint_Sid2Gid(struct rpc_pipe_client *cli, const char *dom_name /* [in] [unique,charset(UTF8)] */, struct dom_sid *sid /* [in] [ref] */, uint64_t *gid /* [out] [ref] */); +struct tevent_req *rpccli_wbint_Uid2Sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_dom_name /* [in] [unique,charset(UTF8)] */, + uint64_t _uid /* [in] */, + struct dom_sid *_sid /* [out] [ref] */); +NTSTATUS rpccli_wbint_Uid2Sid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_Uid2Sid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *dom_name /* [in] [unique,charset(UTF8)] */, + uint64_t uid /* [in] */, + struct dom_sid *sid /* [out] [ref] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index d7dedf84ec..90a4fcf883 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -576,6 +576,103 @@ _PUBLIC_ void ndr_print_wbint_Sid2Gid(struct ndr_print *ndr, const char *name, i ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_Uid2Sid(struct ndr_push *ndr, int flags, const struct wbint_Uid2Sid *r) +{ + if (flags & NDR_IN) { + NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dom_name)); + if (r->in.dom_name) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dom_name, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dom_name, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dom_name, ndr_charset_length(r->in.dom_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->in.uid)); + } + if (flags & NDR_OUT) { + if (r->out.sid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->out.sid)); + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_Uid2Sid(struct ndr_pull *ndr, int flags, struct wbint_Uid2Sid *r) +{ + uint32_t _ptr_dom_name; + TALLOC_CTX *_mem_save_dom_name_0; + TALLOC_CTX *_mem_save_sid_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dom_name)); + if (_ptr_dom_name) { + NDR_PULL_ALLOC(ndr, r->in.dom_name); + } else { + r->in.dom_name = NULL; + } + if (r->in.dom_name) { + _mem_save_dom_name_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.dom_name, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dom_name)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dom_name)); + if (ndr_get_array_length(ndr, &r->in.dom_name) > ndr_get_array_size(ndr, &r->in.dom_name)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dom_name), ndr_get_array_length(ndr, &r->in.dom_name)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dom_name), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dom_name, ndr_get_array_length(ndr, &r->in.dom_name), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_name_0, 0); + } + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->in.uid)); + NDR_PULL_ALLOC(ndr, r->out.sid); + ZERO_STRUCTP(r->out.sid); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.sid); + } + _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.sid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->out.sid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_Uid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Uid2Sid *r) +{ + ndr_print_struct(ndr, name, "wbint_Uid2Sid"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_Uid2Sid"); + ndr->depth++; + ndr_print_ptr(ndr, "dom_name", r->in.dom_name); + ndr->depth++; + if (r->in.dom_name) { + ndr_print_string(ndr, "dom_name", r->in.dom_name); + } + ndr->depth--; + ndr_print_hyper(ndr, "uid", r->in.uid); + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_Uid2Sid"); + ndr->depth++; + ndr_print_ptr(ndr, "sid", r->out.sid); + ndr->depth++; + ndr_print_dom_sid(ndr, "sid", r->out.sid); + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -617,6 +714,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_Sid2Gid, false, }, + { + "wbint_Uid2Sid", + sizeof(struct wbint_Uid2Sid), + (ndr_push_flags_fn_t) ndr_push_wbint_Uid2Sid, + (ndr_pull_flags_fn_t) ndr_pull_wbint_Uid2Sid, + (ndr_print_function_t) ndr_print_wbint_Uid2Sid, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -646,7 +751,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 5, + .num_calls = 6, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index 37644473bd..169487079d 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -21,10 +21,13 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_SID2GID (0x04) -#define NDR_WBINT_CALL_COUNT (5) +#define NDR_WBINT_UID2SID (0x05) + +#define NDR_WBINT_CALL_COUNT (6) void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r); void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupName *r); void ndr_print_wbint_Sid2Uid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Uid *r); void ndr_print_wbint_Sid2Gid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Gid *r); +void ndr_print_wbint_Uid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Uid2Sid *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index 119a263c20..7a76f53959 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -424,6 +424,86 @@ static bool api_wbint_Sid2Gid(pipes_struct *p) return true; } +static bool api_wbint_Uid2Sid(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_Uid2Sid *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_UID2SID]; + + r = talloc(talloc_tos(), struct wbint_Uid2Sid); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Uid2Sid, r); + } + + ZERO_STRUCT(r->out); + r->out.sid = talloc_zero(r, struct dom_sid); + if (r->out.sid == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_Uid2Sid(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Uid2Sid, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = @@ -433,6 +513,7 @@ static struct api_struct api_wbint_cmds[] = {"WBINT_LOOKUPNAME", NDR_WBINT_LOOKUPNAME, api_wbint_LookupName}, {"WBINT_SID2UID", NDR_WBINT_SID2UID, api_wbint_Sid2Uid}, {"WBINT_SID2GID", NDR_WBINT_SID2GID, api_wbint_Sid2Gid}, + {"WBINT_UID2SID", NDR_WBINT_UID2SID, api_wbint_Uid2Sid}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -524,6 +605,18 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_UID2SID: { + struct wbint_Uid2Sid *r = (struct wbint_Uid2Sid *)_r; + ZERO_STRUCT(r->out); + r->out.sid = talloc_zero(mem_ctx, struct dom_sid); + if (r->out.sid == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_Uid2Sid(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index e8ad0ac764..d1141b0a02 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -6,6 +6,7 @@ NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); +NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); @@ -13,5 +14,6 @@ NTSTATUS _wbint_LookupSid(pipes_struct *p, struct wbint_LookupSid *r); NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); +NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index 82160d9494..03f58c813f 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -79,4 +79,18 @@ struct wbint_Sid2Gid { }; + +struct wbint_Uid2Sid { + struct { + const char *dom_name;/* [unique,charset(UTF8)] */ + uint64_t uid; + } in; + + struct { + struct dom_sid *sid;/* [ref] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index da437fe2c2..bc10b23f56 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -41,4 +41,10 @@ interface wbint [in] dom_sid *sid, [out] hyper *gid ); + + NTSTATUS wbint_Uid2Sid( + [in,unique,string,charset(UTF8)] char *dom_name, + [in] hyper uid, + [out] dom_sid *sid + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_uid2sid.c b/source3/winbindd/wb_uid2sid.c new file mode 100644 index 0000000000..18ef3b214a --- /dev/null +++ b/source3/winbindd/wb_uid2sid.c @@ -0,0 +1,119 @@ +/* + Unix SMB/CIFS implementation. + async uid2sid + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_uid2sid_state { + struct tevent_context *ev; + char *dom_name; + struct dom_sid sid; +}; + +static void wb_uid2sid_done(struct tevent_req *subreq); + +struct tevent_req *wb_uid2sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + uid_t uid) +{ + struct tevent_req *req, *subreq; + struct wb_uid2sid_state *state; + struct winbindd_domain *domain; + struct winbindd_child *child; + bool expired; + + req = tevent_req_create(mem_ctx, &state, struct wb_uid2sid_state); + if (req == NULL) { + return NULL; + } + + if (winbindd_use_idmap_cache() + && idmap_cache_find_uid2sid(uid, &state->sid, &expired)) { + + DEBUG(10, ("idmap_cache_find_uid2sid found %d%s\n", + (int)uid, expired ? " (expired)": "")); + + if (!expired || idmap_is_offline()) { + if (is_null_sid(&state->sid)) { + tevent_req_nterror(req, + NT_STATUS_NONE_MAPPED); + } else { + tevent_req_done(req); + } + return tevent_req_post(req, ev); + } + } + + state->dom_name = NULL; + + for (domain = domain_list(); domain != NULL; domain = domain->next) { + if (domain->have_idmap_config + && (uid >= domain->id_range_low) + && (uid <= domain->id_range_high)) { + state->dom_name = domain->name; + break; + } + } + + child = idmap_child(); + + subreq = rpccli_wbint_Uid2Sid_send( + state, ev, child->rpccli, state->dom_name, + uid, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_uid2sid_done, req); + return req; +} + +static void wb_uid2sid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_uid2sid_state *state = tevent_req_data( + req, struct wb_uid2sid_state); + NTSTATUS status, result; + + status = rpccli_wbint_Uid2Sid_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!NT_STATUS_IS_OK(result)) { + tevent_req_nterror(req, result); + return; + } + tevent_req_done(req); +} + +NTSTATUS wb_uid2sid_recv(struct tevent_req *req, struct dom_sid *sid) +{ + struct wb_uid2sid_state *state = tevent_req_data( + req, struct wb_uid2sid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + sid_copy(sid, &state->sid); + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 670e53d0a9..bad9cd585a 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -93,3 +93,15 @@ NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r) *r->out.gid = gid; return NT_STATUS_OK; } + +NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r) +{ + NTSTATUS status; + + status = idmap_uid_to_sid(r->in.dom_name ? r->in.dom_name : "", + r->out.sid, r->in.uid); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index d17d47a0d7..e0a43f5094 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -659,4 +659,10 @@ struct tevent_req *winbindd_sid_to_gid_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_sid_to_gid_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *wb_uid2sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + uid_t uid); +NTSTATUS wb_uid2sid_recv(struct tevent_req *req, struct dom_sid *sid); + + #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 9b369ffcf0f113871b00de4229432a74fe436834 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 14:07:44 -0400 Subject: s3:winbind: Convert WINBINDD_UID_TO_SID the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_proto.h | 6 +++ source3/winbindd/winbindd_sid.c | 58 ----------------------- source3/winbindd/winbindd_uid_to_sid.c | 87 ++++++++++++++++++++++++++++++++++ 5 files changed, 96 insertions(+), 59 deletions(-) create mode 100644 source3/winbindd/winbindd_uid_to_sid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 50e9ebf56d..48f6a9ad2e 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1161,6 +1161,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_lookupname.o \ winbindd/winbindd_sid_to_uid.o \ winbindd/winbindd_sid_to_gid.o \ + winbindd/winbindd_uid_to_sid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 0f320850d2..9af63ff32e 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -473,7 +473,6 @@ static struct winbindd_dispatch_table { /* Lookup related functions */ - { WINBINDD_UID_TO_SID, winbindd_uid_to_sid, "UID_TO_SID" }, { WINBINDD_GID_TO_SID, winbindd_gid_to_sid, "GID_TO_SID" }, { WINBINDD_ALLOCATE_UID, winbindd_allocate_uid, "ALLOCATE_UID" }, { WINBINDD_ALLOCATE_GID, winbindd_allocate_gid, "ALLOCATE_GID" }, @@ -529,6 +528,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_sid_to_uid_send, winbindd_sid_to_uid_recv }, { WINBINDD_SID_TO_GID, "SID_TO_GID", winbindd_sid_to_gid_send, winbindd_sid_to_gid_recv }, + { WINBINDD_UID_TO_SID, "UID_TO_SID", + winbindd_uid_to_sid_send, winbindd_uid_to_sid_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index e0a43f5094..f1fb7e0a87 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -664,5 +664,11 @@ struct tevent_req *wb_uid2sid_send(TALLOC_CTX *mem_ctx, uid_t uid); NTSTATUS wb_uid2sid_recv(struct tevent_req *req, struct dom_sid *sid); +struct tevent_req *winbindd_uid_to_sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_uid_to_sid_recv(struct tevent_req *req, + struct winbindd_response *response); + #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c index 718345b5e3..654f352ba3 100644 --- a/source3/winbindd/winbindd_sid.c +++ b/source3/winbindd/winbindd_sid.c @@ -171,64 +171,6 @@ void winbindd_set_hwm(struct winbindd_cli_state *state) winbindd_set_hwm_async(state->mem_ctx, &xid, set_hwm_recv, state); } -/* Convert a uid to a sid */ - -static void uid2sid_recv(void *private_data, bool success, const char *sidstr) -{ - struct winbindd_cli_state *state = - (struct winbindd_cli_state *)private_data; - struct dom_sid sid; - - if (!success || !string_to_sid(&sid, sidstr)) { - ZERO_STRUCT(sid); - idmap_cache_set_sid2uid(&sid, state->request->data.uid); - request_error(state); - return; - } - - DEBUG(10,("uid2sid: uid %lu has sid %s\n", - (unsigned long)(state->request->data.uid), sidstr)); - - idmap_cache_set_sid2uid(&sid, state->request->data.uid); - fstrcpy(state->response->data.sid.sid, sidstr); - state->response->data.sid.type = SID_NAME_USER; - request_ok(state); - return; -} - -void winbindd_uid_to_sid(struct winbindd_cli_state *state) -{ - struct dom_sid sid; - bool expired; - - DEBUG(3, ("[%5lu]: uid to sid %lu\n", (unsigned long)state->pid, - (unsigned long)state->request->data.uid)); - - if (idmap_cache_find_uid2sid(state->request->data.uid, &sid, - &expired)) { - DEBUG(10, ("idmap_cache_find_uid2sid found %d%s\n", - (int)state->request->data.uid, - expired ? " (expired)": "")); - if (expired && IS_DOMAIN_ONLINE(find_our_domain())) { - DEBUG(10, ("revalidating expired entry\n")); - goto backend; - } - if (is_null_sid(&sid)) { - DEBUG(10, ("Returning negative cache entry\n")); - request_error(state); - return; - } - DEBUG(10, ("Returning positive cache entry\n")); - sid_to_fstring(state->response->data.sid.sid, &sid); - request_ok(state); - return; - } - - /* always go via the async interface (may block) */ - backend: - winbindd_uid2sid_async(state->mem_ctx, state->request->data.uid, uid2sid_recv, state); -} - /* Convert a gid to a sid */ static void gid2sid_recv(void *private_data, bool success, const char *sidstr) diff --git a/source3/winbindd/winbindd_uid_to_sid.c b/source3/winbindd/winbindd_uid_to_sid.c new file mode 100644 index 0000000000..151fffd296 --- /dev/null +++ b/source3/winbindd/winbindd_uid_to_sid.c @@ -0,0 +1,87 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_UID_TO_SID + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_uid_to_sid_state { + struct tevent_context *ev; + uid_t uid; + struct dom_sid sid; +}; + +static void winbindd_uid_to_sid_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_uid_to_sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_uid_to_sid_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_uid_to_sid_state); + if (req == NULL) { + return NULL; + } + state->ev = ev; + + DEBUG(3, ("uid_to_sid %d\n", (int)request->data.uid)); + + subreq = wb_uid2sid_send(state, ev, request->data.uid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_uid_to_sid_done, req); + return req; +} + +static void winbindd_uid_to_sid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_uid_to_sid_state *state = tevent_req_data( + req, struct winbindd_uid_to_sid_state); + NTSTATUS status; + + status = wb_uid2sid_recv(subreq, &state->sid); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_uid_to_sid_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_uid_to_sid_state *state = tevent_req_data( + req, struct winbindd_uid_to_sid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + sid_to_fstring(response->data.sid.sid, &state->sid); + response->data.sid.type = SID_NAME_USER; + return NT_STATUS_OK; +} -- cgit From 292f3f896fa5bc381c88526fc73a6224b8d286f0 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 14:19:03 -0400 Subject: s3:winbind: Add async wb_gid2sid --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 165 +++++++++++++++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 14 +++ source3/librpc/gen_ndr/ndr_wbint.c | 107 ++++++++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 5 +- source3/librpc/gen_ndr/srv_wbint.c | 93 ++++++++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 14 +++ source3/librpc/idl/wbint.idl | 6 ++ source3/winbindd/wb_gid2sid.c | 119 +++++++++++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 12 +++ source3/winbindd/winbindd_proto.h | 5 ++ 12 files changed, 541 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_gid2sid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 48f6a9ad2e..4a872fe885 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1157,6 +1157,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_sid2uid.o \ winbindd/wb_sid2gid.o \ winbindd/wb_uid2sid.o \ + winbindd/wb_gid2sid.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ winbindd/winbindd_sid_to_uid.o \ diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index 847c937fe8..4176e94a3f 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -997,3 +997,168 @@ NTSTATUS rpccli_wbint_Uid2Sid(struct rpc_pipe_client *cli, return r.out.result; } +struct rpccli_wbint_Gid2Sid_state { + struct wbint_Gid2Sid orig; + struct wbint_Gid2Sid tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_Gid2Sid_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_Gid2Sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_dom_name /* [in] [unique,charset(UTF8)] */, + uint64_t _gid /* [in] */, + struct dom_sid *_sid /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_Gid2Sid_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_Gid2Sid_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.dom_name = _dom_name; + state->orig.in.gid = _gid; + + /* Out parameters */ + state->orig.out.sid = _sid; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Gid2Sid, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_Gid2Sid_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_GID2SID, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_Gid2Sid_done, req); + return req; +} + +static void rpccli_wbint_Gid2Sid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_Gid2Sid_state *state = tevent_req_data( + req, struct rpccli_wbint_Gid2Sid_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.sid = *state->tmp.out.sid; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Gid2Sid, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_Gid2Sid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_Gid2Sid_state *state = tevent_req_data( + req, struct rpccli_wbint_Gid2Sid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_Gid2Sid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *dom_name /* [in] [unique,charset(UTF8)] */, + uint64_t gid /* [in] */, + struct dom_sid *sid /* [out] [ref] */) +{ + struct wbint_Gid2Sid r; + NTSTATUS status; + + /* In parameters */ + r.in.dom_name = dom_name; + r.in.gid = gid; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Gid2Sid, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_GID2SID, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Gid2Sid, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *sid = *r.out.sid; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index 458e69211b..55fe22bd8f 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -88,4 +88,18 @@ NTSTATUS rpccli_wbint_Uid2Sid(struct rpc_pipe_client *cli, const char *dom_name /* [in] [unique,charset(UTF8)] */, uint64_t uid /* [in] */, struct dom_sid *sid /* [out] [ref] */); +struct tevent_req *rpccli_wbint_Gid2Sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_dom_name /* [in] [unique,charset(UTF8)] */, + uint64_t _gid /* [in] */, + struct dom_sid *_sid /* [out] [ref] */); +NTSTATUS rpccli_wbint_Gid2Sid_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_Gid2Sid(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *dom_name /* [in] [unique,charset(UTF8)] */, + uint64_t gid /* [in] */, + struct dom_sid *sid /* [out] [ref] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index 90a4fcf883..f6e53eef96 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -673,6 +673,103 @@ _PUBLIC_ void ndr_print_wbint_Uid2Sid(struct ndr_print *ndr, const char *name, i ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_Gid2Sid(struct ndr_push *ndr, int flags, const struct wbint_Gid2Sid *r) +{ + if (flags & NDR_IN) { + NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dom_name)); + if (r->in.dom_name) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dom_name, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dom_name, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dom_name, ndr_charset_length(r->in.dom_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->in.gid)); + } + if (flags & NDR_OUT) { + if (r->out.sid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->out.sid)); + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_Gid2Sid(struct ndr_pull *ndr, int flags, struct wbint_Gid2Sid *r) +{ + uint32_t _ptr_dom_name; + TALLOC_CTX *_mem_save_dom_name_0; + TALLOC_CTX *_mem_save_sid_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dom_name)); + if (_ptr_dom_name) { + NDR_PULL_ALLOC(ndr, r->in.dom_name); + } else { + r->in.dom_name = NULL; + } + if (r->in.dom_name) { + _mem_save_dom_name_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.dom_name, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dom_name)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dom_name)); + if (ndr_get_array_length(ndr, &r->in.dom_name) > ndr_get_array_size(ndr, &r->in.dom_name)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dom_name), ndr_get_array_length(ndr, &r->in.dom_name)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dom_name), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dom_name, ndr_get_array_length(ndr, &r->in.dom_name), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_name_0, 0); + } + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->in.gid)); + NDR_PULL_ALLOC(ndr, r->out.sid); + ZERO_STRUCTP(r->out.sid); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.sid); + } + _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.sid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->out.sid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_Gid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Gid2Sid *r) +{ + ndr_print_struct(ndr, name, "wbint_Gid2Sid"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_Gid2Sid"); + ndr->depth++; + ndr_print_ptr(ndr, "dom_name", r->in.dom_name); + ndr->depth++; + if (r->in.dom_name) { + ndr_print_string(ndr, "dom_name", r->in.dom_name); + } + ndr->depth--; + ndr_print_hyper(ndr, "gid", r->in.gid); + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_Gid2Sid"); + ndr->depth++; + ndr_print_ptr(ndr, "sid", r->out.sid); + ndr->depth++; + ndr_print_dom_sid(ndr, "sid", r->out.sid); + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -722,6 +819,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_Uid2Sid, false, }, + { + "wbint_Gid2Sid", + sizeof(struct wbint_Gid2Sid), + (ndr_push_flags_fn_t) ndr_push_wbint_Gid2Sid, + (ndr_pull_flags_fn_t) ndr_pull_wbint_Gid2Sid, + (ndr_print_function_t) ndr_print_wbint_Gid2Sid, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -751,7 +856,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 6, + .num_calls = 7, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index 169487079d..d8843a3c0c 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -23,11 +23,14 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_UID2SID (0x05) -#define NDR_WBINT_CALL_COUNT (6) +#define NDR_WBINT_GID2SID (0x06) + +#define NDR_WBINT_CALL_COUNT (7) void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r); void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupName *r); void ndr_print_wbint_Sid2Uid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Uid *r); void ndr_print_wbint_Sid2Gid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Gid *r); void ndr_print_wbint_Uid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Uid2Sid *r); +void ndr_print_wbint_Gid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Gid2Sid *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index 7a76f53959..a04aa8245f 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -504,6 +504,86 @@ static bool api_wbint_Uid2Sid(pipes_struct *p) return true; } +static bool api_wbint_Gid2Sid(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_Gid2Sid *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_GID2SID]; + + r = talloc(talloc_tos(), struct wbint_Gid2Sid); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_Gid2Sid, r); + } + + ZERO_STRUCT(r->out); + r->out.sid = talloc_zero(r, struct dom_sid); + if (r->out.sid == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_Gid2Sid(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_Gid2Sid, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = @@ -514,6 +594,7 @@ static struct api_struct api_wbint_cmds[] = {"WBINT_SID2UID", NDR_WBINT_SID2UID, api_wbint_Sid2Uid}, {"WBINT_SID2GID", NDR_WBINT_SID2GID, api_wbint_Sid2Gid}, {"WBINT_UID2SID", NDR_WBINT_UID2SID, api_wbint_Uid2Sid}, + {"WBINT_GID2SID", NDR_WBINT_GID2SID, api_wbint_Gid2Sid}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -617,6 +698,18 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_GID2SID: { + struct wbint_Gid2Sid *r = (struct wbint_Gid2Sid *)_r; + ZERO_STRUCT(r->out); + r->out.sid = talloc_zero(mem_ctx, struct dom_sid); + if (r->out.sid == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_Gid2Sid(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index d1141b0a02..9311e6b641 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -7,6 +7,7 @@ NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); +NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); @@ -15,5 +16,6 @@ NTSTATUS _wbint_LookupName(pipes_struct *p, struct wbint_LookupName *r); NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); +NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index 03f58c813f..d6f344e5c9 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -93,4 +93,18 @@ struct wbint_Uid2Sid { }; + +struct wbint_Gid2Sid { + struct { + const char *dom_name;/* [unique,charset(UTF8)] */ + uint64_t gid; + } in; + + struct { + struct dom_sid *sid;/* [ref] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index bc10b23f56..93627fbe07 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -47,4 +47,10 @@ interface wbint [in] hyper uid, [out] dom_sid *sid ); + + NTSTATUS wbint_Gid2Sid( + [in,unique,string,charset(UTF8)] char *dom_name, + [in] hyper gid, + [out] dom_sid *sid + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_gid2sid.c b/source3/winbindd/wb_gid2sid.c new file mode 100644 index 0000000000..a0ae850ef8 --- /dev/null +++ b/source3/winbindd/wb_gid2sid.c @@ -0,0 +1,119 @@ +/* + Unix SMB/CIFS implementation. + async gid2sid + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_gid2sid_state { + struct tevent_context *ev; + char *dom_name; + struct dom_sid sid; +}; + +static void wb_gid2sid_done(struct tevent_req *subreq); + +struct tevent_req *wb_gid2sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + gid_t gid) +{ + struct tevent_req *req, *subreq; + struct wb_gid2sid_state *state; + struct winbindd_domain *domain; + struct winbindd_child *child; + bool expired; + + req = tevent_req_create(mem_ctx, &state, struct wb_gid2sid_state); + if (req == NULL) { + return NULL; + } + + if (winbindd_use_idmap_cache() + && idmap_cache_find_gid2sid(gid, &state->sid, &expired)) { + + DEBUG(10, ("idmap_cache_find_gid2sid found %d%s\n", + (int)gid, expired ? " (expired)": "")); + + if (!expired || idmap_is_offline()) { + if (is_null_sid(&state->sid)) { + tevent_req_nterror(req, + NT_STATUS_NONE_MAPPED); + } else { + tevent_req_done(req); + } + return tevent_req_post(req, ev); + } + } + + state->dom_name = NULL; + + for (domain = domain_list(); domain != NULL; domain = domain->next) { + if (domain->have_idmap_config + && (gid >= domain->id_range_low) + && (gid <= domain->id_range_high)) { + state->dom_name = domain->name; + break; + } + } + + child = idmap_child(); + + subreq = rpccli_wbint_Gid2Sid_send( + state, ev, child->rpccli, state->dom_name, + gid, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_gid2sid_done, req); + return req; +} + +static void wb_gid2sid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_gid2sid_state *state = tevent_req_data( + req, struct wb_gid2sid_state); + NTSTATUS status, result; + + status = rpccli_wbint_Gid2Sid_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!NT_STATUS_IS_OK(result)) { + tevent_req_nterror(req, result); + return; + } + tevent_req_done(req); +} + +NTSTATUS wb_gid2sid_recv(struct tevent_req *req, struct dom_sid *sid) +{ + struct wb_gid2sid_state *state = tevent_req_data( + req, struct wb_gid2sid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + sid_copy(sid, &state->sid); + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index bad9cd585a..35fecbd08e 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -105,3 +105,15 @@ NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r) } return NT_STATUS_OK; } + +NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r) +{ + NTSTATUS status; + + status = idmap_gid_to_sid(r->in.dom_name ? r->in.dom_name : "", + r->out.sid, r->in.gid); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index f1fb7e0a87..d8bd984590 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -670,5 +670,10 @@ struct tevent_req *winbindd_uid_to_sid_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_uid_to_sid_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *wb_gid2sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + gid_t gid); +NTSTATUS wb_gid2sid_recv(struct tevent_req *req, struct dom_sid *sid); + #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 10685b37d4dc16dc75c48c08937f003af4968a0c Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 14:22:17 -0400 Subject: s3:winbind: Convert WINBINDD_GID_TO_SID the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_gid_to_sid.c | 87 ++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_proto.h | 6 +++ source3/winbindd/winbindd_sid.c | 58 ----------------------- 5 files changed, 96 insertions(+), 59 deletions(-) create mode 100644 source3/winbindd/winbindd_gid_to_sid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 4a872fe885..f7801d17a2 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1163,6 +1163,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_sid_to_uid.o \ winbindd/winbindd_sid_to_gid.o \ winbindd/winbindd_uid_to_sid.o \ + winbindd/winbindd_gid_to_sid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 9af63ff32e..4425517385 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -473,7 +473,6 @@ static struct winbindd_dispatch_table { /* Lookup related functions */ - { WINBINDD_GID_TO_SID, winbindd_gid_to_sid, "GID_TO_SID" }, { WINBINDD_ALLOCATE_UID, winbindd_allocate_uid, "ALLOCATE_UID" }, { WINBINDD_ALLOCATE_GID, winbindd_allocate_gid, "ALLOCATE_GID" }, { WINBINDD_SET_MAPPING, winbindd_set_mapping, "SET_MAPPING" }, @@ -530,6 +529,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_sid_to_gid_send, winbindd_sid_to_gid_recv }, { WINBINDD_UID_TO_SID, "UID_TO_SID", winbindd_uid_to_sid_send, winbindd_uid_to_sid_recv }, + { WINBINDD_GID_TO_SID, "GID_TO_SID", + winbindd_gid_to_sid_send, winbindd_gid_to_sid_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_gid_to_sid.c b/source3/winbindd/winbindd_gid_to_sid.c new file mode 100644 index 0000000000..b2cc3c2613 --- /dev/null +++ b/source3/winbindd/winbindd_gid_to_sid.c @@ -0,0 +1,87 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GID_TO_SID + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_gid_to_sid_state { + struct tevent_context *ev; + gid_t gid; + struct dom_sid sid; +}; + +static void winbindd_gid_to_sid_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_gid_to_sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_gid_to_sid_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_gid_to_sid_state); + if (req == NULL) { + return NULL; + } + state->ev = ev; + + DEBUG(3, ("gid_to_sid %d\n", (int)request->data.gid)); + + subreq = wb_gid2sid_send(state, ev, request->data.gid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_gid_to_sid_done, req); + return req; +} + +static void winbindd_gid_to_sid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_gid_to_sid_state *state = tevent_req_data( + req, struct winbindd_gid_to_sid_state); + NTSTATUS status; + + status = wb_gid2sid_recv(subreq, &state->sid); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_gid_to_sid_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_gid_to_sid_state *state = tevent_req_data( + req, struct winbindd_gid_to_sid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + sid_to_fstring(response->data.sid.sid, &state->sid); + response->data.sid.type = SID_NAME_USER; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index d8bd984590..38d5200aae 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -675,5 +675,11 @@ struct tevent_req *wb_gid2sid_send(TALLOC_CTX *mem_ctx, gid_t gid); NTSTATUS wb_gid2sid_recv(struct tevent_req *req, struct dom_sid *sid); +struct tevent_req *winbindd_gid_to_sid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_gid_to_sid_recv(struct tevent_req *req, + struct winbindd_response *response); + #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c index 654f352ba3..db000682ae 100644 --- a/source3/winbindd/winbindd_sid.c +++ b/source3/winbindd/winbindd_sid.c @@ -171,64 +171,6 @@ void winbindd_set_hwm(struct winbindd_cli_state *state) winbindd_set_hwm_async(state->mem_ctx, &xid, set_hwm_recv, state); } -/* Convert a gid to a sid */ - -static void gid2sid_recv(void *private_data, bool success, const char *sidstr) -{ - struct winbindd_cli_state *state = - (struct winbindd_cli_state *)private_data; - struct dom_sid sid; - - if (!success || !string_to_sid(&sid, sidstr)) { - ZERO_STRUCT(sid); - idmap_cache_set_sid2gid(&sid, state->request->data.gid); - request_error(state); - return; - } - DEBUG(10,("gid2sid: gid %lu has sid %s\n", - (unsigned long)(state->request->data.gid), sidstr)); - - idmap_cache_set_sid2gid(&sid, state->request->data.gid); - fstrcpy(state->response->data.sid.sid, sidstr); - state->response->data.sid.type = SID_NAME_DOM_GRP; - request_ok(state); - return; -} - - -void winbindd_gid_to_sid(struct winbindd_cli_state *state) -{ - struct dom_sid sid; - bool expired; - - DEBUG(3, ("[%5lu]: gid to sid %lu\n", (unsigned long)state->pid, - (unsigned long)state->request->data.gid)); - - if (idmap_cache_find_gid2sid(state->request->data.gid, &sid, - &expired)) { - DEBUG(10, ("idmap_cache_find_gid2sid found %d%s\n", - (int)state->request->data.gid, - expired ? " (expired)": "")); - if (expired && IS_DOMAIN_ONLINE(find_our_domain())) { - DEBUG(10, ("revalidating expired entry\n")); - goto backend; - } - if (is_null_sid(&sid)) { - DEBUG(10, ("Returning negative cache entry\n")); - request_error(state); - return; - } - DEBUG(10, ("Returning positive cache entry\n")); - sid_to_fstring(state->response->data.sid.sid, &sid); - request_ok(state); - return; - } - - /* always use async calls (may block) */ - backend: - winbindd_gid2sid_async(state->mem_ctx, state->request->data.gid, gid2sid_recv, state); -} - void winbindd_allocate_uid(struct winbindd_cli_state *state) { if ( !state->privileged ) { -- cgit From 360227a0feb443fbbcc420295d5666da5823685a Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 1 Aug 2009 10:20:13 -0400 Subject: s3:winbind: Make wcache_query_user externally visible --- source3/winbindd/winbindd_cache.c | 65 ++++++++++++++++++++++++++------------- source3/winbindd/winbindd_proto.h | 4 +++ 2 files changed, 47 insertions(+), 22 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index 87594542cf..270b9f310d 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -1939,38 +1939,46 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain, return result; } -/* Lookup user information from a rid */ -static NTSTATUS query_user(struct winbindd_domain *domain, - TALLOC_CTX *mem_ctx, - const DOM_SID *user_sid, - WINBIND_USERINFO *info) +NTSTATUS wcache_query_user(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const struct dom_sid *user_sid, + struct winbind_userinfo *info) { struct winbind_cache *cache = get_cache(domain); struct cache_entry *centry = NULL; NTSTATUS status; - fstring tmp; + char *sid_string; - if (!cache->tdb) - goto do_query; + if (cache->tdb == NULL) { + return NT_STATUS_NOT_FOUND; + } - centry = wcache_fetch(cache, domain, "U/%s", - sid_to_fstring(tmp, user_sid)); + sid_string = sid_string_tos(user_sid); + if (sid_string == NULL) { + return NT_STATUS_NO_MEMORY; + } - /* If we have an access denied cache entry and a cached info3 in the - samlogon cache then do a query. This will force the rpc back end - to return the info3 data. */ + centry = wcache_fetch(cache, domain, "U/%s", sid_string); + TALLOC_FREE(sid_string); + if (centry == NULL) { + return NT_STATUS_NOT_FOUND; + } - if (NT_STATUS_V(domain->last_status) == NT_STATUS_V(NT_STATUS_ACCESS_DENIED) && + /* + * If we have an access denied cache entry and a cached info3 + * in the samlogon cache then do a query. This will force the + * rpc back end to return the info3 data. + */ + + if (NT_STATUS_EQUAL(domain->last_status, NT_STATUS_ACCESS_DENIED) && netsamlogon_cache_have(user_sid)) { - DEBUG(10, ("query_user: cached access denied and have cached info3\n")); + DEBUG(10, ("query_user: cached access denied and have cached " + "info3\n")); domain->last_status = NT_STATUS_OK; centry_free(centry); - goto do_query; + return NT_STATUS_NOT_FOUND; } - if (!centry) - goto do_query; - /* if status is not ok then this is a negative hit and the rest of the data doesn't matter */ status = centry->status; @@ -1984,13 +1992,26 @@ static NTSTATUS query_user(struct winbindd_domain *domain, centry_sid(centry, &info->group_sid); } - DEBUG(10,("query_user: [Cached] - cached info for domain %s status: %s\n", - domain->name, nt_errstr(status) )); + DEBUG(10,("query_user: [Cached] - cached info for domain %s status: " + "%s\n", domain->name, nt_errstr(status) )); centry_free(centry); return status; +} + +/* Lookup user information from a rid */ +static NTSTATUS query_user(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const DOM_SID *user_sid, + WINBIND_USERINFO *info) +{ + NTSTATUS status; + + status = wcache_query_user(domain, mem_ctx, user_sid, info); + if (!NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { + return status; + } -do_query: ZERO_STRUCTP(info); /* Return status value returned by seq number check */ diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 38d5200aae..1f0d5b5d5b 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -171,6 +171,10 @@ NTSTATUS wcache_name_to_sid(struct winbindd_domain *domain, const char *name, struct dom_sid *sid, enum lsa_SidType *type); +NTSTATUS wcache_query_user(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const struct dom_sid *user_sid, + struct winbind_userinfo *info); void wcache_flush_cache(void); NTSTATUS wcache_count_cached_creds(struct winbindd_domain *domain, int *count); NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const DOM_SID *sid) ; -- cgit From 7077492778dbda30e5f865ae1d0ab0237e00f54f Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 15:23:13 -0400 Subject: s3:winbind: Add async wb_queryuser --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 161 ++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 12 ++ source3/librpc/gen_ndr/ndr_wbint.c | 255 ++++++++++++++++++++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 8 +- source3/librpc/gen_ndr/srv_wbint.c | 93 +++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 23 ++++ source3/librpc/idl/wbint.idl | 15 +++ source3/winbindd/wb_queryuser.c | 121 +++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 27 ++++ source3/winbindd/winbindd_proto.h | 5 + 12 files changed, 721 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_queryuser.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index f7801d17a2..b3f54e092b 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1158,6 +1158,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_sid2gid.o \ winbindd/wb_uid2sid.o \ winbindd/wb_gid2sid.o \ + winbindd/wb_queryuser.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ winbindd/winbindd_sid_to_uid.o \ diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index 4176e94a3f..9fdca8ecba 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -1162,3 +1162,164 @@ NTSTATUS rpccli_wbint_Gid2Sid(struct rpc_pipe_client *cli, return r.out.result; } +struct rpccli_wbint_QueryUser_state { + struct wbint_QueryUser orig; + struct wbint_QueryUser tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_QueryUser_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_QueryUser_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct dom_sid *_sid /* [in] [ref] */, + struct wbint_userinfo *_info /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_QueryUser_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_QueryUser_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.sid = _sid; + + /* Out parameters */ + state->orig.out.info = _info; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_QueryUser, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_QueryUser_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_QUERYUSER, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_QueryUser_done, req); + return req; +} + +static void rpccli_wbint_QueryUser_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_QueryUser_state *state = tevent_req_data( + req, struct rpccli_wbint_QueryUser_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info = *state->tmp.out.info; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_QueryUser, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_QueryUser_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_QueryUser_state *state = tevent_req_data( + req, struct rpccli_wbint_QueryUser_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_QueryUser(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct dom_sid *sid /* [in] [ref] */, + struct wbint_userinfo *info /* [out] [ref] */) +{ + struct wbint_QueryUser r; + NTSTATUS status; + + /* In parameters */ + r.in.sid = sid; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_QueryUser, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_QUERYUSER, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_QueryUser, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *info = *r.out.info; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index 55fe22bd8f..ebceddea5f 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -102,4 +102,16 @@ NTSTATUS rpccli_wbint_Gid2Sid(struct rpc_pipe_client *cli, const char *dom_name /* [in] [unique,charset(UTF8)] */, uint64_t gid /* [in] */, struct dom_sid *sid /* [out] [ref] */); +struct tevent_req *rpccli_wbint_QueryUser_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct dom_sid *_sid /* [in] [ref] */, + struct wbint_userinfo *_info /* [out] [ref] */); +NTSTATUS rpccli_wbint_QueryUser_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_QueryUser(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct dom_sid *sid /* [in] [ref] */, + struct wbint_userinfo *info /* [out] [ref] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index f6e53eef96..2b773f3f45 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -4,6 +4,174 @@ #include "librpc/gen_ndr/ndr_wbint.h" #include "librpc/gen_ndr/ndr_lsa.h" +_PUBLIC_ enum ndr_err_code ndr_push_wbint_userinfo(struct ndr_push *ndr, int ndr_flags, const struct wbint_userinfo *r) +{ + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 8)); + NDR_CHECK(ndr_push_unique_ptr(ndr, r->acct_name)); + NDR_CHECK(ndr_push_unique_ptr(ndr, r->full_name)); + NDR_CHECK(ndr_push_unique_ptr(ndr, r->homedir)); + NDR_CHECK(ndr_push_unique_ptr(ndr, r->shell)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->primary_gid)); + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, &r->user_sid)); + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, &r->group_sid)); + } + if (ndr_flags & NDR_BUFFERS) { + if (r->acct_name) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->acct_name, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->acct_name, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->acct_name, ndr_charset_length(r->acct_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + if (r->full_name) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->full_name, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->full_name, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->full_name, ndr_charset_length(r->full_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + if (r->homedir) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->homedir, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->homedir, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->homedir, ndr_charset_length(r->homedir, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + if (r->shell) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->shell, CH_UTF8))); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->shell, CH_UTF8))); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->shell, ndr_charset_length(r->shell, CH_UTF8), sizeof(uint8_t), CH_UTF8)); + } + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_wbint_userinfo(struct ndr_pull *ndr, int ndr_flags, struct wbint_userinfo *r) +{ + uint32_t _ptr_acct_name; + TALLOC_CTX *_mem_save_acct_name_0; + uint32_t _ptr_full_name; + TALLOC_CTX *_mem_save_full_name_0; + uint32_t _ptr_homedir; + TALLOC_CTX *_mem_save_homedir_0; + uint32_t _ptr_shell; + TALLOC_CTX *_mem_save_shell_0; + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 8)); + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_acct_name)); + if (_ptr_acct_name) { + NDR_PULL_ALLOC(ndr, r->acct_name); + } else { + r->acct_name = NULL; + } + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_full_name)); + if (_ptr_full_name) { + NDR_PULL_ALLOC(ndr, r->full_name); + } else { + r->full_name = NULL; + } + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_homedir)); + if (_ptr_homedir) { + NDR_PULL_ALLOC(ndr, r->homedir); + } else { + r->homedir = NULL; + } + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_shell)); + if (_ptr_shell) { + NDR_PULL_ALLOC(ndr, r->shell); + } else { + r->shell = NULL; + } + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->primary_gid)); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, &r->user_sid)); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, &r->group_sid)); + } + if (ndr_flags & NDR_BUFFERS) { + if (r->acct_name) { + _mem_save_acct_name_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->acct_name, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->acct_name)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->acct_name)); + if (ndr_get_array_length(ndr, &r->acct_name) > ndr_get_array_size(ndr, &r->acct_name)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->acct_name), ndr_get_array_length(ndr, &r->acct_name)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->acct_name), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->acct_name, ndr_get_array_length(ndr, &r->acct_name), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_acct_name_0, 0); + } + if (r->full_name) { + _mem_save_full_name_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->full_name, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->full_name)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->full_name)); + if (ndr_get_array_length(ndr, &r->full_name) > ndr_get_array_size(ndr, &r->full_name)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->full_name), ndr_get_array_length(ndr, &r->full_name)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->full_name), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->full_name, ndr_get_array_length(ndr, &r->full_name), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_full_name_0, 0); + } + if (r->homedir) { + _mem_save_homedir_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->homedir, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->homedir)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->homedir)); + if (ndr_get_array_length(ndr, &r->homedir) > ndr_get_array_size(ndr, &r->homedir)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->homedir), ndr_get_array_length(ndr, &r->homedir)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->homedir), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->homedir, ndr_get_array_length(ndr, &r->homedir), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_homedir_0, 0); + } + if (r->shell) { + _mem_save_shell_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->shell, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->shell)); + NDR_CHECK(ndr_pull_array_length(ndr, &r->shell)); + if (ndr_get_array_length(ndr, &r->shell) > ndr_get_array_size(ndr, &r->shell)) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->shell), ndr_get_array_length(ndr, &r->shell)); + } + NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->shell), sizeof(uint8_t))); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->shell, ndr_get_array_length(ndr, &r->shell), sizeof(uint8_t), CH_UTF8)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_shell_0, 0); + } + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_userinfo(struct ndr_print *ndr, const char *name, const struct wbint_userinfo *r) +{ + ndr_print_struct(ndr, name, "wbint_userinfo"); + ndr->depth++; + ndr_print_ptr(ndr, "acct_name", r->acct_name); + ndr->depth++; + if (r->acct_name) { + ndr_print_string(ndr, "acct_name", r->acct_name); + } + ndr->depth--; + ndr_print_ptr(ndr, "full_name", r->full_name); + ndr->depth++; + if (r->full_name) { + ndr_print_string(ndr, "full_name", r->full_name); + } + ndr->depth--; + ndr_print_ptr(ndr, "homedir", r->homedir); + ndr->depth++; + if (r->homedir) { + ndr_print_string(ndr, "homedir", r->homedir); + } + ndr->depth--; + ndr_print_ptr(ndr, "shell", r->shell); + ndr->depth++; + if (r->shell) { + ndr_print_string(ndr, "shell", r->shell); + } + ndr->depth--; + ndr_print_hyper(ndr, "primary_gid", r->primary_gid); + ndr_print_dom_sid(ndr, "user_sid", &r->user_sid); + ndr_print_dom_sid(ndr, "group_sid", &r->group_sid); + ndr->depth--; +} + static enum ndr_err_code ndr_push_wbint_Ping(struct ndr_push *ndr, int flags, const struct wbint_Ping *r) { if (flags & NDR_IN) { @@ -770,6 +938,83 @@ _PUBLIC_ void ndr_print_wbint_Gid2Sid(struct ndr_print *ndr, const char *name, i ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_QueryUser(struct ndr_push *ndr, int flags, const struct wbint_QueryUser *r) +{ + if (flags & NDR_IN) { + if (r->in.sid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + } + if (flags & NDR_OUT) { + if (r->out.info == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_wbint_userinfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info)); + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_QueryUser(struct ndr_pull *ndr, int flags, struct wbint_QueryUser *r) +{ + TALLOC_CTX *_mem_save_sid_0; + TALLOC_CTX *_mem_save_info_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->in.sid); + } + _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_PULL_ALLOC(ndr, r->out.info); + ZERO_STRUCTP(r->out.info); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.info); + } + _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_wbint_userinfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_QueryUser(struct ndr_print *ndr, const char *name, int flags, const struct wbint_QueryUser *r) +{ + ndr_print_struct(ndr, name, "wbint_QueryUser"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_QueryUser"); + ndr->depth++; + ndr_print_ptr(ndr, "sid", r->in.sid); + ndr->depth++; + ndr_print_dom_sid(ndr, "sid", r->in.sid); + ndr->depth--; + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_QueryUser"); + ndr->depth++; + ndr_print_ptr(ndr, "info", r->out.info); + ndr->depth++; + ndr_print_wbint_userinfo(ndr, "info", r->out.info); + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -827,6 +1072,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_Gid2Sid, false, }, + { + "wbint_QueryUser", + sizeof(struct wbint_QueryUser), + (ndr_push_flags_fn_t) ndr_push_wbint_QueryUser, + (ndr_pull_flags_fn_t) ndr_pull_wbint_QueryUser, + (ndr_print_function_t) ndr_print_wbint_QueryUser, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -856,7 +1109,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 7, + .num_calls = 8, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index d8843a3c0c..5db488e69c 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -25,7 +25,12 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_GID2SID (0x06) -#define NDR_WBINT_CALL_COUNT (7) +#define NDR_WBINT_QUERYUSER (0x07) + +#define NDR_WBINT_CALL_COUNT (8) +enum ndr_err_code ndr_push_wbint_userinfo(struct ndr_push *ndr, int ndr_flags, const struct wbint_userinfo *r); +enum ndr_err_code ndr_pull_wbint_userinfo(struct ndr_pull *ndr, int ndr_flags, struct wbint_userinfo *r); +void ndr_print_wbint_userinfo(struct ndr_print *ndr, const char *name, const struct wbint_userinfo *r); void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r); void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupName *r); @@ -33,4 +38,5 @@ void ndr_print_wbint_Sid2Uid(struct ndr_print *ndr, const char *name, int flags, void ndr_print_wbint_Sid2Gid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Sid2Gid *r); void ndr_print_wbint_Uid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Uid2Sid *r); void ndr_print_wbint_Gid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Gid2Sid *r); +void ndr_print_wbint_QueryUser(struct ndr_print *ndr, const char *name, int flags, const struct wbint_QueryUser *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index a04aa8245f..121d3fa79d 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -584,6 +584,86 @@ static bool api_wbint_Gid2Sid(pipes_struct *p) return true; } +static bool api_wbint_QueryUser(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_QueryUser *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_QUERYUSER]; + + r = talloc(talloc_tos(), struct wbint_QueryUser); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_QueryUser, r); + } + + ZERO_STRUCT(r->out); + r->out.info = talloc_zero(r, struct wbint_userinfo); + if (r->out.info == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_QueryUser(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_QueryUser, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = @@ -595,6 +675,7 @@ static struct api_struct api_wbint_cmds[] = {"WBINT_SID2GID", NDR_WBINT_SID2GID, api_wbint_Sid2Gid}, {"WBINT_UID2SID", NDR_WBINT_UID2SID, api_wbint_Uid2Sid}, {"WBINT_GID2SID", NDR_WBINT_GID2SID, api_wbint_Gid2Sid}, + {"WBINT_QUERYUSER", NDR_WBINT_QUERYUSER, api_wbint_QueryUser}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -710,6 +791,18 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_QUERYUSER: { + struct wbint_QueryUser *r = (struct wbint_QueryUser *)_r; + ZERO_STRUCT(r->out); + r->out.info = talloc_zero(mem_ctx, struct wbint_userinfo); + if (r->out.info == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_QueryUser(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index 9311e6b641..ddefa6acce 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -8,6 +8,7 @@ NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r); +NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); @@ -17,5 +18,6 @@ NTSTATUS _wbint_Sid2Uid(pipes_struct *p, struct wbint_Sid2Uid *r); NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r); +NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index d6f344e5c9..eb3dd0cd33 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -8,6 +8,16 @@ #ifndef _HEADER_wbint #define _HEADER_wbint +struct wbint_userinfo { + const char *acct_name;/* [unique,charset(UTF8)] */ + const char *full_name;/* [unique,charset(UTF8)] */ + const char *homedir;/* [unique,charset(UTF8)] */ + const char *shell;/* [unique,charset(UTF8)] */ + uint64_t primary_gid; + struct dom_sid user_sid; + struct dom_sid group_sid; +}/* [public] */; + struct wbint_Ping { struct { @@ -107,4 +117,17 @@ struct wbint_Gid2Sid { }; + +struct wbint_QueryUser { + struct { + struct dom_sid *sid;/* [ref] */ + } in; + + struct { + struct wbint_userinfo *info;/* [ref] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index 93627fbe07..15c4e1f302 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -53,4 +53,19 @@ interface wbint [in] hyper gid, [out] dom_sid *sid ); + + typedef [public] struct { + [string,charset(UTF8)] char *acct_name; + [string,charset(UTF8)] char *full_name; + [string,charset(UTF8)] char *homedir; + [string,charset(UTF8)] char *shell; + hyper primary_gid; + dom_sid user_sid; + dom_sid group_sid; + } wbint_userinfo; + + NTSTATUS wbint_QueryUser( + [in] dom_sid *sid, + [out] wbint_userinfo *info + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_queryuser.c b/source3/winbindd/wb_queryuser.c new file mode 100644 index 0000000000..27b8d29951 --- /dev/null +++ b/source3/winbindd/wb_queryuser.c @@ -0,0 +1,121 @@ +/* + Unix SMB/CIFS implementation. + async queryuser + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_queryuser_state { + struct dom_sid sid; + struct wbint_userinfo info; +}; + +static void wb_queryuser_done(struct tevent_req *subreq); + +struct tevent_req *wb_queryuser_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *user_sid) +{ + struct tevent_req *req, *subreq; + struct wb_queryuser_state *state; + struct winbindd_domain *domain; + struct winbind_userinfo info; + NTSTATUS status; + + req = tevent_req_create(mem_ctx, &state, struct wb_queryuser_state); + if (req == NULL) { + return NULL; + } + sid_copy(&state->sid, user_sid); + + domain = find_domain_from_sid_noinit(user_sid); + if (domain == NULL) { + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return tevent_req_post(req, ev); + } + + status = wcache_query_user(domain, state, &state->sid, &info); + if (NT_STATUS_IS_OK(status)) { + state->info.acct_name = info.acct_name; + state->info.full_name = info.full_name; + state->info.homedir = info.homedir; + state->info.shell = info.shell; + state->info.primary_gid = info.primary_gid; + sid_copy(&state->info.user_sid, &info.user_sid); + sid_copy(&state->info.group_sid, &info.group_sid); + tevent_req_done(req); + return tevent_req_post(req, ev); + } + + subreq = rpccli_wbint_QueryUser_send(state, ev, domain->child.rpccli, + &state->sid, &state->info); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_queryuser_done, req); + return req; +} + +static void wb_queryuser_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_queryuser_state *state = tevent_req_data( + req, struct wb_queryuser_state); + NTSTATUS status, result; + + status = rpccli_wbint_QueryUser_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!NT_STATUS_IS_OK(result)) { + tevent_req_nterror(req, result); + return; + } + tevent_req_done(req); +} + +NTSTATUS wb_queryuser_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + struct winbind_userinfo **pinfo) +{ + struct wb_queryuser_state *state = tevent_req_data( + req, struct wb_queryuser_state); + struct winbind_userinfo *info; + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + + info = talloc(mem_ctx, struct winbind_userinfo); + if (info == NULL) { + return NT_STATUS_NO_MEMORY; + } + info->acct_name = talloc_move(info, &state->info.acct_name); + info->full_name = talloc_move(info, &state->info.full_name); + info->homedir = talloc_move(info, &state->info.homedir); + info->shell = talloc_move(info, &state->info.shell); + info->primary_gid = state->info.primary_gid; + sid_copy(&info->user_sid, &state->info.user_sid); + sid_copy(&info->group_sid, &state->info.group_sid); + *pinfo = info; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 35fecbd08e..202cca4434 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -117,3 +117,30 @@ NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r) } return NT_STATUS_OK; } + +NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r) +{ + struct winbindd_domain *domain = wb_child_domain(); + WINBIND_USERINFO uinfo; + NTSTATUS status; + + if (domain == NULL) { + return NT_STATUS_REQUEST_NOT_ACCEPTED; + } + + status = domain->methods->query_user(domain, p->mem_ctx, r->in.sid, + &uinfo); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + r->out.info->acct_name = uinfo.acct_name; + r->out.info->full_name = uinfo.full_name; + r->out.info->homedir = uinfo.homedir; + r->out.info->shell = uinfo.shell; + r->out.info->primary_gid = uinfo.primary_gid; + sid_copy(&r->out.info->user_sid, &uinfo.user_sid); + sid_copy(&r->out.info->group_sid, &uinfo.group_sid); + + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 1f0d5b5d5b..5f93391363 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -685,5 +685,10 @@ struct tevent_req *winbindd_gid_to_sid_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_gid_to_sid_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *wb_queryuser_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *user_sid); +NTSTATUS wb_queryuser_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + struct winbind_userinfo **pinfo); #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 0418d38bc80dc8680834875629a3df8e1734b885 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 15:31:49 -0400 Subject: s3:winbind: Make fillup_pw_field publically available --- source3/winbindd/winbindd_proto.h | 8 ++++++++ source3/winbindd/winbindd_user.c | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 5f93391363..bfcf315231 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -508,6 +508,14 @@ enum winbindd_result winbindd_dual_allocate_gid(struct winbindd_domain *domain, /* The following definitions come from winbindd/winbindd_user.c */ +bool fillup_pw_field(const char *lp_template, + const char *username, + const char *domname, + uid_t uid, + gid_t gid, + const char *in, + fstring out); + enum winbindd_result winbindd_dual_userinfo(struct winbindd_domain *domain, struct winbindd_cli_state *state); void winbindd_getpwnam(struct winbindd_cli_state *state); diff --git a/source3/winbindd/winbindd_user.c b/source3/winbindd/winbindd_user.c index c445ef0bdc..884a396142 100644 --- a/source3/winbindd/winbindd_user.c +++ b/source3/winbindd/winbindd_user.c @@ -27,7 +27,7 @@ #undef DBGC_CLASS #define DBGC_CLASS DBGC_WINBIND -static bool fillup_pw_field(const char *lp_template, +bool fillup_pw_field(const char *lp_template, const char *username, const char *domname, uid_t uid, -- cgit From afc82444fd367e8b8541e4a41a86966a288ed2ef Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 15:32:11 -0400 Subject: s3:winbind: Add async wb_getpwsid --- source3/Makefile.in | 1 + source3/winbindd/wb_getpwsid.c | 223 ++++++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_proto.h | 6 + 3 files changed, 230 insertions(+) create mode 100644 source3/winbindd/wb_getpwsid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index b3f54e092b..ec47eccd4b 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1159,6 +1159,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_uid2sid.o \ winbindd/wb_gid2sid.o \ winbindd/wb_queryuser.o \ + winbindd/wb_getpwsid.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ winbindd/winbindd_sid_to_uid.o \ diff --git a/source3/winbindd/wb_getpwsid.c b/source3/winbindd/wb_getpwsid.c new file mode 100644 index 0000000000..a823ba3953 --- /dev/null +++ b/source3/winbindd/wb_getpwsid.c @@ -0,0 +1,223 @@ +/* + Unix SMB/CIFS implementation. + async getpwsid + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_getpwsid_state { + struct winbindd_domain *user_domain; + struct tevent_context *ev; + struct dom_sid sid; + struct winbind_userinfo *userinfo; + struct winbindd_pw *pw; +}; + +static void wb_getpwsid_queryuser_done(struct tevent_req *subreq); +static void wb_getpwsid_lookupsid_done(struct tevent_req *subreq); +static void wb_getpwsid_sid2uid_done(struct tevent_req *subreq); +static void wb_getpwsid_sid2gid_done(struct tevent_req *subreq); + +struct tevent_req *wb_getpwsid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *user_sid, + struct winbindd_pw *pw) +{ + struct tevent_req *req, *subreq; + struct wb_getpwsid_state *state; + + req = tevent_req_create(mem_ctx, &state, struct wb_getpwsid_state); + if (req == NULL) { + return NULL; + } + sid_copy(&state->sid, user_sid); + state->ev = ev; + state->pw = pw; + + state->user_domain = find_domain_from_sid_noinit(user_sid); + if (state->user_domain == NULL) { + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return tevent_req_post(req, ev); + } + + subreq = wb_queryuser_send(state, ev, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_getpwsid_queryuser_done, req); + return req; +} + +static void wb_getpwsid_queryuser_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_getpwsid_state *state = tevent_req_data( + req, struct wb_getpwsid_state); + NTSTATUS status; + + status = wb_queryuser_recv(subreq, state, &state->userinfo); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + if ((state->userinfo->acct_name != NULL) + && (state->userinfo->acct_name[0] != '\0')) { + /* + * QueryUser got us a name, let's got directly to the + * sid2uid step + */ + subreq = wb_sid2uid_send(state, state->ev, + &state->userinfo->user_sid); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_getpwsid_sid2uid_done, req); + return; + } + + /* + * QueryUser didn't get us a name, do it via LSA. + */ + subreq = wb_lookupsid_send(state, state->ev, + &state->userinfo->user_sid); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_getpwsid_lookupsid_done, req); +} + +static void wb_getpwsid_lookupsid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_getpwsid_state *state = tevent_req_data( + req, struct wb_getpwsid_state); + NTSTATUS status; + enum lsa_SidType type; + const char *domain; + + status = wb_lookupsid_recv(subreq, state->userinfo, &type, &domain, + &state->userinfo->acct_name); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + subreq = wb_sid2uid_send(state, state->ev, &state->userinfo->user_sid); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_getpwsid_sid2uid_done, req); +} + +static void wb_getpwsid_sid2uid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_getpwsid_state *state = tevent_req_data( + req, struct wb_getpwsid_state); + NTSTATUS status; + + status = wb_sid2uid_recv(subreq, &state->pw->pw_uid); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + subreq = wb_sid2gid_send(state, state->ev, + &state->userinfo->group_sid); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_getpwsid_sid2gid_done, req); +} + +static void wb_getpwsid_sid2gid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_getpwsid_state *state = tevent_req_data( + req, struct wb_getpwsid_state); + NTSTATUS status; + char *username; + char *mapped_name; + + status = wb_sid2gid_recv(subreq, &state->pw->pw_gid); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + username = talloc_strdup_lower(state, state->userinfo->acct_name); + if (tevent_req_nomem(username, req)) { + return; + } + + status = normalize_name_map(state, state->user_domain, username, + &mapped_name); + + if (NT_STATUS_IS_OK(status) + || NT_STATUS_EQUAL(status, NT_STATUS_FILE_RENAMED)) { + /* + * normalize_name_map did something + */ + fstrcpy(state->pw->pw_name, mapped_name); + TALLOC_FREE(mapped_name); + } else { + fill_domain_username(state->pw->pw_name, + state->user_domain->name, + username, True); + } + fstrcpy(state->pw->pw_passwd, "*"); + fstrcpy(state->pw->pw_gecos, state->userinfo->full_name); + + if (!fillup_pw_field(lp_template_homedir(), state->pw->pw_name, + state->user_domain->name, state->pw->pw_uid, + state->pw->pw_gid, state->userinfo->homedir, + state->pw->pw_dir)) { + DEBUG(5, ("Could not compose homedir\n")); + tevent_req_nterror(req, NT_STATUS_NO_MEMORY); + return; + } + + if (!fillup_pw_field(lp_template_homedir(), state->pw->pw_name, + state->user_domain->name, state->pw->pw_uid, + state->pw->pw_gid, state->userinfo->homedir, + state->pw->pw_shell)) { + DEBUG(5, ("Could not compose shell\n")); + tevent_req_nterror(req, NT_STATUS_NO_MEMORY); + return; + } + + tevent_req_done(req); +} + +NTSTATUS wb_getpwsid_recv(struct tevent_req *req) +{ + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index bfcf315231..ef977bb3b0 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -699,4 +699,10 @@ struct tevent_req *wb_queryuser_send(TALLOC_CTX *mem_ctx, NTSTATUS wb_queryuser_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, struct winbind_userinfo **pinfo); +struct tevent_req *wb_getpwsid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *user_sid, + struct winbindd_pw *pw); +NTSTATUS wb_getpwsid_recv(struct tevent_req *req); + #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 9dc401a20ec608d4d8ae25fb4e81c462e9ced415 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 15:35:24 -0400 Subject: s3:winbind: Convert WINBINDD_GETPWSID to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_getpwsid.c | 92 ++++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_proto.h | 6 +++ source3/winbindd/winbindd_user.c | 20 -------- 5 files changed, 101 insertions(+), 21 deletions(-) create mode 100644 source3/winbindd/winbindd_getpwsid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index ec47eccd4b..f5fba5e38b 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1166,6 +1166,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_sid_to_gid.o \ winbindd/winbindd_uid_to_sid.o \ winbindd/winbindd_gid_to_sid.o \ + winbindd/winbindd_getpwsid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 4425517385..77e073c7c3 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -429,7 +429,6 @@ static struct winbindd_dispatch_table { { WINBINDD_GETPWNAM, winbindd_getpwnam, "GETPWNAM" }, { WINBINDD_GETPWUID, winbindd_getpwuid, "GETPWUID" }, - { WINBINDD_GETPWSID, winbindd_getpwsid, "GETPWSID" }, { WINBINDD_SETPWENT, winbindd_setpwent, "SETPWENT" }, { WINBINDD_ENDPWENT, winbindd_endpwent, "ENDPWENT" }, @@ -531,6 +530,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_uid_to_sid_send, winbindd_uid_to_sid_recv }, { WINBINDD_GID_TO_SID, "GID_TO_SID", winbindd_gid_to_sid_send, winbindd_gid_to_sid_recv }, + { WINBINDD_GETPWSID, "GETPWSID", + winbindd_getpwsid_send, winbindd_getpwsid_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_getpwsid.c b/source3/winbindd/winbindd_getpwsid.c new file mode 100644 index 0000000000..135cbf6f61 --- /dev/null +++ b/source3/winbindd/winbindd_getpwsid.c @@ -0,0 +1,92 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GETPWSID + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_getpwsid_state { + struct dom_sid sid; + struct winbindd_pw pw; +}; + +static void winbindd_getpwsid_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_getpwsid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_getpwsid_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_getpwsid_state); + if (req == NULL) { + return NULL; + } + + /* Ensure null termination */ + request->data.sid[sizeof(request->data.sid)-1]='\0'; + + DEBUG(3, ("getpwsid %s\n", request->data.sid)); + + if (!string_to_sid(&state->sid, request->data.sid)) { + DEBUG(1, ("Could not get convert sid %s from string\n", + request->data.sid)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev); + } + + subreq = wb_getpwsid_send(state, ev, &state->sid, &state->pw); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_getpwsid_done, req); + return req; +} + +static void winbindd_getpwsid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + NTSTATUS status; + + status = wb_getpwsid_recv(subreq); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_getpwsid_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_getpwsid_state *state = tevent_req_data( + req, struct winbindd_getpwsid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + response->data.pw = state->pw; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index ef977bb3b0..6dcfdcfbbd 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -705,4 +705,10 @@ struct tevent_req *wb_getpwsid_send(TALLOC_CTX *mem_ctx, struct winbindd_pw *pw); NTSTATUS wb_getpwsid_recv(struct tevent_req *req); +struct tevent_req *winbindd_getpwsid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_getpwsid_recv(struct tevent_req *req, + struct winbindd_response *response); + #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_user.c b/source3/winbindd/winbindd_user.c index 884a396142..b1591475ac 100644 --- a/source3/winbindd/winbindd_user.c +++ b/source3/winbindd/winbindd_user.c @@ -555,26 +555,6 @@ void winbindd_getpwuid(struct winbindd_cli_state *state) winbindd_uid2sid_async(state->mem_ctx, uid, getpwuid_recv, state); } -/* Return a password structure given a sid */ -void winbindd_getpwsid(struct winbindd_cli_state *state) -{ - DOM_SID sid; - - /* Ensure null termination */ - state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - - DEBUG(3, ("[%5lu]: getpwsid %s\n", (unsigned long)state->pid, - state->request->data.sid)); - - if (!string_to_sid(&sid, state->request->data.sid)) { - DEBUG(5, ("%s not a SID\n", state->request->data.sid)); - request_error(state); - return; - } - - getpwsid_queryuser(state, &sid); -} - /* * set/get/endpwent functions */ -- cgit From 5bbb7a0d143b34b6a2a2c4adb1114120cddd74bf Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 15:37:54 -0400 Subject: s3:winbind: Convert WINBINDD_GETPWNAM to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_getpwnam.c | 142 +++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_proto.h | 7 ++ source3/winbindd/winbindd_user.c | 97 ------------------------ 5 files changed, 152 insertions(+), 98 deletions(-) create mode 100644 source3/winbindd/winbindd_getpwnam.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index f5fba5e38b..d7e6caa1d3 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1167,6 +1167,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_uid_to_sid.o \ winbindd/winbindd_gid_to_sid.o \ winbindd/winbindd_getpwsid.o \ + winbindd/winbindd_getpwnam.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 77e073c7c3..3b8358be0c 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -427,7 +427,6 @@ static struct winbindd_dispatch_table { /* User functions */ - { WINBINDD_GETPWNAM, winbindd_getpwnam, "GETPWNAM" }, { WINBINDD_GETPWUID, winbindd_getpwuid, "GETPWUID" }, { WINBINDD_SETPWENT, winbindd_setpwent, "SETPWENT" }, @@ -532,6 +531,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_gid_to_sid_send, winbindd_gid_to_sid_recv }, { WINBINDD_GETPWSID, "GETPWSID", winbindd_getpwsid_send, winbindd_getpwsid_recv }, + { WINBINDD_GETPWNAM, "GETPWNAM", + winbindd_getpwnam_send, winbindd_getpwnam_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_getpwnam.c b/source3/winbindd/winbindd_getpwnam.c new file mode 100644 index 0000000000..80b618c4aa --- /dev/null +++ b/source3/winbindd/winbindd_getpwnam.c @@ -0,0 +1,142 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GETPWNAM + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_getpwnam_state { + struct tevent_context *ev; + fstring domname; + fstring username; + struct dom_sid sid; + enum lsa_SidType type; + struct winbindd_pw pw; +}; + +static void winbindd_getpwnam_lookupname_done(struct tevent_req *subreq); +static void winbindd_getpwnam_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_getpwnam_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_getpwnam_state *state; + char *domuser, *mapped_user; + NTSTATUS status; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_getpwnam_state); + if (req == NULL) { + return NULL; + } + state->ev = ev; + + /* Ensure null termination */ + request->data.username[sizeof(request->data.username)-1]='\0'; + + DEBUG(3, ("getpwnam %s\n", request->data.username)); + + domuser = request->data.username; + + status = normalize_name_unmap(state, domuser, &mapped_user); + + if (NT_STATUS_IS_OK(status) + || NT_STATUS_EQUAL(status, NT_STATUS_FILE_RENAMED)) { + /* normalize_name_unmapped did something */ + domuser = mapped_user; + } + + if (!parse_domain_user(domuser, state->domname, state->username)) { + DEBUG(5, ("Could not parse domain user: %s\n", domuser)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev); + } + + if (lp_winbind_trusted_domains_only() + && strequal(state->domname, lp_workgroup())) { + DEBUG(7,("winbindd_getpwnam: My domain -- " + "rejecting getpwnam() for %s\\%s.\n", + state->domname, state->username)); + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return tevent_req_post(req, ev); + } + + subreq = wb_lookupname_send(state, ev, state->domname, state->username, + LOOKUP_NAME_NO_NSS); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_getpwnam_lookupname_done, + req); + return req; +} + +static void winbindd_getpwnam_lookupname_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_getpwnam_state *state = tevent_req_data( + req, struct winbindd_getpwnam_state); + NTSTATUS status; + + status = wb_lookupname_recv(subreq, &state->sid, &state->type); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + subreq = wb_getpwsid_send(state, state->ev, &state->sid, &state->pw); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, winbindd_getpwnam_done, req); +} + +static void winbindd_getpwnam_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + NTSTATUS status; + + status = wb_getpwsid_recv(subreq); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_getpwnam_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_getpwnam_state *state = tevent_req_data( + req, struct winbindd_getpwnam_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + response->data.pw = state->pw; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 6dcfdcfbbd..80a4f46b67 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -711,4 +711,11 @@ struct tevent_req *winbindd_getpwsid_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_getpwsid_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *winbindd_getpwnam_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_getpwnam_recv(struct tevent_req *req, + struct winbindd_response *response); + + #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_user.c b/source3/winbindd/winbindd_user.c index b1591475ac..4778289aa8 100644 --- a/source3/winbindd/winbindd_user.c +++ b/source3/winbindd/winbindd_user.c @@ -417,103 +417,6 @@ static void getpwsid_sid2gid_recv(void *private_data, bool success, gid_t gid) /* Return a password structure from a username. */ -static void getpwnam_name2sid_recv(void *private_data, bool success, - const DOM_SID *sid, enum lsa_SidType type); - -void winbindd_getpwnam(struct winbindd_cli_state *state) -{ - struct winbindd_domain *domain; - fstring domname, username; - char *mapped_user = NULL; - char *domuser; - NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; - - domuser = state->request->data.username; - - /* Ensure null termination (it's an fstring) */ - domuser[sizeof(state->request->data.username)-1] = '\0'; - - DEBUG(3, ("[%5lu]: getpwnam %s\n", - (unsigned long)state->pid, - domuser)); - - nt_status = normalize_name_unmap(state->mem_ctx, domuser, - &mapped_user); - - /* If we could not convert from an aliased name or a - normalized name, then just use the original name */ - - if (!NT_STATUS_IS_OK(nt_status) && - !NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) - { - mapped_user = domuser; - } - - if (!parse_domain_user(mapped_user, domname, username)) { - DEBUG(5, ("Could not parse domain user: %s\n", domuser)); - request_error(state); - return; - } - - /* Get info for the domain */ - - domain = find_domain_from_name_noinit(domname); - - if (domain == NULL) { - DEBUG(7, ("could not find domain entry for domain %s. " - "Using primary domain\n", domname)); - domain = find_our_domain(); - if (domain == NULL) { - DEBUG(0, ("Cannot find my primary domain " - "structure!\n")); - request_error(state); - return; - } - } - - if (strequal(domname, lp_workgroup()) && - lp_winbind_trusted_domains_only() ) { - DEBUG(7,("winbindd_getpwnam: My domain -- " - "rejecting getpwnam() for %s\\%s.\n", - domname, username)); - request_error(state); - return; - } - - /* Get rid and name type from name. The following costs 1 packet */ - - winbindd_lookupname_async(state->mem_ctx, domname, username, - getpwnam_name2sid_recv, WINBINDD_GETPWNAM, - state); -} - -static void getpwnam_name2sid_recv(void *private_data, bool success, - const DOM_SID *sid, enum lsa_SidType type) -{ - struct winbindd_cli_state *state = - (struct winbindd_cli_state *)private_data; - fstring domname, username; - char *domuser = state->request->data.username; - - if (!success) { - DEBUG(5, ("Could not lookup name for user %s\n", domuser)); - request_error(state); - return; - } - - if ((type != SID_NAME_USER) && (type != SID_NAME_COMPUTER)) { - DEBUG(5, ("%s is not a user\n", domuser)); - request_error(state); - return; - } - - if (parse_domain_user(domuser, domname, username)) { - check_domain_trusted(domname, sid); - } - - getpwsid_queryuser(state, sid); -} - static void getpwuid_recv(void *private_data, bool success, const char *sid) { struct winbindd_cli_state *state = -- cgit From bd9d7f75e352985f1b0e0785f0ba94dea19d2601 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 15:41:40 -0400 Subject: s3:winbind: Convert WINBINDD_GETPWUID to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 4 +- source3/winbindd/winbindd_getpwuid.c | 108 ++++++++++++++ source3/winbindd/winbindd_proto.h | 6 + source3/winbindd/winbindd_user.c | 263 ----------------------------------- 5 files changed, 117 insertions(+), 265 deletions(-) create mode 100644 source3/winbindd/winbindd_getpwuid.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index d7e6caa1d3..1b9b205bee 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1168,6 +1168,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_gid_to_sid.o \ winbindd/winbindd_getpwsid.o \ winbindd/winbindd_getpwnam.o \ + winbindd/winbindd_getpwuid.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 3b8358be0c..0e13516a71 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -427,8 +427,6 @@ static struct winbindd_dispatch_table { /* User functions */ - { WINBINDD_GETPWUID, winbindd_getpwuid, "GETPWUID" }, - { WINBINDD_SETPWENT, winbindd_setpwent, "SETPWENT" }, { WINBINDD_ENDPWENT, winbindd_endpwent, "ENDPWENT" }, { WINBINDD_GETPWENT, winbindd_getpwent, "GETPWENT" }, @@ -533,6 +531,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_getpwsid_send, winbindd_getpwsid_recv }, { WINBINDD_GETPWNAM, "GETPWNAM", winbindd_getpwnam_send, winbindd_getpwnam_recv }, + { WINBINDD_GETPWUID, "GETPWUID", + winbindd_getpwuid_send, winbindd_getpwuid_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_getpwuid.c b/source3/winbindd/winbindd_getpwuid.c new file mode 100644 index 0000000000..0c667cfccc --- /dev/null +++ b/source3/winbindd/winbindd_getpwuid.c @@ -0,0 +1,108 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GETPWUID + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_getpwuid_state { + struct tevent_context *ev; + struct dom_sid sid; + struct winbindd_pw pw; +}; + +static void winbindd_getpwuid_uid2sid_done(struct tevent_req *subreq); +static void winbindd_getpwuid_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_getpwuid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_getpwuid_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_getpwuid_state); + if (req == NULL) { + return NULL; + } + state->ev = ev; + + DEBUG(3, ("getpwuid %d\n", (int)request->data.uid)); + + subreq = wb_uid2sid_send(state, ev, request->data.uid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_getpwuid_uid2sid_done, + req); + return req; +} + +static void winbindd_getpwuid_uid2sid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_getpwuid_state *state = tevent_req_data( + req, struct winbindd_getpwuid_state); + NTSTATUS status; + + status = wb_uid2sid_recv(subreq, &state->sid); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + subreq = wb_getpwsid_send(state, state->ev, &state->sid, &state->pw); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, winbindd_getpwuid_done, req); +} + +static void winbindd_getpwuid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + NTSTATUS status; + + status = wb_getpwsid_recv(subreq); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_getpwuid_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_getpwuid_state *state = tevent_req_data( + req, struct winbindd_getpwuid_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + response->data.pw = state->pw; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 80a4f46b67..c155589954 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -717,5 +717,11 @@ struct tevent_req *winbindd_getpwnam_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_getpwnam_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *winbindd_getpwuid_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_getpwuid_recv(struct tevent_req *req, + struct winbindd_response *response); + #endif /* _WINBINDD_PROTO_H_ */ diff --git a/source3/winbindd/winbindd_user.c b/source3/winbindd/winbindd_user.c index 4778289aa8..240b0f524f 100644 --- a/source3/winbindd/winbindd_user.c +++ b/source3/winbindd/winbindd_user.c @@ -195,269 +195,6 @@ enum winbindd_result winbindd_dual_userinfo(struct winbindd_domain *domain, return WINBINDD_OK; } -struct getpwsid_state { - struct winbindd_cli_state *state; - struct winbindd_domain *domain; - char *username; - char *fullname; - char *homedir; - char *shell; - DOM_SID user_sid; - uid_t uid; - DOM_SID group_sid; - gid_t gid; - bool username_mapped; -}; - -static void getpwsid_queryuser_recv(void *private_data, bool success, - const char *acct_name, - const char *full_name, - const char *homedir, - const char *shell, - gid_t gid, - uint32 group_rid); -static void getpwsid_sid2uid_recv(void *private_data, bool success, uid_t uid); -static void getpwsid_sid2gid_recv(void *private_data, bool success, gid_t gid); - -static void getpwsid_queryuser(struct winbindd_cli_state *state, - const DOM_SID *sid) -{ - struct getpwsid_state *s; - - s = TALLOC_ZERO_P(state->mem_ctx, struct getpwsid_state); - if (s == NULL) { - DEBUG(0, ("talloc failed\n")); - goto error; - } - - s->state = state; - s->domain = find_domain_from_sid_noinit(sid); - if (s->domain == NULL) { - DEBUG(3, ("Could not find domain for sid %s\n", - sid_string_dbg(sid))); - goto error; - } - - sid_copy(&s->user_sid, sid); - - query_user_async(s->state->mem_ctx, s->domain, sid, - getpwsid_queryuser_recv, s); - return; - - error: - request_error(state); -} - -static void getpwsid_queryuser_recv(void *private_data, bool success, - const char *acct_name, - const char *full_name, - const char *homedir, - const char *shell, - gid_t gid, - uint32 group_rid) -{ - fstring username; - struct getpwsid_state *s = - talloc_get_type_abort(private_data, struct getpwsid_state); - char *mapped_name; - NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; - - if (!success) { - DEBUG(5, ("Could not query domain %s SID %s\n", - s->domain->name, sid_string_dbg(&s->user_sid))); - request_error(s->state); - return; - } - - if ( acct_name && *acct_name ) { - fstrcpy( username, acct_name ); - } else { - char *domain_name = NULL; - enum lsa_SidType type; - char *user_name = NULL; - struct winbindd_domain *domain = NULL; - - domain = find_lookup_domain_from_sid(&s->user_sid); - if (domain == NULL) { - DEBUG(5, ("find_lookup_domain_from_sid(%s) failed\n", - sid_string_dbg(&s->user_sid))); - request_error(s->state); - return; - } - winbindd_lookup_name_by_sid(s->state->mem_ctx, domain, - &s->user_sid, &domain_name, - &user_name, &type ); - - /* If this still fails we are done. Just error out */ - if ( !user_name ) { - DEBUG(5,("Could not obtain a name for SID %s\n", - sid_string_dbg(&s->user_sid))); - request_error(s->state); - return; - } - - fstrcpy( username, user_name ); - } - - strlower_m( username ); - s->username = talloc_strdup(s->state->mem_ctx, username); - - nt_status = normalize_name_map(s->state->mem_ctx, s->domain, - s->username, &mapped_name); - - /* Basic removal of whitespace */ - if (NT_STATUS_IS_OK(nt_status)) { - s->username = mapped_name; - s->username_mapped = false; - } - /* Complete name replacement */ - else if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) { - s->username = mapped_name; - s->username_mapped = true; - } - /* No change at all */ - else { - s->username_mapped = false; - } - - s->fullname = talloc_strdup(s->state->mem_ctx, full_name); - s->homedir = talloc_strdup(s->state->mem_ctx, homedir); - s->shell = talloc_strdup(s->state->mem_ctx, shell); - s->gid = gid; - sid_copy(&s->group_sid, &s->domain->sid); - sid_append_rid(&s->group_sid, group_rid); - - winbindd_sid2uid_async(s->state->mem_ctx, &s->user_sid, - getpwsid_sid2uid_recv, s); -} - -static void getpwsid_sid2uid_recv(void *private_data, bool success, uid_t uid) -{ - struct getpwsid_state *s = - talloc_get_type_abort(private_data, struct getpwsid_state); - - if (!success) { - DEBUG(5, ("Could not query uid for user %s\\%s\n", - s->domain->name, s->username)); - request_error(s->state); - return; - } - - s->uid = uid; - winbindd_sid2gid_async(s->state->mem_ctx, &s->group_sid, - getpwsid_sid2gid_recv, s); -} - -static void getpwsid_sid2gid_recv(void *private_data, bool success, gid_t gid) -{ - struct getpwsid_state *s = - talloc_get_type_abort(private_data, struct getpwsid_state); - struct winbindd_pw *pw; - fstring output_username; - - /* allow the nss backend to override the primary group ID. - If the gid has already been set, then keep it. - This makes me feel dirty. If the nss backend already - gave us a gid, we don't really care whether the sid2gid() - call worked or not. --jerry */ - - if ( s->gid == (gid_t)-1 ) { - - if (!success) { - DEBUG(5, ("Could not query gid for user %s\\%s\n", - s->domain->name, s->username)); - goto failed; - } - - /* take what the sid2gid() call gave us */ - s->gid = gid; - } - - pw = &s->state->response->data.pw; - pw->pw_uid = s->uid; - pw->pw_gid = s->gid; - - /* allow username to be overridden by the alias mapping */ - - if ( s->username_mapped ) { - fstrcpy( output_username, s->username ); - } else { - fill_domain_username(output_username, s->domain->name, - s->username, True); - } - - safe_strcpy(pw->pw_name, output_username, sizeof(pw->pw_name) - 1); - safe_strcpy(pw->pw_gecos, s->fullname, sizeof(pw->pw_gecos) - 1); - - if (!fillup_pw_field(lp_template_homedir(), s->username, - s->domain->name, pw->pw_uid, pw->pw_gid, - s->homedir, pw->pw_dir)) { - DEBUG(5, ("Could not compose homedir\n")); - goto failed; - } - - if (!fillup_pw_field(lp_template_shell(), s->username, - s->domain->name, pw->pw_uid, pw->pw_gid, - s->shell, pw->pw_shell)) { - DEBUG(5, ("Could not compose shell\n")); - goto failed; - } - - /* Password - set to "*" as we can't generate anything useful here. - Authentication can be done using the pam_winbind module. */ - - safe_strcpy(pw->pw_passwd, "*", sizeof(pw->pw_passwd) - 1); - - request_ok(s->state); - return; - - failed: - request_error(s->state); -} - -/* Return a password structure from a username. */ - -static void getpwuid_recv(void *private_data, bool success, const char *sid) -{ - struct winbindd_cli_state *state = - (struct winbindd_cli_state *)private_data; - DOM_SID user_sid; - - if (!success) { - DEBUG(10,("uid2sid_recv: uid [%lu] to sid mapping failed\n.", - (unsigned long)(state->request->data.uid))); - request_error(state); - return; - } - - DEBUG(10,("uid2sid_recv: uid %lu has sid %s\n", - (unsigned long)(state->request->data.uid), sid)); - - if (!string_to_sid(&user_sid, sid)) { - DEBUG(1,("uid2sid_recv: Could not convert sid %s " - "from string\n,", sid)); - request_error(state); - return; - } - - getpwsid_queryuser(state, &user_sid); -} - -/* Return a password structure given a uid number */ -void winbindd_getpwuid(struct winbindd_cli_state *state) -{ - uid_t uid = state->request->data.uid; - - DEBUG(3, ("[%5lu]: getpwuid %lu\n", - (unsigned long)state->pid, - (unsigned long)uid)); - - /* always query idmap via the async interface */ - /* if this turns to be too slow we will add here - * a direct query to the cache */ - winbindd_uid2sid_async(state->mem_ctx, uid, getpwuid_recv, state); -} - /* * set/get/endpwent functions */ -- cgit From ff3ce9016a43906df55a0922f0697c91d255de88 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 2 Aug 2009 16:52:19 +0200 Subject: s3:winbind: Make wcache_lookup_useraliases available publically --- source3/winbindd/winbindd_cache.c | 107 ++++++++++++++++++++++++++------------ source3/winbindd/winbindd_proto.h | 4 ++ 2 files changed, 78 insertions(+), 33 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index 270b9f310d..ea3f00e6d8 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -2122,58 +2122,74 @@ skip_save: return status; } -static NTSTATUS lookup_useraliases(struct winbindd_domain *domain, - TALLOC_CTX *mem_ctx, - uint32 num_sids, const DOM_SID *sids, - uint32 *num_aliases, uint32 **alias_rids) +static char *wcache_make_sidlist(TALLOC_CTX *mem_ctx, uint32_t num_sids, + const struct dom_sid *sids) +{ + uint32_t i; + char *sidlist; + + sidlist = talloc_strdup(mem_ctx, ""); + if (sidlist == NULL) { + return NULL; + } + for (i=0; itdb) - goto do_query; + if (cache->tdb == NULL) { + return NT_STATUS_NOT_FOUND; + } if (num_sids == 0) { - *num_aliases = 0; - *alias_rids = NULL; + *pnum_aliases = 0; + *paliases = NULL; return NT_STATUS_OK; } /* We need to cache indexed by the whole list of SIDs, the aliases * resulting might come from any of the SIDs. */ - for (i=0; istatus; @@ -2181,9 +2197,29 @@ static NTSTATUS lookup_useraliases(struct winbindd_domain *domain, "status %s\n", domain->name, nt_errstr(status))); centry_free(centry); + + *pnum_aliases = num_aliases; + *paliases = aliases; + return status; +} + +static NTSTATUS lookup_useraliases(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + uint32 num_sids, const DOM_SID *sids, + uint32 *num_aliases, uint32 **alias_rids) +{ + struct cache_entry *centry = NULL; + NTSTATUS status; + char *sidlist; + int i; + + status = wcache_lookup_useraliases(domain, mem_ctx, num_sids, sids, + num_aliases, alias_rids); + if (!NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { + return status; + } - do_query: (*num_aliases) = 0; (*alias_rids) = NULL; @@ -2193,6 +2229,11 @@ static NTSTATUS lookup_useraliases(struct winbindd_domain *domain, DEBUG(10,("lookup_usergroups: [Cached] - doing backend query for info " "for domain %s\n", domain->name )); + sidlist = wcache_make_sidlist(talloc_tos(), num_sids, sids); + if (sidlist == NULL) { + return NT_STATUS_NO_MEMORY; + } + status = domain->backend->lookup_useraliases(domain, mem_ctx, num_sids, sids, num_aliases, alias_rids); diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index c155589954..08c08222a6 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -175,6 +175,10 @@ NTSTATUS wcache_query_user(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, const struct dom_sid *user_sid, struct winbind_userinfo *info); +NTSTATUS wcache_lookup_useraliases(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + uint32 num_sids, const DOM_SID *sids, + uint32 *pnum_aliases, uint32 **paliases); void wcache_flush_cache(void); NTSTATUS wcache_count_cached_creds(struct winbindd_domain *domain, int *count); NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const DOM_SID *sid) ; -- cgit From f09a95aaff4542df4225f3828a0d737497f0f2e8 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 2 Aug 2009 17:17:27 +0200 Subject: s3:winbind: Make parse_sidlist take a const char * --- source3/winbindd/winbindd_async.c | 15 +++++++++++---- source3/winbindd/winbindd_proto.h | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_async.c b/source3/winbindd/winbindd_async.c index f53875f617..094602160d 100644 --- a/source3/winbindd/winbindd_async.c +++ b/source3/winbindd/winbindd_async.c @@ -632,25 +632,32 @@ bool print_sidlist(TALLOC_CTX *mem_ctx, const DOM_SID *sids, return True; } -bool parse_sidlist(TALLOC_CTX *mem_ctx, char *sidstr, +bool parse_sidlist(TALLOC_CTX *mem_ctx, const char *sidstr, DOM_SID **sids, size_t *num_sids) { - char *p, *q; + const char *p, *q; p = sidstr; if (p == NULL) return False; while (p[0] != '\0') { + fstring tmp; + size_t sidlen; DOM_SID sid; q = strchr(p, '\n'); if (q == NULL) { DEBUG(0, ("Got invalid sidstr: %s\n", p)); return False; } - *q = '\0'; + sidlen = PTR_DIFF(q, p); + if (sidlen >= sizeof(tmp)-1) { + return false; + } + memcpy(tmp, p, sidlen); + tmp[sidlen] = '\0'; q += 1; - if (!string_to_sid(&sid, p)) { + if (!string_to_sid(&sid, tmp)) { DEBUG(0, ("Could not parse sid %s\n", p)); return False; } diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 08c08222a6..2202537777 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -100,7 +100,7 @@ enum winbindd_result winbindd_dual_list_groups(struct winbindd_domain *domain, struct winbindd_cli_state *state); bool print_sidlist(TALLOC_CTX *mem_ctx, const DOM_SID *sids, size_t num_sids, char **result, ssize_t *len); -bool parse_sidlist(TALLOC_CTX *mem_ctx, char *sidstr, +bool parse_sidlist(TALLOC_CTX *mem_ctx, const char *sidstr, DOM_SID **sids, size_t *num_sids); enum winbindd_result winbindd_dual_lookuprids(struct winbindd_domain *domain, struct winbindd_cli_state *state); -- cgit From ce42ea3ab8c69a3f650d4c9bc787e4805aad928d Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 15:54:05 -0400 Subject: s3:winbind: Add async wb_lookupuseraliases --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 161 +++++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 12 ++ source3/librpc/gen_ndr/ndr_wbint.c | 205 +++++++++++++++++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 11 +- source3/librpc/gen_ndr/srv_wbint.c | 93 +++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 23 ++++ source3/librpc/idl/wbint.idl | 15 +++ source3/winbindd/wb_lookupuseraliases.c | 101 ++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 14 +++ source3/winbindd/winbindd_proto.h | 7 ++ 12 files changed, 643 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_lookupuseraliases.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 1b9b205bee..b1053bce05 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1159,6 +1159,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_uid2sid.o \ winbindd/wb_gid2sid.o \ winbindd/wb_queryuser.o \ + winbindd/wb_lookupuseraliases.o \ winbindd/wb_getpwsid.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index 9fdca8ecba..30eb8e53d4 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -1323,3 +1323,164 @@ NTSTATUS rpccli_wbint_QueryUser(struct rpc_pipe_client *cli, return r.out.result; } +struct rpccli_wbint_LookupUserAliases_state { + struct wbint_LookupUserAliases orig; + struct wbint_LookupUserAliases tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_LookupUserAliases_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_LookupUserAliases_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct wbint_SidArray *_sids /* [in] [ref] */, + struct wbint_RidArray *_rids /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_LookupUserAliases_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_LookupUserAliases_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.sids = _sids; + + /* Out parameters */ + state->orig.out.rids = _rids; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupUserAliases, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_LookupUserAliases_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_LOOKUPUSERALIASES, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_LookupUserAliases_done, req); + return req; +} + +static void rpccli_wbint_LookupUserAliases_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_LookupUserAliases_state *state = tevent_req_data( + req, struct rpccli_wbint_LookupUserAliases_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.rids = *state->tmp.out.rids; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupUserAliases, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_LookupUserAliases_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_LookupUserAliases_state *state = tevent_req_data( + req, struct rpccli_wbint_LookupUserAliases_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_LookupUserAliases(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct wbint_SidArray *sids /* [in] [ref] */, + struct wbint_RidArray *rids /* [out] [ref] */) +{ + struct wbint_LookupUserAliases r; + NTSTATUS status; + + /* In parameters */ + r.in.sids = sids; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupUserAliases, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_LOOKUPUSERALIASES, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupUserAliases, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *rids = *r.out.rids; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index ebceddea5f..80f188f4f9 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -114,4 +114,16 @@ NTSTATUS rpccli_wbint_QueryUser(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct dom_sid *sid /* [in] [ref] */, struct wbint_userinfo *info /* [out] [ref] */); +struct tevent_req *rpccli_wbint_LookupUserAliases_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct wbint_SidArray *_sids /* [in] [ref] */, + struct wbint_RidArray *_rids /* [out] [ref] */); +NTSTATUS rpccli_wbint_LookupUserAliases_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_LookupUserAliases(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct wbint_SidArray *sids /* [in] [ref] */, + struct wbint_RidArray *rids /* [out] [ref] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index 2b773f3f45..87e675edaf 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -172,6 +172,124 @@ _PUBLIC_ void ndr_print_wbint_userinfo(struct ndr_print *ndr, const char *name, ndr->depth--; } +_PUBLIC_ enum ndr_err_code ndr_push_wbint_SidArray(struct ndr_push *ndr, int ndr_flags, const struct wbint_SidArray *r) +{ + uint32_t cntr_sids_0; + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sids)); + NDR_CHECK(ndr_push_align(ndr, 4)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sids)); + for (cntr_sids_0 = 0; cntr_sids_0 < r->num_sids; cntr_sids_0++) { + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, &r->sids[cntr_sids_0])); + } + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_wbint_SidArray(struct ndr_pull *ndr, int ndr_flags, struct wbint_SidArray *r) +{ + uint32_t cntr_sids_0; + TALLOC_CTX *_mem_save_sids_0; + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_array_size(ndr, &r->sids)); + NDR_CHECK(ndr_pull_align(ndr, 4)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sids)); + NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids)); + _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0); + for (cntr_sids_0 = 0; cntr_sids_0 < r->num_sids; cntr_sids_0++) { + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, &r->sids[cntr_sids_0])); + } + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0); + if (r->sids) { + NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids)); + } + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_SidArray(struct ndr_print *ndr, const char *name, const struct wbint_SidArray *r) +{ + uint32_t cntr_sids_0; + ndr_print_struct(ndr, name, "wbint_SidArray"); + ndr->depth++; + ndr_print_uint32(ndr, "num_sids", r->num_sids); + ndr->print(ndr, "%s: ARRAY(%d)", "sids", (int)r->num_sids); + ndr->depth++; + for (cntr_sids_0=0;cntr_sids_0num_sids;cntr_sids_0++) { + char *idx_0=NULL; + if (asprintf(&idx_0, "[%d]", cntr_sids_0) != -1) { + ndr_print_dom_sid(ndr, "sids", &r->sids[cntr_sids_0]); + free(idx_0); + } + } + ndr->depth--; + ndr->depth--; +} + +_PUBLIC_ enum ndr_err_code ndr_push_wbint_RidArray(struct ndr_push *ndr, int ndr_flags, const struct wbint_RidArray *r) +{ + uint32_t cntr_rids_0; + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids)); + NDR_CHECK(ndr_push_align(ndr, 4)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids)); + for (cntr_rids_0 = 0; cntr_rids_0 < r->num_rids; cntr_rids_0++) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rids[cntr_rids_0])); + } + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_wbint_RidArray(struct ndr_pull *ndr, int ndr_flags, struct wbint_RidArray *r) +{ + uint32_t cntr_rids_0; + TALLOC_CTX *_mem_save_rids_0; + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_array_size(ndr, &r->rids)); + NDR_CHECK(ndr_pull_align(ndr, 4)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_rids)); + NDR_PULL_ALLOC_N(ndr, r->rids, ndr_get_array_size(ndr, &r->rids)); + _mem_save_rids_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->rids, 0); + for (cntr_rids_0 = 0; cntr_rids_0 < r->num_rids; cntr_rids_0++) { + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rids[cntr_rids_0])); + } + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_0, 0); + if (r->rids) { + NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rids, r->num_rids)); + } + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_RidArray(struct ndr_print *ndr, const char *name, const struct wbint_RidArray *r) +{ + uint32_t cntr_rids_0; + ndr_print_struct(ndr, name, "wbint_RidArray"); + ndr->depth++; + ndr_print_uint32(ndr, "num_rids", r->num_rids); + ndr->print(ndr, "%s: ARRAY(%d)", "rids", (int)r->num_rids); + ndr->depth++; + for (cntr_rids_0=0;cntr_rids_0num_rids;cntr_rids_0++) { + char *idx_0=NULL; + if (asprintf(&idx_0, "[%d]", cntr_rids_0) != -1) { + ndr_print_uint32(ndr, "rids", r->rids[cntr_rids_0]); + free(idx_0); + } + } + ndr->depth--; + ndr->depth--; +} + static enum ndr_err_code ndr_push_wbint_Ping(struct ndr_push *ndr, int flags, const struct wbint_Ping *r) { if (flags & NDR_IN) { @@ -1015,6 +1133,83 @@ _PUBLIC_ void ndr_print_wbint_QueryUser(struct ndr_print *ndr, const char *name, ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_LookupUserAliases(struct ndr_push *ndr, int flags, const struct wbint_LookupUserAliases *r) +{ + if (flags & NDR_IN) { + if (r->in.sids == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_wbint_SidArray(ndr, NDR_SCALARS, r->in.sids)); + } + if (flags & NDR_OUT) { + if (r->out.rids == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_wbint_RidArray(ndr, NDR_SCALARS, r->out.rids)); + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_LookupUserAliases(struct ndr_pull *ndr, int flags, struct wbint_LookupUserAliases *r) +{ + TALLOC_CTX *_mem_save_sids_0; + TALLOC_CTX *_mem_save_rids_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->in.sids); + } + _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.sids, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_wbint_SidArray(ndr, NDR_SCALARS, r->in.sids)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC); + NDR_PULL_ALLOC(ndr, r->out.rids); + ZERO_STRUCTP(r->out.rids); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.rids); + } + _mem_save_rids_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.rids, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_wbint_RidArray(ndr, NDR_SCALARS, r->out.rids)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_LookupUserAliases(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupUserAliases *r) +{ + ndr_print_struct(ndr, name, "wbint_LookupUserAliases"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_LookupUserAliases"); + ndr->depth++; + ndr_print_ptr(ndr, "sids", r->in.sids); + ndr->depth++; + ndr_print_wbint_SidArray(ndr, "sids", r->in.sids); + ndr->depth--; + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_LookupUserAliases"); + ndr->depth++; + ndr_print_ptr(ndr, "rids", r->out.rids); + ndr->depth++; + ndr_print_wbint_RidArray(ndr, "rids", r->out.rids); + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -1080,6 +1275,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_QueryUser, false, }, + { + "wbint_LookupUserAliases", + sizeof(struct wbint_LookupUserAliases), + (ndr_push_flags_fn_t) ndr_push_wbint_LookupUserAliases, + (ndr_pull_flags_fn_t) ndr_pull_wbint_LookupUserAliases, + (ndr_print_function_t) ndr_print_wbint_LookupUserAliases, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -1109,7 +1312,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 8, + .num_calls = 9, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index 5db488e69c..f862fae651 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -27,10 +27,18 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_QUERYUSER (0x07) -#define NDR_WBINT_CALL_COUNT (8) +#define NDR_WBINT_LOOKUPUSERALIASES (0x08) + +#define NDR_WBINT_CALL_COUNT (9) enum ndr_err_code ndr_push_wbint_userinfo(struct ndr_push *ndr, int ndr_flags, const struct wbint_userinfo *r); enum ndr_err_code ndr_pull_wbint_userinfo(struct ndr_pull *ndr, int ndr_flags, struct wbint_userinfo *r); void ndr_print_wbint_userinfo(struct ndr_print *ndr, const char *name, const struct wbint_userinfo *r); +enum ndr_err_code ndr_push_wbint_SidArray(struct ndr_push *ndr, int ndr_flags, const struct wbint_SidArray *r); +enum ndr_err_code ndr_pull_wbint_SidArray(struct ndr_pull *ndr, int ndr_flags, struct wbint_SidArray *r); +void ndr_print_wbint_SidArray(struct ndr_print *ndr, const char *name, const struct wbint_SidArray *r); +enum ndr_err_code ndr_push_wbint_RidArray(struct ndr_push *ndr, int ndr_flags, const struct wbint_RidArray *r); +enum ndr_err_code ndr_pull_wbint_RidArray(struct ndr_pull *ndr, int ndr_flags, struct wbint_RidArray *r); +void ndr_print_wbint_RidArray(struct ndr_print *ndr, const char *name, const struct wbint_RidArray *r); void ndr_print_wbint_Ping(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Ping *r); void ndr_print_wbint_LookupSid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupSid *r); void ndr_print_wbint_LookupName(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupName *r); @@ -39,4 +47,5 @@ void ndr_print_wbint_Sid2Gid(struct ndr_print *ndr, const char *name, int flags, void ndr_print_wbint_Uid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Uid2Sid *r); void ndr_print_wbint_Gid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Gid2Sid *r); void ndr_print_wbint_QueryUser(struct ndr_print *ndr, const char *name, int flags, const struct wbint_QueryUser *r); +void ndr_print_wbint_LookupUserAliases(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupUserAliases *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index 121d3fa79d..19d2d2eabf 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -664,6 +664,86 @@ static bool api_wbint_QueryUser(pipes_struct *p) return true; } +static bool api_wbint_LookupUserAliases(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_LookupUserAliases *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_LOOKUPUSERALIASES]; + + r = talloc(talloc_tos(), struct wbint_LookupUserAliases); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupUserAliases, r); + } + + ZERO_STRUCT(r->out); + r->out.rids = talloc_zero(r, struct wbint_RidArray); + if (r->out.rids == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_LookupUserAliases(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupUserAliases, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = @@ -676,6 +756,7 @@ static struct api_struct api_wbint_cmds[] = {"WBINT_UID2SID", NDR_WBINT_UID2SID, api_wbint_Uid2Sid}, {"WBINT_GID2SID", NDR_WBINT_GID2SID, api_wbint_Gid2Sid}, {"WBINT_QUERYUSER", NDR_WBINT_QUERYUSER, api_wbint_QueryUser}, + {"WBINT_LOOKUPUSERALIASES", NDR_WBINT_LOOKUPUSERALIASES, api_wbint_LookupUserAliases}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -803,6 +884,18 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_LOOKUPUSERALIASES: { + struct wbint_LookupUserAliases *r = (struct wbint_LookupUserAliases *)_r; + ZERO_STRUCT(r->out); + r->out.rids = talloc_zero(mem_ctx, struct wbint_RidArray); + if (r->out.rids == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_LookupUserAliases(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index ddefa6acce..af48fa3320 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -9,6 +9,7 @@ NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r); NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r); +NTSTATUS _wbint_LookupUserAliases(pipes_struct *p, struct wbint_LookupUserAliases *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); @@ -19,5 +20,6 @@ NTSTATUS _wbint_Sid2Gid(pipes_struct *p, struct wbint_Sid2Gid *r); NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r); NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r); +NTSTATUS _wbint_LookupUserAliases(pipes_struct *p, struct wbint_LookupUserAliases *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index eb3dd0cd33..6eeef0ebdf 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -18,6 +18,16 @@ struct wbint_userinfo { struct dom_sid group_sid; }/* [public] */; +struct wbint_SidArray { + uint32_t num_sids; + struct dom_sid *sids;/* [size_is(num_sids)] */ +}/* [public] */; + +struct wbint_RidArray { + uint32_t num_rids; + uint32_t *rids;/* [size_is(num_rids)] */ +}/* [public] */; + struct wbint_Ping { struct { @@ -130,4 +140,17 @@ struct wbint_QueryUser { }; + +struct wbint_LookupUserAliases { + struct { + struct wbint_SidArray *sids;/* [ref] */ + } in; + + struct { + struct wbint_RidArray *rids;/* [ref] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index 15c4e1f302..571c212ecd 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -68,4 +68,19 @@ interface wbint [in] dom_sid *sid, [out] wbint_userinfo *info ); + + typedef [public] struct { + uint32 num_sids; + [size_is(num_sids)] dom_sid sids[]; + } wbint_SidArray; + + typedef [public] struct { + uint32 num_rids; + [size_is(num_rids)] uint32 rids[]; + } wbint_RidArray; + + NTSTATUS wbint_LookupUserAliases( + [in] wbint_SidArray *sids, + [out] wbint_RidArray *rids + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_lookupuseraliases.c b/source3/winbindd/wb_lookupuseraliases.c new file mode 100644 index 0000000000..e2e5e2da08 --- /dev/null +++ b/source3/winbindd/wb_lookupuseraliases.c @@ -0,0 +1,101 @@ +/* + Unix SMB/CIFS implementation. + async lookupuseraliases + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_lookupuseraliases_state { + struct tevent_context *ev; + struct wbint_SidArray sids; + struct wbint_RidArray rids; +}; + +static void wb_lookupuseraliases_done(struct tevent_req *subreq); + +struct tevent_req *wb_lookupuseraliases_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_domain *domain, + int num_sids, + const struct dom_sid *sids) +{ + struct tevent_req *req, *subreq; + struct wb_lookupuseraliases_state *state; + NTSTATUS status; + + req = tevent_req_create(mem_ctx, &state, + struct wb_lookupuseraliases_state); + if (req == NULL) { + return NULL; + } + state->sids.num_sids = num_sids; + state->sids.sids = CONST_DISCARD(struct dom_sid *, sids); + + status = wcache_lookup_useraliases(domain, state, num_sids, sids, + &state->rids.num_rids, + &state->rids.rids); + if (NT_STATUS_IS_OK(status)) { + tevent_req_done(req); + return tevent_req_post(req, ev); + } + + subreq = rpccli_wbint_LookupUserAliases_send( + state, ev, domain->child.rpccli, &state->sids, &state->rids); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_lookupuseraliases_done, req); + return req; +} + +static void wb_lookupuseraliases_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_lookupuseraliases_state *state = tevent_req_data( + req, struct wb_lookupuseraliases_state); + NTSTATUS status, result; + + status = rpccli_wbint_LookupUserAliases_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!NT_STATUS_IS_OK(result)) { + tevent_req_nterror(req, result); + return; + } + tevent_req_done(req); +} + +NTSTATUS wb_lookupuseraliases_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + uint32_t *num_aliases, uint32_t **aliases) +{ + struct wb_lookupuseraliases_state *state = tevent_req_data( + req, struct wb_lookupuseraliases_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + *num_aliases = state->rids.num_rids; + *aliases = talloc_move(mem_ctx, &state->rids.rids); + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 202cca4434..1a8cbd9b92 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -144,3 +144,17 @@ NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r) return NT_STATUS_OK; } + +NTSTATUS _wbint_LookupUserAliases(pipes_struct *p, + struct wbint_LookupUserAliases *r) +{ + struct winbindd_domain *domain = wb_child_domain(); + + if (domain == NULL) { + return NT_STATUS_REQUEST_NOT_ACCEPTED; + } + + return domain->methods->lookup_useraliases( + domain, p->mem_ctx, r->in.sids->num_sids, r->in.sids->sids, + &r->out.rids->num_rids, &r->out.rids->rids); +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 2202537777..8dda3f8c8f 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -726,6 +726,13 @@ struct tevent_req *winbindd_getpwuid_send(TALLOC_CTX *mem_ctx, struct winbindd_request *request); NTSTATUS winbindd_getpwuid_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *wb_lookupuseraliases_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_domain *domain, + int num_sids, + const struct dom_sid *sids); +NTSTATUS wb_lookupuseraliases_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + uint32_t *num_aliases, uint32_t **aliases); #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 592822786d0a26bdf283ca4621c0df6f7f671869 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 15:58:45 -0400 Subject: s3:winbind: Convert WINBINDD_GETSIDALIASES to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 4 +- source3/winbindd/winbindd_getsidaliases.c | 137 ++++++++++++++++++++++++++++++ source3/winbindd/winbindd_group.c | 26 ------ source3/winbindd/winbindd_proto.h | 5 ++ 5 files changed, 145 insertions(+), 28 deletions(-) create mode 100644 source3/winbindd/winbindd_getsidaliases.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index b1053bce05..7879d939f8 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1170,6 +1170,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_getpwsid.o \ winbindd/winbindd_getpwnam.o \ winbindd/winbindd_getpwuid.o \ + winbindd/winbindd_getsidaliases.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 0e13516a71..9d37a008ed 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -435,8 +435,6 @@ static struct winbindd_dispatch_table { { WINBINDD_GETUSERSIDS, winbindd_getusersids, "GETUSERSIDS" }, { WINBINDD_GETUSERDOMGROUPS, winbindd_getuserdomgroups, "GETUSERDOMGROUPS" }, - { WINBINDD_GETSIDALIASES, winbindd_getsidaliases, - "LOOKUPUSERALIASES" }, /* Group functions */ @@ -533,6 +531,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_getpwnam_send, winbindd_getpwnam_recv }, { WINBINDD_GETPWUID, "GETPWUID", winbindd_getpwuid_send, winbindd_getpwuid_recv }, + { WINBINDD_GETSIDALIASES, "GETSIDALIASES", + winbindd_getsidaliases_send, winbindd_getsidaliases_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_getsidaliases.c b/source3/winbindd/winbindd_getsidaliases.c new file mode 100644 index 0000000000..788c88f550 --- /dev/null +++ b/source3/winbindd/winbindd_getsidaliases.c @@ -0,0 +1,137 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GETSIDALIASES + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_getsidaliases_state { + struct dom_sid sid; + uint32_t num_aliases; + uint32_t *aliases; +}; + +static void winbindd_getsidaliases_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_getsidaliases_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_getsidaliases_state *state; + struct winbindd_domain *domain; + size_t num_sids; + struct dom_sid *sids; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_getsidaliases_state); + if (req == NULL) { + return NULL; + } + + /* Ensure null termination */ + request->data.sid[sizeof(request->data.sid)-1]='\0'; + + DEBUG(3, ("getsidaliases %s\n", request->data.sid)); + + if (!string_to_sid(&state->sid, request->data.sid)) { + DEBUG(1, ("Could not get convert sid %s from string\n", + request->data.sid)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev); + } + + domain = find_domain_from_sid_noinit(&state->sid); + if (domain == NULL) { + DEBUG(1,("could not find domain entry for sid %s\n", + request->data.sid)); + tevent_req_nterror(req, NT_STATUS_NO_SUCH_DOMAIN); + return tevent_req_post(req, ev); + } + + num_sids = 0; + sids = NULL; + + if ((request->extra_data.data != NULL) + && !parse_sidlist(state, request->extra_data.data, + &sids, &num_sids)) { + DEBUG(1, ("Could not parse SID list: %s\n", + request->extra_data.data)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev); + } + + subreq = wb_lookupuseraliases_send(state, ev, domain, num_sids, sids); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_getsidaliases_done, req); + return req; +} + +static void winbindd_getsidaliases_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_getsidaliases_state *state = tevent_req_data( + req, struct winbindd_getsidaliases_state); + NTSTATUS status; + + status = wb_lookupuseraliases_recv(subreq, state, &state->num_aliases, + &state->aliases); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_getsidaliases_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_getsidaliases_state *state = tevent_req_data( + req, struct winbindd_getsidaliases_state); + NTSTATUS status; + int i; + char *sidlist; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + + sidlist = talloc_strdup(response, ""); + if (sidlist == NULL) { + return NT_STATUS_NO_MEMORY; + } + for (i=0; inum_aliases; i++) { + struct dom_sid sid; + fstring tmp; + sid_compose(&sid, &state->sid, state->aliases[i]); + + sidlist = talloc_asprintf_append_buffer( + sidlist, "%s\n", sid_to_fstring(tmp, &sid)); + if (sidlist == NULL) { + return NT_STATUS_NO_MEMORY; + } + } + response->extra_data.data = sidlist; + response->length += talloc_get_size(sidlist); + response->data.num_entries = state->num_aliases; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_group.c b/source3/winbindd/winbindd_group.c index f78becb699..0d3db1d83f 100644 --- a/source3/winbindd/winbindd_group.c +++ b/source3/winbindd/winbindd_group.c @@ -1887,32 +1887,6 @@ enum winbindd_result winbindd_dual_getuserdomgroups(struct winbindd_domain *doma return WINBINDD_OK; } -void winbindd_getsidaliases(struct winbindd_cli_state *state) -{ - DOM_SID domain_sid; - struct winbindd_domain *domain; - - /* Ensure null termination */ - state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - - if (!string_to_sid(&domain_sid, state->request->data.sid)) { - DEBUG(1, ("Could not get convert sid %s from string\n", - state->request->data.sid)); - request_error(state); - return; - } - - /* Get info for the domain */ - if ((domain = find_domain_from_sid_noinit(&domain_sid)) == NULL) { - DEBUG(0,("could not find domain entry for sid %s\n", - sid_string_dbg(&domain_sid))); - request_error(state); - return; - } - - sendto_domain(state, domain); -} - enum winbindd_result winbindd_dual_getsidaliases(struct winbindd_domain *domain, struct winbindd_cli_state *state) { diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 8dda3f8c8f..f008ecda19 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -733,6 +733,11 @@ struct tevent_req *wb_lookupuseraliases_send(TALLOC_CTX *mem_ctx, const struct dom_sid *sids); NTSTATUS wb_lookupuseraliases_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, uint32_t *num_aliases, uint32_t **aliases); +struct tevent_req *winbindd_getsidaliases_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_getsidaliases_recv(struct tevent_req *req, + struct winbindd_response *response); #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 718a26fd29036cc200cdc1c320733eafe84d2337 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 2 Aug 2009 18:01:54 +0200 Subject: s3:winbind: Make wcache_lookup_usergroups externally visible --- source3/winbindd/winbindd_cache.c | 76 ++++++++++++++++++++++++--------------- source3/winbindd/winbindd_proto.h | 5 +++ 2 files changed, 52 insertions(+), 29 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index ea3f00e6d8..5dfdc5ae29 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -2031,63 +2031,81 @@ static NTSTATUS query_user(struct winbindd_domain *domain, return status; } - -/* Lookup groups a user is a member of. */ -static NTSTATUS lookup_usergroups(struct winbindd_domain *domain, +NTSTATUS wcache_lookup_usergroups(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, - const DOM_SID *user_sid, - uint32 *num_groups, DOM_SID **user_gids) + const struct dom_sid *user_sid, + uint32_t *pnum_sids, + struct dom_sid **psids) { struct winbind_cache *cache = get_cache(domain); struct cache_entry *centry = NULL; NTSTATUS status; - unsigned int i; + uint32_t i, num_sids; + struct dom_sid *sids; fstring sid_string; - if (!cache->tdb) - goto do_query; + if (cache->tdb == NULL) { + return NT_STATUS_NOT_FOUND; + } centry = wcache_fetch(cache, domain, "UG/%s", sid_to_fstring(sid_string, user_sid)); + if (centry == NULL) { + return NT_STATUS_NOT_FOUND; + } /* If we have an access denied cache entry and a cached info3 in the samlogon cache then do a query. This will force the rpc back end to return the info3 data. */ - if (NT_STATUS_V(domain->last_status) == NT_STATUS_V(NT_STATUS_ACCESS_DENIED) && - netsamlogon_cache_have(user_sid)) { - DEBUG(10, ("lookup_usergroups: cached access denied and have cached info3\n")); + if (NT_STATUS_EQUAL(domain->last_status, NT_STATUS_ACCESS_DENIED) + && netsamlogon_cache_have(user_sid)) { + DEBUG(10, ("lookup_usergroups: cached access denied and have " + "cached info3\n")); domain->last_status = NT_STATUS_OK; centry_free(centry); - goto do_query; + return NT_STATUS_NOT_FOUND; } - if (!centry) - goto do_query; - - *num_groups = centry_uint32(centry); - - if (*num_groups == 0) - goto do_cached; - - (*user_gids) = TALLOC_ARRAY(mem_ctx, DOM_SID, *num_groups); - if (! (*user_gids)) { - smb_panic_fn("lookup_usergroups out of memory"); + num_sids = centry_uint32(centry); + sids = talloc_array(mem_ctx, struct dom_sid, num_sids); + if (sids == NULL) { + return NT_STATUS_NO_MEMORY; } - for (i=0; i<(*num_groups); i++) { - centry_sid(centry, &(*user_gids)[i]); + + for (i=0; istatus; - DEBUG(10,("lookup_usergroups: [Cached] - cached info for domain %s status: %s\n", - domain->name, nt_errstr(status) )); + DEBUG(10,("lookup_usergroups: [Cached] - cached info for domain %s " + "status: %s\n", domain->name, nt_errstr(status))); centry_free(centry); + + *pnum_sids = num_sids; + *psids = sids; return status; +} + +/* Lookup groups a user is a member of. */ +static NTSTATUS lookup_usergroups(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const DOM_SID *user_sid, + uint32 *num_groups, DOM_SID **user_gids) +{ + struct cache_entry *centry = NULL; + NTSTATUS status; + unsigned int i; + fstring sid_string; + + status = wcache_lookup_usergroups(domain, mem_ctx, user_sid, + num_groups, user_gids); + if (!NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { + return status; + } -do_query: (*num_groups) = 0; (*user_gids) = NULL; diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index f008ecda19..fd67abbf6d 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -179,6 +179,11 @@ NTSTATUS wcache_lookup_useraliases(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, uint32 num_sids, const DOM_SID *sids, uint32 *pnum_aliases, uint32 **paliases); +NTSTATUS wcache_lookup_usergroups(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const struct dom_sid *user_sid, + uint32_t *pnum_sids, + struct dom_sid **psids); void wcache_flush_cache(void); NTSTATUS wcache_count_cached_creds(struct winbindd_domain *domain, int *count); NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const DOM_SID *sid) ; -- cgit From 1dc1ac00512a28bdc025b00fbfa676b0f5b15751 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 16:07:01 -0400 Subject: s3:winbind: Add async wb_lookupusergroups --- source3/Makefile.in | 1 + source3/librpc/gen_ndr/cli_wbint.c | 161 +++++++++++++++++++++++++++++++++ source3/librpc/gen_ndr/cli_wbint.h | 12 +++ source3/librpc/gen_ndr/ndr_wbint.c | 87 +++++++++++++++++- source3/librpc/gen_ndr/ndr_wbint.h | 5 +- source3/librpc/gen_ndr/srv_wbint.c | 93 +++++++++++++++++++ source3/librpc/gen_ndr/srv_wbint.h | 2 + source3/librpc/gen_ndr/wbint.h | 13 +++ source3/librpc/idl/wbint.idl | 5 + source3/winbindd/wb_lookupusergroups.c | 99 ++++++++++++++++++++ source3/winbindd/winbindd_dual_srv.c | 14 +++ source3/winbindd/winbindd_proto.h | 7 ++ 12 files changed, 497 insertions(+), 2 deletions(-) create mode 100644 source3/winbindd/wb_lookupusergroups.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 7879d939f8..974499594a 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1160,6 +1160,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_gid2sid.o \ winbindd/wb_queryuser.o \ winbindd/wb_lookupuseraliases.o \ + winbindd/wb_lookupusergroups.o \ winbindd/wb_getpwsid.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c index 30eb8e53d4..de6b345a0e 100644 --- a/source3/librpc/gen_ndr/cli_wbint.c +++ b/source3/librpc/gen_ndr/cli_wbint.c @@ -1484,3 +1484,164 @@ NTSTATUS rpccli_wbint_LookupUserAliases(struct rpc_pipe_client *cli, return r.out.result; } +struct rpccli_wbint_LookupUserGroups_state { + struct wbint_LookupUserGroups orig; + struct wbint_LookupUserGroups tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_wbint_LookupUserGroups_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_wbint_LookupUserGroups_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct dom_sid *_sid /* [in] [ref] */, + struct wbint_SidArray *_sids /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_wbint_LookupUserGroups_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_wbint_LookupUserGroups_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.sid = _sid; + + /* Out parameters */ + state->orig.out.sids = _sids; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupUserGroups, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_wbint_LookupUserGroups_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_wbint, + NDR_WBINT_LOOKUPUSERGROUPS, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_wbint_LookupUserGroups_done, req); + return req; +} + +static void rpccli_wbint_LookupUserGroups_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_wbint_LookupUserGroups_state *state = tevent_req_data( + req, struct rpccli_wbint_LookupUserGroups_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.sids = *state->tmp.out.sids; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupUserGroups, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_wbint_LookupUserGroups_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result) +{ + struct rpccli_wbint_LookupUserGroups_state *state = tevent_req_data( + req, struct rpccli_wbint_LookupUserGroups_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_wbint_LookupUserGroups(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct dom_sid *sid /* [in] [ref] */, + struct wbint_SidArray *sids /* [out] [ref] */) +{ + struct wbint_LookupUserGroups r; + NTSTATUS status; + + /* In parameters */ + r.in.sid = sid; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupUserGroups, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_wbint, + NDR_WBINT_LOOKUPUSERGROUPS, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupUserGroups, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *sids = *r.out.sids; + + /* Return result */ + return r.out.result; +} + diff --git a/source3/librpc/gen_ndr/cli_wbint.h b/source3/librpc/gen_ndr/cli_wbint.h index 80f188f4f9..e9927c1c35 100644 --- a/source3/librpc/gen_ndr/cli_wbint.h +++ b/source3/librpc/gen_ndr/cli_wbint.h @@ -126,4 +126,16 @@ NTSTATUS rpccli_wbint_LookupUserAliases(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct wbint_SidArray *sids /* [in] [ref] */, struct wbint_RidArray *rids /* [out] [ref] */); +struct tevent_req *rpccli_wbint_LookupUserGroups_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct dom_sid *_sid /* [in] [ref] */, + struct wbint_SidArray *_sids /* [out] [ref] */); +NTSTATUS rpccli_wbint_LookupUserGroups_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + NTSTATUS *result); +NTSTATUS rpccli_wbint_LookupUserGroups(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct dom_sid *sid /* [in] [ref] */, + struct wbint_SidArray *sids /* [out] [ref] */); #endif /* __CLI_WBINT__ */ diff --git a/source3/librpc/gen_ndr/ndr_wbint.c b/source3/librpc/gen_ndr/ndr_wbint.c index 87e675edaf..5a8c1c33d7 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.c +++ b/source3/librpc/gen_ndr/ndr_wbint.c @@ -1210,6 +1210,83 @@ _PUBLIC_ void ndr_print_wbint_LookupUserAliases(struct ndr_print *ndr, const cha ndr->depth--; } +static enum ndr_err_code ndr_push_wbint_LookupUserGroups(struct ndr_push *ndr, int flags, const struct wbint_LookupUserGroups *r) +{ + if (flags & NDR_IN) { + if (r->in.sid == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + } + if (flags & NDR_OUT) { + if (r->out.sids == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_wbint_SidArray(ndr, NDR_SCALARS, r->out.sids)); + NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_wbint_LookupUserGroups(struct ndr_pull *ndr, int flags, struct wbint_LookupUserGroups *r) +{ + TALLOC_CTX *_mem_save_sid_0; + TALLOC_CTX *_mem_save_sids_0; + if (flags & NDR_IN) { + ZERO_STRUCT(r->out); + + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->in.sid); + } + _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.sid, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->in.sid)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC); + NDR_PULL_ALLOC(ndr, r->out.sids); + ZERO_STRUCTP(r->out.sids); + } + if (flags & NDR_OUT) { + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->out.sids); + } + _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.sids, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_wbint_SidArray(ndr, NDR_SCALARS, r->out.sids)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_wbint_LookupUserGroups(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupUserGroups *r) +{ + ndr_print_struct(ndr, name, "wbint_LookupUserGroups"); + ndr->depth++; + if (flags & NDR_SET_VALUES) { + ndr->flags |= LIBNDR_PRINT_SET_VALUES; + } + if (flags & NDR_IN) { + ndr_print_struct(ndr, "in", "wbint_LookupUserGroups"); + ndr->depth++; + ndr_print_ptr(ndr, "sid", r->in.sid); + ndr->depth++; + ndr_print_dom_sid(ndr, "sid", r->in.sid); + ndr->depth--; + ndr->depth--; + } + if (flags & NDR_OUT) { + ndr_print_struct(ndr, "out", "wbint_LookupUserGroups"); + ndr->depth++; + ndr_print_ptr(ndr, "sids", r->out.sids); + ndr->depth++; + ndr_print_wbint_SidArray(ndr, "sids", r->out.sids); + ndr->depth--; + ndr_print_NTSTATUS(ndr, "result", r->out.result); + ndr->depth--; + } + ndr->depth--; +} + static const struct ndr_interface_call wbint_calls[] = { { "wbint_Ping", @@ -1283,6 +1360,14 @@ static const struct ndr_interface_call wbint_calls[] = { (ndr_print_function_t) ndr_print_wbint_LookupUserAliases, false, }, + { + "wbint_LookupUserGroups", + sizeof(struct wbint_LookupUserGroups), + (ndr_push_flags_fn_t) ndr_push_wbint_LookupUserGroups, + (ndr_pull_flags_fn_t) ndr_pull_wbint_LookupUserGroups, + (ndr_print_function_t) ndr_print_wbint_LookupUserGroups, + false, + }, { NULL, 0, NULL, NULL, NULL, false } }; @@ -1312,7 +1397,7 @@ const struct ndr_interface_table ndr_table_wbint = { NDR_WBINT_VERSION }, .helpstring = NDR_WBINT_HELPSTRING, - .num_calls = 9, + .num_calls = 10, .calls = wbint_calls, .endpoints = &wbint_endpoints, .authservices = &wbint_authservices diff --git a/source3/librpc/gen_ndr/ndr_wbint.h b/source3/librpc/gen_ndr/ndr_wbint.h index f862fae651..6fd6b1d74d 100644 --- a/source3/librpc/gen_ndr/ndr_wbint.h +++ b/source3/librpc/gen_ndr/ndr_wbint.h @@ -29,7 +29,9 @@ extern const struct ndr_interface_table ndr_table_wbint; #define NDR_WBINT_LOOKUPUSERALIASES (0x08) -#define NDR_WBINT_CALL_COUNT (9) +#define NDR_WBINT_LOOKUPUSERGROUPS (0x09) + +#define NDR_WBINT_CALL_COUNT (10) enum ndr_err_code ndr_push_wbint_userinfo(struct ndr_push *ndr, int ndr_flags, const struct wbint_userinfo *r); enum ndr_err_code ndr_pull_wbint_userinfo(struct ndr_pull *ndr, int ndr_flags, struct wbint_userinfo *r); void ndr_print_wbint_userinfo(struct ndr_print *ndr, const char *name, const struct wbint_userinfo *r); @@ -48,4 +50,5 @@ void ndr_print_wbint_Uid2Sid(struct ndr_print *ndr, const char *name, int flags, void ndr_print_wbint_Gid2Sid(struct ndr_print *ndr, const char *name, int flags, const struct wbint_Gid2Sid *r); void ndr_print_wbint_QueryUser(struct ndr_print *ndr, const char *name, int flags, const struct wbint_QueryUser *r); void ndr_print_wbint_LookupUserAliases(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupUserAliases *r); +void ndr_print_wbint_LookupUserGroups(struct ndr_print *ndr, const char *name, int flags, const struct wbint_LookupUserGroups *r); #endif /* _HEADER_NDR_wbint */ diff --git a/source3/librpc/gen_ndr/srv_wbint.c b/source3/librpc/gen_ndr/srv_wbint.c index 19d2d2eabf..95c0619058 100644 --- a/source3/librpc/gen_ndr/srv_wbint.c +++ b/source3/librpc/gen_ndr/srv_wbint.c @@ -744,6 +744,86 @@ static bool api_wbint_LookupUserAliases(pipes_struct *p) return true; } +static bool api_wbint_LookupUserGroups(pipes_struct *p) +{ + const struct ndr_interface_call *call; + struct ndr_pull *pull; + struct ndr_push *push; + enum ndr_err_code ndr_err; + DATA_BLOB blob; + struct wbint_LookupUserGroups *r; + + call = &ndr_table_wbint.calls[NDR_WBINT_LOOKUPUSERGROUPS]; + + r = talloc(talloc_tos(), struct wbint_LookupUserGroups); + if (r == NULL) { + return false; + } + + if (!prs_data_blob(&p->in_data.data, &blob, r)) { + talloc_free(r); + return false; + } + + pull = ndr_pull_init_blob(&blob, r, NULL); + if (pull == NULL) { + talloc_free(r); + return false; + } + + pull->flags |= LIBNDR_FLAG_REF_ALLOC; + ndr_err = call->ndr_pull(pull, NDR_IN, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(wbint_LookupUserGroups, r); + } + + ZERO_STRUCT(r->out); + r->out.sids = talloc_zero(r, struct wbint_SidArray); + if (r->out.sids == NULL) { + talloc_free(r); + return false; + } + + r->out.result = _wbint_LookupUserGroups(p, r); + + if (p->rng_fault_state) { + talloc_free(r); + /* Return true here, srv_pipe_hnd.c will take care */ + return true; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(wbint_LookupUserGroups, r); + } + + push = ndr_push_init_ctx(r, NULL); + if (push == NULL) { + talloc_free(r); + return false; + } + + ndr_err = call->ndr_push(push, NDR_OUT, r); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(r); + return false; + } + + blob = ndr_push_blob(push); + if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { + talloc_free(r); + return false; + } + + talloc_free(r); + + return true; +} + /* Tables */ static struct api_struct api_wbint_cmds[] = @@ -757,6 +837,7 @@ static struct api_struct api_wbint_cmds[] = {"WBINT_GID2SID", NDR_WBINT_GID2SID, api_wbint_Gid2Sid}, {"WBINT_QUERYUSER", NDR_WBINT_QUERYUSER, api_wbint_QueryUser}, {"WBINT_LOOKUPUSERALIASES", NDR_WBINT_LOOKUPUSERALIASES, api_wbint_LookupUserAliases}, + {"WBINT_LOOKUPUSERGROUPS", NDR_WBINT_LOOKUPUSERGROUPS, api_wbint_LookupUserGroups}, }; void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns) @@ -896,6 +977,18 @@ NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co return NT_STATUS_OK; } + case NDR_WBINT_LOOKUPUSERGROUPS: { + struct wbint_LookupUserGroups *r = (struct wbint_LookupUserGroups *)_r; + ZERO_STRUCT(r->out); + r->out.sids = talloc_zero(mem_ctx, struct wbint_SidArray); + if (r->out.sids == NULL) { + return NT_STATUS_NO_MEMORY; + } + + r->out.result = _wbint_LookupUserGroups(cli->pipes_struct, r); + return NT_STATUS_OK; + } + default: return NT_STATUS_NOT_IMPLEMENTED; } diff --git a/source3/librpc/gen_ndr/srv_wbint.h b/source3/librpc/gen_ndr/srv_wbint.h index af48fa3320..20ca316375 100644 --- a/source3/librpc/gen_ndr/srv_wbint.h +++ b/source3/librpc/gen_ndr/srv_wbint.h @@ -10,6 +10,7 @@ NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r); NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r); NTSTATUS _wbint_LookupUserAliases(pipes_struct *p, struct wbint_LookupUserAliases *r); +NTSTATUS _wbint_LookupUserGroups(pipes_struct *p, struct wbint_LookupUserGroups *r); void wbint_get_pipe_fns(struct api_struct **fns, int *n_fns); NTSTATUS rpc_wbint_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r); void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r); @@ -21,5 +22,6 @@ NTSTATUS _wbint_Uid2Sid(pipes_struct *p, struct wbint_Uid2Sid *r); NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r); NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r); NTSTATUS _wbint_LookupUserAliases(pipes_struct *p, struct wbint_LookupUserAliases *r); +NTSTATUS _wbint_LookupUserGroups(pipes_struct *p, struct wbint_LookupUserGroups *r); NTSTATUS rpc_wbint_init(void); #endif /* __SRV_WBINT__ */ diff --git a/source3/librpc/gen_ndr/wbint.h b/source3/librpc/gen_ndr/wbint.h index 6eeef0ebdf..28382ec346 100644 --- a/source3/librpc/gen_ndr/wbint.h +++ b/source3/librpc/gen_ndr/wbint.h @@ -153,4 +153,17 @@ struct wbint_LookupUserAliases { }; + +struct wbint_LookupUserGroups { + struct { + struct dom_sid *sid;/* [ref] */ + } in; + + struct { + struct wbint_SidArray *sids;/* [ref] */ + NTSTATUS result; + } out; + +}; + #endif /* _HEADER_wbint */ diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index 571c212ecd..f994126711 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -83,4 +83,9 @@ interface wbint [in] wbint_SidArray *sids, [out] wbint_RidArray *rids ); + + NTSTATUS wbint_LookupUserGroups( + [in] dom_sid *sid, + [out] wbint_SidArray *sids + ); } \ No newline at end of file diff --git a/source3/winbindd/wb_lookupusergroups.c b/source3/winbindd/wb_lookupusergroups.c new file mode 100644 index 0000000000..4e96b45c57 --- /dev/null +++ b/source3/winbindd/wb_lookupusergroups.c @@ -0,0 +1,99 @@ +/* + Unix SMB/CIFS implementation. + async lookupusergroups + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_lookupusergroups_state { + struct tevent_context *ev; + struct dom_sid sid; + struct wbint_SidArray sids; +}; + +static void wb_lookupusergroups_done(struct tevent_req *subreq); + +struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_domain *domain, + const struct dom_sid *sid) +{ + struct tevent_req *req, *subreq; + struct wb_lookupusergroups_state *state; + NTSTATUS status; + + req = tevent_req_create(mem_ctx, &state, + struct wb_lookupusergroups_state); + if (req == NULL) { + return NULL; + } + sid_copy(&state->sid, sid); + + status = wcache_lookup_usergroups(domain, state, sid, + &state->sids.num_sids, + &state->sids.sids); + if (NT_STATUS_IS_OK(status)) { + tevent_req_done(req); + return tevent_req_post(req, ev); + } + + subreq = rpccli_wbint_LookupUserGroups_send( + state, ev, domain->child.rpccli, &state->sid, &state->sids); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_lookupusergroups_done, req); + return req; +} + +static void wb_lookupusergroups_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_lookupusergroups_state *state = tevent_req_data( + req, struct wb_lookupusergroups_state); + NTSTATUS status, result; + + status = rpccli_wbint_LookupUserGroups_recv(subreq, state, &result); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!NT_STATUS_IS_OK(result)) { + tevent_req_nterror(req, result); + return; + } + tevent_req_done(req); +} + +NTSTATUS wb_lookupusergroups_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + int *num_sids, struct dom_sid **sids) +{ + struct wb_lookupusergroups_state *state = tevent_req_data( + req, struct wb_lookupusergroups_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + *num_sids = state->sids.num_sids; + *sids = talloc_move(mem_ctx, &state->sids.sids); + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 1a8cbd9b92..9be295ffdc 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -158,3 +158,17 @@ NTSTATUS _wbint_LookupUserAliases(pipes_struct *p, domain, p->mem_ctx, r->in.sids->num_sids, r->in.sids->sids, &r->out.rids->num_rids, &r->out.rids->rids); } + +NTSTATUS _wbint_LookupUserGroups(pipes_struct *p, + struct wbint_LookupUserGroups *r) +{ + struct winbindd_domain *domain = wb_child_domain(); + + if (domain == NULL) { + return NT_STATUS_REQUEST_NOT_ACCEPTED; + } + + return domain->methods->lookup_usergroups( + domain, p->mem_ctx, r->in.sid, + &r->out.sids->num_sids, &r->out.sids->sids); +} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index fd67abbf6d..42acb9eea6 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -184,6 +184,7 @@ NTSTATUS wcache_lookup_usergroups(struct winbindd_domain *domain, const struct dom_sid *user_sid, uint32_t *pnum_sids, struct dom_sid **psids); + void wcache_flush_cache(void); NTSTATUS wcache_count_cached_creds(struct winbindd_domain *domain, int *count); NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const DOM_SID *sid) ; @@ -743,6 +744,12 @@ struct tevent_req *winbindd_getsidaliases_send(TALLOC_CTX *mem_ctx, struct winbindd_request *request); NTSTATUS winbindd_getsidaliases_recv(struct tevent_req *req, struct winbindd_response *response); +struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_domain *domain, + const struct dom_sid *sid); +NTSTATUS wb_lookupusergroups_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + int *num_sids, struct dom_sid **sids); #endif /* _WINBINDD_PROTO_H_ */ -- cgit From fec380818ffdd7fba58e8dd591049c4b2428ab7d Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 16:20:18 -0400 Subject: s3:winbind: Convert WINBINDD_GETUSERDOMGROUPS to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 4 +- source3/winbindd/winbindd_getuserdomgroups.c | 121 +++++++++++++++++++++++++++ source3/winbindd/winbindd_group.c | 26 ------ source3/winbindd/winbindd_proto.h | 7 ++ 5 files changed, 131 insertions(+), 28 deletions(-) create mode 100644 source3/winbindd/winbindd_getuserdomgroups.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 974499594a..3ebc3616c1 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1172,6 +1172,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_getpwnam.o \ winbindd/winbindd_getpwuid.o \ winbindd/winbindd_getsidaliases.o \ + winbindd/winbindd_getuserdomgroups.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 9d37a008ed..1a5e958d38 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -433,8 +433,6 @@ static struct winbindd_dispatch_table { { WINBINDD_GETGROUPS, winbindd_getgroups, "GETGROUPS" }, { WINBINDD_GETUSERSIDS, winbindd_getusersids, "GETUSERSIDS" }, - { WINBINDD_GETUSERDOMGROUPS, winbindd_getuserdomgroups, - "GETUSERDOMGROUPS" }, /* Group functions */ @@ -533,6 +531,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_getpwuid_send, winbindd_getpwuid_recv }, { WINBINDD_GETSIDALIASES, "GETSIDALIASES", winbindd_getsidaliases_send, winbindd_getsidaliases_recv }, + { WINBINDD_GETUSERDOMGROUPS, "GETUSERDOMGROUPS", + winbindd_getuserdomgroups_send, winbindd_getuserdomgroups_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_getuserdomgroups.c b/source3/winbindd/winbindd_getuserdomgroups.c new file mode 100644 index 0000000000..e67768307f --- /dev/null +++ b/source3/winbindd/winbindd_getuserdomgroups.c @@ -0,0 +1,121 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GETUSERDOMGROUPS + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_getuserdomgroups_state { + struct dom_sid sid; + int num_sids; + struct dom_sid *sids; +}; + +static void winbindd_getuserdomgroups_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_getuserdomgroups_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_getuserdomgroups_state *state; + struct winbindd_domain *domain; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_getuserdomgroups_state); + if (req == NULL) { + return NULL; + } + + /* Ensure null termination */ + request->data.sid[sizeof(request->data.sid)-1]='\0'; + + DEBUG(3, ("getuserdomgroups %s\n", request->data.sid)); + + if (!string_to_sid(&state->sid, request->data.sid)) { + DEBUG(1, ("Could not get convert sid %s from string\n", + request->data.sid)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev); + } + + domain = find_domain_from_sid_noinit(&state->sid); + if (domain == NULL) { + DEBUG(1,("could not find domain entry for sid %s\n", + request->data.sid)); + tevent_req_nterror(req, NT_STATUS_NO_SUCH_DOMAIN); + return tevent_req_post(req, ev); + } + + subreq = wb_lookupusergroups_send(state, ev, domain, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_getuserdomgroups_done, req); + return req; +} + +static void winbindd_getuserdomgroups_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_getuserdomgroups_state *state = tevent_req_data( + req, struct winbindd_getuserdomgroups_state); + NTSTATUS status; + + status = wb_lookupusergroups_recv(subreq, state, &state->num_sids, + &state->sids); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + tevent_req_done(req); +} + +NTSTATUS winbindd_getuserdomgroups_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_getuserdomgroups_state *state = tevent_req_data( + req, struct winbindd_getuserdomgroups_state); + NTSTATUS status; + int i; + char *sidlist; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + + sidlist = talloc_strdup(response, ""); + if (sidlist == NULL) { + return NT_STATUS_NO_MEMORY; + } + for (i=0; inum_sids; i++) { + fstring tmp; + sidlist = talloc_asprintf_append_buffer( + sidlist, "%s\n", + sid_to_fstring(tmp, &state->sids[i])); + if (sidlist == NULL) { + return NT_STATUS_NO_MEMORY; + } + } + response->extra_data.data = sidlist; + response->length += talloc_get_size(sidlist); + response->data.num_entries = state->num_sids; + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_group.c b/source3/winbindd/winbindd_group.c index 0d3db1d83f..12067f553f 100644 --- a/source3/winbindd/winbindd_group.c +++ b/source3/winbindd/winbindd_group.c @@ -1815,32 +1815,6 @@ static void getusersids_recv(void *private_data, bool success, DOM_SID *sids, request_ok(state); } -void winbindd_getuserdomgroups(struct winbindd_cli_state *state) -{ - DOM_SID user_sid; - struct winbindd_domain *domain; - - /* Ensure null termination */ - state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - - if (!string_to_sid(&user_sid, state->request->data.sid)) { - DEBUG(1, ("Could not get convert sid %s from string\n", - state->request->data.sid)); - request_error(state); - return; - } - - /* Get info for the domain */ - if ((domain = find_domain_from_sid_noinit(&user_sid)) == NULL) { - DEBUG(0,("could not find domain entry for sid %s\n", - sid_string_dbg(&user_sid))); - request_error(state); - return; - } - - sendto_domain(state, domain); -} - enum winbindd_result winbindd_dual_getuserdomgroups(struct winbindd_domain *domain, struct winbindd_cli_state *state) { diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 42acb9eea6..ed416de954 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -751,5 +751,12 @@ struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx, NTSTATUS wb_lookupusergroups_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, int *num_sids, struct dom_sid **sids); +struct tevent_req *winbindd_getuserdomgroups_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_getuserdomgroups_recv(struct tevent_req *req, + struct winbindd_response *response); + + #endif /* _WINBINDD_PROTO_H_ */ -- cgit From 01ea26bf28ab697af03c7ebc3a1261c240fe1360 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 4 Aug 2009 16:22:42 -0400 Subject: s3:winbind: Add async wb_gettoken --- source3/Makefile.in | 1 + source3/winbindd/wb_gettoken.c | 218 ++++++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_proto.h | 5 + 3 files changed, 224 insertions(+) create mode 100644 source3/winbindd/wb_gettoken.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 3ebc3616c1..92ff64fbda 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1162,6 +1162,7 @@ WINBINDD_OBJ1 = \ winbindd/wb_lookupuseraliases.o \ winbindd/wb_lookupusergroups.o \ winbindd/wb_getpwsid.o \ + winbindd/wb_gettoken.o \ winbindd/winbindd_lookupsid.o \ winbindd/winbindd_lookupname.o \ winbindd/winbindd_sid_to_uid.o \ diff --git a/source3/winbindd/wb_gettoken.c b/source3/winbindd/wb_gettoken.c new file mode 100644 index 0000000000..26189e5a97 --- /dev/null +++ b/source3/winbindd/wb_gettoken.c @@ -0,0 +1,218 @@ +/* + Unix SMB/CIFS implementation. + async gettoken + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" +#include "librpc/gen_ndr/cli_wbint.h" + +struct wb_gettoken_state { + struct tevent_context *ev; + struct dom_sid usersid; + int num_sids; + struct dom_sid *sids; +}; + +static bool wb_add_rids_to_sids(TALLOC_CTX *mem_ctx, + int *pnum_sids, struct dom_sid **psids, + const struct dom_sid *domain_sid, + int num_rids, uint32_t *rids); + +static void wb_gettoken_gotgroups(struct tevent_req *subreq); +static void wb_gettoken_gotlocalgroups(struct tevent_req *subreq); +static void wb_gettoken_gotbuiltins(struct tevent_req *subreq); + +struct tevent_req *wb_gettoken_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const struct dom_sid *sid) +{ + struct tevent_req *req, *subreq; + struct wb_gettoken_state *state; + struct winbindd_domain *domain; + + req = tevent_req_create(mem_ctx, &state, struct wb_gettoken_state); + if (req == NULL) { + return NULL; + } + sid_copy(&state->usersid, sid); + state->ev = ev; + + domain = find_domain_from_sid_noinit(sid); + if (domain == NULL) { + DEBUG(5, ("Could not find domain from SID %s\n", + sid_string_dbg(sid))); + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return tevent_req_post(req, ev); + } + + subreq = wb_lookupusergroups_send(state, ev, domain, &state->usersid); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, wb_gettoken_gotgroups, req); + return req; +} + +static void wb_gettoken_gotgroups(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_gettoken_state *state = tevent_req_data( + req, struct wb_gettoken_state); + struct dom_sid *sids; + struct winbindd_domain *domain; + NTSTATUS status; + + status = wb_lookupusergroups_recv(subreq, state, &state->num_sids, + &state->sids); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + sids = talloc_realloc(state, state->sids, struct dom_sid, + state->num_sids + 1); + if (tevent_req_nomem(sids, req)) { + return; + } + memmove(&sids[1], &sids[0], state->num_sids * sizeof(sids[0])); + sid_copy(&sids[0], &state->usersid); + state->num_sids += 1; + state->sids = sids; + + /* + * Expand our domain's aliases + */ + domain = find_our_domain(); + if (domain == NULL) { + tevent_req_nterror(req, NT_STATUS_INTERNAL_ERROR); + return; + } + + subreq = wb_lookupuseraliases_send(state, state->ev, domain, + state->num_sids, state->sids); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_gettoken_gotlocalgroups, req); +} + +static void wb_gettoken_gotlocalgroups(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_gettoken_state *state = tevent_req_data( + req, struct wb_gettoken_state); + uint32_t num_rids; + uint32_t *rids; + struct winbindd_domain *domain; + NTSTATUS status; + + status = wb_lookupuseraliases_recv(subreq, state, &num_rids, &rids); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + domain = find_our_domain(); + if (!wb_add_rids_to_sids(state, &state->num_sids, &state->sids, + &domain->sid, num_rids, rids)) { + tevent_req_nterror(req, NT_STATUS_NO_MEMORY); + return; + } + TALLOC_FREE(rids); + + /* + * Now expand the builtin groups + */ + + domain = find_builtin_domain(); + if (domain == NULL) { + tevent_req_nterror(req, NT_STATUS_INTERNAL_ERROR); + return; + } + + subreq = wb_lookupuseraliases_send(state, state->ev, domain, + state->num_sids, state->sids); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, wb_gettoken_gotbuiltins, req); +} + +static void wb_gettoken_gotbuiltins(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_gettoken_state *state = tevent_req_data( + req, struct wb_gettoken_state); + uint32_t num_rids; + uint32_t *rids; + NTSTATUS status; + + status = wb_lookupuseraliases_recv(subreq, state, &num_rids, &rids); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + if (!wb_add_rids_to_sids(state, &state->num_sids, &state->sids, + &global_sid_Builtin, num_rids, rids)) { + tevent_req_nterror(req, NT_STATUS_NO_MEMORY); + return; + } + tevent_req_done(req); +} + +NTSTATUS wb_gettoken_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + int *num_sids, struct dom_sid **sids) +{ + struct wb_gettoken_state *state = tevent_req_data( + req, struct wb_gettoken_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + return status; + } + *num_sids = state->num_sids; + *sids = talloc_move(mem_ctx, &state->sids); + return NT_STATUS_OK; +} + +static bool wb_add_rids_to_sids(TALLOC_CTX *mem_ctx, + int *pnum_sids, struct dom_sid **psids, + const struct dom_sid *domain_sid, + int num_rids, uint32_t *rids) +{ + struct dom_sid *sids; + int i; + + sids = talloc_realloc(mem_ctx, *psids, struct dom_sid, + *pnum_sids + num_rids); + if (sids == NULL) { + return false; + } + for (i=0; i Date: Tue, 4 Aug 2009 16:26:07 -0400 Subject: s3:winbind: Convert WINBINDD_GETGROUPS to the new API --- source3/Makefile.in | 1 + source3/winbindd/winbindd.c | 3 +- source3/winbindd/winbindd_getgroups.c | 222 ++++++++++++++++++++++++++++++++++ source3/winbindd/winbindd_group.c | 172 -------------------------- source3/winbindd/winbindd_proto.h | 5 + 5 files changed, 230 insertions(+), 173 deletions(-) create mode 100644 source3/winbindd/winbindd_getgroups.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index 92ff64fbda..650e2081c7 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1174,6 +1174,7 @@ WINBINDD_OBJ1 = \ winbindd/winbindd_getpwuid.o \ winbindd/winbindd_getsidaliases.o \ winbindd/winbindd_getuserdomgroups.o \ + winbindd/winbindd_getgroups.o \ auth/token_util.o \ ../nsswitch/libwbclient/wb_reqtrans.o \ smbd/connection.o diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 1a5e958d38..348816b39c 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -431,7 +431,6 @@ static struct winbindd_dispatch_table { { WINBINDD_ENDPWENT, winbindd_endpwent, "ENDPWENT" }, { WINBINDD_GETPWENT, winbindd_getpwent, "GETPWENT" }, - { WINBINDD_GETGROUPS, winbindd_getgroups, "GETGROUPS" }, { WINBINDD_GETUSERSIDS, winbindd_getusersids, "GETUSERSIDS" }, /* Group functions */ @@ -533,6 +532,8 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = { winbindd_getsidaliases_send, winbindd_getsidaliases_recv }, { WINBINDD_GETUSERDOMGROUPS, "GETUSERDOMGROUPS", winbindd_getuserdomgroups_send, winbindd_getuserdomgroups_recv }, + { WINBINDD_GETGROUPS, "GETGROUPS", + winbindd_getgroups_send, winbindd_getgroups_recv }, { 0, NULL, NULL, NULL } }; diff --git a/source3/winbindd/winbindd_getgroups.c b/source3/winbindd/winbindd_getgroups.c new file mode 100644 index 0000000000..9e6465696e --- /dev/null +++ b/source3/winbindd/winbindd_getgroups.c @@ -0,0 +1,222 @@ +/* + Unix SMB/CIFS implementation. + async implementation of WINBINDD_GETGROUPS + Copyright (C) Volker Lendecke 2009 + + 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 "winbindd.h" + +struct winbindd_getgroups_state { + struct tevent_context *ev; + fstring domname; + fstring username; + struct dom_sid sid; + enum lsa_SidType type; + int num_sids; + struct dom_sid *sids; + int next_sid; + int num_gids; + gid_t *gids; +}; + +static void winbindd_getgroups_lookupname_done(struct tevent_req *subreq); +static void winbindd_getgroups_gettoken_done(struct tevent_req *subreq); +static void winbindd_getgroups_sid2gid_done(struct tevent_req *subreq); + +struct tevent_req *winbindd_getgroups_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request) +{ + struct tevent_req *req, *subreq; + struct winbindd_getgroups_state *state; + char *domuser, *mapped_user; + struct winbindd_domain *domain; + NTSTATUS status; + + req = tevent_req_create(mem_ctx, &state, + struct winbindd_getgroups_state); + if (req == NULL) { + return NULL; + } + state->ev = ev; + + /* Ensure null termination */ + request->data.username[sizeof(request->data.username)-1]='\0'; + + DEBUG(3, ("getgroups %s\n", request->data.username)); + + domuser = request->data.username; + + status = normalize_name_unmap(state, domuser, &mapped_user); + + if (NT_STATUS_IS_OK(status) + || NT_STATUS_EQUAL(status, NT_STATUS_FILE_RENAMED)) { + /* normalize_name_unmapped did something */ + domuser = mapped_user; + } + + if (!parse_domain_user(domuser, state->domname, state->username)) { + DEBUG(5, ("Could not parse domain user: %s\n", domuser)); + tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); + return tevent_req_post(req, ev); + } + + domain = find_domain_from_name_noinit(state->domname); + if (domain == NULL) { + /* Retry with DNS name */ + char *p = strchr(domuser, '@'); + if (p != NULL) { + domain = find_domain_from_name_noinit(p+1); + } + } + if (domain == NULL) { + DEBUG(7, ("could not find domain entry for domain %s\n", + state->domname)); + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return tevent_req_post(req, ev); + } + + if (lp_winbind_trusted_domains_only() && domain->primary) { + DEBUG(7,("winbindd_getgroups: My domain -- " + "rejecting getgroups() for %s\\%s.\n", + state->domname, state->username)); + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return tevent_req_post(req, ev); + } + + subreq = wb_lookupname_send(state, ev, state->domname, state->username, + LOOKUP_NAME_NO_NSS); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, winbindd_getgroups_lookupname_done, + req); + return req; +} + +static void winbindd_getgroups_lookupname_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_getgroups_state *state = tevent_req_data( + req, struct winbindd_getgroups_state); + NTSTATUS status; + + status = wb_lookupname_recv(subreq, &state->sid, &state->type); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + subreq = wb_gettoken_send(state, state->ev, &state->sid); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, winbindd_getgroups_gettoken_done, req); +} + +static void winbindd_getgroups_gettoken_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_getgroups_state *state = tevent_req_data( + req, struct winbindd_getgroups_state); + NTSTATUS status; + + status = wb_gettoken_recv(subreq, state, &state->num_sids, + &state->sids); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* + * Convert the group SIDs to gids. state->sids[0] contains the user + * sid, so start at index 1. + */ + + state->gids = talloc_array(state, gid_t, state->num_sids-1); + if (tevent_req_nomem(state->gids, req)) { + return; + } + state->num_gids = 0; + state->next_sid = 1; + + subreq = wb_sid2gid_send(state, state->ev, + &state->sids[state->next_sid]); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, winbindd_getgroups_sid2gid_done, req); +} + +static void winbindd_getgroups_sid2gid_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct winbindd_getgroups_state *state = tevent_req_data( + req, struct winbindd_getgroups_state); + NTSTATUS status; + + status = wb_sid2gid_recv(subreq, &state->gids[state->num_gids]); + TALLOC_FREE(subreq); + + /* + * In case of failure, just continue with the next gid + */ + if (NT_STATUS_IS_OK(status)) { + state->num_gids += 1; + } + state->next_sid += 1; + + if (state->next_sid >= state->num_sids) { + tevent_req_done(req); + return; + } + + subreq = wb_sid2gid_send(state, state->ev, + &state->sids[state->next_sid]); + if (tevent_req_nomem(subreq, req)) { + return; + } + tevent_req_set_callback(subreq, winbindd_getgroups_sid2gid_done, req); +} + +NTSTATUS winbindd_getgroups_recv(struct tevent_req *req, + struct winbindd_response *response) +{ + struct winbindd_getgroups_state *state = tevent_req_data( + req, struct winbindd_getgroups_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + DEBUG(5, ("Could not convert sid %s: %s\n", + sid_string_dbg(&state->sid), nt_errstr(status))); + return status; + } + + response->data.num_entries = state->num_gids; + + if (state->num_gids > 0) { + response->extra_data.data = talloc_move(response, + &state->gids); + response->length += state->num_gids * sizeof(gid_t); + } + return NT_STATUS_OK; +} diff --git a/source3/winbindd/winbindd_group.c b/source3/winbindd/winbindd_group.c index 12067f553f..c1a898d73b 100644 --- a/source3/winbindd/winbindd_group.c +++ b/source3/winbindd/winbindd_group.c @@ -1559,178 +1559,6 @@ struct getgroups_state { size_t num_token_gids; }; -static void getgroups_usersid_recv(void *private_data, bool success, - const DOM_SID *sid, enum lsa_SidType type); -static void getgroups_tokensids_recv(void *private_data, bool success, - DOM_SID *token_sids, size_t num_token_sids); -static void getgroups_sid2gid_recv(void *private_data, bool success, gid_t gid); - -void winbindd_getgroups(struct winbindd_cli_state *state) -{ - struct getgroups_state *s; - char *real_name = NULL; - NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; - - /* Ensure null termination */ - state->request->data.username - [sizeof(state->request->data.username)-1]='\0'; - - DEBUG(3, ("[%5lu]: getgroups %s\n", (unsigned long)state->pid, - state->request->data.username)); - - /* Parse domain and username */ - - s = TALLOC_P(state->mem_ctx, struct getgroups_state); - if (s == NULL) { - DEBUG(0, ("talloc failed\n")); - request_error(state); - return; - } - - s->state = state; - - nt_status = normalize_name_unmap(state->mem_ctx, - state->request->data.username, - &real_name); - - /* Reset the real_name pointer if we didn't do anything - productive in the above call */ - if (!NT_STATUS_IS_OK(nt_status) && - !NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) - { - real_name = state->request->data.username; - } - - if (!parse_domain_user_talloc(state->mem_ctx, real_name, - &s->domname, &s->username)) { - DEBUG(5, ("Could not parse domain user: %s\n", - real_name)); - - /* error out if we do not have nested group support */ - - if ( !lp_winbind_nested_groups() ) { - request_error(state); - return; - } - - s->domname = talloc_strdup(state->mem_ctx, - get_global_sam_name()); - s->username = talloc_strdup(state->mem_ctx, - state->request->data.username); - } - - /* Get info for the domain (either by short domain name or - DNS name in the case of a UPN) */ - - s->domain = find_domain_from_name_noinit(s->domname); - if (!s->domain) { - char *p = strchr(s->username, '@'); - - if (p) { - s->domain = find_domain_from_name_noinit(p+1); - } - - } - - if (s->domain == NULL) { - DEBUG(7, ("could not find domain entry for domain %s\n", - s->domname)); - request_error(state); - return; - } - - if ( s->domain->primary && lp_winbind_trusted_domains_only()) { - DEBUG(7,("winbindd_getgroups: My domain -- rejecting " - "getgroups() for %s\\%s.\n", s->domname, - s->username)); - request_error(state); - return; - } - - /* Get rid and name type from name. The following costs 1 packet */ - - winbindd_lookupname_async(state->mem_ctx, - s->domname, s->username, - getgroups_usersid_recv, - WINBINDD_GETGROUPS, s); -} - -static void getgroups_usersid_recv(void *private_data, bool success, - const DOM_SID *sid, enum lsa_SidType type) -{ - struct getgroups_state *s = - (struct getgroups_state *)private_data; - - if ((!success) || - ((type != SID_NAME_USER) && (type != SID_NAME_COMPUTER))) { - request_error(s->state); - return; - } - - sid_copy(&s->user_sid, sid); - - winbindd_gettoken_async(s->state->mem_ctx, &s->user_sid, - getgroups_tokensids_recv, s); -} - -static void getgroups_tokensids_recv(void *private_data, bool success, - DOM_SID *token_sids, size_t num_token_sids) -{ - struct getgroups_state *s = - (struct getgroups_state *)private_data; - - /* We need at least the user sid and the primary group in the token, - * otherwise it's an error */ - - if ((!success) || (num_token_sids < 2)) { - request_error(s->state); - return; - } - - s->token_sids = token_sids; - s->num_token_sids = num_token_sids; - s->i = 0; - - s->token_gids = NULL; - s->num_token_gids = 0; - - getgroups_sid2gid_recv(s, False, 0); -} - -static void getgroups_sid2gid_recv(void *private_data, bool success, gid_t gid) -{ - struct getgroups_state *s = - (struct getgroups_state *)private_data; - - if (success) { - if (!add_gid_to_array_unique(s->state->mem_ctx, gid, - &s->token_gids, - &s->num_token_gids)) { - return; - } - } - - if (s->i < s->num_token_sids) { - const DOM_SID *sid = &s->token_sids[s->i]; - s->i += 1; - - if (sid_equal(sid, &s->user_sid)) { - getgroups_sid2gid_recv(s, False, 0); - return; - } - - winbindd_sid2gid_async(s->state->mem_ctx, sid, - getgroups_sid2gid_recv, s); - return; - } - - s->state->response->data.num_entries = s->num_token_gids; - if (s->num_token_gids) { - s->state->response->extra_data.data = s->token_gids; - s->state->response->length += s->num_token_gids * sizeof(gid_t); - } - request_ok(s->state); -} /* Get user supplementary sids. This is equivalent to the winbindd_getgroups() function but it involves a SID->SIDs mapping diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index df6df12dc3..a9a374a532 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -761,6 +761,11 @@ struct tevent_req *wb_gettoken_send(TALLOC_CTX *mem_ctx, const struct dom_sid *sid); NTSTATUS wb_gettoken_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, int *num_sids, struct dom_sid **sids); +struct tevent_req *winbindd_getgroups_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct winbindd_request *request); +NTSTATUS winbindd_getgroups_recv(struct tevent_req *req, + struct winbindd_response *response); -- cgit From e2aa38a20175430ae1ef7540a8ca7cdf0c4e955e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 6 Aug 2009 07:38:43 +1000 Subject: define uwrap_enabled() on Samba3 s3 doesn't use uwrap yet, but it uses some common coe in lib/, and so needs a dummy version of the uwrap_enabled() macro --- source3/include/includes.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source3') diff --git a/source3/include/includes.h b/source3/include/includes.h index 8fb240f26c..a636716c22 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -1112,4 +1112,7 @@ void in6_addr_to_sockaddr_storage(struct sockaddr_storage *ss, struct in6_addr ip); #endif +/* samba3 doesn't use uwrap yet */ +#define uwrap_enabled() 0 + #endif /* _INCLUDES_H */ -- cgit From b97d85c5e4db00a6cfc0a191907e88d2623c6681 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 6 Aug 2009 07:57:17 +1000 Subject: set uidwrappersrcdir this is needed for the combined build --- source3/samba4.mk | 1 + 1 file changed, 1 insertion(+) (limited to 'source3') diff --git a/source3/samba4.mk b/source3/samba4.mk index 653ae25464..a8cebf5a39 100644 --- a/source3/samba4.mk +++ b/source3/samba4.mk @@ -88,6 +88,7 @@ libcmdlinesrcdir := $(samba4srcdir)/lib/cmdline poptsrcdir := $(samba4srcdir)/../lib/popt socketwrappersrcdir := $(samba4srcdir)/../lib/socket_wrapper nsswrappersrcdir := $(samba4srcdir)/../lib/nss_wrapper +uidwrappersrcdir := $(samba4srcdir)/../lib/uid_wrapper libstreamsrcdir := $(samba4srcdir)/lib/stream libutilsrcdir := $(samba4srcdir)/../lib/util libtdrsrcdir := ../lib/tdr -- cgit From 54dffbea663ecf4542d6c5e30da6e346d5d60424 Mon Sep 17 00:00:00 2001 From: Karolin Seeger Date: Thu, 6 Aug 2009 10:06:29 +0200 Subject: s3/smbldap: Fix typo in debug message. Karolin --- source3/lib/smbldap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3') diff --git a/source3/lib/smbldap.c b/source3/lib/smbldap.c index 4833b96c5f..c96801a72b 100644 --- a/source3/lib/smbldap.c +++ b/source3/lib/smbldap.c @@ -1449,7 +1449,7 @@ int smbldap_search_paged(struct smbldap_state *ldap_state, goto done; } - DEBUG(3,("smbldap_search_paged: search was successfull\n")); + DEBUG(3,("smbldap_search_paged: search was successful\n")); rc = ldap_parse_result(ldap_state->ldap_struct, *res, NULL, NULL, NULL, NULL, &rcontrols, 0); -- cgit From 857140a79fb9cd186ed7f33aaf92934080256a3c Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Fri, 7 Aug 2009 13:42:51 +0800 Subject: Unable to browse DFS when using kerberos Signed-off-by: Bo Yang --- source3/libsmb/libsmb_context.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'source3') diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c index 8b22ee5023..78c9a551a6 100644 --- a/source3/libsmb/libsmb_context.c +++ b/source3/libsmb/libsmb_context.c @@ -692,22 +692,28 @@ void smbc_set_credentials_with_fallback(SMBCCTX *context, { smbc_bool use_kerberos = false; const char *signing_state = "off"; - struct user_auth_info *auth_info = user_auth_info_init(NULL); + struct user_auth_info *auth_info = NULL; - if (auth_info) { + if (! context) { + + return; + } + + if (! workgroup || ! *workgroup) { + workgroup = smbc_getWorkgroup(context); } - if (! context || - ! workgroup || ! *workgroup || - ! user || ! *user || - ! password || ! *password) { + if (! user) { + user = smbc_getUser(context); + } - return; + if (! password) { + password = ""; } auth_info = user_auth_info_init(NULL); - if (auth_info) { + if (! auth_info) { DEBUG(0, ("smbc_set_credentials_with_fallback: allocation fail\n")); return; } -- cgit From e76af514c3a99a6c65398a9d7a99012ff73583eb Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 6 Aug 2009 12:50:16 -0700 Subject: Put SMB_INFO_STANDARD back into setfileinfo, but do it right this time :-). Jeremy. --- source3/smbd/trans2.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'source3') diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 184a858097..21c5062257 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -6109,6 +6109,41 @@ static NTSTATUS smb_set_file_basic_info(connection_struct *conn, true); } +/**************************************************************************** + Deal with SMB_INFO_STANDARD. +****************************************************************************/ + +static NTSTATUS smb_set_info_standard(connection_struct *conn, + const char *pdata, + int total_data, + files_struct *fsp, + const struct smb_filename *smb_fname) +{ + struct smb_file_time ft; + + ZERO_STRUCT(ft); + + if (total_data < 12) { + return NT_STATUS_INVALID_PARAMETER; + } + + /* create time */ + ft.create_time = convert_time_t_to_timespec(srv_make_unix_date2(pdata)); + /* access time */ + ft.atime = convert_time_t_to_timespec(srv_make_unix_date2(pdata+4)); + /* write time */ + ft.mtime = convert_time_t_to_timespec(srv_make_unix_date2(pdata+8)); + + DEBUG(10,("smb_set_info_standard: file %s\n", + smb_fname_str_dbg(smb_fname))); + + return smb_set_file_time(conn, + fsp, + smb_fname, + &ft, + true); +} + /**************************************************************************** Deal with SMB_SET_FILE_ALLOCATION_INFO. ****************************************************************************/ @@ -7086,6 +7121,16 @@ NTSTATUS smbd_do_setfilepathinfo(connection_struct *conn, switch (info_level) { + case SMB_INFO_STANDARD: + { + status = smb_set_info_standard(conn, + pdata, + total_data, + fsp, + smb_fname); + break; + } + case SMB_INFO_SET_EA: { status = smb_info_set_ea(conn, -- cgit From 650445fc3cb8f61fdb6e570e46226fff101bb174 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 6 Aug 2009 15:09:01 -0700 Subject: Fix bug #5714 - NetBSD, ENODATA undefined, at least some releases. Jeremy. --- source3/include/includes.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source3') diff --git a/source3/include/includes.h b/source3/include/includes.h index a636716c22..2d82e6e57e 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -207,7 +207,11 @@ typedef int ber_int_t; #endif #ifndef ENOATTR +#if defined(ENODATA) #define ENOATTR ENODATA +#else +#define ENOATTR ENOENT +#endif #endif /* mutually exclusive (SuSE 8.2) */ -- cgit From 890dfe003c91f8df737e5e2e4e440e1a9f416ae8 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 6 Aug 2009 15:47:05 -0700 Subject: Remove a const warning. Jeremy. --- source3/include/proto.h | 3 ++- source3/smbd/posix_acls.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index 00cfd6129e..ccd8746603 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6745,7 +6745,8 @@ int chmod_acl(connection_struct *conn, const char *name, mode_t mode); int inherit_access_posix_acl(connection_struct *conn, const char *inherit_from_dir, const char *name, mode_t mode); int fchmod_acl(files_struct *fsp, mode_t mode); -bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf, +bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, + const SMB_STRUCT_STAT *psbuf, uint16 num_def_acls, const char *pdata); bool set_unix_posix_acl(connection_struct *conn, files_struct *fsp, const char *fname, uint16 num_acls, const char *pdata); SEC_DESC *get_nt_acl_no_snum( TALLOC_CTX *ctx, const char *fname); diff --git a/source3/smbd/posix_acls.c b/source3/smbd/posix_acls.c index 0a3b0dff75..8c5393871f 100644 --- a/source3/smbd/posix_acls.c +++ b/source3/smbd/posix_acls.c @@ -4360,7 +4360,7 @@ static SMB_ACL_T create_posix_acl_from_wire(connection_struct *conn, uint16 num_ on the directory. ****************************************************************************/ -bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf, +bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, const SMB_STRUCT_STAT *psbuf, uint16 num_def_acls, const char *pdata) { SMB_ACL_T def_acl = NULL; -- cgit From 457191e9f396898b8a511cf860f24986f36fd879 Mon Sep 17 00:00:00 2001 From: Tim Prouty Date: Thu, 6 Aug 2009 15:53:33 -0700 Subject: s3: Fix a bug in renames of directories Recently code was added to match windows semantics of denying the rename of a directory if there are open files underneath it. This does partly match windows semantics, but it turns out the rename should be allowed if the open file handle is for the directory being renamed, or for a stream on the directory being renamed. This patch refines the check to better follow these rename semantics. --- source3/smbd/files.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'source3') diff --git a/source3/smbd/files.c b/source3/smbd/files.c index a170f774fe..146d809738 100644 --- a/source3/smbd/files.c +++ b/source3/smbd/files.c @@ -404,14 +404,15 @@ bool file_find_subpath(files_struct *dir_fsp) { files_struct *fsp; size_t dlen; - char *d_fullname; + char *d_fullname = NULL; + bool ret = false; d_fullname = talloc_asprintf(talloc_tos(), "%s/%s", dir_fsp->conn->connectpath, dir_fsp->fsp_name->base_name); if (!d_fullname) { - return false; + goto out; } dlen = strlen(d_fullname); @@ -429,15 +430,27 @@ bool file_find_subpath(files_struct *dir_fsp) fsp->fsp_name->base_name); if (strnequal(d_fullname, d1_fullname, dlen)) { - TALLOC_FREE(d_fullname); + int d1_len = strlen(d1_fullname); + + /* + * If the open file is a second file handle to the + * same name or is a stream on the original file, then + * don't return true. + */ + if (d1_len == dlen) { + TALLOC_FREE(d1_fullname); + continue; + } + TALLOC_FREE(d1_fullname); - return true; + ret = true; + goto out; } TALLOC_FREE(d1_fullname); } - + out: TALLOC_FREE(d_fullname); - return false; + return ret; } /**************************************************************************** -- cgit From b9fb8da59148f574b03e44748fca7800f940db7a Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Sat, 8 Aug 2009 06:10:37 +0800 Subject: s3: Fix nss info substitution Signed-off-by: Bo Yang --- source3/winbindd/wb_getpwsid.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/wb_getpwsid.c b/source3/winbindd/wb_getpwsid.c index a823ba3953..fc696cb9a1 100644 --- a/source3/winbindd/wb_getpwsid.c +++ b/source3/winbindd/wb_getpwsid.c @@ -191,7 +191,7 @@ static void wb_getpwsid_sid2gid_done(struct tevent_req *subreq) fstrcpy(state->pw->pw_passwd, "*"); fstrcpy(state->pw->pw_gecos, state->userinfo->full_name); - if (!fillup_pw_field(lp_template_homedir(), state->pw->pw_name, + if (!fillup_pw_field(lp_template_homedir(), username, state->user_domain->name, state->pw->pw_uid, state->pw->pw_gid, state->userinfo->homedir, state->pw->pw_dir)) { @@ -200,9 +200,9 @@ static void wb_getpwsid_sid2gid_done(struct tevent_req *subreq) return; } - if (!fillup_pw_field(lp_template_homedir(), state->pw->pw_name, + if (!fillup_pw_field(lp_template_shell(), state->pw->pw_name, state->user_domain->name, state->pw->pw_uid, - state->pw->pw_gid, state->userinfo->homedir, + state->pw->pw_gid, state->userinfo->shell, state->pw->pw_shell)) { DEBUG(5, ("Could not compose shell\n")); tevent_req_nterror(req, NT_STATUS_NO_MEMORY); -- cgit From 9be14ed78d9fd4750772079a4f4173a0dee95cff Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Sun, 2 Aug 2009 10:25:26 +0200 Subject: s3 net: i18n support for net rap --- source3/po/genmsg | 2 +- source3/utils/net_rap.c | 453 ++++++++++++++++++++++++------------------------ 2 files changed, 229 insertions(+), 226 deletions(-) (limited to 'source3') diff --git a/source3/po/genmsg b/source3/po/genmsg index 3dfc7e05c7..305caa755e 100755 --- a/source3/po/genmsg +++ b/source3/po/genmsg @@ -29,7 +29,7 @@ add_basedir_to_filelist() { NET_FILES=`add_basedir_to_filelist ../utils net.c net_ads.c net_ads_gpo.c \ net_afs.c net_cache.c net_conf.c net_dom.c net_eventlog.c \ net_file.c net_group.c net_groupmap.c net_help.c net_help_common.c \ - net_idmap.c net_join.c net_lookup.c net_lua.c` + net_idmap.c net_join.c net_lookup.c net_lua.c net_rap.c` FILES="../web/swat.c ../web/statuspage.c ../param/loadparm.c ${NET_FILES}" LANGS='en ja tr pl fr de it ru' diff --git a/source3/utils/net_rap.c b/source3/utils/net_rap.c index a43840aac4..eecb669fdb 100644 --- a/source3/utils/net_rap.c +++ b/source3/utils/net_rap.c @@ -36,7 +36,7 @@ static int errmsg_not_implemented(void) { - d_printf("\nNot implemented\n"); + d_printf(_("\nNot implemented\n")); return 0; } @@ -58,11 +58,11 @@ static void file_fn(const char * pPath, const char * pUser, uint16 perms, static void one_file_fn(const char *pPath, const char *pUser, uint16 perms, uint16 locks, uint32 id) { - d_printf("File ID %d\n" - "User name %s\n" - "Locks 0x%-4.2x\n" - "Path %s\n" - "Permissions 0x%x\n", + d_printf(_("File ID %d\n" + "User name %s\n" + "Locks 0x%-4.2x\n" + "Path %s\n" + "Permissions 0x%x\n"), id, pUser, locks, pPath, perms); } @@ -111,13 +111,13 @@ static int rap_file_user(struct net_context *c, int argc, const char **argv) /* list open files */ - d_printf("\nEnumerating open files on remote server:\n\n" - "\nFileId Opened by Perms Locks Path \n" - "------ --------- ----- ----- ---- \n"); + d_printf(_("\nEnumerating open files on remote server:\n\n" + "\nFileId Opened by Perms Locks Path \n" + "------ --------- ----- ----- ---- \n")); ret = cli_NetFileEnum(cli, argv[0], NULL, file_fn); if (ret == -1) - d_printf("\nOperation not supported by server!\n\n"); + d_printf(_("\nOperation not supported by server!\n\n")); cli_shutdown(cli); return ret; @@ -130,25 +130,25 @@ int net_rap_file(struct net_context *c, int argc, const char **argv) "close", rap_file_close, NET_TRANSPORT_RAP, - "Close specified file on server", - "net rap file close\n" - " Close specified file on server" + N_("Close specified file on server"), + N_("net rap file close\n" + " Close specified file on server") }, { "user", rap_file_user, NET_TRANSPORT_RAP, - "List all files opened by username", - "net rap file user\n" - " List all files opened by username" + N_("List all files opened by username"), + N_("net rap file user\n" + " List all files opened by username") }, { "info", rap_file_info, NET_TRANSPORT_RAP, - "Display info about an opened file", - "net rap file info\n" - " Display info about an opened file" + N_("Display info about an opened file"), + N_("net rap file info\n" + " Display info about an opened file") }, {NULL, NULL, 0, NULL, NULL} }; @@ -158,9 +158,10 @@ int net_rap_file(struct net_context *c, int argc, const char **argv) int ret; if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rap file\n" - " List all open files on rempte server\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rap file\n" + " List all open files on rempte " + "server\n")); net_display_usage_from_functable(func); return 0; } @@ -170,13 +171,13 @@ int net_rap_file(struct net_context *c, int argc, const char **argv) /* list open files */ - d_printf("\nEnumerating open files on remote server:\n\n" - "\nFileId Opened by Perms Locks Path \n" - "------ --------- ----- ----- ---- \n"); + d_printf(_("\nEnumerating open files on remote server:\n\n" + "\nFileId Opened by Perms Locks Path\n" + "------ --------- ----- ----- ----\n")); ret = cli_NetFileEnum(cli, NULL, NULL, file_fn); if (ret == -1) - d_printf("\nOperation not supported by server!\n\n"); + d_printf(_("\nOperation not supported by server!\n\n")); cli_shutdown(cli); return ret; @@ -239,7 +240,7 @@ static int rap_share_add(struct net_context *c, int argc, const char **argv) sharename = SMB_STRDUP(argv[0]); p = strchr(sharename, '='); if (p == NULL) { - d_printf("Server path not specified\n"); + d_printf(_("Server path not specified\n")); SAFE_FREE(sharename); return net_rap_share_usage(c, argc, argv); } @@ -269,26 +270,26 @@ int net_rap_share(struct net_context *c, int argc, const char **argv) "delete", rap_share_delete, NET_TRANSPORT_RAP, - "Delete a share from server", - "net rap share delete\n" - " Delete a share from server" + N_("Delete a share from server"), + N_("net rap share delete\n" + " Delete a share from server") }, { "close", rap_share_delete, NET_TRANSPORT_RAP, - "Delete a share from server", - "net rap share close\n" - " Delete a share from server\n" - " Alias for net rap share delete" + N_("Delete a share from server"), + N_("net rap share close\n" + " Delete a share from server\n" + " Alias for net rap share delete") }, { "add", rap_share_add, NET_TRANSPORT_RAP, - "Add a share to server", - "net rap share add\n" - " Add a share to server" + N_("Add a share to server"), + N_("net rap share add\n" + " Add a share to server") }, {NULL, NULL, 0, NULL, NULL} }; @@ -298,9 +299,9 @@ int net_rap_share(struct net_context *c, int argc, const char **argv) int ret; if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rap share\n" - " List all shares on remote server\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rap share\n" + " List all shares on remote server\n")); net_display_usage_from_functable(func); return 0; } @@ -309,10 +310,10 @@ int net_rap_share(struct net_context *c, int argc, const char **argv) return -1; if (c->opt_long_list_entries) { - d_printf( + d_printf(_( "\nEnumerating shared resources (exports) on remote server:\n\n" "\nShare name Type Description\n" - "---------- ---- -----------\n"); + "---------- ---- -----------\n")); ret = cli_RNetShareEnum(cli, long_share_fn, NULL); } else { ret = cli_RNetShareEnum(cli, share_fn, NULL); @@ -326,17 +327,17 @@ int net_rap_share(struct net_context *c, int argc, const char **argv) int net_rap_session_usage(struct net_context *c, int argc, const char **argv) { - d_printf( + d_printf(_( "\nnet rap session [misc. options] [targets]" - "\n\tenumerates all active SMB/CIFS sessions on target server\n"); - d_printf( + "\n\tenumerates all active SMB/CIFS sessions on target server\n")); + d_printf(_( "\nnet rap session DELETE [misc. options] [targets] \n" "\tor" "\nnet rap session CLOSE [misc. options] [targets]" - "\n\tDeletes (closes) a session from specified client to server\n"); - d_printf( + "\n\tDeletes (closes) a session from specified client to server\n")); + d_printf(_( "\nnet rap session INFO " - "\n\tEnumerates all open files in specified session\n"); + "\n\tEnumerates all open files in specified session\n")); net_common_flags_usage(c, argc, argv); return -1; @@ -365,14 +366,14 @@ static void display_session_func(const char *wsname, const char *username, int shrs = sess_time / 3600; int smin = (sess_time / 60) % 60; int ssec = sess_time % 60; - d_printf("User name %-20.20s\n" - "Computer %-20.20s\n" - "Guest logon %-20.20s\n" - "Client Type %-40.40s\n" - "Sess time %2.2d:%2.2d:%2.2d\n" - "Idle time %2.2d:%2.2d:%2.2d\n", + d_printf(_("User name %-20.20s\n" + "Computer %-20.20s\n" + "Guest logon %-20.20s\n" + "Client Type %-40.40s\n" + "Sess time %2.2d:%2.2d:%2.2d\n" + "Idle time %2.2d:%2.2d:%2.2d\n"), username, wsname, - (user_flags&0x0)?"yes":"no", clitype, + (user_flags&0x0)?_("yes"):_("no"), clitype, shrs, smin, ssec, ihrs, imin, isec); } @@ -404,8 +405,8 @@ static int rap_session_info(struct net_context *c, int argc, const char **argv) return ret; } - d_printf("Share name Type # Opens\n-------------------------" - "-----------------------------------------------------\n"); + d_printf(_("Share name Type # Opens\n-------------------------" + "-----------------------------------------------------\n")); ret = cli_NetConnectionEnum(cli, sessname, display_conns_func); cli_shutdown(cli); return ret; @@ -434,26 +435,26 @@ int net_rap_session(struct net_context *c, int argc, const char **argv) "info", rap_session_info, NET_TRANSPORT_RAP, - "Display information about session", - "net rap session info\n" - " Display information about session" + N_("Display information about session"), + N_("net rap session info\n" + " Display information about session") }, { "delete", rap_session_delete, NET_TRANSPORT_RAP, - "Close specified session", - "net rap session delete\n" - " Close specified session\n" - " Alias for net rap session close" + N_("Close specified session"), + N_("net rap session delete\n" + " Close specified session\n" + " Alias for net rap session close") }, { "close", rap_session_delete, NET_TRANSPORT_RAP, - "Close specified session", - "net rap session close\n" - " Close specified session" + N_("Close specified session"), + N_("net rap session close\n" + " Close specified session") }, {NULL, NULL, 0, NULL, NULL} }; @@ -463,9 +464,10 @@ int net_rap_session(struct net_context *c, int argc, const char **argv) int ret; if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rap session\n" - " List all open sessions on remote server\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rap session\n" + " List all open sessions on remote " + "server\n")); net_display_usage_from_functable(func); return 0; } @@ -473,10 +475,10 @@ int net_rap_session(struct net_context *c, int argc, const char **argv) if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli))) return -1; - d_printf("Computer User name " - "Client Type Opens Idle time\n" - "------------------------------------------" - "------------------------------------\n"); + d_printf(_("Computer User name " + "Client Type Opens Idle time\n" + "------------------------------------------" + "------------------------------------\n")); ret = cli_NetSessionEnum(cli, list_sessions_func); cli_shutdown(cli); @@ -501,9 +503,9 @@ static int net_rap_server_name(struct net_context *c, int argc, const char *argv char *name; if (c->display_usage) { - d_printf("Usage:\n" - "net rap server name\n" - " Get the name of the server\n"); + d_printf(_("Usage:\n" + "net rap server name\n" + " Get the name of the server\n")); return 0; } @@ -511,12 +513,12 @@ static int net_rap_server_name(struct net_context *c, int argc, const char *argv return -1; if (!cli_get_server_name(NULL, cli, &name)) { - d_fprintf(stderr, "cli_get_server_name failed\n"); + d_fprintf(stderr, _("cli_get_server_name failed\n")); cli_shutdown(cli); return -1; } - d_printf("Server name = %s\n", name); + d_printf(_("Server name = %s\n"), name); TALLOC_FREE(name); cli_shutdown(cli); @@ -530,18 +532,18 @@ static int net_rap_server_domain(struct net_context *c, int argc, int ret; if (c->display_usage) { - d_printf("Usage:\n" - "net rap server domain\n" - " Enumerate servers in this domain/workgroup\n"); + d_printf(_("Usage:\n" + "net rap server domain\n" + " Enumerate servers in this domain/workgroup\n")); return 0; } if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli))) return -1; - d_printf("\nEnumerating servers in this domain or workgroup: \n\n" - "\tServer name Server description\n" - "\t------------- ----------------------------\n"); + d_printf(_("\nEnumerating servers in this domain or workgroup: \n\n" + "\tServer name Server description\n" + "\t------------- ----------------------------\n")); ret = cli_NetServerEnum(cli, cli->server_domain, SV_TYPE_ALL, display_server_func,NULL); @@ -556,17 +558,17 @@ int net_rap_server(struct net_context *c, int argc, const char **argv) "name", net_rap_server_name, NET_TRANSPORT_RAP, - "Get the name of the server", - "net rap server name\n" - " Get the name of the server" + N_("Get the name of the server"), + N_("net rap server name\n" + " Get the name of the server") }, { "domain", net_rap_server_domain, NET_TRANSPORT_RAP, - "Get the servers in this domain/workgroup", - "net rap server domain\n" - " Get the servers in this domain/workgroup" + N_("Get the servers in this domain/workgroup"), + N_("net rap server domain\n" + " Get the servers in this domain/workgroup") }, {NULL, NULL, 0, NULL, NULL} }; @@ -579,8 +581,8 @@ int net_rap_server(struct net_context *c, int argc, const char **argv) int net_rap_domain_usage(struct net_context *c, int argc, const char **argv) { - d_printf("net rap domain [misc. options] [target]\n\tlists the" - " domains or workgroups visible on the current network\n"); + d_printf(_("net rap domain [misc. options] [target]\n\tlists the" + " domains or workgroups visible on the current network\n")); net_common_flags_usage(c, argc, argv); return -1; @@ -597,9 +599,9 @@ int net_rap_domain(struct net_context *c, int argc, const char **argv) if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli))) return -1; - d_printf("\nEnumerating domains:\n\n" - "\tDomain name Server name of Browse Master\n" - "\t------------- ----------------------------\n"); + d_printf(_("\nEnumerating domains:\n\n" + "\tDomain name Server name of Browse Master\n" + "\t------------- ----------------------------\n")); ret = cli_NetServerEnum(cli, cli->server_domain, SV_TYPE_DOMAIN_ENUM, display_server_func,NULL); @@ -609,16 +611,16 @@ int net_rap_domain(struct net_context *c, int argc, const char **argv) int net_rap_printq_usage(struct net_context *c, int argc, const char **argv) { - d_printf( + d_printf(_( "net rap printq [misc. options] [targets]\n" "\tor\n" "net rap printq info [] [misc. options] [targets]\n" "\tlists the specified queue and jobs on the target server.\n" - "\tIf the queue name is not specified, all queues are listed.\n\n"); - d_printf( + "\tIf the queue name is not specified, all queues are listed.\n\n")); + d_printf(_( "net rap printq delete [] [misc. options] [targets]\n" "\tdeletes the specified job number on the target server, or the\n" - "\tprinter queue if no job number is specified\n"); + "\tprinter queue if no job number is specified\n")); net_common_flags_usage(c, argc, argv); @@ -630,24 +632,24 @@ static void enum_queue(const char *queuename, uint16 pri, uint16 start, const char *dest, const char *qparms, const char *qcomment, uint16 status, uint16 jobcount) { - d_printf("%-17.17s Queue %5d jobs ", + d_printf(_("%-17.17s Queue %5d jobs "), queuename, jobcount); switch (status) { case 0: - d_printf("*Printer Active*\n"); + d_printf(_("*Printer Active*\n")); break; case 1: - d_printf("*Printer Paused*\n"); + d_printf(_("*Printer Paused*\n")); break; case 2: - d_printf("*Printer error*\n"); + d_printf(_("*Printer error*\n")); break; case 3: - d_printf("*Delete Pending*\n"); + d_printf(_("*Delete Pending*\n")); break; default: - d_printf("**UNKNOWN STATUS**\n"); + d_printf(_("**UNKNOWN STATUS**\n")); } } @@ -661,27 +663,27 @@ static void enum_jobs(uint16 jobid, const char *ownername, ownername, jobid, jobsize); switch (status) { case 0: - d_printf("Waiting\n"); + d_printf(_("Waiting\n")); break; case 1: - d_printf("Held in queue\n"); + d_printf(_("Held in queue\n")); break; case 2: - d_printf("Spooling\n"); + d_printf(_("Spooling\n")); break; case 3: - d_printf("Printing\n"); + d_printf(_("Printing\n")); break; default: - d_printf("**UNKNOWN STATUS**\n"); + d_printf(_("**UNKNOWN STATUS**\n")); } } #define PRINTQ_ENUM_DISPLAY \ - "Print queues at \\\\%s\n\n"\ - "Name Job # Size Status\n\n"\ - "------------------------------------------------------------------"\ - "-------------\n" + _("Print queues at \\\\%s\n\n"\ + "Name Job # Size Status\n\n"\ + "------------------------------------------------------------------"\ + "-------------\n") static int rap_printq_info(struct net_context *c, int argc, const char **argv) { @@ -726,27 +728,28 @@ int net_rap_printq(struct net_context *c, int argc, const char **argv) "info", rap_printq_info, NET_TRANSPORT_RAP, - "Display info about print queues and jobs", - "net rap printq info [queue]\n" - " Display info about print jobs in queue.\n" - " If queue is not specified, all queues are listed" + N_("Display info about print queues and jobs"), + N_("net rap printq info [queue]\n" + " Display info about print jobs in queue.\n" + " If queue is not specified, all queues are " + "listed") }, { "delete", rap_printq_delete, NET_TRANSPORT_RAP, - "Delete print job(s)", - "net rap printq delete\n" - " Delete print job(s)" + N_("Delete print job(s)"), + N_("net rap printq delete\n" + " Delete print job(s)") }, {NULL, NULL, 0, NULL, NULL} }; if (argc == 0) { if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rap printq\n" - " List the print queue\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rap printq\n" + " List the print queue\n")); net_display_usage_from_functable(func); return 0; } @@ -858,26 +861,26 @@ int net_rap_user(struct net_context *c, int argc, const char **argv) "add", rap_user_add, NET_TRANSPORT_RAP, - "Add specified user", - "net rap user add\n" - " Add specified user" + N_("Add specified user"), + N_("net rap user add\n" + " Add specified user") }, { "info", rap_user_info, NET_TRANSPORT_RAP, - "List domain groups of specified user", - "net rap user info\n" - " List domain groups of specified user" + N_("List domain groups of specified user"), + N_("net rap user info\n" + " List domain groups of specified user") }, { "delete", rap_user_delete, NET_TRANSPORT_RAP, - "Remove specified user", - "net rap user delete\n" - " Remove specified user" + N_("Remove specified user"), + N_("net rap user delete\n" + " Remove specified user") }, {NULL, NULL, 0, NULL, NULL} }; @@ -885,9 +888,9 @@ int net_rap_user(struct net_context *c, int argc, const char **argv) if (argc == 0) { struct cli_state *cli; if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rap user\n" - " List all users\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rap user\n" + " List all users\n")); net_display_usage_from_functable(func); return 0; } @@ -895,8 +898,8 @@ int net_rap_user(struct net_context *c, int argc, const char **argv) if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli))) goto done; if (c->opt_long_list_entries) { - d_printf("\nUser name Comment" - "\n-----------------------------\n"); + d_printf(_("\nUser name Comment" + "\n-----------------------------\n")); ret = cli_RNetUserEnum(cli, long_user_fn, NULL); cli_shutdown(cli); goto done; @@ -909,7 +912,7 @@ int net_rap_user(struct net_context *c, int argc, const char **argv) ret = net_run_function(c, argc, argv, "net rap user", func); done: if (ret != 0) { - DEBUG(1, ("Net user returned: %d\n", ret)); + DEBUG(1, (_("Net user returned: %d\n"), ret)); } return ret; } @@ -977,17 +980,17 @@ int net_rap_group(struct net_context *c, int argc, const char **argv) "add", rap_group_add, NET_TRANSPORT_RAP, - "Add specified group", - "net rap group add\n" - " Add specified group" + N_("Add specified group"), + N_("net rap group add\n" + " Add specified group") }, { "delete", rap_group_delete, NET_TRANSPORT_RAP, - "Delete specified group", - "net rap group delete\n" - " Delete specified group" + N_("Delete specified group"), + N_("net rap group delete\n" + " Delete specified group") }, {NULL, NULL, 0, NULL, NULL} }; @@ -996,9 +999,9 @@ int net_rap_group(struct net_context *c, int argc, const char **argv) struct cli_state *cli; int ret; if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rap group\n" - " List all groups\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rap group\n" + " List all groups\n")); net_display_usage_from_functable(func); return 0; } @@ -1006,8 +1009,8 @@ int net_rap_group(struct net_context *c, int argc, const char **argv) if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli))) return -1; if (c->opt_long_list_entries) { - d_printf("Group name Comment\n"); - d_printf("-----------------------------\n"); + d_printf(_("Group name Comment\n" + "-----------------------------\n")); ret = cli_RNetGroupEnum(cli, long_group_fn, NULL); cli_shutdown(cli); return ret; @@ -1022,13 +1025,13 @@ int net_rap_group(struct net_context *c, int argc, const char **argv) int net_rap_groupmember_usage(struct net_context *c, int argc, const char **argv) { - d_printf( + d_printf(_( "net rap groupmember LIST [misc. options] [targets]" "\n\t Enumerate users in a group\n" "\nnet rap groupmember DELETE [misc. options] " "[targets]\n\t Delete specified user from specified group\n" "\nnet rap groupmember ADD [misc. options] [targets]" - "\n\t Add specified user to specified group\n"); + "\n\t Add specified user to specified group\n")); net_common_flags_usage(c, argc, argv); return -1; @@ -1090,25 +1093,25 @@ int net_rap_groupmember(struct net_context *c, int argc, const char **argv) "add", rap_groupmember_add, NET_TRANSPORT_RAP, - "Add specified user to group", - "net rap groupmember add\n" - " Add specified user to group" + N_("Add specified user to group"), + N_("net rap groupmember add\n" + " Add specified user to group") }, { "list", rap_groupmember_list, NET_TRANSPORT_RAP, - "List users in group", - "net rap groupmember list\n" - " List users in group" + N_("List users in group"), + N_("net rap groupmember list\n" + " List users in group") }, { "delete", rap_groupmember_delete, NET_TRANSPORT_RAP, - "Remove user from group", - "net rap groupmember delete\n" - " Remove user from group" + N_("Remove user from group"), + N_("net rap groupmember delete\n" + " Remove user from group") }, {NULL, NULL, 0, NULL, NULL} }; @@ -1118,9 +1121,9 @@ int net_rap_groupmember(struct net_context *c, int argc, const char **argv) int net_rap_validate_usage(struct net_context *c, int argc, const char **argv) { - d_printf("net rap validate [password]\n" - "\tValidate user and password to check whether they" - " can access target server or domain\n"); + d_printf(_("net rap validate [password]\n" + "\tValidate user and password to check whether they" + " can access target server or domain\n")); net_common_flags_usage(c, argc, argv); return -1; @@ -1133,13 +1136,13 @@ int net_rap_validate(struct net_context *c, int argc, const char **argv) int net_rap_service_usage(struct net_context *c, int argc, const char **argv) { - d_printf("net rap service [misc. options] [targets] \n" - "\tlists all running service daemons on target server\n"); - d_printf("\nnet rap service START [service startup arguments]" + d_printf(_("net rap service [misc. options] [targets] \n" + "\tlists all running service daemons on target server\n")); + d_printf(_("\nnet rap service START [service startup arguments]" " [misc. options] [targets]" - "\n\tStart named service on remote server\n"); - d_printf("\nnet rap service STOP [misc. options] [targets]\n" - "\n\tStop named service on remote server\n"); + "\n\tStart named service on remote server\n")); + d_printf(_("\nnet rap service STOP [misc. options] [targets]\n" + "\n\tStop named service on remote server\n")); net_common_flags_usage(c, argc, argv); return -1; @@ -1168,17 +1171,17 @@ int net_rap_service(struct net_context *c, int argc, const char **argv) "start", rap_service_start, NET_TRANSPORT_RAP, - "Start service on remote server", - "net rap service start\n" - " Start service on remote server" + N_("Start service on remote server"), + N_("net rap service start\n" + " Start service on remote server") }, { "stop", rap_service_stop, NET_TRANSPORT_RAP, - "Stop named serve on remote server", - "net rap service stop\n" - " Stop named serve on remote server" + N_("Stop named serve on remote server"), + N_("net rap service stop\n" + " Stop named serve on remote server") }, {NULL, NULL, 0, NULL, NULL} }; @@ -1187,9 +1190,9 @@ int net_rap_service(struct net_context *c, int argc, const char **argv) struct cli_state *cli; int ret; if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rap service\n" - " List services on remote server\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rap service\n" + " List services on remote server\n")); net_display_usage_from_functable(func); return 0; } @@ -1198,8 +1201,8 @@ int net_rap_service(struct net_context *c, int argc, const char **argv) return -1; if (c->opt_long_list_entries) { - d_printf("Service name Comment\n"); - d_printf("-----------------------------\n"); + d_printf(_("Service name Comment\n" + "-----------------------------\n")); ret = cli_RNetServiceEnum(cli, long_group_fn, NULL); } ret = cli_RNetServiceEnum(cli, service_fn, NULL); @@ -1212,9 +1215,9 @@ int net_rap_service(struct net_context *c, int argc, const char **argv) int net_rap_password_usage(struct net_context *c, int argc, const char **argv) { - d_printf( + d_printf(_( "net rap password [misc. options] [target]\n" - "\tchanges the password for the specified user at target\n"); + "\tchanges the password for the specified user at target\n")); return -1; } @@ -1239,9 +1242,9 @@ int net_rap_password(struct net_context *c, int argc, const char **argv) int net_rap_admin_usage(struct net_context *c, int argc, const char **argv) { - d_printf( + d_printf(_( "net rap admin [cmd args [env]] [misc. options] [targets]" - "\n\texecutes a remote command on an os/2 target server\n"); + "\n\texecutes a remote command on an os/2 target server\n")); return -1; } @@ -1261,105 +1264,105 @@ int net_rap(struct net_context *c, int argc, const char **argv) "file", net_rap_file, NET_TRANSPORT_RAP, - "List open files", - "net rap file\n" - " List open files" + N_("List open files"), + N_("net rap file\n" + " List open files") }, { "share", net_rap_share, NET_TRANSPORT_RAP, - "List shares exported by server", - "net rap share\n" - " List shares exported by server" + N_("List shares exported by server"), + N_("net rap share\n" + " List shares exported by server") }, { "session", net_rap_session, NET_TRANSPORT_RAP, - "List open sessions", - "net rap session\n" - " List open sessions" + N_("List open sessions"), + N_("net rap session\n" + " List open sessions") }, { "server", net_rap_server, NET_TRANSPORT_RAP, - "List servers in workgroup", - "net rap server\n" - " List servers in domain/workgroup" + N_("List servers in workgroup"), + N_("net rap server\n" + " List servers in domain/workgroup") }, { "domain", net_rap_domain, NET_TRANSPORT_RAP, - "List domains in network", - "net rap domain\n" - " List domains in network" + N_("List domains in network"), + N_("net rap domain\n" + " List domains in network") }, { "printq", net_rap_printq, NET_TRANSPORT_RAP, - "List printer queues on server", - "net rap printq\n" - " List printer queues on server" + N_("List printer queues on server"), + N_("net rap printq\n" + " List printer queues on server") }, { "user", net_rap_user, NET_TRANSPORT_RAP, - "List users", - "net rap user\n" - " List users" + N_("List users"), + N_("net rap user\n" + " List users") }, { "group", net_rap_group, NET_TRANSPORT_RAP, - "List user groups", - "net rap group\n" - " List user groups" + N_("List user groups"), + N_("net rap group\n" + " List user groups") }, { "validate", net_rap_validate, NET_TRANSPORT_RAP, - "Check username/password", - "net rap validate\n" - " Check username/password" + N_("Check username/password"), + N_("net rap validate\n" + " Check username/password") }, { "groupmember", net_rap_groupmember, NET_TRANSPORT_RAP, - "List/modify group memberships", - "net rap groupmember\n" - " List/modify group memberships" + N_("List/modify group memberships"), + N_("net rap groupmember\n" + " List/modify group memberships") }, { "admin", net_rap_admin, NET_TRANSPORT_RAP, - "Execute commands on remote OS/2", - "net rap admin\n" - " Execute commands on remote OS/2" + N_("Execute commands on remote OS/2"), + N_("net rap admin\n" + " Execute commands on remote OS/2") }, { "service", net_rap_service, NET_TRANSPORT_RAP, - "Start/stop remote service", - "net rap service\n" - " Start/stop remote service" + N_("Start/stop remote service"), + N_("net rap service\n" + " Start/stop remote service") }, { "password", net_rap_password, NET_TRANSPORT_RAP, - "Change user password", - "net rap password\n" - " Change user password" + N_("Change user password"), + N_("net rap password\n" + " Change user password") }, {NULL, NULL, 0, NULL, NULL} }; -- cgit From 7ced58b93246648ba15b08f99d3f6d8896638650 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Sun, 2 Aug 2009 10:26:48 +0200 Subject: s3 net: i18n support for net registry --- source3/po/genmsg | 3 +- source3/utils/net_registry.c | 131 +++++++++++++++++++------------------- source3/utils/net_registry_util.c | 25 ++++---- 3 files changed, 82 insertions(+), 77 deletions(-) (limited to 'source3') diff --git a/source3/po/genmsg b/source3/po/genmsg index 305caa755e..38781deadf 100755 --- a/source3/po/genmsg +++ b/source3/po/genmsg @@ -29,7 +29,8 @@ add_basedir_to_filelist() { NET_FILES=`add_basedir_to_filelist ../utils net.c net_ads.c net_ads_gpo.c \ net_afs.c net_cache.c net_conf.c net_dom.c net_eventlog.c \ net_file.c net_group.c net_groupmap.c net_help.c net_help_common.c \ - net_idmap.c net_join.c net_lookup.c net_lua.c net_rap.c` + net_idmap.c net_join.c net_lookup.c net_lua.c net_rap.c \ + net_registry.c net_registry_util.c` FILES="../web/swat.c ../web/statuspage.c ../param/loadparm.c ${NET_FILES}" LANGS='en ja tr pl fr de it ru' diff --git a/source3/utils/net_registry.c b/source3/utils/net_registry.c index d6cdd982c3..711c111275 100644 --- a/source3/utils/net_registry.c +++ b/source3/utils/net_registry.c @@ -91,13 +91,14 @@ static WERROR open_key(TALLOC_CTX *ctx, const char *path, werr = open_hive(tmp_ctx, path, desired_access, &hive, &subkey_name); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "open_hive failed: %s\n", win_errstr(werr)); + d_fprintf(stderr, _("open_hive failed: %s\n"), + win_errstr(werr)); goto done; } werr = reg_openkey(ctx, hive, subkey_name, desired_access, key); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "reg_openkey failed: %s\n", + d_fprintf(stderr, _("reg_openkey failed: %s\n"), win_errstr(werr)); goto done; } @@ -129,15 +130,15 @@ static int net_registry_enumerate(struct net_context *c, int argc, int ret = -1; if (argc != 1 || c->display_usage) { - d_printf("Usage: net registry enumerate \n"); - d_printf("Example: net registry enumerate " - "'HKLM\\Software\\Samba'\n"); + d_printf(_("Usage: net registry enumerate \n")); + d_printf(_("Example: net registry enumerate " + "'HKLM\\Software\\Samba'\n")); goto done; } werr = open_key(ctx, argv[0], REG_KEY_READ, &key); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "open_key failed: %s\n", win_errstr(werr)); + d_fprintf(stderr, _("open_key failed: %s\n"), win_errstr(werr)); goto done; } @@ -181,38 +182,39 @@ static int net_registry_createkey(struct net_context *c, int argc, int ret = -1; if (argc != 1 || c->display_usage) { - d_printf("Usage: net registry createkey \n"); - d_printf("Example: net registry createkey " - "'HKLM\\Software\\Samba\\smbconf.127.0.0.1'\n"); + d_printf(_("Usage: net registry createkey \n")); + d_printf(_("Example: net registry createkey " + "'HKLM\\Software\\Samba\\smbconf.127.0.0.1'\n")); goto done; } if (strlen(argv[0]) == 0) { - d_fprintf(stderr, "error: zero length key name given\n"); + d_fprintf(stderr, _("error: zero length key name given\n")); goto done; } werr = open_hive(ctx, argv[0], REG_KEY_WRITE, &hivekey, &subkeyname); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "open_hive failed: %s\n", win_errstr(werr)); + d_fprintf(stderr, _("open_hive failed: %s\n"), + win_errstr(werr)); goto done; } werr = reg_createkey(ctx, hivekey, subkeyname, REG_KEY_WRITE, &subkey, &action); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "reg_createkey failed: %s\n", + d_fprintf(stderr, _("reg_createkey failed: %s\n"), win_errstr(werr)); goto done; } switch (action) { case REG_ACTION_NONE: - d_printf("createkey did nothing -- huh?\n"); + d_printf(_("createkey did nothing -- huh?\n")); break; case REG_CREATED_NEW_KEY: - d_printf("createkey created %s\n", argv[0]); + d_printf(_("createkey created %s\n"), argv[0]); break; case REG_OPENED_EXISTING_KEY: - d_printf("createkey opened existing %s\n", argv[0]); + d_printf(_("createkey opened existing %s\n"), argv[0]); break; } @@ -233,25 +235,26 @@ static int net_registry_deletekey(struct net_context *c, int argc, int ret = -1; if (argc != 1 || c->display_usage) { - d_printf("Usage: net registry deletekey \n"); - d_printf("Example: net registry deletekey " - "'HKLM\\Software\\Samba\\smbconf.127.0.0.1'\n"); + d_printf(_("Usage: net registry deletekey \n")); + d_printf(_("Example: net registry deletekey " + "'HKLM\\Software\\Samba\\smbconf.127.0.0.1'\n")); goto done; } if (strlen(argv[0]) == 0) { - d_fprintf(stderr, "error: zero length key name given\n"); + d_fprintf(stderr, _("error: zero length key name given\n")); goto done; } werr = open_hive(ctx, argv[0], REG_KEY_WRITE, &hivekey, &subkeyname); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "open_hive failed: %s\n", win_errstr(werr)); + d_fprintf(stderr, _("open_hive failed: %s\n"), + win_errstr(werr)); goto done; } werr = reg_deletekey(hivekey, subkeyname); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "reg_deletekey failed: %s\n", + d_fprintf(stderr, _("reg_deletekey failed: %s\n"), win_errstr(werr)); goto done; } @@ -273,20 +276,20 @@ static int net_registry_getvalue_internal(struct net_context *c, int argc, TALLOC_CTX *ctx = talloc_stackframe(); if (argc != 2 || c->display_usage) { - d_fprintf(stderr, "usage: net rpc registry getvalue " - "\n"); + d_fprintf(stderr, _("usage: net rpc registry getvalue " + "\n")); goto done; } werr = open_key(ctx, argv[0], REG_KEY_READ, &key); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "open_key failed: %s\n", win_errstr(werr)); + d_fprintf(stderr, _("open_key failed: %s\n"), win_errstr(werr)); goto done; } werr = reg_queryvalue(ctx, key, argv[1], &value); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "reg_queryvalue failed: %s\n", + d_fprintf(stderr, _("reg_queryvalue failed: %s\n"), win_errstr(werr)); goto done; } @@ -322,13 +325,13 @@ static int net_registry_setvalue(struct net_context *c, int argc, TALLOC_CTX *ctx = talloc_stackframe(); if (argc < 4 || c->display_usage) { - d_fprintf(stderr, "usage: net rpc registry setvalue " - " []+\n"); + d_fprintf(stderr, _("usage: net rpc registry setvalue " + " []+\n")); goto done; } if (!strequal(argv[2], "multi_sz") && (argc != 4)) { - d_fprintf(stderr, "Too many args for type %s\n", argv[2]); + d_fprintf(stderr, _("Too many args for type %s\n"), argv[2]); goto done; } @@ -344,19 +347,19 @@ static int net_registry_setvalue(struct net_context *c, int argc, value.v.multi_sz.num_strings = argc - 3; value.v.multi_sz.strings = (char **)(argv + 3); } else { - d_fprintf(stderr, "type \"%s\" not implemented\n", argv[2]); + d_fprintf(stderr, _("type \"%s\" not implemented\n"), argv[2]); goto done; } werr = open_key(ctx, argv[0], REG_KEY_WRITE, &key); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "open_key failed: %s\n", win_errstr(werr)); + d_fprintf(stderr, _("open_key failed: %s\n"), win_errstr(werr)); goto done; } werr = reg_setvalue(key, argv[1], &value); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "reg_setvalue failed: %s\n", + d_fprintf(stderr, _("reg_setvalue failed: %s\n"), win_errstr(werr)); goto done; } @@ -377,20 +380,20 @@ static int net_registry_deletevalue(struct net_context *c, int argc, int ret = -1; if (argc != 2 || c->display_usage) { - d_fprintf(stderr, "usage: net rpc registry deletevalue " - "\n"); + d_fprintf(stderr, _("usage: net rpc registry deletevalue " + "\n")); goto done; } werr = open_key(ctx, argv[0], REG_KEY_WRITE, &key); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "open_key failed: %s\n", win_errstr(werr)); + d_fprintf(stderr, _("open_key failed: %s\n"), win_errstr(werr)); goto done; } werr = reg_deletevalue(key, argv[1]); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "reg_deletekey failed: %s\n", + d_fprintf(stderr, _("reg_deletekey failed: %s\n"), win_errstr(werr)); goto done; } @@ -421,9 +424,9 @@ static int net_registry_getsd(struct net_context *c, int argc, access_mask = REG_KEY_READ; if (argc != 1 || c->display_usage) { - d_printf("Usage: net registry getsd \n"); - d_printf("Example: net registry getsd " - "'HKLM\\Software\\Samba'\n"); + d_printf(_("Usage: net registry getsd \n")); + d_printf(_("Example: net registry getsd " + "'HKLM\\Software\\Samba'\n")); goto done; } if (strlen(argv[0]) == 0) { @@ -433,13 +436,13 @@ static int net_registry_getsd(struct net_context *c, int argc, werr = open_key(ctx, argv[0], access_mask, &key); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "open_key failed: %s\n", win_errstr(werr)); + d_fprintf(stderr, _("open_key failed: %s\n"), win_errstr(werr)); goto done; } werr = reg_getkeysecurity(ctx, key, &secdesc); if (!W_ERROR_IS_OK(werr)) { - d_fprintf(stderr, "reg_getkeysecurity failed: %s\n", + d_fprintf(stderr, _("reg_getkeysecurity failed: %s\n"), win_errstr(werr)); goto done; } @@ -462,65 +465,65 @@ int net_registry(struct net_context *c, int argc, const char **argv) "enumerate", net_registry_enumerate, NET_TRANSPORT_LOCAL, - "Enumerate registry keys and values", - "net registry enumerate\n" - " Enumerate registry keys and values" + N_("Enumerate registry keys and values"), + N_("net registry enumerate\n" + " Enumerate registry keys and values") }, { "createkey", net_registry_createkey, NET_TRANSPORT_LOCAL, - "Create a new registry key", - "net registry createkey\n" - " Create a new registry key" + N_("Create a new registry key"), + N_("net registry createkey\n" + " Create a new registry key") }, { "deletekey", net_registry_deletekey, NET_TRANSPORT_LOCAL, - "Delete a registry key", - "net registry deletekey\n" - " Delete a registry key" + N_("Delete a registry key"), + N_("net registry deletekey\n" + " Delete a registry key") }, { "getvalue", net_registry_getvalue, NET_TRANSPORT_LOCAL, - "Print a registry value", - "net registry getvalue\n" - " Print a registry value" + N_("Print a registry value"), + N_("net registry getvalue\n" + " Print a registry value") }, { "getvalueraw", net_registry_getvalueraw, NET_TRANSPORT_LOCAL, - "Print a registry value (raw format)", - "net registry getvalueraw\n" - " Print a registry value (raw format)" + N_("Print a registry value (raw format)"), + N_("net registry getvalueraw\n" + " Print a registry value (raw format)") }, { "setvalue", net_registry_setvalue, NET_TRANSPORT_LOCAL, - "Set a new registry value", - "net registry setvalue\n" - " Set a new registry value" + N_("Set a new registry value"), + N_("net registry setvalue\n" + " Set a new registry value") }, { "deletevalue", net_registry_deletevalue, NET_TRANSPORT_LOCAL, - "Delete a registry value", - "net registry deletevalue\n" - " Delete a registry value" + N_("Delete a registry value"), + N_("net registry deletevalue\n" + " Delete a registry value") }, { "getsd", net_registry_getsd, NET_TRANSPORT_LOCAL, - "Get security descriptor", - "net registry getsd\n" - " Get security descriptor" + N_("Get security descriptor"), + N_("net registry getsd\n" + " Get security descriptor") }, { NULL, NULL, 0, NULL, NULL } }; diff --git a/source3/utils/net_registry_util.c b/source3/utils/net_registry_util.c index cd291b5c74..3d1919cbf1 100644 --- a/source3/utils/net_registry_util.c +++ b/source3/utils/net_registry_util.c @@ -21,34 +21,35 @@ #include "includes.h" #include "utils/net_registry_util.h" +#include "utils/net.h" void print_registry_key(const char *keyname, NTTIME *modtime) { - d_printf("Keyname = %s\n", keyname); - d_printf("Modtime = %s\n", + d_printf(_("Keyname = %s\n"), keyname); + d_printf(_("Modtime = %s\n"), modtime ? http_timestring(talloc_tos(), nt_time_to_unix(*modtime)) - : "None"); + : _("None")); d_printf("\n"); } void print_registry_value(const struct registry_value *valvalue, bool raw) { if (!raw) { - d_printf("Type = %s\n", + d_printf(_("Type = %s\n"), reg_type_lookup(valvalue->type)); } switch(valvalue->type) { case REG_DWORD: if (!raw) { - d_printf("Value = "); + d_printf(_("Value = ")); } d_printf("%d\n", valvalue->v.dword); break; case REG_SZ: case REG_EXPAND_SZ: if (!raw) { - d_printf("Value = \""); + d_printf(_("Value = \"")); } d_printf("%s", valvalue->v.sz.str); if (!raw) { @@ -60,7 +61,7 @@ void print_registry_value(const struct registry_value *valvalue, bool raw) uint32 j; for (j = 0; j < valvalue->v.multi_sz.num_strings; j++) { if (!raw) { - d_printf("Value[%3.3d] = \"", j); + d_printf(_("Value[%3.3d] = \""), j); } d_printf("%s", valvalue->v.multi_sz.strings[j]); if (!raw) { @@ -72,15 +73,15 @@ void print_registry_value(const struct registry_value *valvalue, bool raw) } case REG_BINARY: if (!raw) { - d_printf("Value = "); + d_printf(_("Value = ")); } - d_printf("%d bytes\n", (int)valvalue->v.binary.length); + d_printf(_("%d bytes\n"), (int)valvalue->v.binary.length); break; default: if (!raw) { - d_printf("Value = "); + d_printf(_("Value = ")); } - d_printf("\n"); + d_printf(_("\n")); break; } } @@ -88,7 +89,7 @@ void print_registry_value(const struct registry_value *valvalue, bool raw) void print_registry_value_with_name(const char *valname, const struct registry_value *valvalue) { - d_printf("Valuename = %s\n", valname); + d_printf(_("Valuename = %s\n"), valname); print_registry_value(valvalue, false); d_printf("\n"); } -- cgit From 8dcf3b7062dbdbaa90851e40e23666a9c009c5f4 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Tue, 4 Aug 2009 08:28:50 +0200 Subject: s3 net: i18n support for net rpc --- source3/po/genmsg | 2 +- source3/utils/net_rpc.c | 1177 +++++++++++++++++++++++++---------------------- 2 files changed, 618 insertions(+), 561 deletions(-) (limited to 'source3') diff --git a/source3/po/genmsg b/source3/po/genmsg index 38781deadf..bab6dd6e5c 100755 --- a/source3/po/genmsg +++ b/source3/po/genmsg @@ -30,7 +30,7 @@ NET_FILES=`add_basedir_to_filelist ../utils net.c net_ads.c net_ads_gpo.c \ net_afs.c net_cache.c net_conf.c net_dom.c net_eventlog.c \ net_file.c net_group.c net_groupmap.c net_help.c net_help_common.c \ net_idmap.c net_join.c net_lookup.c net_lua.c net_rap.c \ - net_registry.c net_registry_util.c` + net_registry.c net_registry_util.c net_rpc.c` FILES="../web/swat.c ../web/statuspage.c ../param/loadparm.c ${NET_FILES}" LANGS='en ja tr pl fr de it ru' diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c index f6f90030fe..73f8b0b979 100644 --- a/source3/utils/net_rpc.c +++ b/source3/utils/net_rpc.c @@ -63,7 +63,7 @@ NTSTATUS net_get_remote_domain_sid(struct cli_state *cli, TALLOC_CTX *mem_ctx, result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id, &lsa_pipe); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not initialise lsa pipe\n"); + d_fprintf(stderr, _("Could not initialise lsa pipe\n")); return result; } @@ -71,7 +71,7 @@ NTSTATUS net_get_remote_domain_sid(struct cli_state *cli, TALLOC_CTX *mem_ctx, SEC_FLAG_MAXIMUM_ALLOWED, &pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "open_policy failed: %s\n", + d_fprintf(stderr, _("open_policy failed: %s\n"), nt_errstr(result)); return result; } @@ -81,7 +81,7 @@ NTSTATUS net_get_remote_domain_sid(struct cli_state *cli, TALLOC_CTX *mem_ctx, LSA_POLICY_INFO_ACCOUNT_DOMAIN, &info); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "lsaquery failed: %s\n", + d_fprintf(stderr, _("lsaquery failed: %s\n"), nt_errstr(result)); return result; } @@ -254,9 +254,9 @@ static NTSTATUS rpc_changetrustpw_internals(struct net_context *c, int net_rpc_changetrustpw(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc changetrustpw\n" - " Change the machine trust password\n"); + d_printf(_("Usage:\n" + "net rpc changetrustpw\n" + " Change the machine trust password\n")); return 0; } @@ -338,7 +338,7 @@ static NTSTATUS rpc_oldjoin_internals(struct net_context *c, sec_channel_type); if (NT_STATUS_IS_OK(result)) - printf("Joined domain %s.\n", c->opt_target_workgroup); + printf(_("Joined domain %s.\n"), c->opt_target_workgroup); if (!secrets_store_domain_sid(c->opt_target_workgroup, domain_sid)) { @@ -384,16 +384,16 @@ static int net_rpc_oldjoin(struct net_context *c, int argc, const char **argv) int rc = -1; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc oldjoin\n" - " Join a domain the old way\n"); + d_printf(_("Usage:\n" + "net rpc oldjoin\n" + " Join a domain the old way\n")); return 0; } rc = net_rpc_perform_oldjoin(c, argc, argv); if (rc) { - d_fprintf(stderr, "Failed to join domain\n"); + d_fprintf(stderr, _("Failed to join domain\n")); } return rc; @@ -414,27 +414,27 @@ static int net_rpc_oldjoin(struct net_context *c, int argc, const char **argv) int net_rpc_join(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc join -U [%%password] \n" - " Join a domain\n" - " username\tName of the admin user" - " password\tPassword of the admin user, will " - "prompt if not specified\n" - " type\tCan be one of the following:\n" - "\t\tMEMBER\tJoin as member server (default)\n" - "\t\tBDC\tJoin as BDC\n" - "\t\tPDC\tJoin as PDC\n"); + d_printf(_("Usage:\n" + "net rpc join -U [%%password] \n" + " Join a domain\n" + " username\tName of the admin user" + " password\tPassword of the admin user, will " + "prompt if not specified\n" + " type\tCan be one of the following:\n" + "\t\tMEMBER\tJoin as member server (default)\n" + "\t\tBDC\tJoin as BDC\n" + "\t\tPDC\tJoin as PDC\n")); return 0; } if (lp_server_role() == ROLE_STANDALONE) { - d_printf("cannot join as standalone machine\n"); + d_printf(_("cannot join as standalone machine\n")); return -1; } if (strlen(global_myname()) > 15) { - d_printf("Our netbios name can be at most 15 chars long, " - "\"%s\" is %u chars long\n", + d_printf(_("Our netbios name can be at most 15 chars long, " + "\"%s\" is %u chars long\n"), global_myname(), (unsigned int)strlen(global_myname())); return -1; } @@ -483,7 +483,8 @@ NTSTATUS rpc_info_internals(struct net_context *c, MAXIMUM_ALLOWED_ACCESS, &connect_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not connect to SAM: %s\n", nt_errstr(result)); + d_fprintf(stderr, _("Could not connect to SAM: %s\n"), + nt_errstr(result)); goto done; } @@ -494,7 +495,8 @@ NTSTATUS rpc_info_internals(struct net_context *c, CONST_DISCARD(struct dom_sid2 *, domain_sid), &domain_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not open domain: %s\n", nt_errstr(result)); + d_fprintf(stderr, _("Could not open domain: %s\n"), + nt_errstr(result)); goto done; } @@ -503,13 +505,14 @@ NTSTATUS rpc_info_internals(struct net_context *c, 2, &info); if (NT_STATUS_IS_OK(result)) { - d_printf("Domain Name: %s\n", info->general.domain_name.string); - d_printf("Domain SID: %s\n", sid_str); - d_printf("Sequence number: %llu\n", + d_printf(_("Domain Name: %s\n"), + info->general.domain_name.string); + d_printf(_("Domain SID: %s\n"), sid_str); + d_printf(_("Sequence number: %llu\n"), (unsigned long long)info->general.sequence_num); - d_printf("Num users: %u\n", info->general.num_users); - d_printf("Num domain groups: %u\n", info->general.num_groups); - d_printf("Num local groups: %u\n", info->general.num_aliases); + d_printf(_("Num users: %u\n"), info->general.num_users); + d_printf(_("Num domain groups: %u\n"),info->general.num_groups); + d_printf(_("Num local groups: %u\n"),info->general.num_aliases); } done: @@ -526,9 +529,9 @@ NTSTATUS rpc_info_internals(struct net_context *c, int net_rpc_info(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc info\n" - " Display information about the domain\n"); + d_printf(_("Usage:\n" + "net rpc info\n" + " Display information about the domain\n")); return 0; } @@ -565,7 +568,7 @@ static NTSTATUS rpc_getsid_internals(struct net_context *c, fstring sid_str; sid_to_fstring(sid_str, domain_sid); - d_printf("Storing SID %s for Domain %s in secrets.tdb\n", + d_printf(_("Storing SID %s for Domain %s in secrets.tdb\n"), sid_str, domain_name); if (!secrets_store_domain_sid(domain_name, domain_sid)) { @@ -586,9 +589,9 @@ static NTSTATUS rpc_getsid_internals(struct net_context *c, int net_rpc_getsid(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc getsid\n" - " Fetch domain SID into local secrets.tdb\n"); + d_printf(_("Usage:\n" + "net rpc getsid\n" + " Fetch domain SID into local secrets.tdb\n")); return 0; } @@ -643,12 +646,12 @@ static int rpc_user_add(struct net_context *c, int argc, const char **argv) status = NetUserAdd(c->opt_host, 1, (uint8_t *)&info1, &parm_error); if (status != 0) { - d_fprintf(stderr, "Failed to add user '%s' with: %s.\n", + d_fprintf(stderr,_("Failed to add user '%s' with error: %s.\n"), argv[0], libnetapi_get_error_string(c->netapi_ctx, status)); return -1; } else { - d_printf("Added user '%s'.\n", argv[0]); + d_printf(_("Added user '%s'.\n"), argv[0]); } return 0; @@ -680,11 +683,12 @@ static int rpc_user_rename(struct net_context *c, int argc, const char **argv) status = NetUserSetInfo(c->opt_host, argv[0], 0, (uint8_t *)&u0, &parm_err); if (status) { - d_fprintf(stderr, "Failed to rename user from %s to %s - %s\n", + d_fprintf(stderr, + _("Failed to rename user from %s to %s - %s\n"), argv[0], argv[1], libnetapi_get_error_string(c->netapi_ctx, status)); } else { - d_printf("Renamed user from %s to %s\n", argv[0], argv[1]); + d_printf(_("Renamed user from %s to %s\n"), argv[0], argv[1]); } return status; @@ -712,12 +716,12 @@ static int rpc_user_delete(struct net_context *c, int argc, const char **argv) status = NetUserDel(c->opt_host, argv[0]); if (status != 0) { - d_fprintf(stderr, "Failed to delete user '%s' with: %s.\n", + d_fprintf(stderr, _("Failed to delete user '%s' with: %s.\n"), argv[0], libnetapi_get_error_string(c->netapi_ctx, status)); return -1; } else { - d_printf("Deleted user '%s'.\n", argv[0]); + d_printf(_("Deleted user '%s'.\n"), argv[0]); } return 0; @@ -739,6 +743,7 @@ static int rpc_user_password(struct net_context *c, int argc, const char **argv) char *prompt = NULL; struct USER_INFO_1003 u1003; uint32_t parm_err = 0; + int ret; if (argc < 1 || c->display_usage) { rpc_user_usage(c, argc, argv); @@ -748,7 +753,9 @@ static int rpc_user_password(struct net_context *c, int argc, const char **argv) if (argv[1]) { u1003.usri1003_password = argv[1]; } else { - if (asprintf(&prompt, "Enter new password for %s:", argv[0]) == -1) { + ret = asprintf(&prompt, _("Enter new password for %s:"), + argv[0]); + if (ret == -1) { return -1; } u1003.usri1003_password = getpass(prompt); @@ -759,7 +766,8 @@ static int rpc_user_password(struct net_context *c, int argc, const char **argv) /* Display results */ if (status != 0) { - d_fprintf(stderr, "Failed to set password for '%s' with: %s.\n", + d_fprintf(stderr, + _("Failed to set password for '%s' with error: %s.\n"), argv[0], libnetapi_get_error_string(c->netapi_ctx, status)); return -1; @@ -801,7 +809,8 @@ static int rpc_user_info(struct net_context *c, int argc, const char **argv) &entries_read, &total_entries); if (status != 0) { - d_fprintf(stderr, "Failed to get groups for '%s' with: %s.\n", + d_fprintf(stderr, + _("Failed to get groups for '%s' with error: %s.\n"), argv[0], libnetapi_get_error_string(c->netapi_ctx, status)); return -1; @@ -840,8 +849,8 @@ static int rpc_user_list(struct net_context *c, int argc, const char **argv) /* Query domain users */ if (c->opt_long_list_entries) - d_printf("\nUser name Comment" - "\n-----------------------------\n"); + d_printf(_("\nUser name Comment" + "\n-----------------------------\n")); do { uint32_t max_entries, max_size; @@ -897,41 +906,41 @@ int net_rpc_user(struct net_context *c, int argc, const char **argv) "add", rpc_user_add, NET_TRANSPORT_RPC, - "Add specified user", - "net rpc user add\n" - " Add specified user" + N_("Add specified user"), + N_("net rpc user add\n" + " Add specified user") }, { "info", rpc_user_info, NET_TRANSPORT_RPC, - "List domain groups of user", - "net rpc user info\n" - " Lis domain groups of user" + N_("List domain groups of user"), + N_("net rpc user info\n" + " Lis domain groups of user") }, { "delete", rpc_user_delete, NET_TRANSPORT_RPC, - "Remove specified user", - "net rpc user delete\n" - " Remove specified user" + N_("Remove specified user"), + N_("net rpc user delete\n" + " Remove specified user") }, { "password", rpc_user_password, NET_TRANSPORT_RPC, - "Change user password", - "net rpc user password\n" - " Change user password" + N_("Change user password"), + N_("net rpc user password\n" + " Change user password") }, { "rename", rpc_user_rename, NET_TRANSPORT_RPC, - "Rename specified user", - "net rpc user rename\n" - " Rename specified user" + N_("Rename specified user"), + N_("net rpc user rename\n" + " Rename specified user") }, {NULL, NULL, 0, NULL, NULL} }; @@ -948,9 +957,9 @@ int net_rpc_user(struct net_context *c, int argc, const char **argv) if (argc == 0) { if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rpc user\n" - " List all users\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rpc user\n" + " List all users\n")); net_display_usage_from_functable(func); return 0; } @@ -999,7 +1008,7 @@ static NTSTATUS rpc_sh_handle_user(struct net_context *c, enum lsa_SidType type; if (argc == 0) { - d_fprintf(stderr, "usage: %s \n", ctx->whoami); + d_fprintf(stderr, _("usage: %s \n"), ctx->whoami); return NT_STATUS_INVALID_PARAMETER; } @@ -1010,20 +1019,20 @@ static NTSTATUS rpc_sh_handle_user(struct net_context *c, result = net_rpc_lookup_name(c, mem_ctx, rpc_pipe_np_smb_conn(pipe_hnd), argv[0], NULL, NULL, &sid, &type); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not lookup %s: %s\n", argv[0], + d_fprintf(stderr, _("Could not lookup %s: %s\n"), argv[0], nt_errstr(result)); goto done; } if (type != SID_NAME_USER) { - d_fprintf(stderr, "%s is a %s, not a user\n", argv[0], + d_fprintf(stderr, _("%s is a %s, not a user\n"), argv[0], sid_type_lookup(type)); result = NT_STATUS_NO_SUCH_USER; goto done; } if (!sid_peek_check_rid(ctx->domain_sid, &sid, &rid)) { - d_fprintf(stderr, "%s is not in our domain\n", argv[0]); + d_fprintf(stderr, _("%s is not in our domain\n"), argv[0]); result = NT_STATUS_NO_SUCH_USER; goto done; } @@ -1080,7 +1089,7 @@ static NTSTATUS rpc_sh_user_show_internals(struct net_context *c, union samr_UserInfo *info = NULL; if (argc != 0) { - d_fprintf(stderr, "usage: %s show \n", ctx->whoami); + d_fprintf(stderr, _("usage: %s show \n"),ctx->whoami); return NT_STATUS_INVALID_PARAMETER; } @@ -1092,7 +1101,7 @@ static NTSTATUS rpc_sh_user_show_internals(struct net_context *c, return result; } - d_printf("user rid: %d, group rid: %d\n", + d_printf(_("user rid: %d, group rid: %d\n"), info->info21.rid, info->info21.primary_gid); @@ -1133,7 +1142,7 @@ static NTSTATUS rpc_sh_user_str_edit_internals(struct net_context *c, union samr_UserInfo *info = NULL; if (argc > 1) { - d_fprintf(stderr, "usage: %s [new value|NULL]\n", + d_fprintf(stderr, _("usage: %s [new value|NULL]\n"), ctx->whoami); return NT_STATUS_INVALID_PARAMETER; } @@ -1156,7 +1165,7 @@ static NTSTATUS rpc_sh_user_str_edit_internals(struct net_context *c, FETCHSTR("description", description); if (argc == 0) { - d_printf("%s's %s: [%s]\n", username, ctx->thiscmd, oldval); + d_printf(_("%s's %s: [%s]\n"), username, ctx->thiscmd, oldval); goto done; } @@ -1178,7 +1187,7 @@ static NTSTATUS rpc_sh_user_str_edit_internals(struct net_context *c, 21, info); - d_printf("Set %s's %s from [%s] to [%s]\n", username, + d_printf(_("Set %s's %s from [%s] to [%s]\n"), username, ctx->thiscmd, oldval, argv[0]); done: @@ -1222,7 +1231,9 @@ static NTSTATUS rpc_sh_user_flag_edit_internals(struct net_context *c, if ((argc > 1) || ((argc == 1) && !strequal(argv[0], "yes") && !strequal(argv[0], "no"))) { - d_fprintf(stderr, "usage: %s [yes|no]\n", + /* TRANSATORS: The yes|no here are program keywords. Please do + not translate. */ + d_fprintf(stderr, _("usage: %s [yes|no]\n"), ctx->whoami); return NT_STATUS_INVALID_PARAMETER; } @@ -1247,7 +1258,8 @@ static NTSTATUS rpc_sh_user_flag_edit_internals(struct net_context *c, HANDLEFLG("pwnoexp", PWNOEXP); if (argc == 0) { - d_printf("%s's %s flag: %s\n", username, ctx->thiscmd, oldval); + d_printf(_("%s's %s flag: %s\n"), username, ctx->thiscmd, + oldval); goto done; } @@ -1262,7 +1274,7 @@ static NTSTATUS rpc_sh_user_flag_edit_internals(struct net_context *c, info); if (NT_STATUS_IS_OK(result)) { - d_printf("Set %s's %s flag from [%s] to [%s]\n", username, + d_printf(_("Set %s's %s flag from [%s] to [%s]\n"), username, ctx->thiscmd, oldval, argv[0]); } @@ -1288,34 +1300,34 @@ struct rpc_sh_cmd *net_rpc_user_edit_cmds(struct net_context *c, static struct rpc_sh_cmd cmds[] = { { "fullname", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit, - "Show/Set a user's full name" }, + N_("Show/Set a user's full name") }, { "homedir", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit, - "Show/Set a user's home directory" }, + N_("Show/Set a user's home directory") }, { "homedrive", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit, - "Show/Set a user's home drive" }, + N_("Show/Set a user's home drive") }, { "logonscript", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit, - "Show/Set a user's logon script" }, + N_("Show/Set a user's logon script") }, { "profilepath", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit, - "Show/Set a user's profile path" }, + N_("Show/Set a user's profile path") }, { "description", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit, - "Show/Set a user's description" }, + N_("Show/Set a user's description") }, { "disabled", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit, - "Show/Set whether a user is disabled" }, + N_("Show/Set whether a user is disabled") }, { "autolock", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit, - "Show/Set whether a user locked out" }, + N_("Show/Set whether a user locked out") }, { "pwnotreq", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit, - "Show/Set whether a user does not need a password" }, + N_("Show/Set whether a user does not need a password") }, { "pwnoexp", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit, - "Show/Set whether a user's password does not expire" }, + N_("Show/Set whether a user's password does not expire") }, { NULL, NULL, 0, NULL, NULL } }; @@ -1330,16 +1342,16 @@ struct rpc_sh_cmd *net_rpc_user_cmds(struct net_context *c, static struct rpc_sh_cmd cmds[] = { { "list", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_list, - "List available users" }, + N_("List available users") }, { "info", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_info, - "List the domain groups a user is member of" }, + N_("List the domain groups a user is member of") }, { "show", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_show, - "Show info about a user" }, + N_("Show info about a user") }, { "edit", net_rpc_user_edit_cmds, 0, NULL, - "Show/Modify a user's fields" }, + N_("Show/Modify a user's fields") }, { NULL, NULL, 0, NULL, NULL } }; @@ -1410,7 +1422,7 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, &connect_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Request samr_Connect2 failed\n"); + d_fprintf(stderr, _("Request samr_Connect2 failed\n")); goto done; } @@ -1421,7 +1433,7 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, &domain_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Request open_domain failed\n"); + d_fprintf(stderr, _("Request open_domain failed\n")); goto done; } @@ -1434,7 +1446,7 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, &group_rids, &name_types); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Lookup of '%s' failed\n",argv[0]); + d_fprintf(stderr, _("Lookup of '%s' failed\n"),argv[0]); goto done; } @@ -1447,7 +1459,7 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, group_rids.ids[0], &group_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Request open_group failed"); + d_fprintf(stderr, _("Request open_group failed")); goto done; } @@ -1458,12 +1470,15 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, &rids); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Unable to query group members of %s",argv[0]); + d_fprintf(stderr, + _("Unable to query group members of %s"), + argv[0]); goto done; } if (c->opt_verbose) { - d_printf("Domain Group %s (rid: %d) has %d members\n", + d_printf( + _("Domain Group %s (rid: %d) has %d members\n"), argv[0],group_rid, rids->count); } @@ -1477,7 +1492,8 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, &user_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Unable to open group member %d\n", + d_fprintf(stderr, + _("Unable to open group member %d\n"), rids->rids[i]); goto done; } @@ -1488,14 +1504,17 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, &info); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Unable to lookup userinfo for group member %d\n", + d_fprintf(stderr, + _("Unable to lookup userinfo for group " + "member %d\n"), rids->rids[i]); goto done; } if (info->info21.primary_gid == group_rid) { if (c->opt_verbose) { - d_printf("Group is primary group of %s\n", + d_printf(_("Group is primary group " + "of %s\n"), info->info21.account_name.string); } group_is_primary = true; @@ -1505,8 +1524,9 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, } if (group_is_primary) { - d_fprintf(stderr, "Unable to delete group because some " - "of it's members have it as primary group\n"); + d_fprintf(stderr, _("Unable to delete group because " + "some of it's members have it as primary " + "group\n")); result = NT_STATUS_MEMBERS_PRIMARY_GROUP; goto done; } @@ -1515,7 +1535,7 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, for (i = 0; i < rids->count; i++) { if (c->opt_verbose) - d_printf("Remove group member %d...", + d_printf(_("Remove group member %d..."), rids->rids[i]); result = rpccli_samr_DeleteGroupMember(pipe_hnd, mem_ctx, &group_pol, @@ -1523,10 +1543,10 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, if (NT_STATUS_IS_OK(result)) { if (c->opt_verbose) - d_printf("ok\n"); + d_printf(_("ok\n")); } else { if (c->opt_verbose) - d_printf("failed\n"); + d_printf(_("failed\n")); goto done; } } @@ -1544,7 +1564,7 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, &group_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Request open_alias failed\n"); + d_fprintf(stderr, _("Request open_alias failed\n")); goto done; } @@ -1552,7 +1572,8 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, &group_pol); break; default: - d_fprintf(stderr, "%s is of type %s. This command is only for deleting local or global groups\n", + d_fprintf(stderr, _("%s is of type %s. This command is only " + "for deleting local or global groups\n"), argv[0],sid_type_lookup(name_types.ids[0])); result = NT_STATUS_UNSUCCESSFUL; goto done; @@ -1560,9 +1581,10 @@ static NTSTATUS rpc_group_delete_internals(struct net_context *c, if (NT_STATUS_IS_OK(result)) { if (c->opt_verbose) - d_printf("Deleted %s '%s'\n",sid_type_lookup(name_types.ids[0]),argv[0]); + d_printf(_("Deleted %s '%s'\n"), + sid_type_lookup(name_types.ids[0]), argv[0]); } else { - d_fprintf(stderr, "Deleting of %s failed: %s\n",argv[0], + d_fprintf(stderr, _("Deleting of %s failed: %s\n"), argv[0], get_friendly_nt_error_msg(result)); } @@ -1598,12 +1620,13 @@ static int rpc_group_add_internals(struct net_context *c, int argc, const char * status = NetGroupAdd(c->opt_host, 1, (uint8_t *)&info1, &parm_error); if (status != 0) { - d_fprintf(stderr, "Failed to add group '%s' with: %s.\n", + d_fprintf(stderr, + _("Failed to add group '%s' with error: %s.\n"), argv[0], libnetapi_get_error_string(c->netapi_ctx, status)); return -1; } else { - d_printf("Added group '%s'.\n", argv[0]); + d_printf(_("Added group '%s'.\n"), argv[0]); } return 0; @@ -1630,12 +1653,13 @@ static int rpc_alias_add_internals(struct net_context *c, int argc, const char * status = NetLocalGroupAdd(c->opt_host, 1, (uint8_t *)&info1, &parm_error); if (status != 0) { - d_fprintf(stderr, "Failed to add alias '%s' with: %s.\n", + d_fprintf(stderr, + _("Failed to add alias '%s' with error: %s.\n"), argv[0], libnetapi_get_error_string(c->netapi_ctx, status)); return -1; } else { - d_printf("Added alias '%s'.\n", argv[0]); + d_printf(_("Added alias '%s'.\n"), argv[0]); } return 0; @@ -1755,7 +1779,8 @@ static NTSTATUS rpc_add_groupmem(struct rpc_pipe_client *pipe_hnd, &rid_types); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not lookup up group member %s\n", member); + d_fprintf(stderr, _("Could not lookup up group member %s\n"), + member); goto done; } @@ -1804,7 +1829,8 @@ static NTSTATUS rpc_add_aliasmem(struct rpc_pipe_client *pipe_hnd, member, &member_sid, &member_type); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not lookup up group member %s\n", member); + d_fprintf(stderr, _("Could not lookup up group member %s\n"), + member); return result; } @@ -1863,17 +1889,18 @@ static NTSTATUS rpc_group_addmem_internals(struct net_context *c, enum lsa_SidType group_type; if (argc != 2 || c->display_usage) { - d_printf("Usage:\n" - "net rpc group addmem \n" - " Add a member to a group\n" - " group\tGroup to add member to\n" - " member\tMember to add to group\n"); + d_printf(_("Usage:\n" + "net rpc group addmem \n" + " Add a member to a group\n" + " group\tGroup to add member to\n" + " member\tMember to add to group\n")); return NT_STATUS_UNSUCCESSFUL; } if (!NT_STATUS_IS_OK(get_sid_from_name(cli, mem_ctx, argv[0], &group_sid, &group_type))) { - d_fprintf(stderr, "Could not lookup group name %s\n", argv[0]); + d_fprintf(stderr, _("Could not lookup group name %s\n"), + argv[0]); return NT_STATUS_UNSUCCESSFUL; } @@ -1882,7 +1909,7 @@ static NTSTATUS rpc_group_addmem_internals(struct net_context *c, &group_sid, argv[1]); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not add %s to %s: %s\n", + d_fprintf(stderr, _("Could not add %s to %s: %s\n"), argv[1], argv[0], nt_errstr(result)); } return result; @@ -1893,14 +1920,14 @@ static NTSTATUS rpc_group_addmem_internals(struct net_context *c, &group_sid, argv[1]); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not add %s to %s: %s\n", + d_fprintf(stderr, _("Could not add %s to %s: %s\n"), argv[1], argv[0], nt_errstr(result)); } return result; } - d_fprintf(stderr, "Can only add members to global or local groups " - "which %s is not\n", argv[0]); + d_fprintf(stderr, _("Can only add members to global or local groups " + "which %s is not\n"), argv[0]); return NT_STATUS_UNSUCCESSFUL; } @@ -1959,7 +1986,8 @@ static NTSTATUS rpc_del_groupmem(struct net_context *c, &rids, &rid_types); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not lookup up group member %s\n", member); + d_fprintf(stderr, _("Could not lookup up group member %s\n"), + member); goto done; } @@ -2005,7 +2033,8 @@ static NTSTATUS rpc_del_aliasmem(struct rpc_pipe_client *pipe_hnd, member, &member_sid, &member_type); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not lookup up group member %s\n", member); + d_fprintf(stderr, _("Could not lookup up group member %s\n"), + member); return result; } @@ -2062,17 +2091,18 @@ static NTSTATUS rpc_group_delmem_internals(struct net_context *c, enum lsa_SidType group_type; if (argc != 2 || c->display_usage) { - d_printf("Usage:\n" - "net rpc group delmem \n" - " Delete a member from a group\n" - " group\tGroup to delete member from\n" - " member\tMember to delete from group\n"); + d_printf(_("Usage:\n" + "net rpc group delmem \n" + " Delete a member from a group\n" + " group\tGroup to delete member from\n" + " member\tMember to delete from group\n")); return NT_STATUS_UNSUCCESSFUL; } if (!NT_STATUS_IS_OK(get_sid_from_name(cli, mem_ctx, argv[0], &group_sid, &group_type))) { - d_fprintf(stderr, "Could not lookup group name %s\n", argv[0]); + d_fprintf(stderr, _("Could not lookup group name %s\n"), + argv[0]); return NT_STATUS_UNSUCCESSFUL; } @@ -2081,7 +2111,7 @@ static NTSTATUS rpc_group_delmem_internals(struct net_context *c, &group_sid, argv[1]); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not del %s from %s: %s\n", + d_fprintf(stderr, _("Could not del %s from %s: %s\n"), argv[1], argv[0], nt_errstr(result)); } return result; @@ -2092,14 +2122,14 @@ static NTSTATUS rpc_group_delmem_internals(struct net_context *c, &group_sid, argv[1]); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Could not del %s from %s: %s\n", + d_fprintf(stderr, _("Could not del %s from %s: %s\n"), argv[1], argv[0], nt_errstr(result)); } return result; } - d_fprintf(stderr, "Can only delete members from global or local groups " - "which %s is not\n", argv[0]); + d_fprintf(stderr, _("Can only delete members from global or local " + "groups which %s is not\n"), argv[0]); return NT_STATUS_UNSUCCESSFUL; } @@ -2145,14 +2175,15 @@ static NTSTATUS rpc_group_list_internals(struct net_context *c, bool builtin = false; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc group list [global] [local] [builtin]\n" - " List groups on RPC server\n" - " global\tList global groups\n" - " local\tList local groups\n" - " builtin\tList builtin groups\n" - " If none of global, local or builtin is " - "specified, all three options are considered set\n"); + d_printf(_("Usage:\n" + "net rpc group list [global] [local] [builtin]\n" + " List groups on RPC server\n" + " global\tList global groups\n" + " local\tList local groups\n" + " builtin\tList builtin groups\n" + " If none of global, local or builtin is " + "specified, all three options are considered " + "set\n")); return NT_STATUS_OK; } @@ -2196,8 +2227,8 @@ static NTSTATUS rpc_group_list_internals(struct net_context *c, /* Query domain groups */ if (c->opt_long_list_entries) - d_printf("\nGroup name Comment" - "\n-----------------------------\n"); + d_printf(_("\nGroup name Comment" + "\n-----------------------------\n")); do { uint32_t max_size, total_size, returned_size; union samr_DispInfo info; @@ -2465,7 +2496,7 @@ static NTSTATUS rpc_list_alias_members(struct net_context *c, &sid_array); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Couldn't list alias members\n"); + d_fprintf(stderr, _("Couldn't list alias members\n")); return result; } @@ -2479,7 +2510,7 @@ static NTSTATUS rpc_list_alias_members(struct net_context *c, &ndr_table_lsarpc.syntax_id, &lsa_pipe); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Couldn't open LSA pipe. Error was %s\n", + d_fprintf(stderr, _("Couldn't open LSA pipe. Error was %s\n"), nt_errstr(result) ); return result; } @@ -2488,14 +2519,14 @@ static NTSTATUS rpc_list_alias_members(struct net_context *c, SEC_FLAG_MAXIMUM_ALLOWED, &lsa_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Couldn't open LSA policy handle\n"); + d_fprintf(stderr, _("Couldn't open LSA policy handle\n")); TALLOC_FREE(lsa_pipe); return result; } alias_sids = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID, num_members); if (!alias_sids) { - d_fprintf(stderr, "Out of memory\n"); + d_fprintf(stderr, _("Out of memory\n")); TALLOC_FREE(lsa_pipe); return NT_STATUS_NO_MEMORY; } @@ -2510,7 +2541,7 @@ static NTSTATUS rpc_list_alias_members(struct net_context *c, if (!NT_STATUS_IS_OK(result) && !NT_STATUS_EQUAL(result, STATUS_SOME_UNMAPPED)) { - d_fprintf(stderr, "Couldn't lookup SIDs\n"); + d_fprintf(stderr, _("Couldn't lookup SIDs\n")); TALLOC_FREE(lsa_pipe); return result; } @@ -2521,8 +2552,8 @@ static NTSTATUS rpc_list_alias_members(struct net_context *c, if (c->opt_long_list_entries) { printf("%s %s\\%s %d\n", sid_str, - domains[i] ? domains[i] : "*unknown*", - names[i] ? names[i] : "*unknown*", types[i]); + domains[i] ? domains[i] : _("*unknown*"), + names[i] ? names[i] : _("*unknown*"), types[i]); } else { if (domains[i]) printf("%s\\%s\n", domains[i], names[i]); @@ -2596,7 +2627,8 @@ static NTSTATUS rpc_group_members_internals(struct net_context *c, &domain_pol); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Couldn't find group %s\n", argv[0]); + d_fprintf(stderr, _("Couldn't find group %s\n"), + argv[0]); return result; } @@ -2608,13 +2640,15 @@ static NTSTATUS rpc_group_members_internals(struct net_context *c, &rid_types); if (!NT_STATUS_IS_OK(result)) { - d_fprintf(stderr, "Couldn't find group %s\n", argv[0]); + d_fprintf(stderr, _("Couldn't find group %s\n"), + argv[0]); return result; } } if (rids.count != 1) { - d_fprintf(stderr, "Couldn't find group %s\n", argv[0]); + d_fprintf(stderr, _("Couldn't find group %s\n"), + argv[0]); return result; } @@ -2650,7 +2684,7 @@ static int rpc_group_rename_internals(struct net_context *c, int argc, const cha uint32_t parm_err; if (argc != 2) { - d_printf("Usage: 'net rpc group rename group newname'\n"); + d_printf(_("Usage: 'net rpc group rename group newname'\n")); return -1; } @@ -2663,7 +2697,7 @@ static int rpc_group_rename_internals(struct net_context *c, int argc, const cha &parm_err); if (status != 0) { - d_fprintf(stderr, "Renaming group %s failed with: %s\n", + d_fprintf(stderr, _("Renaming group %s failed with: %s\n"), argv[0], libnetapi_get_error_string(c->netapi_ctx, status)); return -1; @@ -2697,57 +2731,57 @@ int net_rpc_group(struct net_context *c, int argc, const char **argv) "add", rpc_group_add, NET_TRANSPORT_RPC, - "Create specified group", - "net rpc group add\n" - " Create specified group" + N_("Create specified group"), + N_("net rpc group add\n" + " Create specified group") }, { "delete", rpc_group_delete, NET_TRANSPORT_RPC, - "Delete specified group", - "net rpc group delete\n" - " Delete specified group" + N_("Delete specified group"), + N_("net rpc group delete\n" + " Delete specified group") }, { "addmem", rpc_group_addmem, NET_TRANSPORT_RPC, - "Add member to group", - "net rpc group addmem\n" - " Add member to group" + N_("Add member to group"), + N_("net rpc group addmem\n" + " Add member to group") }, { "delmem", rpc_group_delmem, NET_TRANSPORT_RPC, - "Remove member from group", - "net rpc group delmem\n" - " Remove member from group" + N_("Remove member from group"), + N_("net rpc group delmem\n" + " Remove member from group") }, { "list", rpc_group_list, NET_TRANSPORT_RPC, - "List groups", - "net rpc group list\n" - " List groups" + N_("List groups"), + N_("net rpc group list\n" + " List groups") }, { "members", rpc_group_members, NET_TRANSPORT_RPC, - "List group members", - "net rpc group members\n" - " List group members" + N_("List group members"), + N_("net rpc group members\n" + " List group members") }, { "rename", rpc_group_rename, NET_TRANSPORT_RPC, - "Rename group", - "net rpc group rename\n" - " Rename group" + N_("Rename group"), + N_("net rpc group rename\n" + " Rename group") }, {NULL, NULL, 0, NULL, NULL} }; @@ -2764,10 +2798,10 @@ int net_rpc_group(struct net_context *c, int argc, const char **argv) if (argc == 0) { if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rpc group\n" - " Alias for net rpc group list global local " - "builtin\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rpc group\n" + " Alias for net rpc group list global " + "local builtin\n")); net_display_usage_from_functable(func); return 0; } @@ -2837,7 +2871,7 @@ static int rpc_share_add(struct net_context *c, int argc, const char **argv) (uint8_t *)&i2, &parm_error); if (status != 0) { - printf("NetShareAdd failed with: %s\n", + printf(_("NetShareAdd failed with: %s\n"), libnetapi_get_error_string(c->netapi_ctx, status)); } @@ -2988,9 +3022,9 @@ static int rpc_share_list(struct net_context *c, int argc, const char **argv) uint32_t i, level = 1; if (c->display_usage) { - d_printf("Usage\n" - "net rpc share list\n" - " List shares on remote server\n"); + d_printf(_("Usage\n" + "net rpc share list\n" + " List shares on remote server\n")); return 0; } @@ -3008,10 +3042,10 @@ static int rpc_share_list(struct net_context *c, int argc, const char **argv) /* Display results */ if (c->opt_long_list_entries) { - d_printf( + d_printf(_( "\nEnumerating shared resources (exports) on remote server:\n\n" "\nShare name Type Description\n" - "---------- ---- -----------\n"); + "---------- ---- -----------\n")); } for (i = 0; i < entries_read; i++) display_share_info_1(c, &i1[i]); @@ -3022,7 +3056,7 @@ static int rpc_share_list(struct net_context *c, int argc, const char **argv) static bool check_share_availability(struct cli_state *cli, const char *netname) { if (!NT_STATUS_IS_OK(cli_tcon_andx(cli, netname, "A:", "", 0))) { - d_printf("skipping [%s]: not a file share.\n", netname); + d_printf(_("skipping [%s]: not a file share.\n"), netname); return false; } @@ -3037,7 +3071,8 @@ static bool check_share_sanity(struct net_context *c, struct cli_state *cli, { /* only support disk shares */ if (! ( type == STYPE_DISKTREE || type == (STYPE_DISKTREE | STYPE_HIDDEN)) ) { - printf("share [%s] is not a diskshare (type: %x)\n", netname, type); + printf(_("share [%s] is not a diskshare (type: %x)\n"), netname, + type); return false; } @@ -3048,7 +3083,7 @@ static bool check_share_sanity(struct net_context *c, struct cli_state *cli, return false; if (c->opt_exclude && in_list(netname, c->opt_exclude, false)) { - printf("excluding [%s]\n", netname); + printf(_("excluding [%s]\n"), netname); return false; } @@ -3115,7 +3150,8 @@ static NTSTATUS rpc_share_migrate_shares_internals(struct net_context *c, /* finally add the share on the dst server */ - printf("migrating: [%s], path: %s, comment: %s, without share-ACLs\n", + printf(_("migrating: [%s], path: %s, comment: %s, without " + "share-ACLs\n"), info502.name, info502.path, info502.comment); info.info502 = &info502; @@ -3128,13 +3164,13 @@ static NTSTATUS rpc_share_migrate_shares_internals(struct net_context *c, &result); if (W_ERROR_V(result) == W_ERROR_V(WERR_FILE_EXISTS)) { - printf(" [%s] does already exist\n", + printf(_(" [%s] does already exist\n"), info502.name); continue; } if (!NT_STATUS_IS_OK(nt_status) || !W_ERROR_IS_OK(result)) { - printf("cannot add share: %s\n", win_errstr(result)); + printf(_("cannot add share: %s\n"), win_errstr(result)); goto done; } @@ -3164,14 +3200,14 @@ static int rpc_share_migrate_shares(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc share migrate shares\n" - " Migrate shares to local server\n"); + d_printf(_("Usage:\n" + "net rpc share migrate shares\n" + " Migrate shares to local server\n")); return 0; } if (!c->opt_host) { - printf("no server to migrate\n"); + printf(_("no server to migrate\n")); return -1; } @@ -3231,12 +3267,12 @@ static void copy_fn(const char *mnt, file_info *f, false); break; default: - d_fprintf(stderr, "Unsupported mode %d\n", net_mode_share); + d_fprintf(stderr, _("Unsupported mode %d\n"), net_mode_share); return; } if (!NT_STATUS_IS_OK(nt_status)) - printf("could not handle dir %s: %s\n", + printf(_("could not handle dir %s: %s\n"), dir, nt_errstr(nt_status)); /* search below that directory */ @@ -3246,7 +3282,7 @@ static void copy_fn(const char *mnt, file_info *f, old_dir = local_state->cwd; local_state->cwd = dir; if (!sync_files(local_state, new_mask)) - printf("could not handle files\n"); + printf(_("could not handle files\n")); local_state->cwd = old_dir; return; @@ -3273,12 +3309,13 @@ static void copy_fn(const char *mnt, file_info *f, true); break; default: - d_fprintf(stderr, "Unsupported file mode %d\n", net_mode_share); + d_fprintf(stderr, _("Unsupported file mode %d\n"), + net_mode_share); return; } if (!NT_STATUS_IS_OK(nt_status)) - printf("could not handle file %s: %s\n", + printf(_("could not handle file %s: %s\n"), filename, nt_errstr(nt_status)); } @@ -3301,13 +3338,14 @@ static bool sync_files(struct copy_clistate *cp_clistate, const char *mask) if ( !cli_resolve_path(talloc_tos(), "", NULL, cp_clistate->cli_share_src, mask, &targetcli, &targetpath ) ) { - d_fprintf(stderr, "cli_resolve_path %s failed with error: %s\n", + d_fprintf(stderr, _("cli_resolve_path %s failed with error: " + "%s\n"), mask, cli_errstr(cp_clistate->cli_share_src)); return false; } if (cli_list(targetcli, targetpath, cp_clistate->attribute, copy_fn, cp_clistate) == -1) { - d_fprintf(stderr, "listing %s failed with error: %s\n", + d_fprintf(stderr, _("listing %s failed with error: %s\n"), mask, cli_errstr(targetcli)); return false; } @@ -3341,12 +3379,13 @@ bool copy_top_level_perms(struct net_context *c, false); break; default: - d_fprintf(stderr, "Unsupported mode %d\n", net_mode_share); + d_fprintf(stderr, _("Unsupported mode %d\n"), net_mode_share); break; } if (!NT_STATUS_IS_OK(nt_status)) { - printf("Could handle directory attributes for top level directory of share %s. Error %s\n", + printf(_("Could handle directory attributes for top level " + "directory of share %s. Error %s\n"), sharename, nt_errstr(nt_status)); return false; } @@ -3412,7 +3451,8 @@ static NTSTATUS rpc_share_migrate_files_internals(struct net_context *c, /* one might not want to mirror whole discs :) */ if (strequal(info502.name, "print$") || info502.name[1] == '$') { - d_printf("skipping [%s]: builtin/hidden share\n", info502.name); + d_printf(_("skipping [%s]: builtin/hidden share\n"), + info502.name); continue; } @@ -3422,14 +3462,16 @@ static NTSTATUS rpc_share_migrate_files_internals(struct net_context *c, printf("syncing"); break; default: - d_fprintf(stderr, "Unsupported mode %d\n", net_mode_share); + d_fprintf(stderr, _("Unsupported mode %d\n"), + net_mode_share); break; } - printf(" [%s] files and directories %s ACLs, %s DOS Attributes %s\n", + printf(_(" [%s] files and directories %s ACLs, %s DOS " + "Attributes %s\n"), info502.name, - c->opt_acls ? "including" : "without", - c->opt_attrs ? "including" : "without", - c->opt_timestamps ? "(preserving timestamps)" : ""); + c->opt_acls ? _("including") : _("without"), + c->opt_attrs ? _("including") : _("without"), + c->opt_timestamps ? _("(preserving timestamps)") : ""); cp_clistate.mem_ctx = mem_ctx; cp_clistate.cli_share_src = NULL; @@ -3458,13 +3500,16 @@ static NTSTATUS rpc_share_migrate_files_internals(struct net_context *c, } if (!copy_top_level_perms(c, &cp_clistate, info502.name)) { - d_fprintf(stderr, "Could not handle the top level directory permissions for the share: %s\n", info502.name); + d_fprintf(stderr, _("Could not handle the top level " + "directory permissions for the " + "share: %s\n"), info502.name); nt_status = NT_STATUS_UNSUCCESSFUL; goto done; } if (!sync_files(&cp_clistate, mask)) { - d_fprintf(stderr, "could not handle files for share: %s\n", info502.name); + d_fprintf(stderr, _("could not handle files for share: " + "%s\n"), info502.name); nt_status = NT_STATUS_UNSUCCESSFUL; goto done; } @@ -3488,14 +3533,14 @@ done: static int rpc_share_migrate_files(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net share migrate files\n" - " Migrate files to local server\n"); + d_printf(_("Usage:\n" + "net share migrate files\n" + " Migrate files to local server\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -3563,7 +3608,8 @@ static NTSTATUS rpc_share_migrate_security_internals(struct net_context *c, if (!check_share_sanity(c, cli, info502.name, info502.type)) continue; - printf("migrating: [%s], path: %s, comment: %s, including share-ACLs\n", + printf(_("migrating: [%s], path: %s, comment: %s, including " + "share-ACLs\n"), info502.name, info502.path, info502.comment); if (c->opt_verbose) @@ -3581,7 +3627,8 @@ static NTSTATUS rpc_share_migrate_security_internals(struct net_context *c, &parm_error, &result); if (!NT_STATUS_IS_OK(nt_status) || !W_ERROR_IS_OK(result)) { - printf("cannot set share-acl: %s\n", win_errstr(result)); + printf(_("cannot set share-acl: %s\n"), + win_errstr(result)); goto done; } @@ -3611,14 +3658,14 @@ static int rpc_share_migrate_security(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc share migrate security\n" - " Migrate share-acls to local server\n"); + d_printf(_("Usage:\n" + "net rpc share migrate security\n" + " Migrate share-acls to local server\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -3644,14 +3691,14 @@ static int rpc_share_migrate_all(struct net_context *c, int argc, int ret; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc share migrate all\n" - " Migrates shares including all share settings\n"); + d_printf(_("Usage:\n" + "net rpc share migrate all\n" + " Migrates shares including all share settings\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -3688,33 +3735,33 @@ static int rpc_share_migrate(struct net_context *c, int argc, const char **argv) "all", rpc_share_migrate_all, NET_TRANSPORT_RPC, - "Migrate shares from remote to local server", - "net rpc share migrate all\n" - " Migrate shares from remote to local server" + N_("Migrate shares from remote to local server"), + N_("net rpc share migrate all\n" + " Migrate shares from remote to local server") }, { "files", rpc_share_migrate_files, NET_TRANSPORT_RPC, - "Migrate files from remote to local server", - "net rpc share migrate files\n" - " Migrate files from remote to local server" + N_("Migrate files from remote to local server"), + N_("net rpc share migrate files\n" + " Migrate files from remote to local server") }, { "security", rpc_share_migrate_security, NET_TRANSPORT_RPC, - "Migrate share-ACLs from remote to local server", - "net rpc share migrate security\n" - " Migrate share-ACLs from remote to local server" + N_("Migrate share-ACLs from remote to local server"), + N_("net rpc share migrate security\n" + " Migrate share-ACLs from remote to local server") }, { "shares", rpc_share_migrate_shares, NET_TRANSPORT_RPC, - "Migrate shares from remote to local server", - "net rpc share migrate shares\n" - " Migrate shares from remote to local server" + N_("Migrate shares from remote to local server"), + N_("net rpc share migrate shares\n" + " Migrate shares from remote to local server") }, {NULL, NULL, 0, NULL, NULL} }; @@ -3941,7 +3988,7 @@ static void init_user_token(NT_USER_TOKEN *token, DOM_SID *user_sid) token->num_sids = 4; if (!(token->user_sids = SMB_MALLOC_ARRAY(DOM_SID, 4))) { - d_fprintf(stderr, "malloc failed\n"); + d_fprintf(stderr, _("malloc failed\n")); token->num_sids = 0; return; } @@ -4128,8 +4175,8 @@ static bool get_user_tokens(struct net_context *c, int *num_tokens, if (lp_winbind_use_default_domain() && (c->opt_target_workgroup == NULL)) { - d_fprintf(stderr, "winbind use default domain = yes set, " - "please specify a workgroup\n"); + d_fprintf(stderr, _("winbind use default domain = yes set, " + "please specify a workgroup\n")); return false; } @@ -4137,7 +4184,7 @@ static bool get_user_tokens(struct net_context *c, int *num_tokens, wbc_status = wbcListUsers(NULL, &num_users, &users); if (!WBC_ERROR_IS_OK(wbc_status)) { - DEBUG(1, ("winbind could not list users: %s\n", + DEBUG(1, (_("winbind could not list users: %s\n"), wbcErrorString(wbc_status))); return false; } @@ -4446,9 +4493,9 @@ static int rpc_share_allowedusers(struct net_context *c, int argc, int result; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc share allowedusers\n" - " List allowed users\n"); + d_printf(_("Usage:\n" + "net rpc share allowedusers\n" + " List allowed users\n")); return 0; } @@ -4496,10 +4543,10 @@ int net_usersidlist(struct net_context *c, int argc, const char **argv) int net_usersidlist_usage(struct net_context *c, int argc, const char **argv) { - d_printf("net usersidlist\n" - "\tprints out a list of all users the running winbind knows\n" - "\tabout, together with all their SIDs. This is used as\n" - "\tinput to the 'net rpc share allowedusers' command.\n\n"); + d_printf(_("net usersidlist\n" + "\tprints out a list of all users the running winbind knows\n" + "\tabout, together with all their SIDs. This is used as\n" + "\tinput to the 'net rpc share allowedusers' command.\n\n")); net_common_flags_usage(c, argc, argv); return -1; @@ -4521,41 +4568,41 @@ int net_rpc_share(struct net_context *c, int argc, const char **argv) "add", rpc_share_add, NET_TRANSPORT_RPC, - "Add share", - "net rpc share add\n" - " Add share" + N_("Add share"), + N_("net rpc share add\n" + " Add share") }, { "delete", rpc_share_delete, NET_TRANSPORT_RPC, - "Remove share", - "net rpc share delete\n" - " Remove share" + N_("Remove share"), + N_("net rpc share delete\n" + " Remove share") }, { "allowedusers", rpc_share_allowedusers, NET_TRANSPORT_RPC, - "Modify allowed users", - "net rpc share allowedusers\n" - " Modify allowed users" + N_("Modify allowed users"), + N_("net rpc share allowedusers\n" + " Modify allowed users") }, { "migrate", rpc_share_migrate, NET_TRANSPORT_RPC, - "Migrate share to local server", - "net rpc share migrate\n" - " Migrate share to local server" + N_("Migrate share to local server"), + N_("net rpc share migrate\n" + " Migrate share to local server") }, { "list", rpc_share_list, NET_TRANSPORT_RPC, - "List shares", - "net rpc share list\n" - " List shares" + N_("List shares"), + N_("net rpc share list\n" + " List shares") }, {NULL, NULL, 0, NULL, NULL} }; @@ -4572,10 +4619,10 @@ int net_rpc_share(struct net_context *c, int argc, const char **argv) if (argc == 0) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc share\n" - " List shares\n" - " Alias for net rpc share list\n"); + d_printf(_("Usage:\n" + "net rpc share\n" + " List shares\n" + " Alias for net rpc share list\n")); net_display_usage_from_functable(func); return 0; } @@ -4607,7 +4654,7 @@ static NTSTATUS rpc_sh_share_add(struct net_context *c, struct SHARE_INFO_2 i2; if ((argc < 2) || (argc > 3)) { - d_fprintf(stderr, "usage: %s [comment]\n", + d_fprintf(stderr, _("usage: %s [comment]\n"), ctx->whoami); return NT_STATUS_INVALID_PARAMETER; } @@ -4636,7 +4683,7 @@ static NTSTATUS rpc_sh_share_delete(struct net_context *c, int argc, const char **argv) { if (argc != 1) { - d_fprintf(stderr, "usage: %s \n", ctx->whoami); + d_fprintf(stderr, _("usage: %s \n"), ctx->whoami); return NT_STATUS_INVALID_PARAMETER; } @@ -4654,7 +4701,7 @@ static NTSTATUS rpc_sh_share_info(struct net_context *c, NTSTATUS status; if (argc != 1) { - d_fprintf(stderr, "usage: %s \n", ctx->whoami); + d_fprintf(stderr, _("usage: %s \n"), ctx->whoami); return NT_STATUS_INVALID_PARAMETER; } @@ -4668,10 +4715,10 @@ static NTSTATUS rpc_sh_share_info(struct net_context *c, goto done; } - d_printf("Name: %s\n", info.info2->name); - d_printf("Comment: %s\n", info.info2->comment); - d_printf("Path: %s\n", info.info2->path); - d_printf("Password: %s\n", info.info2->password); + d_printf(_("Name: %s\n"), info.info2->name); + d_printf(_("Comment: %s\n"), info.info2->comment); + d_printf(_("Path: %s\n"), info.info2->path); + d_printf(_("Password: %s\n"), info.info2->password); done: return werror_to_ntstatus(result); @@ -4683,16 +4730,16 @@ struct rpc_sh_cmd *net_rpc_share_cmds(struct net_context *c, TALLOC_CTX *mem_ctx static struct rpc_sh_cmd cmds[] = { { "list", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_list, - "List available shares" }, + N_("List available shares") }, { "add", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_add, - "Add a share" }, + N_("Add a share") }, { "delete", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_delete, - "Delete a share" }, + N_("Delete a share") }, { "info", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_info, - "Get information about a share" }, + N_("Get information about a share") }, { NULL, NULL, 0, NULL, NULL } }; @@ -4783,10 +4830,10 @@ static int rpc_file_user(struct net_context *c, int argc, const char **argv) /* Display results */ - d_printf( + d_printf(_( "\nEnumerating open files on remote server:\n\n" "\nFileId Opened by Perms Locks Path" - "\n------ --------- ----- ----- ---- \n"); + "\n------ --------- ----- ----- ---- \n")); for (i = 0; i < entries_read; i++) { display_file_info_3(&i3[i]); } @@ -4810,26 +4857,26 @@ int net_rpc_file(struct net_context *c, int argc, const char **argv) "close", rpc_file_close, NET_TRANSPORT_RPC, - "Close opened file", - "net rpc file close\n" - " Close opened file" + N_("Close opened file"), + N_("net rpc file close\n" + " Close opened file") }, { "user", rpc_file_user, NET_TRANSPORT_RPC, - "List files opened by user", - "net rpc file user\n" - " List files opened by user" + N_("List files opened by user"), + N_("net rpc file user\n" + " List files opened by user") }, #if 0 { "info", rpc_file_info, NET_TRANSPORT_RPC, - "Display information about opened file", - "net rpc file info\n" - " Display information about opened file" + N_("Display information about opened file"), + N_("net rpc file info\n" + " Display information about opened file") }, #endif {NULL, NULL, 0, NULL, NULL} @@ -4847,9 +4894,9 @@ int net_rpc_file(struct net_context *c, int argc, const char **argv) if (argc == 0) { if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rpc file\n" - " List opened files\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rpc file\n" + " List opened files\n")); net_display_usage_from_functable(func); return 0; } @@ -4891,7 +4938,7 @@ static NTSTATUS rpc_shutdown_abort_internals(struct net_context *c, result = rpccli_initshutdown_Abort(pipe_hnd, mem_ctx, NULL, NULL); if (NT_STATUS_IS_OK(result)) { - d_printf("\nShutdown successfully aborted\n"); + d_printf(_("\nShutdown successfully aborted\n")); DEBUG(5,("cmd_shutdown_abort: query succeeded\n")); } else DEBUG(5,("cmd_shutdown_abort: query failed\n")); @@ -4930,7 +4977,7 @@ static NTSTATUS rpc_reg_shutdown_abort_internals(struct net_context *c, result = rpccli_winreg_AbortSystemShutdown(pipe_hnd, mem_ctx, NULL, NULL); if (NT_STATUS_IS_OK(result)) { - d_printf("\nShutdown successfully aborted\n"); + d_printf(_("\nShutdown successfully aborted\n")); DEBUG(5,("cmd_reg_abort_shutdown: query succeeded\n")); } else DEBUG(5,("cmd_reg_abort_shutdown: query failed\n")); @@ -4954,9 +5001,9 @@ static int rpc_shutdown_abort(struct net_context *c, int argc, int rc = -1; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc abortshutdown\n" - " Abort a scheduled shutdown\n"); + d_printf(_("Usage:\n" + "net rpc abortshutdown\n" + " Abort a scheduled shutdown\n")); return 0; } @@ -5000,7 +5047,7 @@ NTSTATUS rpc_init_shutdown_internals(struct net_context *c, const char **argv) { NTSTATUS result = NT_STATUS_UNSUCCESSFUL; - const char *msg = "This machine will be shutdown shortly"; + const char *msg = N_("This machine will be shutdown shortly"); uint32 timeout = 20; struct lsa_StringLarge msg_string; @@ -5019,7 +5066,7 @@ NTSTATUS rpc_init_shutdown_internals(struct net_context *c, NULL); if (NT_STATUS_IS_OK(result)) { - d_printf("\nShutdown of remote machine succeeded\n"); + d_printf(_("\nShutdown of remote machine succeeded\n")); DEBUG(5,("Shutdown of remote machine succeeded\n")); } else { DEBUG(1,("Shutdown of remote machine failed!\n")); @@ -5053,7 +5100,7 @@ NTSTATUS rpc_reg_shutdown_internals(struct net_context *c, int argc, const char **argv) { - const char *msg = "This machine will be shutdown shortly"; + const char *msg = N_("This machine will be shutdown shortly"); uint32 timeout = 20; struct lsa_StringLarge msg_string; NTSTATUS result; @@ -5074,7 +5121,7 @@ NTSTATUS rpc_reg_shutdown_internals(struct net_context *c, &werr); if (NT_STATUS_IS_OK(result)) { - d_printf("\nShutdown of remote machine succeeded\n"); + d_printf(_("\nShutdown of remote machine succeeded\n")); } else { d_fprintf(stderr, "\nShutdown of remote machine failed\n"); if ( W_ERROR_EQUAL(werr, WERR_MACHINE_LOCKED) ) @@ -5101,9 +5148,9 @@ static int rpc_shutdown(struct net_context *c, int argc, const char **argv) int rc = -1; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc shutdown\n" - " Shut down a remote RPC server\n"); + d_printf(_("Usage:\n" + "net rpc shutdown\n" + " Shut down a remote RPC server\n")); return 0; } @@ -5160,8 +5207,8 @@ static NTSTATUS rpc_trustdom_add_internals(struct net_context *c, unsigned int orig_timeout; if (argc != 2) { - d_printf("Usage: net rpc trustdom add " - "\n"); + d_printf(_("Usage: net rpc trustdom add " + "\n")); return NT_STATUS_INVALID_PARAMETER; } @@ -5222,7 +5269,7 @@ static NTSTATUS rpc_trustdom_add_internals(struct net_context *c, rpccli_set_timeout(pipe_hnd, orig_timeout); if (!NT_STATUS_IS_OK(result)) { - d_printf("net rpc trustdom add: create user %s failed %s\n", + d_printf(_("net rpc trustdom add: create user %s failed %s\n"), acct_name, nt_errstr(result)); goto done; } @@ -5273,8 +5320,9 @@ static int rpc_trustdom_add(struct net_context *c, int argc, const char **argv) return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0, rpc_trustdom_add_internals, argc, argv); } else { - d_printf("Usage:\n" - "net rpc trustdom add \n"); + d_printf(_("Usage:\n" + "net rpc trustdom add \n")); return -1; } } @@ -5313,7 +5361,7 @@ static NTSTATUS rpc_trustdom_del_internals(struct net_context *c, struct lsa_String lsa_acct_name; if (argc != 1) { - d_printf("Usage: net rpc trustdom del \n"); + d_printf(_("Usage: net rpc trustdom del \n")); return NT_STATUS_INVALID_PARAMETER; } @@ -5356,7 +5404,8 @@ static NTSTATUS rpc_trustdom_del_internals(struct net_context *c, &name_types); if (!NT_STATUS_IS_OK(result)) { - d_printf("net rpc trustdom del: LookupNames on user %s failed %s\n", + d_printf(_("net rpc trustdom del: LookupNames on user %s " + "failed %s\n"), acct_name, nt_errstr(result) ); goto done; } @@ -5368,7 +5417,8 @@ static NTSTATUS rpc_trustdom_del_internals(struct net_context *c, &user_pol); if (!NT_STATUS_IS_OK(result)) { - d_printf("net rpc trustdom del: OpenUser on user %s failed %s\n", + d_printf(_("net rpc trustdom del: OpenUser on user %s failed " + "%s\n"), acct_name, nt_errstr(result) ); goto done; } @@ -5385,7 +5435,8 @@ static NTSTATUS rpc_trustdom_del_internals(struct net_context *c, &user_pol, &trust_acct_sid); if (!NT_STATUS_IS_OK(result)) { - d_printf("net rpc trustdom del: RemoveMemberFromForeignDomain on user %s failed %s\n", + d_printf(_("net rpc trustdom del: RemoveMemberFromForeignDomain" + " on user %s failed %s\n"), acct_name, nt_errstr(result) ); goto done; } @@ -5396,13 +5447,14 @@ static NTSTATUS rpc_trustdom_del_internals(struct net_context *c, &user_pol); if (!NT_STATUS_IS_OK(result)) { - d_printf("net rpc trustdom del: DeleteUser on user %s failed %s\n", + d_printf(_("net rpc trustdom del: DeleteUser on user %s failed " + "%s\n"), acct_name, nt_errstr(result) ); goto done; } if (!NT_STATUS_IS_OK(result)) { - d_printf("Could not set trust account password: %s\n", + d_printf(_("Could not set trust account password: %s\n"), nt_errstr(result)); goto done; } @@ -5426,8 +5478,8 @@ static int rpc_trustdom_del(struct net_context *c, int argc, const char **argv) return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0, rpc_trustdom_del_internals, argc, argv); } else { - d_printf("Usage:\n" - "net rpc trustdom del \n"); + d_printf(_("Usage:\n" + "net rpc trustdom del \n")); return -1; } } @@ -5509,8 +5561,8 @@ static int rpc_trustdom_establish(struct net_context *c, int argc, */ if (argc != 1 || c->display_usage) { - d_printf("Usage:\n" - "net rpc trustdom establish \n"); + d_printf(_("Usage:\n" + "net rpc trustdom establish \n")); return -1; } @@ -5652,7 +5704,7 @@ static int rpc_trustdom_establish(struct net_context *c, int argc, talloc_destroy(mem_ctx); - d_printf("Trust to domain %s established\n", domain_name); + d_printf(_("Trust to domain %s established\n"), domain_name); return 0; } @@ -5673,10 +5725,10 @@ static int rpc_trustdom_revoke(struct net_context *c, int argc, int rc = -1; if (argc < 1 || c->display_usage) { - d_printf("Usage:\n" - "net rpc trustdom revoke \n" - " Revoke trust relationship\n" - " domain_name\tName of domain to revoke trust\n"); + d_printf(_("Usage:\n" + "net rpc trustdom revoke \n" + " Revoke trust relationship\n" + " domain_name\tName of domain to revoke trust\n")); return -1; } @@ -5808,9 +5860,9 @@ static int rpc_trustdom_vampire(struct net_context *c, int argc, fstring pdc_name; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc trustdom vampire\n" - " Vampire trust relationship from remote server\n"); + d_printf(_("Usage:\n" + "net rpc trustdom vampire\n" + " Vampire trust relationship from remote server\n")); return 0; } @@ -5884,7 +5936,7 @@ static int rpc_trustdom_vampire(struct net_context *c, int argc, * the end of enumeration is reached */ - d_printf("Vampire trusted domains:\n\n"); + d_printf(_("Vampire trusted domains:\n\n")); do { nt_status = rpccli_lsa_EnumTrustDom(pipe_hnd, mem_ctx, @@ -5919,7 +5971,7 @@ static int rpc_trustdom_vampire(struct net_context *c, int argc, * in case of no trusted domains say something rather * than just display blank line */ - if (!dom_list.count) d_printf("none\n"); + if (!dom_list.count) d_printf(_("none\n")); } while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES)); @@ -5965,9 +6017,9 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv) struct samr_SamArray *trusts = NULL; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc trustdom list\n" - " List trust relationships\n"); + d_printf(_("Usage:\n" + "net rpc trustdom list\n" + " List trust relationships\n")); return 0; } @@ -6041,7 +6093,7 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv) * the end of enumeration is reached */ - d_printf("Trusted domains list:\n\n"); + d_printf(_("Trusted domains list:\n\n")); do { nt_status = rpccli_lsa_EnumTrustDom(pipe_hnd, mem_ctx, @@ -6066,7 +6118,7 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv) * in case of no trusted domains say something rather * than just display blank line */ - if (!dom_list.count) d_printf("none\n"); + if (!dom_list.count) d_printf(_("none\n")); } while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES)); @@ -6086,7 +6138,7 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv) * Listing trusting domains (stored in passdb backend, if local) */ - d_printf("\nTrusting domains list:\n\n"); + d_printf(_("\nTrusting domains list:\n\n")); /* * Open \PIPE\samr and get needed policy handles @@ -6188,13 +6240,14 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv) &ndr_table_lsarpc.syntax_id, 0, rpc_query_domain_sid, argc, argv)) - d_fprintf(stderr, "couldn't get domain's sid\n"); + d_fprintf(stderr, + _("couldn't get domain's sid\n")); cli_shutdown(remote_cli); } else { - d_fprintf(stderr, "domain controller is not " - "responding: %s\n", + d_fprintf(stderr, _("domain controller is not " + "responding: %s\n"), nt_errstr(nt_status)); }; }; @@ -6237,49 +6290,49 @@ static int rpc_trustdom(struct net_context *c, int argc, const char **argv) "add", rpc_trustdom_add, NET_TRANSPORT_RPC, - "Add trusted domain's account", - "net rpc trustdom add\n" - " Add trusted domain's account" + N_("Add trusted domain's account"), + N_("net rpc trustdom add\n" + " Add trusted domain's account") }, { "del", rpc_trustdom_del, NET_TRANSPORT_RPC, - "Remove trusted domain's account", - "net rpc trustdom del\n" - " Remove trusted domain's account" + N_("Remove trusted domain's account"), + N_("net rpc trustdom del\n" + " Remove trusted domain's account") }, { "establish", rpc_trustdom_establish, NET_TRANSPORT_RPC, - "Establish trust relationship", - "net rpc trustdom establish\n" - " Establish trust relationship" + N_("Establish trust relationship"), + N_("net rpc trustdom establish\n" + " Establish trust relationship") }, { "revoke", rpc_trustdom_revoke, NET_TRANSPORT_RPC, - "Revoke trust relationship", - "net rpc trustdom revoke\n" - " Revoke trust relationship" + N_("Revoke trust relationship"), + N_("net rpc trustdom revoke\n" + " Revoke trust relationship") }, { "list", rpc_trustdom_list, NET_TRANSPORT_RPC, - "List domain trusts", - "net rpc trustdom list\n" - " List domain trusts" + N_("List domain trusts"), + N_("net rpc trustdom list\n" + " List domain trusts") }, { "vampire", rpc_trustdom_vampire, NET_TRANSPORT_RPC, - "Vampire trusts from remote server", - "net rpc trustdom vampire\n" - " Vampire trusts from remote server" + N_("Vampire trusts from remote server"), + N_("net rpc trustdom vampire\n" + " Vampire trusts from remote server") }, {NULL, NULL, 0, NULL, NULL} }; @@ -6330,9 +6383,9 @@ bool net_rpc_check(struct net_context *c, unsigned flags) /* dump sam database via samsync rpc calls */ static int rpc_samdump(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc samdump\n" - " Dump remote SAM database\n"); + d_printf(_("Usage:\n" + "net rpc samdump\n" + " Dump remote SAM database\n")); return 0; } @@ -6349,25 +6402,27 @@ static int rpc_vampire(struct net_context *c, int argc, const char **argv) "ldif", rpc_vampire_ldif, NET_TRANSPORT_RPC, - "Dump remote SAM database to ldif", - "net rpc vampire ldif\n" - " Dump remote SAM database to LDIF file or stdout" + N_("Dump remote SAM database to ldif"), + N_("net rpc vampire ldif\n" + " Dump remote SAM database to LDIF file or " + "stdout") }, { "keytab", rpc_vampire_keytab, NET_TRANSPORT_RPC, - "Dump remote SAM database to Kerberos Keytab", - "net rpc vampire keytab\n" - " Dump remote SAM database to Kerberos keytab file" + N_("Dump remote SAM database to Kerberos Keytab"), + N_("net rpc vampire keytab\n" + " Dump remote SAM database to Kerberos keytab " + "file") }, { "passdb", rpc_vampire_passdb, NET_TRANSPORT_RPC, - "Dump remote SAM database to passdb", - "net rpc vampire passdb\n" - " Dump remote SAM database to passdb" + N_("Dump remote SAM database to passdb"), + N_("net rpc vampire passdb\n" + " Dump remote SAM database to passdb") }, {NULL, NULL, 0, NULL, NULL} @@ -6375,9 +6430,9 @@ static int rpc_vampire(struct net_context *c, int argc, const char **argv) if (argc == 0) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc vampire\n" - " Vampire remote SAM database\n"); + d_printf(_("Usage:\n" + "net rpc vampire\n" + " Vampire remote SAM database\n")); return 0; } @@ -6411,14 +6466,14 @@ static int rpc_printer_migrate_all(struct net_context *c, int argc, int ret; if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer migrate all\n" - " Migrate everything from a print server\n"); + d_printf(_("Usage:\n" + "net rpc printer migrate all\n" + " Migrate everything from a print server\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -6465,14 +6520,14 @@ static int rpc_printer_migrate_drivers(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer migrate drivers\n" - " Migrate print-drivers from a print-server\n"); + d_printf(_("Usage:\n" + "net rpc printer migrate drivers\n" + " Migrate print-drivers from a print-server\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -6495,14 +6550,14 @@ static int rpc_printer_migrate_forms(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer migrate forms\n" - " Migrate print-forms from a print-server\n"); + d_printf(_("Usage:\n" + "net rpc printer migrate forms\n" + " Migrate print-forms from a print-server\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -6525,14 +6580,14 @@ static int rpc_printer_migrate_printers(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer migrate printers\n" - " Migrate printers from a print-server\n"); + d_printf(_("Usage:\n" + "net rpc printer migrate printers\n" + " Migrate printers from a print-server\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -6555,14 +6610,14 @@ static int rpc_printer_migrate_security(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer migrate security\n" - " Migrate printer-ACLs from a print-server\n"); + d_printf(_("Usage:\n" + "net rpc printer migrate security\n" + " Migrate printer-ACLs from a print-server\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -6585,14 +6640,15 @@ static int rpc_printer_migrate_settings(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer migrate settings\n" - " Migrate printer-settings from a print-server\n"); + d_printf(_("Usage:\n" + "net rpc printer migrate settings\n" + " Migrate printer-settings from a " + "print-server\n")); return 0; } if (!c->opt_host) { - d_printf("no server to migrate\n"); + d_printf(_("no server to migrate\n")); return -1; } @@ -6622,49 +6678,49 @@ int rpc_printer_migrate(struct net_context *c, int argc, const char **argv) "all", rpc_printer_migrate_all, NET_TRANSPORT_RPC, - "Migrate all from remote to local print server", - "net rpc printer migrate all\n" - " Migrate all from remote to local print server" + N_("Migrate all from remote to local print server"), + N_("net rpc printer migrate all\n" + " Migrate all from remote to local print server") }, { "drivers", rpc_printer_migrate_drivers, NET_TRANSPORT_RPC, - "Migrate drivers to local server", - "net rpc printer migrate drivers\n" - " Migrate drivers to local server" + N_("Migrate drivers to local server"), + N_("net rpc printer migrate drivers\n" + " Migrate drivers to local server") }, { "forms", rpc_printer_migrate_forms, NET_TRANSPORT_RPC, - "Migrate froms to local server", - "net rpc printer migrate forms\n" - " Migrate froms to local server" + N_("Migrate froms to local server"), + N_("net rpc printer migrate forms\n" + " Migrate froms to local server") }, { "printers", rpc_printer_migrate_printers, NET_TRANSPORT_RPC, - "Migrate printers to local server", - "net rpc printer migrate printers\n" - " Migrate printers to local server" + N_("Migrate printers to local server"), + N_("net rpc printer migrate printers\n" + " Migrate printers to local server") }, { "security", rpc_printer_migrate_security, NET_TRANSPORT_RPC, - "Mirgate printer ACLs to local server", - "net rpc printer migrate security\n" - " Mirgate printer ACLs to local server" + N_("Mirgate printer ACLs to local server"), + N_("net rpc printer migrate security\n" + " Mirgate printer ACLs to local server") }, { "settings", rpc_printer_migrate_settings, NET_TRANSPORT_RPC, - "Migrate printer settings to local server", - "net rpc printer migrate settings\n" - " Migrate printer settings to local server" + N_("Migrate printer settings to local server"), + N_("net rpc printer migrate settings\n" + " Migrate printer settings to local server") }, {NULL, NULL, 0, NULL, NULL} }; @@ -6686,9 +6742,9 @@ int rpc_printer_migrate(struct net_context *c, int argc, const char **argv) static int rpc_printer_list(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer list\n" - " List printers on a remote RPC server\n"); + d_printf(_("Usage:\n" + "net rpc printer list\n" + " List printers on a remote RPC server\n")); return 0; } @@ -6711,9 +6767,9 @@ static int rpc_printer_driver_list(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer driver\n" - " List printer-drivers on a remote RPC server\n"); + d_printf(_("Usage:\n" + "net rpc printer driver\n" + " List printer-drivers on a remote RPC server\n")); return 0; } @@ -6736,9 +6792,9 @@ static int rpc_printer_publish_publish(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer publish publish\n" - " Publish printer in ADS via MSRPC\n"); + d_printf(_("Usage:\n" + "net rpc printer publish publish\n" + " Publish printer in ADS via MSRPC\n")); return 0; } @@ -6760,9 +6816,9 @@ static int rpc_printer_publish_publish(struct net_context *c, int argc, static int rpc_printer_publish_update(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer publish update\n" - " Update printer in ADS via MSRPC\n"); + d_printf(_("Usage:\n" + "net rpc printer publish update\n" + " Update printer in ADS via MSRPC\n")); return 0; } @@ -6785,9 +6841,9 @@ static int rpc_printer_publish_unpublish(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer publish unpublish\n" - " UnPublish printer in ADS via MSRPC\n"); + d_printf(_("Usage:\n" + "net rpc printer publish unpublish\n" + " UnPublish printer in ADS via MSRPC\n")); return 0; } @@ -6810,9 +6866,9 @@ static int rpc_printer_publish_list(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc printer publish list\n" - " List published printers via MSRPC\n"); + d_printf(_("Usage:\n" + "net rpc printer publish list\n" + " List published printers via MSRPC\n")); return 0; } @@ -6841,43 +6897,44 @@ static int rpc_printer_publish(struct net_context *c, int argc, "publish", rpc_printer_publish_publish, NET_TRANSPORT_RPC, - "Publish printer in AD", - "net rpc printer publish publish\n" - " Publish printer in AD" + N_("Publish printer in AD"), + N_("net rpc printer publish publish\n" + " Publish printer in AD") }, { "update", rpc_printer_publish_update, NET_TRANSPORT_RPC, - "Update printer in AD", - "net rpc printer publish update\n" - " Update printer in AD" + N_("Update printer in AD"), + N_("net rpc printer publish update\n" + " Update printer in AD") }, { "unpublish", rpc_printer_publish_unpublish, NET_TRANSPORT_RPC, - "Unpublish printer", - "net rpc printer publish unpublish\n" - " Unpublish printer" + N_("Unpublish printer"), + N_("net rpc printer publish unpublish\n" + " Unpublish printer") }, { "list", rpc_printer_publish_list, NET_TRANSPORT_RPC, - "List published printers", - "net rpc printer publish list\n" - " List published printers" + N_("List published printers"), + N_("net rpc printer publish list\n" + " List published printers") }, {NULL, NULL, 0, NULL, NULL} }; if (argc == 0) { if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rpc printer publish\n" - " List published printers\n" - " Alias of net rpc printer publish list\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rpc printer publish\n" + " List published printers\n" + " Alias of net rpc printer publish " + "list\n")); net_display_usage_from_functable(func); return 0; } @@ -6901,31 +6958,31 @@ static int rpc_printer_publish(struct net_context *c, int argc, **/ int rpc_printer_usage(struct net_context *c, int argc, const char **argv) { - d_printf("net rpc printer LIST [printer] [misc. options] [targets]\n" - "\tlists all printers on print-server\n\n"); - d_printf("net rpc printer DRIVER [printer] [misc. options] [targets]\n" - "\tlists all printer-drivers on print-server\n\n"); - d_printf("net rpc printer PUBLISH action [printer] [misc. options] [targets]\n" - "\tpublishes printer settings in Active Directory\n" - "\taction can be one of PUBLISH, UPDATE, UNPUBLISH or LIST\n\n"); - d_printf("net rpc printer MIGRATE PRINTERS [printer] [misc. options] [targets]" - "\n\tmigrates printers from remote to local server\n\n"); - d_printf("net rpc printer MIGRATE SETTINGS [printer] [misc. options] [targets]" - "\n\tmigrates printer-settings from remote to local server\n\n"); - d_printf("net rpc printer MIGRATE DRIVERS [printer] [misc. options] [targets]" - "\n\tmigrates printer-drivers from remote to local server\n\n"); - d_printf("net rpc printer MIGRATE FORMS [printer] [misc. options] [targets]" - "\n\tmigrates printer-forms from remote to local server\n\n"); - d_printf("net rpc printer MIGRATE SECURITY [printer] [misc. options] [targets]" - "\n\tmigrates printer-ACLs from remote to local server\n\n"); - d_printf("net rpc printer MIGRATE ALL [printer] [misc. options] [targets]" - "\n\tmigrates drivers, forms, queues, settings and acls from\n" - "\tremote to local print-server\n\n"); + d_printf(_("net rpc printer LIST [printer] [misc. options] [targets]\n" + "\tlists all printers on print-server\n\n")); + d_printf(_("net rpc printer DRIVER [printer] [misc. options] [targets]\n" + "\tlists all printer-drivers on print-server\n\n")); + d_printf(_("net rpc printer PUBLISH action [printer] [misc. options] [targets]\n" + "\tpublishes printer settings in Active Directory\n" + "\taction can be one of PUBLISH, UPDATE, UNPUBLISH or LIST\n\n")); + d_printf(_("net rpc printer MIGRATE PRINTERS [printer] [misc. options] [targets]" + "\n\tmigrates printers from remote to local server\n\n")); + d_printf(_("net rpc printer MIGRATE SETTINGS [printer] [misc. options] [targets]" + "\n\tmigrates printer-settings from remote to local server\n\n")); + d_printf(_("net rpc printer MIGRATE DRIVERS [printer] [misc. options] [targets]" + "\n\tmigrates printer-drivers from remote to local server\n\n")); + d_printf(_("net rpc printer MIGRATE FORMS [printer] [misc. options] [targets]" + "\n\tmigrates printer-forms from remote to local server\n\n")); + d_printf(_("net rpc printer MIGRATE SECURITY [printer] [misc. options] [targets]" + "\n\tmigrates printer-ACLs from remote to local server\n\n")); + d_printf(_("net rpc printer MIGRATE ALL [printer] [misc. options] [targets]" + "\n\tmigrates drivers, forms, queues, settings and acls from\n" + "\tremote to local print-server\n\n")); net_common_methods_usage(c, argc, argv); net_common_flags_usage(c, argc, argv); - d_printf( + d_printf(_( "\t-v or --verbose\t\t\tgive verbose output\n" - "\t --destination\t\tmigration target server (default: localhost)\n"); + "\t --destination\t\tmigration target server (default: localhost)\n")); return -1; } @@ -6945,42 +7002,42 @@ int net_rpc_printer(struct net_context *c, int argc, const char **argv) "list", rpc_printer_list, NET_TRANSPORT_RPC, - "List all printers on print server", - "net rpc printer list\n" - " List all printers on print server" + N_("List all printers on print server"), + N_("net rpc printer list\n" + " List all printers on print server") }, { "migrate", rpc_printer_migrate, NET_TRANSPORT_RPC, - "Migrate printer to local server", - "net rpc printer migrate\n" - " Migrate printer to local server" + N_("Migrate printer to local server"), + N_("net rpc printer migrate\n" + " Migrate printer to local server") }, { "driver", rpc_printer_driver_list, NET_TRANSPORT_RPC, - "List printer drivers", - "net rpc printer driver\n" - " List printer drivers" + N_("List printer drivers"), + N_("net rpc printer driver\n" + " List printer drivers") }, { "publish", rpc_printer_publish, NET_TRANSPORT_RPC, - "Publish printer in AD", - "net rpc printer publish\n" - " Publish printer in AD" + N_("Publish printer in AD"), + N_("net rpc printer publish\n" + " Publish printer in AD") }, {NULL, NULL, 0, NULL, NULL} }; if (argc == 0) { if (c->display_usage) { - d_printf("Usage:\n"); - d_printf("net rpc printer\n" - " List printers\n"); + d_printf(_("Usage:\n")); + d_printf(_("net rpc printer\n" + " List printers\n")); net_display_usage_from_functable(func); return 0; } @@ -7010,178 +7067,178 @@ int net_rpc(struct net_context *c, int argc, const char **argv) "audit", net_rpc_audit, NET_TRANSPORT_RPC, - "Modify global audit settings", - "net rpc audit\n" - " Modify global audit settings" + N_("Modify global audit settings"), + N_("net rpc audit\n" + " Modify global audit settings") }, { "info", net_rpc_info, NET_TRANSPORT_RPC, - "Show basic info about a domain", - "net rpc info\n" - " Show basic info about a domain" + N_("Show basic info about a domain"), + N_("net rpc info\n" + " Show basic info about a domain") }, { "join", net_rpc_join, NET_TRANSPORT_RPC, - "Join a domain", - "net rpc join\n" - " Join a domain" + N_("Join a domain"), + N_("net rpc join\n" + " Join a domain") }, { "oldjoin", net_rpc_oldjoin, NET_TRANSPORT_RPC, - "Join a domain created in server manager", - "net rpc oldjoin\n" - " Join a domain created in server manager" + N_("Join a domain created in server manager"), + N_("net rpc oldjoin\n" + " Join a domain created in server manager") }, { "testjoin", net_rpc_testjoin, NET_TRANSPORT_RPC, - "Test that a join is valid", - "net rpc testjoin\n" - " Test that a join is valid" + N_("Test that a join is valid"), + N_("net rpc testjoin\n" + " Test that a join is valid") }, { "user", net_rpc_user, NET_TRANSPORT_RPC, - "List/modify users", - "net rpc user\n" - " List/modify users" + N_("List/modify users"), + N_("net rpc user\n" + " List/modify users") }, { "password", rpc_user_password, NET_TRANSPORT_RPC, - "Change a user password", - "net rpc password\n" - " Change a user password\n" - " Alias for net rpc user password" + N_("Change a user password"), + N_("net rpc password\n" + " Change a user password\n" + " Alias for net rpc user password") }, { "group", net_rpc_group, NET_TRANSPORT_RPC, - "List/modify groups", - "net rpc group\n" - " List/modify groups" + N_("List/modify groups"), + N_("net rpc group\n" + " List/modify groups") }, { "share", net_rpc_share, NET_TRANSPORT_RPC, - "List/modify shares", - "net rpc share\n" - " List/modify shares" + N_("List/modify shares"), + N_("net rpc share\n" + " List/modify shares") }, { "file", net_rpc_file, NET_TRANSPORT_RPC, - "List open files", - "net rpc file\n" - " List open files" + N_("List open files"), + N_("net rpc file\n" + " List open files") }, { "printer", net_rpc_printer, NET_TRANSPORT_RPC, - "List/modify printers", - "net rpc printer\n" - " List/modify printers" + N_("List/modify printers"), + N_("net rpc printer\n" + " List/modify printers") }, { "changetrustpw", net_rpc_changetrustpw, NET_TRANSPORT_RPC, - "Change trust account password", - "net rpc changetrustpw\n" - " Change trust account password" + N_("Change trust account password"), + N_("net rpc changetrustpw\n" + " Change trust account password") }, { "trustdom", rpc_trustdom, NET_TRANSPORT_RPC, - "Modify domain trusts", - "net rpc trustdom\n" - " Modify domain trusts" + N_("Modify domain trusts"), + N_("net rpc trustdom\n" + " Modify domain trusts") }, { "abortshutdown", rpc_shutdown_abort, NET_TRANSPORT_RPC, - "Abort a remote shutdown", - "net rpc abortshutdown\n" - " Abort a remote shutdown" + N_("Abort a remote shutdown"), + N_("net rpc abortshutdown\n" + " Abort a remote shutdown") }, { "shutdown", rpc_shutdown, NET_TRANSPORT_RPC, - "Shutdown a remote server", - "net rpc shutdown\n" - " Shutdown a remote server" + N_("Shutdown a remote server"), + N_("net rpc shutdown\n" + " Shutdown a remote server") }, { "samdump", rpc_samdump, NET_TRANSPORT_RPC, - "Dump SAM data of remote NT PDC", - "net rpc samdump\n" - " Dump SAM data of remote NT PDC" + N_("Dump SAM data of remote NT PDC"), + N_("net rpc samdump\n" + " Dump SAM data of remote NT PDC") }, { "vampire", rpc_vampire, NET_TRANSPORT_RPC, - "Sync a remote NT PDC's data into local passdb", - "net rpc vampire\n" - " Sync a remote NT PDC's data into local passdb" + N_("Sync a remote NT PDC's data into local passdb"), + N_("net rpc vampire\n" + " Sync a remote NT PDC's data into local passdb") }, { "getsid", net_rpc_getsid, NET_TRANSPORT_RPC, - "Fetch the domain sid into local secrets.tdb", - "net rpc getsid\n" - " Fetch the domain sid into local secrets.tdb" + N_("Fetch the domain sid into local secrets.tdb"), + N_("net rpc getsid\n" + " Fetch the domain sid into local secrets.tdb") }, { "rights", net_rpc_rights, NET_TRANSPORT_RPC, - "Manage privileges assigned to SID", - "net rpc rights\n" - " Manage privileges assigned to SID" + N_("Manage privileges assigned to SID"), + N_("net rpc rights\n" + " Manage privileges assigned to SID") }, { "service", net_rpc_service, NET_TRANSPORT_RPC, - "Start/stop/query remote services", - "net rpc service\n" - " Start/stop/query remote services" + N_("Start/stop/query remote services"), + N_("net rpc service\n" + " Start/stop/query remote services") }, { "registry", net_rpc_registry, NET_TRANSPORT_RPC, - "Manage registry hives", - "net rpc registry\n" - " Manage registry hives" + N_("Manage registry hives"), + N_("net rpc registry\n" + " Manage registry hives") }, { "shell", net_rpc_shell, NET_TRANSPORT_RPC, - "Open interactive shell on remote server", - "net rpc shell\n" - " Open interactive shell on remote server" + N_("Open interactive shell on remote server"), + N_("net rpc shell\n" + " Open interactive shell on remote server") }, {NULL, NULL, 0, NULL, NULL} }; -- cgit From ba830cf1cdcd2a276f3ea2c50274627f5951bdf9 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Thu, 6 Aug 2009 20:38:39 +0200 Subject: Revert "s3: Update i18n files" This reverts commit 57b5269038624b70e117025af9b977e0addcdc8e, 6e044a22cf232798efbd40a2b55fd9556483d403 and c9803ee26ad1b2f92f2ce7653ce16ac84d0b3eb6. The correct location for net .po files is in locale/net/ --- source3/po/de.msg | 3760 +++-------------------------------------------------- source3/po/en.msg | 3703 ++-------------------------------------------------- source3/po/fr.msg | 3728 ++-------------------------------------------------- source3/po/genmsg | 18 +- source3/po/it.msg | 3728 ++-------------------------------------------------- source3/po/ja.msg | 3733 ++-------------------------------------------------- source3/po/pl.msg | 3728 ++-------------------------------------------------- source3/po/ru.msg | 3737 +++------------------------------------------------- source3/po/tr.msg | 3733 ++-------------------------------------------------- 9 files changed, 1170 insertions(+), 28698 deletions(-) (limited to 'source3') diff --git a/source3/po/de.msg b/source3/po/de.msg index 8c51cc093f..31baaf794c 100644 --- a/source3/po/de.msg +++ b/source3/po/de.msg @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: swat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-30 12:18+0200\n" +"POT-Creation-Date: 2007-06-04 18:15+0200\n" "PO-Revision-Date: 2007-06-10 11:52+0200\n" "Last-Translator: Helge Kreutzmann \n" "Language-Team: German \n" @@ -27,4014 +27,590 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../web/swat.c:153 +#: ../web/swat.c:139 #, c-format msgid "ERROR: Can't open %s" msgstr "FEHLER: Kann %s nicht öffnen" -#: ../web/swat.c:241 +#: ../web/swat.c:223 msgid "Help" msgstr "Hilfe" -#: ../web/swat.c:247 ../web/swat.c:272 ../web/swat.c:293 ../web/swat.c:302 ../web/swat.c:311 ../web/swat.c:317 ../web/swat.c:329 ../web/swat.c:343 +#: ../web/swat.c:229 ../web/swat.c:254 ../web/swat.c:275 ../web/swat.c:285 +#: ../web/swat.c:294 ../web/swat.c:303 ../web/swat.c:309 ../web/swat.c:315 +#: ../web/swat.c:328 msgid "Set Default" msgstr "Standardwert setzen" -#: ../web/swat.c:465 +#: ../web/swat.c:450 #, c-format msgid "failed to open %s for writing" msgstr "konnte %s nicht zum Schreiben öffnen" -#: ../web/swat.c:488 +#: ../web/swat.c:473 #, c-format msgid "Can't reload %s" msgstr "Kann %s nicht erneut laden" -#: ../web/swat.c:561 +#: ../web/swat.c:543 #, c-format msgid "Logged in as %s" msgstr "Verbunden als %s" -#: ../web/swat.c:565 +#: ../web/swat.c:547 msgid "Home" msgstr "Home" -#: ../web/swat.c:567 +#: ../web/swat.c:549 msgid "Globals" msgstr "Globals" -#: ../web/swat.c:568 +#: ../web/swat.c:550 msgid "Shares" msgstr "Freigaben" -#: ../web/swat.c:569 +#: ../web/swat.c:551 msgid "Printers" msgstr "Drucker" -#: ../web/swat.c:570 +#: ../web/swat.c:552 msgid "Wizard" msgstr "Assistent" -#: ../web/swat.c:574 +#: ../web/swat.c:556 msgid "Status" msgstr "Status" -#: ../web/swat.c:575 +#: ../web/swat.c:557 msgid "View Config" msgstr "Zeige Konfiguration" -#: ../web/swat.c:577 +#: ../web/swat.c:559 msgid "Password Management" msgstr "Passwortverwaltung" -#: ../web/swat.c:587 +#: ../web/swat.c:569 msgid "Current View Is" msgstr "Aktuelle Ansicht lautet" -#: ../web/swat.c:588 ../web/swat.c:591 +#: ../web/swat.c:570 ../web/swat.c:573 msgid "Basic" msgstr "Einfache Ansicht" -#: ../web/swat.c:589 ../web/swat.c:592 +#: ../web/swat.c:571 ../web/swat.c:574 msgid "Advanced" msgstr "Erweiterte Ansicht" -#: ../web/swat.c:590 +#: ../web/swat.c:572 msgid "Change View To" msgstr "Ansicht ändern in" -#: ../web/swat.c:619 +#: ../web/swat.c:601 msgid "Current Config" msgstr "Aktuelle Konfiguration" -#: ../web/swat.c:623 +#: ../web/swat.c:605 msgid "Normal View" msgstr "Normale Ansicht" -#: ../web/swat.c:625 +#: ../web/swat.c:607 msgid "Full View" msgstr "Komplette Ansicht" #. Here we first set and commit all the parameters that were selected #. in the previous screen. -#: ../web/swat.c:644 +#: ../web/swat.c:626 msgid "Wizard Parameter Edit Page" msgstr "Bearbeitungsseite der Assistenten-Parameter" -#: ../web/swat.c:673 +#: ../web/swat.c:655 msgid "Note: smb.conf file has been read and rewritten" msgstr "Hinweis: smb.conf wurde gelesen und überschrieben" #. Here we go ... -#: ../web/swat.c:779 +#: ../web/swat.c:763 msgid "Samba Configuration Wizard" msgstr "Samba-Konfigurationsassistent" -#: ../web/swat.c:783 -msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." -msgstr "Der Knopf »Schreibe smb.conf neu« wird alle Kommentare und Standardwerte aus der smb.conf löschen." +#: ../web/swat.c:767 +msgid "" +"The \"Rewrite smb.conf file\" button will clear the smb.conf file of all " +"default values and of comments." +msgstr "" +"Der Knopf »Schreibe smb.conf neu« wird alle Kommentare und Standardwerte " +"aus der smb.conf löschen." -#: ../web/swat.c:784 +#: ../web/swat.c:768 msgid "The same will happen if you press the commit button." msgstr "Das gleiche passiert beim Knopf »übernehmen«." -#: ../web/swat.c:787 +#: ../web/swat.c:771 msgid "Rewrite smb.conf file" msgstr "Schreibe smb.conf neu" -#: ../web/swat.c:788 +#: ../web/swat.c:772 msgid "Commit" msgstr "Übernehmen" -#: ../web/swat.c:789 +#: ../web/swat.c:773 msgid "Edit Parameter Values" msgstr "Bearbeite Parameterwerte" -#: ../web/swat.c:795 +#: ../web/swat.c:779 msgid "Server Type" msgstr "Server-Typ" -#: ../web/swat.c:796 +#: ../web/swat.c:780 msgid "Stand Alone" msgstr "Einzelserver" -#: ../web/swat.c:797 +#: ../web/swat.c:781 msgid "Domain Member" msgstr "Domänenmitglied" -#: ../web/swat.c:798 +#: ../web/swat.c:782 msgid "Domain Controller" msgstr "Domänencontroller" -#: ../web/swat.c:801 +#: ../web/swat.c:785 msgid "Unusual Type in smb.conf - Please Select New Mode" -msgstr "Ungewöhnlicher Typ in der smb.conf - Bitte wählen Sie einen neuen Modus" +msgstr "" +"Ungewöhnlicher Typ in der smb.conf - Bitte wählen Sie einen neuen Modus" -#: ../web/swat.c:803 +#: ../web/swat.c:787 msgid "Configure WINS As" msgstr "Konfiguriere WINS als" -#: ../web/swat.c:804 +#: ../web/swat.c:788 msgid "Not Used" msgstr "Nicht benutzt" -#: ../web/swat.c:805 +#: ../web/swat.c:789 msgid "Server for client use" msgstr "Server für Client-Verwendung" -#: ../web/swat.c:806 +#: ../web/swat.c:790 msgid "Client of another WINS server" msgstr "Client eines anderen WINS-Servers" -#: ../web/swat.c:808 +#: ../web/swat.c:792 msgid "Remote WINS Server" msgstr "Entfernter WINS-Server:" -#: ../web/swat.c:819 +#: ../web/swat.c:803 msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" -msgstr "Fehler: Sowohl WINS-Server-Modus als auch WINS-Unterstützung in smb.conf aktiviert" +msgstr "" +"Fehler: Sowohl WINS-Server-Modus als auch WINS-Unterstützung in smb.conf " +"aktiviert" -#: ../web/swat.c:820 +#: ../web/swat.c:804 msgid "Please Select desired WINS mode above." msgstr "Bitte wählen Sie den gewünschten WINS-Modus oben aus." -#: ../web/swat.c:822 +#: ../web/swat.c:806 msgid "Expose Home Directories" msgstr "Home-Verzeichnisse freigeben" -#: ../web/swat.c:837 -msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." -msgstr "Die obigen Konfigurationsoptionen bearbeiten mehrere Parameter und dienen als Hilfe zur schnellen Samba-Einrichtung." +#: ../web/swat.c:821 +msgid "" +"The above configuration options will set multiple parameters and will " +"generally assist with rapid Samba deployment." +msgstr "" +"Die obigen Konfigurationsoptionen bearbeiten mehrere Parameter und dienen als " +"Hilfe zur schnellen Samba-Einrichtung." -#: ../web/swat.c:850 +#: ../web/swat.c:834 msgid "Global Parameters" msgstr "Globale Parameter" -#: ../web/swat.c:878 ../web/swat.c:986 ../web/swat.c:1344 +#: ../web/swat.c:862 ../web/swat.c:966 ../web/swat.c:1318 msgid "Commit Changes" msgstr "Änderungen speichern" -#: ../web/swat.c:882 ../web/swat.c:989 ../web/swat.c:1346 +#: ../web/swat.c:866 ../web/swat.c:969 ../web/swat.c:1320 msgid "Reset Values" msgstr "Werte zurücksetzen" -#: ../web/swat.c:908 +#: ../web/swat.c:891 msgid "Share Parameters" msgstr "Parameter der Freigabe" -#: ../web/swat.c:955 +#: ../web/swat.c:934 msgid "Choose Share" msgstr "Wähle Freigabe" -#: ../web/swat.c:971 +#: ../web/swat.c:951 msgid "Delete Share" msgstr "Lösche Freigabe" -#: ../web/swat.c:978 +#: ../web/swat.c:958 msgid "Create Share" msgstr "Erstelle Freigabe" -#: ../web/swat.c:1014 +#: ../web/swat.c:994 msgid "password change in demo mode rejected" msgstr "Änderung des Passworts im Demo-Modus nicht möglich" -#: ../web/swat.c:1028 +#: ../web/swat.c:1007 msgid "Can't setup password database vectors." msgstr "Kann Passwort-Datenbankvektoren nicht einrichten" -#: ../web/swat.c:1056 +#: ../web/swat.c:1033 msgid " Must specify \"User Name\" " msgstr " »Benutzername« muss angegeben werden " -#: ../web/swat.c:1072 +#: ../web/swat.c:1049 msgid " Must specify \"Old Password\" " msgstr " »Altes Passwort« muss angegeben werden " -#: ../web/swat.c:1078 +#: ../web/swat.c:1055 msgid " Must specify \"Remote Machine\" " msgstr " »Entfernter Server« muss angegeben werden " -#: ../web/swat.c:1085 +#: ../web/swat.c:1062 msgid " Must specify \"New, and Re-typed Passwords\" " msgstr " »Neues/wiederholtes Passwort« muss angegeben werden " -#: ../web/swat.c:1091 +#: ../web/swat.c:1068 msgid " Re-typed password didn't match new password " msgstr " Das wiederholte Passwort stimmt nicht mit dem neuen Passwort überein" -#: ../web/swat.c:1124 +#: ../web/swat.c:1101 #, c-format msgid " The passwd for '%s' has been changed." msgstr " Das Passwort für '%s' wurde geändert." -#: ../web/swat.c:1127 +#: ../web/swat.c:1104 #, c-format msgid " The passwd for '%s' has NOT been changed." msgstr " Das Passwort für '%s' wurde NICHT geändert." -#: ../web/swat.c:1152 +#: ../web/swat.c:1129 msgid "Server Password Management" msgstr "Verwaltung des Server-Passwortes" #. #. * Create all the dialog boxes for data collection #. -#: ../web/swat.c:1161 ../web/swat.c:1208 +#: ../web/swat.c:1138 ../web/swat.c:1185 msgid "User Name" msgstr "Benutzername" -#: ../web/swat.c:1164 ../web/swat.c:1210 +#: ../web/swat.c:1141 ../web/swat.c:1187 msgid "Old Password" msgstr "Altes Passwort" -#: ../web/swat.c:1167 ../web/swat.c:1212 +#: ../web/swat.c:1144 ../web/swat.c:1189 msgid "New Password" msgstr "Neues Passwort" -#: ../web/swat.c:1169 ../web/swat.c:1214 +#: ../web/swat.c:1146 ../web/swat.c:1191 msgid "Re-type New Password" msgstr "Wiederhole neues Passwort" -#: ../web/swat.c:1177 ../web/swat.c:1225 +#: ../web/swat.c:1154 ../web/swat.c:1202 msgid "Change Password" msgstr "Ändere Passwort" -#: ../web/swat.c:1180 +#: ../web/swat.c:1157 msgid "Add New User" msgstr "Füge neuen Benutzer hinzu" -#: ../web/swat.c:1182 +#: ../web/swat.c:1159 msgid "Delete User" msgstr "Lösche Benutzer" -#: ../web/swat.c:1184 +#: ../web/swat.c:1161 msgid "Disable User" msgstr "Deaktiviere Benutzer" -#: ../web/swat.c:1186 +#: ../web/swat.c:1163 msgid "Enable User" msgstr "Aktiviere Benutzer" -#: ../web/swat.c:1199 +#: ../web/swat.c:1176 msgid "Client/Server Password Management" msgstr "Client/Server Passwort-Verwaltung" -#: ../web/swat.c:1216 +#: ../web/swat.c:1193 msgid "Remote Machine" msgstr "Entfernte Maschine" -#: ../web/swat.c:1255 +#: ../web/swat.c:1232 msgid "Printer Parameters" msgstr "Drucker-Parameter" -#: ../web/swat.c:1257 +#: ../web/swat.c:1234 msgid "Important Note:" msgstr "Wichtiger Hinweis:" -#: ../web/swat.c:1258 +#: ../web/swat.c:1235 +#, c-format msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Mit [*] gekennzeichnete Drucker in der »Wähle Drucker«-Auswahlliste " -#: ../web/swat.c:1259 +#: ../web/swat.c:1236 +#, c-format msgid "are autoloaded printers from " msgstr "sind automatisch geladene Drucker aus " -#: ../web/swat.c:1260 +#: ../web/swat.c:1237 msgid "Printcap Name" msgstr "Printcap-Name" -#: ../web/swat.c:1261 +#: ../web/swat.c:1238 msgid "Attempting to delete these printers from SWAT will have no effect." -msgstr "Der Versuch, diese Drucker von SWAT aus zu löschen, wird keine Auswirkung haben." +msgstr "" +"Der Versuch, diese Drucker von SWAT aus zu löschen, wird keine Auswirkung " +"haben." -#: ../web/swat.c:1310 +#: ../web/swat.c:1284 msgid "Choose Printer" msgstr "Wähle Drucker" -#: ../web/swat.c:1329 +#: ../web/swat.c:1303 msgid "Delete Printer" msgstr "Lösche Drucker" -#: ../web/swat.c:1336 +#: ../web/swat.c:1310 msgid "Create Printer" msgstr "Erstelle Drucker" -#: ../web/statuspage.c:151 +#: ../web/statuspage.c:139 msgid "RDWR " msgstr "LESE/SCHREIBE " -#: ../web/statuspage.c:153 +#: ../web/statuspage.c:141 msgid "WRONLY " msgstr "NUR SCHREIBE " -#: ../web/statuspage.c:155 +#: ../web/statuspage.c:143 msgid "RDONLY " msgstr "NUR LESE " -#: ../web/statuspage.c:329 +#: ../web/statuspage.c:330 msgid "Server Status" msgstr "Server-Status" -#: ../web/statuspage.c:334 +#: ../web/statuspage.c:335 msgid "Auto Refresh" msgstr "Automatische Aktualisierung" -#: ../web/statuspage.c:335 ../web/statuspage.c:340 +#: ../web/statuspage.c:336 ../web/statuspage.c:341 msgid "Refresh Interval: " msgstr "Aktualisierungsintervall: " -#: ../web/statuspage.c:339 +#: ../web/statuspage.c:340 msgid "Stop Refreshing" msgstr "Stoppe Aktualisierung" -#: ../web/statuspage.c:348 +#: ../web/statuspage.c:355 msgid "version:" msgstr "Version:" -#: ../web/statuspage.c:351 +#: ../web/statuspage.c:358 msgid "smbd:" msgstr "smbd:" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:358 ../web/statuspage.c:371 ../web/statuspage.c:385 msgid "running" msgstr "aktiv" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:358 ../web/statuspage.c:371 ../web/statuspage.c:385 msgid "not running" msgstr "inaktiv" -#: ../web/statuspage.c:355 +#: ../web/statuspage.c:362 msgid "Stop smbd" msgstr "Stoppe smbd" -#: ../web/statuspage.c:357 +#: ../web/statuspage.c:364 msgid "Start smbd" msgstr "Starte smbd" -#: ../web/statuspage.c:359 +#: ../web/statuspage.c:366 msgid "Restart smbd" msgstr "Starte smbd neu" -#: ../web/statuspage.c:364 +#: ../web/statuspage.c:371 msgid "nmbd:" msgstr "nmbd:" -#: ../web/statuspage.c:368 +#: ../web/statuspage.c:375 msgid "Stop nmbd" msgstr "Stoppe nmbd" -#: ../web/statuspage.c:370 +#: ../web/statuspage.c:377 msgid "Start nmbd" msgstr "Starte nmbd" -#: ../web/statuspage.c:372 +#: ../web/statuspage.c:379 msgid "Restart nmbd" msgstr "Starte nmbd neu" -#: ../web/statuspage.c:378 +#: ../web/statuspage.c:385 msgid "winbindd:" msgstr "winbindd:" -#: ../web/statuspage.c:382 +#: ../web/statuspage.c:389 msgid "Stop winbindd" msgstr "Stoppe winbindd" -#: ../web/statuspage.c:384 +#: ../web/statuspage.c:391 msgid "Start winbindd" msgstr "Starte winbindd" -#: ../web/statuspage.c:386 +#: ../web/statuspage.c:393 msgid "Restart winbindd" msgstr "Starte winbindd neu" #. stop, restart all -#: ../web/statuspage.c:395 +#: ../web/statuspage.c:402 msgid "Stop All" msgstr "Alle Stoppen" -#: ../web/statuspage.c:396 +#: ../web/statuspage.c:403 msgid "Restart All" msgstr "Alle neu starten" #. start all -#: ../web/statuspage.c:400 +#: ../web/statuspage.c:407 msgid "Start All" msgstr "Alle starten" -#: ../web/statuspage.c:407 +#: ../web/statuspage.c:414 msgid "Active Connections" msgstr "Aktive Verbindungen" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:416 ../web/statuspage.c:429 ../web/statuspage.c:437 msgid "PID" msgstr "PID" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 +#: ../web/statuspage.c:416 ../web/statuspage.c:429 msgid "Client" msgstr "Client" -#: ../web/statuspage.c:409 +#: ../web/statuspage.c:416 msgid "IP address" msgstr "IP-Adresse" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:416 ../web/statuspage.c:429 ../web/statuspage.c:437 msgid "Date" msgstr "Datum" -#: ../web/statuspage.c:411 +#: ../web/statuspage.c:418 msgid "Kill" msgstr "Töten" -#: ../web/statuspage.c:419 +#: ../web/statuspage.c:426 msgid "Active Shares" msgstr "Aktive Freigaben" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:429 msgid "Share" msgstr "Freigabe" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:429 msgid "User" msgstr "Benutzer" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:429 msgid "Group" msgstr "Gruppe" -#: ../web/statuspage.c:428 +#: ../web/statuspage.c:435 msgid "Open Files" msgstr "Offene Dateien" -#: ../web/statuspage.c:431 -#, fuzzy -msgid "UID" -msgstr "PID" - -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:437 msgid "Sharing" msgstr "Freigeben" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:437 msgid "R/W" msgstr "Lese/Schreibe" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:437 msgid "Oplock" msgstr "Opportunistische Sperre (Lock)" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:437 msgid "File" msgstr "Datei" -#: ../web/statuspage.c:438 +#: ../web/statuspage.c:446 msgid "Show Client in col 1" msgstr "Zeige Client in Spalte 1" -#: ../web/statuspage.c:439 +#: ../web/statuspage.c:447 msgid "Show PID in col 1" msgstr "Zeige PID in Spalte 1" -#: ../param/loadparm.c:907 +#: ../param/loadparm.c:836 msgid "Base Options" msgstr "Basisoptionen" -#: ../param/loadparm.c:1047 +#: ../param/loadparm.c:855 msgid "Security Options" msgstr "Sicherheitsoptionen" -#: ../param/loadparm.c:1800 +#: ../param/loadparm.c:945 msgid "Logging Options" msgstr "Protokollier-Optionen" -#: ../param/loadparm.c:1929 +#: ../param/loadparm.c:962 msgid "Protocol Options" msgstr "Protokoll-Optionen" -#: ../param/loadparm.c:2301 +#: ../param/loadparm.c:1008 msgid "Tuning Options" msgstr "Optimierungsoptionen" -#: ../param/loadparm.c:2538 +#: ../param/loadparm.c:1037 msgid "Printing Options" msgstr "Druckoptionen" -#: ../param/loadparm.c:2858 +#: ../param/loadparm.c:1075 msgid "Filename Handling" msgstr "Dateinamen-Verwaltung" -#: ../param/loadparm.c:3088 +#: ../param/loadparm.c:1105 msgid "Domain Options" msgstr "Domänen-Optionen" -#: ../param/loadparm.c:3100 +#: ../param/loadparm.c:1109 msgid "Logon Options" msgstr "Anmelde-Optionen" -#: ../param/loadparm.c:3273 +#: ../param/loadparm.c:1130 msgid "Browse Options" msgstr "Browsing-Optionen" -#: ../param/loadparm.c:3384 +#: ../param/loadparm.c:1144 msgid "WINS Options" msgstr "WINS-Optionen" -#: ../param/loadparm.c:3432 +#: ../param/loadparm.c:1153 msgid "Locking Options" msgstr "Locking-(Sperr-)Optionen" -#: ../param/loadparm.c:3552 +#: ../param/loadparm.c:1170 msgid "Ldap Options" msgstr "LDAP-Optionen" -#: ../param/loadparm.c:3708 -msgid "EventLog Options" -msgstr "EventLog-Optionen" - -#: ../param/loadparm.c:3720 +#: ../param/loadparm.c:1186 msgid "Miscellaneous Options" msgstr "Sonstige Optionen" -#: ../param/loadparm.c:4301 -msgid "VFS module options" -msgstr "VFS-Modul-Optionen" +#: ../param/loadparm.c:1191 +#| msgid "Logon Options" +msgid "EventLog Options" +msgstr "EventLog-Optionen" -#: ../param/loadparm.c:4323 -#, fuzzy -msgid "MSDFS options" +#: ../param/loadparm.c:1258 +msgid "VFS module options" msgstr "VFS-Modul-Optionen" -#: ../param/loadparm.c:4353 +#: ../param/loadparm.c:1268 msgid "Winbind options" msgstr "Winbind-Optionen" - -#: ../utils/net.c:103 -msgid "Enter machine password: " -msgstr "" - -#: ../utils/net.c:107 -msgid "Unable to write the machine account password in the secrets database" -msgstr "" - -#: ../utils/net.c:111 -msgid "Modified trust account password in secrets database\n" -msgstr "" - -#: ../utils/net.c:115 -msgid "" -"Machine account password change requires the -f flag.\n" -"Do NOT use this function unless you know what it does!\n" -"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" -msgstr "" - -#: ../utils/net.c:150 ../utils/net.c:228 -#, c-format -msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" -msgstr "" - -#: ../utils/net.c:163 ../utils/net.c:251 -#, c-format -msgid "SID for domain %s is: %s\n" -msgstr "" - -#: ../utils/net.c:175 -msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:195 -msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:213 -msgid "usage: net getdomainsid\n" -msgstr "" - -#: ../utils/net.c:238 -msgid "Could not fetch local SID\n" -msgstr "" - -#: ../utils/net.c:242 -#, c-format -msgid "SID for local machine %s is: %s\n" -msgstr "" - -#: ../utils/net.c:246 -msgid "Could not fetch domain SID\n" -msgstr "" - -#: ../utils/net.c:263 -#, c-format -msgid "get_maxrid: Could not search %s\n" -msgstr "" - -#: ../utils/net.c:297 -msgid "usage: net maxrid\n" -msgstr "" - -#: ../utils/net.c:302 -msgid "can't get current maximum rid\n" -msgstr "" - -#: ../utils/net.c:306 -#, c-format -msgid "Currently used maximum rid: %d\n" -msgstr "" - -#: ../utils/net.c:317 -msgid "Run functions using RPC transport" -msgstr "" - -#: ../utils/net.c:318 -msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." -msgstr "" - -#: ../utils/net.c:325 -msgid "Run functions using RAP transport" -msgstr "" - -#: ../utils/net.c:326 -msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." -msgstr "" - -#: ../utils/net.c:333 -msgid "Run functions using ADS transport" -msgstr "" - -#: ../utils/net.c:334 -msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." -msgstr "" - -#: ../utils/net.c:343 -msgid "Functions on remote opened files" -msgstr "" - -#: ../utils/net.c:344 -msgid " Use 'net help file' to get more information about 'net file' commands." -msgstr "" - -#: ../utils/net.c:351 -msgid "Functions on shares" -msgstr "" - -#: ../utils/net.c:352 -msgid " Use 'net help share' to get more information about 'net share' commands." -msgstr "" - -#: ../utils/net.c:359 -msgid "Manage sessions" -msgstr "" - -#: ../utils/net.c:360 -msgid " Use 'net help session' to get more information about 'net session' commands." -msgstr "" - -#: ../utils/net.c:367 -msgid "List servers in workgroup" -msgstr "" - -#: ../utils/net.c:368 -msgid " Use 'net help server' to get more information about 'net server' commands." -msgstr "" - -#: ../utils/net.c:375 -msgid "List domains/workgroups on network" -msgstr "" - -#: ../utils/net.c:376 -msgid " Use 'net help domain' to get more information about 'net domain' commands." -msgstr "" - -#: ../utils/net.c:383 -msgid "Modify printer queue" -msgstr "" - -#: ../utils/net.c:384 -msgid " Use 'net help printq' to get more information about 'net printq' commands." -msgstr "" - -#: ../utils/net.c:391 -#, fuzzy -msgid "Manage users" -msgstr "Aktiviere Benutzer" - -#: ../utils/net.c:392 -msgid " Use 'net help user' to get more information about 'net user' commands." -msgstr "" - -#: ../utils/net.c:399 -msgid "Manage groups" -msgstr "" - -#: ../utils/net.c:400 -msgid " Use 'net help group' to get more information about 'net group' commands." -msgstr "" - -#: ../utils/net.c:407 -msgid "Manage group mappings" -msgstr "" - -#: ../utils/net.c:408 -msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." -msgstr "" - -#: ../utils/net.c:415 -msgid "Functions on the SAM database" -msgstr "" - -#: ../utils/net.c:416 -msgid " Use 'net help sam' to get more information about 'net sam' commands." -msgstr "" - -#: ../utils/net.c:423 -msgid "Validate username and password" -msgstr "" - -#: ../utils/net.c:424 -msgid " Use 'net help validate' to get more information about 'net validate' commands." -msgstr "" - -#: ../utils/net.c:431 -msgid "Modify group memberships" -msgstr "" - -#: ../utils/net.c:432 -msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." -msgstr "" - -#: ../utils/net.c:438 -msgid "Execute remote command on a remote OS/2 server" -msgstr "" - -#: ../utils/net.c:439 -msgid " Use 'net help admin' to get more information about 'net admin' commands." -msgstr "" - -#: ../utils/net.c:445 -msgid "List/modify running services" -msgstr "" - -#: ../utils/net.c:446 -msgid " Use 'net help service' to get more information about 'net service' commands." -msgstr "" - -#: ../utils/net.c:453 -#, fuzzy -msgid "Change user password on target server" -msgstr "Kann Passwort-Datenbankvektoren nicht einrichten" - -#: ../utils/net.c:454 -msgid " Use 'net help password' to get more information about 'net password' commands." -msgstr "" - -#: ../utils/net.c:460 -#, fuzzy -msgid "Change the trust password" -msgstr "Ändere Passwort" - -#: ../utils/net.c:461 -msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." -msgstr "" - -#: ../utils/net.c:467 -#, fuzzy -msgid "Change the secret password" -msgstr "Ändere Passwort" - -#: ../utils/net.c:468 -msgid "" -" net [options] changesecretpw\n" -" Change the ADS domain member machine account password in secrets.tdb.\n" -" Do NOT use this function unless you know what it does.\n" -" Requires the -f flag to work." -msgstr "" - -#: ../utils/net.c:477 -msgid "Show/set time" -msgstr "" - -#: ../utils/net.c:478 -msgid " Use 'net help time' to get more information about 'net time' commands." -msgstr "" - -#: ../utils/net.c:484 -msgid "Look up host names/IP addresses" -msgstr "" - -#: ../utils/net.c:485 -msgid " Use 'net help lookup' to get more information about 'net lookup' commands." -msgstr "" - -#: ../utils/net.c:491 -msgid "Join a domain/AD" -msgstr "" - -#: ../utils/net.c:492 -msgid " Use 'net help join' to get more information about 'net join'." -msgstr "" - -#: ../utils/net.c:498 -msgid "Join/unjoin (remote) machines to/from a domain/AD" -msgstr "" - -#: ../utils/net.c:499 -msgid " Use 'net help dom' to get more information about 'net dom' commands." -msgstr "" - -#: ../utils/net.c:505 -msgid "Operate on the cache tdb file" -msgstr "" - -#: ../utils/net.c:506 -msgid " Use 'net help cache' to get more information about 'net cache' commands." -msgstr "" - -#: ../utils/net.c:512 -msgid "Get the SID for the local domain" -msgstr "" - -#: ../utils/net.c:513 -msgid " net getlocalsid" -msgstr "" - -#: ../utils/net.c:518 -msgid "Set the SID for the local domain" -msgstr "" - -#: ../utils/net.c:519 -msgid " net setlocalsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:524 -msgid "Set domain SID on member servers" -msgstr "" - -#: ../utils/net.c:525 -msgid " net setdomainsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:530 -msgid "Get domain SID on member servers" -msgstr "" - -#: ../utils/net.c:531 -msgid " net getdomainsid" -msgstr "" - -#: ../utils/net.c:536 -msgid "Display the maximul RID currently used" -msgstr "" - -#: ../utils/net.c:537 -msgid " net maxrid" -msgstr "" - -#: ../utils/net.c:542 -#, fuzzy -msgid "IDmap functions" -msgstr "Domänen-Optionen" - -#: ../utils/net.c:543 -msgid " Use 'net help idmap to get more information about 'net idmap' commands." -msgstr "" - -#: ../utils/net.c:549 -#, fuzzy -msgid "Display server status" -msgstr "Server-Status" - -#: ../utils/net.c:550 -msgid " Use 'net help status' to get more information about 'net status' commands." -msgstr "" - -#: ../utils/net.c:556 -msgid "Manage user-modifiable shares" -msgstr "" - -#: ../utils/net.c:557 -msgid " Use 'net help usershare to get more information about 'net usershare' commands." -msgstr "" - -#: ../utils/net.c:563 -msgid "Display list of all users with SID" -msgstr "" - -#: ../utils/net.c:564 -msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." -msgstr "" - -#: ../utils/net.c:570 -msgid "Manage Samba registry based configuration" -msgstr "" - -#: ../utils/net.c:571 -msgid " Use 'net help conf' to get more information about 'net conf' commands." -msgstr "" - -#: ../utils/net.c:577 -msgid "Manage the Samba registry" -msgstr "" - -#: ../utils/net.c:578 -msgid " Use 'net help registry' to get more information about 'net registry' commands." -msgstr "" - -#: ../utils/net.c:584 -msgid "Open a lua interpreter" -msgstr "" - -#: ../utils/net.c:585 -msgid " Use 'net help lua' to get more information about 'net lua' commands." -msgstr "" - -#: ../utils/net.c:591 -msgid "Process Win32 *.evt eventlog files" -msgstr "" - -#: ../utils/net.c:592 -msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." -msgstr "" - -#: ../utils/net.c:600 -msgid "Manage AFS tokens" -msgstr "" - -#: ../utils/net.c:601 -msgid " Use 'net help afs' to get more information about 'net afs' commands." -msgstr "" - -#: ../utils/net.c:609 -msgid "Print usage information" -msgstr "" - -#: ../utils/net.c:610 -msgid " Use 'net help help' to list usage information for 'net' commands." -msgstr "" - -#: ../utils/net.c:639 -msgid "Encrypt SMB transport (UNIX extended servers only)" -msgstr "" - -#: ../utils/net.c:703 -msgid "" -"\n" -"Invalid ip address specified\n" -msgstr "" - -#: ../utils/net.c:718 -#, c-format -msgid "" -"\n" -"Invalid option %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:52 ../utils/net_ads.c:392 -msgid "CLDAP query failed!\n" -msgstr "" - -#: ../utils/net_ads.c:56 -#, fuzzy, c-format -msgid "" -"Information for Domain Controller: %s\n" -"\n" -msgstr "Domänencontroller" - -#: ../utils/net_ads.c:59 -msgid "Response Type: " -msgstr "" - -#: ../utils/net_ads.c:72 -#, c-format -msgid "GUID: %s\n" -msgstr "" - -#: ../utils/net_ads.c:74 -#, c-format -msgid "" -"Flags:\n" -"\tIs a PDC: %s\n" -"\tIs a GC of the forest: %s\n" -"\tIs an LDAP server: %s\n" -"\tSupports DS: %s\n" -"\tIs running a KDC: %s\n" -"\tIs running time services: %s\n" -"\tIs the closest DC: %s\n" -"\tIs writable: %s\n" -"\tHas a hardware clock: %s\n" -"\tIs a non-domain NC serviced by LDAP server: %s\n" -"\tIs NT6 DC that has some secrets: %s\n" -"\tIs NT6 DC that has all secrets: %s\n" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "yes" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "no" -msgstr "" - -#: ../utils/net_ads.c:101 -#, c-format -msgid "Forest:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:102 -#, c-format -msgid "Domain:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:103 -#, fuzzy, c-format -msgid "Domain Controller:\t%s\n" -msgstr "Domänencontroller" - -#: ../utils/net_ads.c:105 -#, c-format -msgid "Pre-Win2k Domain:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:106 -#, c-format -msgid "Pre-Win2k Hostname:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:108 -#, fuzzy, c-format -msgid "User name:\t%s\n" -msgstr "Benutzername" - -#: ../utils/net_ads.c:110 -#, fuzzy, c-format -msgid "Server Site Name :\t\t%s\n" -msgstr "Server-Status" - -#: ../utils/net_ads.c:111 -#, c-format -msgid "Client Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:113 -#, fuzzy, c-format -msgid "NT Version: %d\n" -msgstr "Version:" - -#: ../utils/net_ads.c:114 -#, c-format -msgid "LMNT Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:115 -#, c-format -msgid "LM20 Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:130 -msgid "" -"Usage:\n" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookup.\n" -msgstr "" - -#: ../utils/net_ads.c:137 ../utils/net_ads.c:381 -msgid "Didn't find the cldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:160 -msgid "" -"Usage:\n" -"net ads info\n" -" Display information about an Active Directory server.\n" -msgstr "" - -#: ../utils/net_ads.c:168 ../utils/net_ads.c:173 -msgid "Didn't find the ldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:182 -msgid "Failed to get server's current time!\n" -msgstr "" - -#: ../utils/net_ads.c:187 -#, c-format -msgid "LDAP server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:188 -#, c-format -msgid "LDAP server name: %s\n" -msgstr "" - -#: ../utils/net_ads.c:189 -#, c-format -msgid "Realm: %s\n" -msgstr "" - -#: ../utils/net_ads.c:190 -#, c-format -msgid "Bind Path: %s\n" -msgstr "" - -#: ../utils/net_ads.c:191 -#, c-format -msgid "LDAP port: %d\n" -msgstr "" - -#: ../utils/net_ads.c:192 -#, fuzzy, c-format -msgid "Server time: %s\n" -msgstr "Server-Status" - -#: ../utils/net_ads.c:195 -#, c-format -msgid "KDC server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:196 -#, c-format -msgid "Server time offset: %d\n" -msgstr "" - -#: ../utils/net_ads.c:374 -msgid "" -"Usage:\n" -"net ads workgroup\n" -" Print the workgroup name\n" -msgstr "" - -#: ../utils/net_ads.c:397 -#, c-format -msgid "Workgroup: %s\n" -msgstr "" - -#: ../utils/net_ads.c:458 -#, c-format -msgid "ads_user_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:463 -#, c-format -msgid "ads_user_add: User %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:477 -#, c-format -msgid "Could not add user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:484 ../utils/net_ads.c:497 -#, fuzzy, c-format -msgid "User %s added\n" -msgstr "Benutzername" - -#. password didn't set, delete account -#: ../utils/net_ads.c:503 -#, c-format -msgid "Could not add user %s. Error setting password %s\n" -msgstr "" - -#: ../utils/net_ads.c:551 -#, c-format -msgid "ads_user_info: failed to escape user %s\n" -msgstr "" - -#: ../utils/net_ads.c:569 -#, c-format -msgid "ads_search: %s\n" -msgstr "" - -#: ../utils/net_ads.c:575 -msgid "ads_pull_uint32 failed\n" -msgstr "" - -#: ../utils/net_ads.c:582 -#, c-format -msgid "ads_domain_sid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:642 -#, c-format -msgid "User %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:652 -#, c-format -msgid "User %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:656 -#, c-format -msgid "Error deleting user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:669 -#, fuzzy -msgid "Add an AD user" -msgstr "Füge neuen Benutzer hinzu" - -#: ../utils/net_ads.c:670 -msgid "" -"net ads user add\n" -" Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:677 -msgid "Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:678 -msgid "" -"net ads user info\n" -" Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:685 -#, fuzzy -msgid "Delete an AD user" -msgstr "Lösche Benutzer" - -#: ../utils/net_ads.c:686 -msgid "" -"net ads user delete\n" -" Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:699 -msgid "" -"Usage:\n" -"net ads user\n" -" List AD users\n" -msgstr "" - -#: ../utils/net_ads.c:711 -msgid "" -"\n" -"User name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:751 -#, c-format -msgid "ads_group_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:756 -#, c-format -msgid "ads_group_add: Group %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:769 -#, c-format -msgid "Group %s added\n" -msgstr "" - -#: ../utils/net_ads.c:772 -#, c-format -msgid "Could not add group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:801 -#, c-format -msgid "Group %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:811 -#, c-format -msgid "Group %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:815 -#, c-format -msgid "Error deleting group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:828 -msgid "Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:829 -msgid "" -"net ads group add\n" -" Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:836 -#, fuzzy -msgid "Delete an AD group" -msgstr "Lösche Freigabe" - -#: ../utils/net_ads.c:837 -msgid "" -"net ads group delete\n" -" Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:850 -msgid "" -"Usage:\n" -"net ads group\n" -" List AD groups\n" -msgstr "" - -#: ../utils/net_ads.c:862 -msgid "" -"\n" -"Group name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:884 -msgid "" -"Usage:\n" -"net ads status\n" -" Display machine account details\n" -msgstr "" - -#: ../utils/net_ads.c:896 -#, c-format -msgid "ads_find_machine_acct: %s\n" -msgstr "" - -#: ../utils/net_ads.c:902 -#, c-format -msgid "No machine account for '%s' found\n" -msgstr "" - -#: ../utils/net_ads.c:926 -msgid "" -"Usage:\n" -"net ads leave\n" -" Leave an AD domain\n" -msgstr "" - -#: ../utils/net_ads.c:933 -msgid "No realm set, are we joined ?\n" -msgstr "" - -#: ../utils/net_ads.c:938 ../utils/net_ads.c:1260 -msgid "Could not initialise talloc context.\n" -msgstr "" - -#: ../utils/net_ads.c:948 -msgid "Could not initialise unjoin context.\n" -msgstr "" - -#: ../utils/net_ads.c:968 -#, c-format -msgid "Failed to leave domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:975 -#, c-format -msgid "Deleted account for '%s' in realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:982 -#, c-format -msgid "Disabled account for '%s' in realm '%s'\n" -msgstr "" - -#. Based on what we requseted, we shouldn't get here, but if -#. we did, it means the secrets were removed, and therefore -#. we have left the domain -#: ../utils/net_ads.c:991 -#, c-format -msgid "Machine '%s' Left domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1035 -msgid "" -"Usage:\n" -"net ads testjoin\n" -" Test if the existing join is ok\n" -msgstr "" - -#: ../utils/net_ads.c:1044 -#, c-format -msgid "Join to domain is not valid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1049 -#, c-format -msgid "Join is OK\n" -msgstr "" - -#: ../utils/net_ads.c:1060 -msgid "Host is not configured as a member server.\n" -msgstr "" - -#: ../utils/net_ads.c:1065 -#, c-format -msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" -msgstr "" - -#: ../utils/net_ads.c:1072 -#, c-format -msgid "realm must be set in in %s for ADS join to succeed.\n" -msgstr "" - -#: ../utils/net_ads.c:1105 -#, c-format -msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" -msgstr "" - -#: ../utils/net_ads.c:1212 -msgid "" -"net ads join [options]\n" -"Valid options:\n" -msgstr "" - -#: ../utils/net_ads.c:1214 -msgid "" -" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" -" The deault UPN is in the form host/netbiosname@REALM.\n" -msgstr "" - -#: ../utils/net_ads.c:1216 -msgid "" -" createcomputer=OU Precreate the computer account in a specific OU.\n" -" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" -" E.g. \"createcomputer=Computers/Servers/Unix\"\n" -" NB: A backslash '\\' is used as escape at multiple levels and may\n" -" need to be doubled or even quadrupled. It is not used as a separator.\n" -msgstr "" - -#: ../utils/net_ads.c:1221 -msgid " osName=string Set the operatingSystem attribute during the join.\n" -msgstr "" - -#: ../utils/net_ads.c:1222 -msgid "" -" osVer=string Set the operatingSystemVersion attribute during the join.\n" -" NB: osName and osVer must be specified together for either to take effect.\n" -" Also, the operatingSystemService attribute is also set when along with\n" -" the two other attributes.\n" -msgstr "" - -#: ../utils/net_ads.c:1254 -msgid "Invalid configuration. Exiting....\n" -msgstr "" - -#: ../utils/net_ads.c:1283 -msgid "Please supply a valid OU path.\n" -msgstr "" - -#: ../utils/net_ads.c:1290 -msgid "Please supply a operating system name.\n" -msgstr "" - -#: ../utils/net_ads.c:1297 -msgid "Please supply a valid operating system version.\n" -msgstr "" - -#: ../utils/net_ads.c:1308 -msgid "Please supply a valid domain name\n" -msgstr "" - -#: ../utils/net_ads.c:1339 -#, c-format -msgid "" -"The workgroup in %s does not match the short\n" -"domain name obtained from the server.\n" -"Using the name [%s] from the server.\n" -"You should set \"workgroup = %s\" in %s.\n" -msgstr "" - -#: ../utils/net_ads.c:1347 -#, c-format -msgid "Using short domain name -- %s\n" -msgstr "" - -#: ../utils/net_ads.c:1350 -#, c-format -msgid "Joined '%s' to realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1353 -#, c-format -msgid "Joined '%s' to domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1377 ../utils/net_ads.c:1433 -msgid "DNS update failed!\n" -msgstr "" - -#. issue an overall failure message at the end. -#: ../utils/net_ads.c:1391 ../utils/net_dom.c:198 -#, c-format -msgid "Failed to join domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1414 -msgid "" -"Usage:\n" -"net ads dns register\n" -" Register hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1421 -msgid "Could not initialise talloc context\n" -msgstr "" - -#: ../utils/net_ads.c:1439 -msgid "Successfully registered hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1447 -msgid "DNS update support not enabled at compile time!\n" -msgstr "" - -#: ../utils/net_ads.c:1466 -msgid "" -"Usage:\n" -"net ads dns gethostbyname \n" -" Look up hostname from the AD\n" -" server\tName server to use\n" -" name\tName to look up\n" -msgstr "" - -#: ../utils/net_ads.c:1476 -#, c-format -msgid "do_gethostbyname returned %d\n" -msgstr "" - -#: ../utils/net_ads.c:1488 -msgid "Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1489 -msgid "" -"net ads dns register\n" -" Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1496 -msgid "Look up host" -msgstr "" - -#: ../utils/net_ads.c:1497 -msgid "" -"net ads dns gethostbyname\n" -" Look up host" -msgstr "" - -#: ../utils/net_ads.c:1512 -msgid "" -"\n" -"net ads printer search \n" -"\tsearch for a printer in the directory\n" -"\n" -"net ads printer info \n" -"\tlookup info in directory for printer on server\n" -"\t(note: printer defaults to \"*\", server defaults to local)\n" -"\n" -"net ads printer publish \n" -"\tpublish printer in directory\n" -"\t(note: printer name is required)\n" -"\n" -"net ads printer remove \n" -"\tremove printer from directory\n" -"\t(note: printer name is required)\n" -msgstr "" - -#: ../utils/net_ads.c:1536 -msgid "" -"Usage:\n" -"net ads printer search\n" -" List printers in the AD\n" -msgstr "" - -#: ../utils/net_ads.c:1549 -#, c-format -msgid "ads_find_printer: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1556 -msgid "No results found\n" -msgstr "" - -#: ../utils/net_ads.c:1576 -msgid "" -"Usage:\n" -"net ads printer info [printername [servername]]\n" -" Display printer info from AD\n" -" printername\tPrinter name or wildcard\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1603 -#, c-format -msgid "Server '%s' not found: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1611 ../utils/net_ads.c:1794 -#, c-format -msgid "Printer '%s' not found\n" -msgstr "" - -#: ../utils/net_ads.c:1640 -msgid "" -"Usage:\n" -"net ads printer publish [servername]\n" -" Publish printer in AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1675 -#, c-format -msgid "Unable to open a connnection to %s to obtain data for %s\n" -msgstr "" - -#: ../utils/net_ads.c:1688 -#, c-format -msgid "Could not find machine account for server %s\n" -msgstr "" - -#: ../utils/net_ads.c:1704 ../utils/net_ads.c:1713 -msgid "Internal error, out of memory!" -msgstr "" - -#: ../utils/net_ads.c:1724 -#, c-format -msgid "Unable to open a connnection to the spoolss pipe on %s\n" -msgstr "" - -#: ../utils/net_ads.c:1766 -msgid "" -"Usage:\n" -"net ads printer remove [servername]\n" -" Remove a printer from the AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1787 -#, c-format -msgid "ads_find_printer_on_server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1806 -#, c-format -msgid "ads_del_dn: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1822 -msgid "Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1823 -msgid "" -"net ads printer search\n" -" Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1830 -msgid "Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1831 -msgid "" -"net ads printer info\n" -" Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1838 -msgid "Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1839 -msgid "" -"net ads printer publish\n" -" Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1846 -#, fuzzy -msgid "Delete a printer" -msgstr "Lösche Drucker" - -#: ../utils/net_ads.c:1847 -msgid "" -"net ads printer remove\n" -" Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1869 -msgid "" -"Usage:\n" -"net ads password \n" -" Change password for user\n" -" username\tName of user to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1877 -msgid "You must supply an administrator username/password\n" -msgstr "" - -#: ../utils/net_ads.c:1883 -msgid "ERROR: You must say which username to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1915 -msgid "Didn't find the kerberos server!\n" -msgstr "" - -#: ../utils/net_ads.c:1923 -#, c-format -msgid "Enter new password for %s:" -msgstr "" - -#: ../utils/net_ads.c:1933 ../utils/net_ads.c:1982 -#, fuzzy, c-format -msgid "Password change failed: %s\n" -msgstr "Passwortverwaltung" - -#: ../utils/net_ads.c:1938 -#, fuzzy, c-format -msgid "Password change for %s completed.\n" -msgstr "Änderung des Passworts im Demo-Modus nicht möglich" - -#: ../utils/net_ads.c:1952 -msgid "" -"Usage:\n" -"net ads changetrustpw\n" -" Change the machine account's trust password\n" -msgstr "" - -#: ../utils/net_ads.c:1977 -#, c-format -msgid "Changing password for principal: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1988 -#, c-format -msgid "Password change for principal %s succeeded.\n" -msgstr "" - -#: ../utils/net_ads.c:1991 -msgid "Attempting to update system keytab with new password.\n" -msgstr "" - -#: ../utils/net_ads.c:1993 -msgid "Failed to update system keytab.\n" -msgstr "" - -#: ../utils/net_ads.c:2009 -msgid "" -"\n" -"net ads search \n" -"\n" -"Perform a raw LDAP search on a ADS server and dump the results.\n" -"The expression is a standard LDAP search expression, and the\n" -"attributes are a list of LDAP fields to show in the results.\n" -"\n" -"Example: net ads search '(objectCategory=group)' sAMAccountName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2046 ../utils/net_ads.c:2107 ../utils/net_ads.c:2171 ../utils/net_ads_gpo.c:250 -#, c-format -msgid "search failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2051 ../utils/net_ads.c:2176 ../utils/net_ads_gpo.c:256 -#, c-format -msgid "" -"Got %d replies\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2069 -msgid "" -"\n" -"net ads dn \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" -"\n" -"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2129 -msgid "" -"\n" -"net ads sid \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The SID is in string format, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads sid 'S-1-5-32' distinguishedName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2164 -msgid "could not convert sid\n" -msgstr "" - -#: ../utils/net_ads.c:2193 -msgid "" -"Usage:\n" -"net ads keytab flush\n" -" Delete the whole keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2214 -msgid "" -"Usage:\n" -"net ads keytab add [principal ...]\n" -" Add principals to local keytab\n" -" principal\tKerberos principal to add to keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2222 -msgid "Processing principals to add...\n" -msgstr "" - -#: ../utils/net_ads.c:2239 -msgid "" -"Usage:\n" -"net ads keytab create\n" -" Create new default keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2258 -msgid "" -"Usage:\n" -"net ads keytab list [keytab]\n" -" List a local keytab\n" -" keytab\tKeytab to list\n" -msgstr "" - -#: ../utils/net_ads.c:2280 -msgid "Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2281 -msgid "" -"net ads keytab add\n" -" Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2288 -#, fuzzy -msgid "Create a fresh keytab" -msgstr "Erstelle Freigabe" - -#: ../utils/net_ads.c:2289 -msgid "" -"net ads keytab create\n" -" Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2296 -msgid "Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2297 -msgid "" -"net ads keytab flush\n" -" Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2304 -msgid "List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2305 -msgid "" -"net ads keytab list\n" -" List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2312 -msgid "" -"\n" -"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" -msgstr "" - -#: ../utils/net_ads.c:2324 -msgid "" -"Usage:\n" -"net ads kerberos renew\n" -" Renew TGT from existing credential cache\n" -msgstr "" - -#: ../utils/net_ads.c:2332 -#, c-format -msgid "failed to renew kerberos ticket: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2347 -msgid "" -"Usage:\n" -"net ads kerberos pac\n" -" Dump the Kerberos PAC\n" -msgstr "" - -#: ../utils/net_ads.c:2372 -#, c-format -msgid "failed to query kerberos PAC: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2381 -#, c-format -msgid "The Pac: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2397 -msgid "" -"Usage:\n" -"net ads kerberos kinit\n" -" Get Ticket Granting Ticket (TGT) for the user\n" -msgstr "" - -#: ../utils/net_ads.c:2421 -#, c-format -msgid "failed to kinit password: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2435 -msgid "Retrieve Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2436 -msgid "" -"net ads kerberos kinit\n" -" Receive Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2443 -msgid "Renew Ticket Granting Ticket from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2444 -msgid "" -"net ads kerberos renew\n" -" Renew Ticket Granting Ticket (TGT) from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2452 -msgid "Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2453 -msgid "" -"net ads kerberos pac\n" -" Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2469 -msgid "Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2470 -msgid "" -"net ads info\n" -" Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2477 -msgid "Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2478 -msgid "" -"net ads join\n" -" Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2485 -msgid "Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2486 -msgid "" -"net ads testjoin\n" -" Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2493 -msgid "Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2494 -msgid "" -"net ads leave\n" -" Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2501 -msgid "Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2502 -msgid "" -"net ads status\n" -" Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2509 -msgid "List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2510 -msgid "" -"net ads user\n" -" List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2517 -msgid "List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2518 -msgid "" -"net ads group\n" -" List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2525 -msgid "Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2526 -msgid "" -"net ads dns\n" -" Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2533 -#, fuzzy -msgid "Change user passwords" -msgstr "Ändere Passwort" - -#: ../utils/net_ads.c:2534 -msgid "" -"net ads password\n" -" Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2541 -#, fuzzy -msgid "Change trust account password" -msgstr "Ändere Passwort" - -#: ../utils/net_ads.c:2542 -msgid "" -"net ads changetrustpw\n" -" Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2549 -msgid "List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2550 -msgid "" -"net ads printer\n" -" List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2557 -msgid "Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2558 -msgid "" -"net ads search\n" -" Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2565 -msgid "Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2566 -msgid "" -"net ads dn\n" -" Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2573 -msgid "Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2574 -msgid "" -"net ads sid\n" -" Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2581 -msgid "Display workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2582 -msgid "" -"net ads workgroup\n" -" Display the workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2589 -msgid "Perfom CLDAP query on DC" -msgstr "" - -#: ../utils/net_ads.c:2590 -msgid "" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookups" -msgstr "" - -#: ../utils/net_ads.c:2597 -msgid "Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2598 -msgid "" -"net ads keytab\n" -" Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2605 -msgid "Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2606 -msgid "" -"net ads gpo\n" -" Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2613 -msgid "Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2614 -msgid "" -"net ads kerberos\n" -" Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2627 -msgid "ADS support not compiled in\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:40 -msgid "" -"Usage:\n" -"net ads gpo refresh \n" -" Lists all GPOs assigned to an account and downloads them\n" -" username\tUser to refresh GPOs for\n" -" machinename\tMachine to refresh GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:56 -#, c-format -msgid "failed to connect AD server: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:62 -#, c-format -msgid "failed to find samaccount for %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:70 -#, c-format -msgid "" -"\n" -"%s: '%s' has dn: '%s'\n" -"\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "machine" -msgstr "Entfernte Maschine" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "user" -msgstr "Benutzer" - -#: ../utils/net_ads_gpo.c:74 -msgid "* fetching token " -msgstr "" - -#: ../utils/net_ads_gpo.c:82 ../utils/net_ads_gpo.c:90 ../utils/net_ads_gpo.c:102 ../utils/net_ads_gpo.c:113 ../utils/net_ads_gpo.c:158 -#, c-format -msgid "failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:85 ../utils/net_ads_gpo.c:94 ../utils/net_ads_gpo.c:105 ../utils/net_ads_gpo.c:118 ../utils/net_ads_gpo.c:163 -msgid "finished\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:87 -msgid "* fetching GPO List " -msgstr "" - -#: ../utils/net_ads_gpo.c:96 -msgid "* Refreshing Group Policy Data " -msgstr "" - -#: ../utils/net_ads_gpo.c:107 -msgid "* storing GPO list to registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:122 -msgid "* dumping GPO list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:151 -msgid "* re-reading GPO list from registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:167 -msgid "* dumping GPO list from registry\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:226 -msgid "" -"Usage:\n" -"net ads gpo listall\n" -" List all GPOs on the DC\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:270 -#, fuzzy, c-format -msgid "ads_parse_gpo failed: %s\n" -msgstr "Passwortverwaltung" - -#: ../utils/net_ads_gpo.c:300 -msgid "" -"Usage:\n" -"net ads gpo list \n" -" Lists all GPOs for machine/user\n" -" username\tUser to list GPOs for\n" -" machinename\tMachine to list GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:327 -#, c-format -msgid "%s: '%s' has dn: '%s'\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:451 -msgid "" -"Usage:\n" -"net ads gpo linkget \n" -" Lists gPLink of a containter\n" -" container\tContainer to get link for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:470 -#, c-format -msgid "get link for %s failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:492 -msgid "" -"Usage:\n" -"net ads gpo linkadd [options]\n" -" Link a container to a GPO\n" -" linkdn\tContainer to link to a GPO\n" -" gpodn\tGPO to link container to\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:497 -msgid "" -"note: DNs must be provided properly escaped.\n" -"See RFC 4514 for details\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:518 -#, c-format -msgid "link add failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:579 -msgid "" -"Usage:\n" -"net ads gpo getgpo \n" -" List speciefied GPO\n" -" gpo\t\tGPO to list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:603 -#, c-format -msgid "get gpo for [%s] failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:634 -msgid "List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:635 -msgid "" -"net ads gpo getgpo\n" -" List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:642 -msgid "Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:643 -msgid "" -"net ads gpo linkadd\n" -" Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:660 -msgid "Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:661 -msgid "" -"net ads gpo linkget\n" -" Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:668 -msgid "Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:669 -msgid "" -"net ads gpo list\n" -" Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:676 -msgid "Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:677 -msgid "" -"net ads gpo listall\n" -" Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:684 -msgid "Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_ads_gpo.c:686 -msgid "" -"net ads gpo refresh\n" -" Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_afs.c:25 -msgid "" -" net afs key filename\n" -"\tImports a OpenAFS KeyFile into our secrets.tdb\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:27 -msgid "" -" net afs impersonate \n" -"\tCreates a token for user@cell\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:38 -msgid "usage: 'net afs key cell'\n" -msgstr "" - -#: ../utils/net_afs.c:43 -msgid "Could not open secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:48 -#, c-format -msgid "Could not open %s\n" -msgstr "" - -#: ../utils/net_afs.c:53 -msgid "Could not read keyfile\n" -msgstr "" - -#: ../utils/net_afs.c:58 -msgid "Could not write keyfile to secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:71 -#, c-format -msgid "Usage: net afs impersonate \n" -msgstr "" - -#: ../utils/net_afs.c:78 -#, c-format -msgid "Could not create token\n" -msgstr "" - -#: ../utils/net_afs.c:83 -#, c-format -msgid "Could not set token into kernel\n" -msgstr "" - -#: ../utils/net_afs.c:87 -#, c-format -msgid "Success: %s@%s\n" -msgstr "" - -#: ../utils/net_afs.c:98 -msgid "Import an OpenAFS keyfile" -msgstr "" - -#: ../utils/net_afs.c:99 -msgid "" -"net afs key \n" -" Import kefile from ." -msgstr "" - -#: ../utils/net_afs.c:106 -msgid "Get a user token" -msgstr "" - -#: ../utils/net_afs.c:107 -msgid "" -"net afs impersonate \n" -" Create token for user@cell" -msgstr "" - -#: ../utils/net_cache.c:74 -#, c-format -msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" -msgstr "" - -#: ../utils/net_cache.c:75 -msgid "(expired)" -msgstr "" - -#: ../utils/net_cache.c:84 -#, c-format -msgid "Couldn't delete entry! key = %s\n" -msgstr "" - -#: ../utils/net_cache.c:158 -msgid "" -"\n" -"Usage:\n" -"net cache add \n" -msgstr "" - -#: ../utils/net_cache.c:170 -msgid "Invalid timeout argument.\n" -msgstr "" - -#: ../utils/net_cache.c:175 -msgid "New cache entry stored successfully.\n" -msgstr "" - -#: ../utils/net_cache.c:179 -msgid "Entry couldn't be added. Perhaps there's already such a key.\n" -msgstr "" - -#: ../utils/net_cache.c:195 -msgid "" -"\n" -"Usage: net cache del \n" -msgstr "" - -#: ../utils/net_cache.c:200 -msgid "Entry deleted.\n" -msgstr "" - -#: ../utils/net_cache.c:204 -msgid "Couldn't delete specified entry\n" -msgstr "" - -#: ../utils/net_cache.c:223 -msgid "" -"\n" -"Usage: net cache get \n" -msgstr "" - -#: ../utils/net_cache.c:233 -msgid "Failed to find entry\n" -msgstr "" - -#: ../utils/net_cache.c:250 -msgid "Usage: net cache search \n" -msgstr "" - -#: ../utils/net_cache.c:272 -msgid "" -"Usage:\n" -"net cache list\n" -" List all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:293 ../utils/net_cache.c:306 -msgid "" -"Usage:\n" -"net cache flush\n" -" Delete all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:331 -msgid "Add new cache entry" -msgstr "" - -#: ../utils/net_cache.c:332 -msgid "" -"net cache add \n" -" Add new cache entry.\n" -" key string\tKey string to add cache data under.\n" -" data string\tData to store under given key.\n" -" timeout\tTimeout for cache data." -msgstr "" - -#: ../utils/net_cache.c:342 -msgid "Delete existing cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:343 -msgid "" -"net cache del \n" -" Delete existing cache entry by key.\n" -" key string\tKey string to delete." -msgstr "" - -#: ../utils/net_cache.c:351 -msgid "Get cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:352 -msgid "" -"net cache get \n" -" Get cache entry by key.\n" -" key string\tKey string to look up cache entry for." -msgstr "" - -#: ../utils/net_cache.c:361 -msgid "Search entry by pattern" -msgstr "" - -#: ../utils/net_cache.c:362 -msgid "" -"net cache search \n" -" Search entry by pattern.\n" -" pattern\tPattern to search for in cache." -msgstr "" - -#: ../utils/net_cache.c:370 -msgid "List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:371 -msgid "" -"net cache list\n" -" List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:378 -#, fuzzy -msgid "Delete all cache entries" -msgstr "Lösche Drucker" - -#: ../utils/net_cache.c:379 -msgid "" -"net cache flush\n" -" Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:386 -msgid "Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_cache.c:387 -msgid "" -"net cache stabilize\n" -" Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_conf.c:42 -msgid "USAGE: net conf list\n" -msgstr "" - -#: ../utils/net_conf.c:49 -msgid "" -"USAGE: net conf import [--test|-T] []\n" -"\t[--test|-T] testmode - do not act, just print what would be done\n" -"\t only import service , ignore the rest\n" -msgstr "" - -#: ../utils/net_conf.c:61 -msgid "USAGE: net conf listshares\n" -msgstr "" - -#: ../utils/net_conf.c:68 -msgid "USAGE: net conf drop\n" -msgstr "" - -#: ../utils/net_conf.c:75 -msgid "USAGE: net conf showshare \n" -msgstr "" - -#: ../utils/net_conf.c:82 -msgid "" -"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" -"\t the new share name.\n" -"\t the path on the filesystem to export.\n" -"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" -"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" -"\t optional comment for the new share.\n" -msgstr "" - -#: ../utils/net_conf.c:97 -msgid "USAGE: net conf delshare \n" -msgstr "" - -#: ../utils/net_conf.c:104 -msgid "USAGE: net conf setparm
\n" -msgstr "" - -#: ../utils/net_conf.c:111 -msgid "USAGE: net conf getparm
\n" -msgstr "" - -#: ../utils/net_conf.c:118 -msgid "USAGE: net conf delparm
\n" -msgstr "" - -#: ../utils/net_conf.c:125 -msgid "USAGE: net conf getincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:132 -msgid "USAGE: net conf setincludes
[]*\n" -msgstr "" - -#: ../utils/net_conf.c:139 -msgid "USAGE: net conf delincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:251 -#, c-format -msgid "Error getting config: %s\n" -msgstr "" - -#: ../utils/net_conf.c:305 ../utils/net_conf.c:318 ../utils/net_conf.c:614 ../utils/net_conf.c:742 ../utils/net_conf.c:780 ../utils/net_conf.c:786 ../utils/net_conf.c:860 ../utils/net_conf.c:866 ../utils/net_conf.c:916 ../utils/net_conf.c:970 -#: ../utils/net_conf.c:1010 ../utils/net_conf.c:1050 -msgid "error: out of memory!\n" -msgstr "" - -#: ../utils/net_conf.c:324 -#, c-format -msgid "error loading file '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:330 -msgid "" -"\n" -"TEST MODE - would import the following configuration:\n" -"\n" -msgstr "" - -#: ../utils/net_conf.c:346 ../utils/net_conf.c:382 ../utils/net_conf.c:407 ../utils/net_conf.c:793 -#, c-format -msgid "error starting transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:400 ../utils/net_conf.c:416 ../utils/net_conf.c:817 -#, c-format -msgid "error committing transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:427 ../utils/net_conf.c:828 -#, c-format -msgid "error cancelling transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:484 -#, c-format -msgid "Error deleting configuration: %s\n" -msgstr "" - -#: ../utils/net_conf.c:521 -#, c-format -msgid "error getting share parameters: %s\n" -msgstr "" - -#: ../utils/net_conf.c:630 -#, c-format -msgid "ERROR: share name %s contains invalid characters (any of %s)\n" -msgstr "" - -#: ../utils/net_conf.c:638 -msgid "ERROR: 'global' is not a valid share name.\n" -msgstr "" - -#: ../utils/net_conf.c:643 -#, c-format -msgid "ERROR: share %s already exists.\n" -msgstr "" - -#: ../utils/net_conf.c:652 -#, c-format -msgid "Error: path '%s' is not an absolute path.\n" -msgstr "" - -#: ../utils/net_conf.c:659 -#, c-format -msgid "" -"ERROR: cannot stat path '%s' to ensure this is a directory.\n" -"Error was '%s'.\n" -msgstr "" - -#: ../utils/net_conf.c:668 -#, c-format -msgid "ERROR: path '%s' is not a directory.\n" -msgstr "" - -#: ../utils/net_conf.c:679 -#, c-format -msgid "Error creating share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:690 ../utils/net_conf.c:699 ../utils/net_conf.c:707 ../utils/net_conf.c:715 -#, c-format -msgid "Error setting parameter %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:748 -#, c-format -msgid "Error deleting share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:801 -#, c-format -msgid "Error creating share '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:810 -#, c-format -msgid "Error setting value '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:874 ../utils/net_conf.c:930 -#, c-format -msgid "Error: given service '%s' does not exist.\n" -msgstr "" - -#: ../utils/net_conf.c:879 ../utils/net_conf.c:935 -#, c-format -msgid "Error: given parameter '%s' is not set.\n" -msgstr "" - -#: ../utils/net_conf.c:883 -#, c-format -msgid "Error getting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:939 -#, c-format -msgid "Error deleting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:977 -#, c-format -msgid "error getting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1023 -#, c-format -msgid "error setting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1056 -#, c-format -msgid "error deleting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1136 ../utils/net_help.c:36 -msgid "Usage:\n" -msgstr "" - -#: ../utils/net_conf.c:1160 -msgid "Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1162 -msgid "" -"net conf list\n" -" Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1171 -msgid "Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1173 -msgid "" -"net conf import\n" -" Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1181 -msgid "List the share names." -msgstr "" - -#: ../utils/net_conf.c:1182 -msgid "" -"net conf listshares\n" -" List the share names." -msgstr "" - -#: ../utils/net_conf.c:1189 -msgid "Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1190 -msgid "" -"net conf drop\n" -" Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1197 -msgid "Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1198 -msgid "" -"net conf showshare\n" -" Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1205 -#, fuzzy -msgid "Create a new share." -msgstr "Erstelle Freigabe" - -#: ../utils/net_conf.c:1206 -msgid "" -"net conf addshare\n" -" Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1213 -#, fuzzy -msgid "Delete a share." -msgstr "Lösche Freigabe" - -#: ../utils/net_conf.c:1214 -msgid "" -"net conf delshare\n" -" Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1221 -#, fuzzy -msgid "Store a parameter." -msgstr "Parameter der Freigabe" - -#: ../utils/net_conf.c:1222 -msgid "" -"net conf setparm\n" -" Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1229 -msgid "Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1230 -msgid "" -"net conf getparm\n" -" Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1237 -#, fuzzy -msgid "Delete a parameter." -msgstr "Lösche Drucker" - -#: ../utils/net_conf.c:1238 -msgid "" -"net conf delparm\n" -" Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1245 -msgid "Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1246 -msgid "" -"net conf getincludes\n" -" Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1253 -msgid "Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1254 -msgid "" -"net conf setincludes\n" -" Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1261 -msgid "Delete includes from a share definition." -msgstr "" - -#: ../utils/net_conf.c:1262 -msgid "" -"net conf setincludes\n" -" Delete includes from a share definition." -msgstr "" - -#: ../utils/net_dom.c:25 -msgid "" -"usage: net dom join \n" -" Join a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:28 -msgid "" -"usage: net dom unjoin \n" -" Unjoin a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:31 -msgid "" -"usage: net dom renamecomputer \n" -" Rename joined computer\n" -msgstr "" - -#: ../utils/net_dom.c:91 -#, c-format -msgid "Failed to unjoin domain: %s\n" -msgstr "" - -#: ../utils/net_dom.c:97 ../utils/net_dom.c:204 -msgid "Shutting down due to a domain membership change" -msgstr "" - -#: ../utils/net_dom.c:290 -#, c-format -msgid "Failed to rename machine: " -msgstr "" - -#: ../utils/net_dom.c:292 -#, c-format -msgid "Computer is not joined to a Domain\n" -msgstr "" - -#: ../utils/net_dom.c:301 -msgid "Shutting down due to a computer rename" -msgstr "" - -#: ../utils/net_dom.c:338 -#, fuzzy -msgid "Join a remote machine" -msgstr "Entfernte Maschine" - -#: ../utils/net_dom.c:339 -msgid "" -"net dom join \n" -" Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:347 -#, fuzzy -msgid "Unjoin a remote machine" -msgstr "Entfernte Maschine" - -#: ../utils/net_dom.c:348 -msgid "" -"net dom unjoin \n" -" Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:356 -msgid "Rename a computer that is joined to a domain" -msgstr "" - -#: ../utils/net_dom.c:357 -msgid "" -"net dom renamecomputer \n" -" Rename joined computer" -msgstr "" - -#: ../utils/net_eventlog.c:46 -msgid "usage: net eventlog dump \n" -msgstr "" - -#: ../utils/net_eventlog.c:52 ../utils/net_eventlog.c:108 -#, c-format -msgid "failed to load evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:59 ../utils/net_eventlog.c:129 -#, fuzzy, c-format -msgid "evt pull failed: %s\n" -msgstr "Passwortverwaltung" - -#: ../utils/net_eventlog.c:102 -msgid "usage: net eventlog import \n" -msgstr "" - -#: ../utils/net_eventlog.c:116 -#, fuzzy, c-format -msgid "evt header pull failed: %s\n" -msgstr "Passwortverwaltung" - -#: ../utils/net_eventlog.c:122 -msgid "input file is wrapped, cannot proceed\n" -msgstr "" - -#: ../utils/net_eventlog.c:138 ../utils/net_eventlog.c:203 -#, c-format -msgid "can't open the eventlog TDB (%s)\n" -msgstr "" - -#: ../utils/net_eventlog.c:158 -#, c-format -msgid "can't write to the eventlog: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:164 -#, c-format -msgid "wrote %d entries to tdb\n" -msgstr "" - -#: ../utils/net_eventlog.c:197 -msgid "usage: net eventlog export \n" -msgstr "" - -#: ../utils/net_eventlog.c:214 -#, c-format -msgid "failed to save evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:243 -msgid "Dump eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:244 -msgid "" -"net eventlog dump\n" -" Dump win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:251 -#, fuzzy -msgid "Import eventlog" -msgstr "Wichtiger Hinweis:" - -#: ../utils/net_eventlog.c:252 -msgid "" -"net eventlog import\n" -" Import win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:259 -msgid "Export eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:260 -msgid "" -"net eventlog export\n" -" Export win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_file.c:27 -msgid "" -"net [] file [misc. options] [targets]\n" -"\tlists all open files on file server\n" -msgstr "" - -#: ../utils/net_file.c:29 -msgid "" -"net [] file USER [misc. options] [targets]\n" -"\tlists all files opened by username on file server\n" -msgstr "" - -#: ../utils/net_file.c:32 -msgid "" -"net [] file CLOSE [misc. options] [targets]\n" -"\tcloses specified file on target server\n" -msgstr "" - -#: ../utils/net_file.c:34 -msgid "" -"net [rap] file INFO [misc. options] [targets]\n" -"\tdisplays information about the specified open file\n" -msgstr "" - -#: ../utils/net_group.c:27 -msgid "" -"net [] group [misc. options] [targets]\n" -"\tList user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:29 -msgid "" -"net rpc group LIST [global|local|builtin]* [misc. options]\n" -"\tList specific user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:31 -msgid "" -"net [] group DELETE [misc. options] [targets]\n" -"\tDelete specified group\n" -msgstr "" - -#: ../utils/net_group.c:34 -msgid "" -"\n" -"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" -"\tCreate specified group\n" -msgstr "" - -#: ../utils/net_group.c:37 -msgid "" -"\n" -"net rpc group MEMBERS \n" -"\tList Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:38 -msgid "" -"\n" -"net rpc group ADDMEM \n" -"\tAdd Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:40 -msgid "" -"\n" -"net rpc group DELMEM \n" -"\tDelete Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:44 -msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" -msgstr "" - -#: ../utils/net_group.c:46 -msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" -msgstr "" - -#: ../utils/net_group.c:48 -msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" -msgstr "" - -#: ../utils/net_groupmap.c:38 -#, c-format -msgid "NT Group %s doesn't exist in mapping DB\n" -msgstr "" - -#: ../utils/net_groupmap.c:46 -#, c-format -msgid "converting sid %s from a string failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:65 -#, c-format -msgid "\tSID : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:66 -#, c-format -msgid "\tUnix gid : %u\n" -msgstr "" - -#: ../utils/net_groupmap.c:67 -#, c-format -msgid "\tUnix group: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:68 -#, c-format -msgid "\tGroup type: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:70 -#, c-format -msgid "\tComment : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:84 -msgid "" -"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" -" verbose\tPrint verbose list\n" -" ntgroup\tNT group to list\n" -" sid\tSID of group to list" -msgstr "" - -#: ../utils/net_groupmap.c:91 ../utils/net_groupmap.c:271 ../utils/net_groupmap.c:356 ../utils/net_groupmap.c:412 ../utils/net_groupmap.c:495 ../utils/net_groupmap.c:522 -#, fuzzy, c-format -msgid "" -"Usage:\n" -"%s\n" -msgstr "Benutzername" - -#: ../utils/net_groupmap.c:106 ../utils/net_groupmap.c:213 ../utils/net_groupmap.c:220 ../utils/net_groupmap.c:365 ../utils/net_groupmap.c:372 ../utils/net_groupmap.c:504 -msgid "must supply a name\n" -msgstr "" - -#: ../utils/net_groupmap.c:113 ../utils/net_groupmap.c:227 ../utils/net_groupmap.c:511 -msgid "must supply a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:118 ../utils/net_groupmap.c:265 ../utils/net_groupmap.c:406 ../utils/net_groupmap.c:516 -#, fuzzy, c-format -msgid "Bad option: %s\n" -msgstr "Basisoptionen" - -#: ../utils/net_groupmap.c:139 -msgid "Failure to local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:181 -msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" -msgstr "" - -#: ../utils/net_groupmap.c:195 -#, fuzzy, c-format -msgid "" -"Usage\n" -"%s\n" -msgstr "Benutzername" - -#: ../utils/net_groupmap.c:205 -#, c-format -msgid "RID must be greater than %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:235 ../utils/net_groupmap.c:380 -msgid "must supply a comment string\n" -msgstr "" - -#: ../utils/net_groupmap.c:259 -#, c-format -msgid "unknown group type %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:276 -#, c-format -msgid "Can't lookup UNIX group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:282 -#, c-format -msgid "Unix group %s already mapped to SID %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:289 -msgid "No rid or sid specified, choosing a RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:292 -msgid "Could not get new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:297 -#, c-format -msgid "Got RID %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:328 -#, c-format -msgid "adding entry for group %s failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:332 -#, c-format -msgid "Successfully added group %s to the mapping db as a %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:349 -msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" -msgstr "" - -#: ../utils/net_groupmap.c:388 -msgid "must supply a group name\n" -msgstr "" - -#: ../utils/net_groupmap.c:434 -msgid "Failed to find local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:443 -msgid "Can't map to an unknown group type.\n" -msgstr "" - -#: ../utils/net_groupmap.c:449 -msgid "You can only change between domain and local groups.\n" -msgstr "" - -#: ../utils/net_groupmap.c:466 -#, c-format -msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" -msgstr "" - -#: ../utils/net_groupmap.c:476 -msgid "Could not update group database\n" -msgstr "" - -#: ../utils/net_groupmap.c:480 -#, c-format -msgid "Updated mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:491 -msgid "net groupmap delete {ntgroup=|sid=}" -msgstr "" - -#: ../utils/net_groupmap.c:532 -#, c-format -msgid "Unable to resolve group %s to a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:539 -#, c-format -msgid "Failed to remove group %s from the mapping db!\n" -msgstr "" - -#: ../utils/net_groupmap.c:544 -#, c-format -msgid "Sucessfully removed %s from the mapping db\n" -msgstr "" - -#: ../utils/net_groupmap.c:557 -msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" -msgstr "" - -#: ../utils/net_groupmap.c:563 -msgid "Can only specify -L or -D, not both\n" -msgstr "" - -#: ../utils/net_groupmap.c:573 -#, c-format -msgid "Could not find unix group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:594 -#, c-format -msgid "Could not find group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:605 -msgid "Could not allocate new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:622 -#, c-format -msgid "Could not add mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:633 -#, c-format -msgid "Can't change type of the BUILTIN group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:660 -#, c-format -msgid "Could not update group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:674 -msgid "" -"Usage:\n" -"net groupmap cleanup\n" -" Delete all group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:682 -msgid "Could not list group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:689 -#, c-format -msgid "Group %s is not mapped\n" -msgstr "" - -#: ../utils/net_groupmap.c:692 -#, c-format -msgid "Deleting mapping for NT Group %s, sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:712 -msgid "Usage: net groupmap addmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:717 -#, c-format -msgid "Could not add sid %s to alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:733 -msgid "Usage: net groupmap delmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:738 -#, c-format -msgid "Could not delete sid %s from alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:755 -msgid "Usage: net groupmap listmem alias-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:764 -#, c-format -msgid "Could not list members for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:791 -#, c-format -msgid "Could not list memberships for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:814 -msgid "Usage: net groupmap memberof sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:820 ../utils/net_idmap.c:345 -msgid "talloc_init failed\n" -msgstr "" - -#: ../utils/net_groupmap.c:827 -msgid "Could not get domain sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:850 -msgid "Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:851 -msgid "" -"net groupmap add\n" -" Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:858 -msgid "Update a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:859 -msgid "" -"net groupmap modify\n" -" Modify an existing group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:866 -msgid "Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:867 -msgid "" -"net groupmap delete\n" -" Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:874 -msgid "Set group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:875 -msgid "" -"net groupmap set\n" -" Set a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:882 -msgid "Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:883 -msgid "" -"net groupmap cleanup\n" -" Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:890 -msgid "Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:891 -msgid "" -"net groupmap addmem\n" -" Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:898 -msgid "Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:899 -msgid "" -"net groupmap delmem\n" -" Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:906 -msgid "List foreign group members" -msgstr "" - -#: ../utils/net_groupmap.c:907 -msgid "" -"net groupmap listmem\n" -" List foreign alias members" -msgstr "" - -#: ../utils/net_groupmap.c:914 -msgid "List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:915 -msgid "" -"net groupmap memberships\n" -" List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:922 -msgid "List current group map" -msgstr "" - -#: ../utils/net_groupmap.c:923 -msgid "" -"net groupmap list\n" -" List current group map" -msgstr "" - -#: ../utils/net_help.c:39 -#, c-format -msgid "net %s usage:\n" -msgstr "" - -#: ../utils/net_help_common.c:25 ../utils/net_join.c:28 -msgid "Valid methods: (auto-detected if not specified)\n" -msgstr "" - -#: ../utils/net_help_common.c:26 ../utils/net_join.c:29 -msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" -msgstr "" - -#: ../utils/net_help_common.c:27 ../utils/net_join.c:30 -msgid "\trpc\t\t\t\tDCE-RPC\n" -msgstr "" - -#: ../utils/net_help_common.c:28 -msgid "\trap\t\t\t\tRAP (older systems)\n" -msgstr "" - -#: ../utils/net_help_common.c:35 -msgid "Valid targets: choose one (none defaults to localhost)\n" -msgstr "" - -#: ../utils/net_help_common.c:36 -msgid "\t-S or --server=\t\tserver name\n" -msgstr "" - -#: ../utils/net_help_common.c:37 -msgid "\t-I or --ipaddress=\taddress of target server\n" -msgstr "" - -#: ../utils/net_help_common.c:38 -msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" -msgstr "" - -#: ../utils/net_help_common.c:41 -#, fuzzy -msgid "Valid miscellaneous options are:\n" -msgstr "Sonstige Optionen" - -#. misc options -#: ../utils/net_help_common.c:42 -msgid "\t-p or --port=\t\tconnection port on target\n" -msgstr "" - -#: ../utils/net_help_common.c:43 -msgid "\t-W or --myworkgroup=\tclient workgroup\n" -msgstr "" - -#: ../utils/net_help_common.c:44 -msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" -msgstr "" - -#: ../utils/net_help_common.c:45 -msgid "\t-n or --myname=\t\tclient name\n" -msgstr "" - -#: ../utils/net_help_common.c:46 -msgid "\t-U or --user=\t\tuser name\n" -msgstr "" - -#: ../utils/net_help_common.c:47 -msgid "\t-s or --configfile=\tpathname of smb.conf file\n" -msgstr "" - -#: ../utils/net_help_common.c:48 -msgid "\t-l or --long\t\t\tDisplay full information\n" -msgstr "" - -#: ../utils/net_help_common.c:49 -msgid "\t-V or --version\t\t\tPrint samba version information\n" -msgstr "" - -#: ../utils/net_help_common.c:50 -msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" -msgstr "" - -#: ../utils/net_help_common.c:52 -msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" -msgstr "" - -#: ../utils/net_help_common.c:54 -msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" -msgstr "" - -#: ../utils/net_idmap.c:25 -msgid "Out of memory!\n" -msgstr "" - -#: ../utils/net_idmap.c:39 -#, c-format -msgid "USER HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:44 -#, c-format -msgid "GROUP HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:63 -msgid "" -"Usage:\n" -"net idmap dump \n" -" Dump current ID mapping.\n" -" inputfile\tTDB file to read mappings from.\n" -msgstr "" - -#: ../utils/net_idmap.c:73 -#, c-format -msgid "Could not open idmap: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:94 -msgid "" -"Usage:\n" -"net idmap restore [inputfile]\n" -" Restore ID mappings from file\n" -" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" -msgstr "" - -#: ../utils/net_idmap.c:104 -msgid "To use net idmap Winbindd must be running.\n" -msgstr "" - -#: ../utils/net_idmap.c:142 -#, c-format -msgid "Could not set USER HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:151 -#, c-format -msgid "Could not set GROUP HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:156 -#, c-format -msgid "ignoring invalid line [%s]\n" -msgstr "" - -#: ../utils/net_idmap.c:163 -#, c-format -msgid "ignoring invalid sid [%s]: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:175 -#, c-format -msgid "Could not set mapping of %s %lu to sid %s: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:196 ../utils/net_idmap.c:202 -msgid "Not Implemented yet\n" -msgstr "" - -#: ../utils/net_idmap.c:240 -msgid "" -"Usage:\n" -"net idmap secret {|alloc} \n" -" Set the secret for the specified domain (or alloc module)\n" -" DOMAIN\tDomain to set secret for.\n" -" alloc\tSet secret for the alloc module\n" -" secret\tNew secret to set.\n" -msgstr "" - -#: ../utils/net_idmap.c:271 -msgid "The only currently supported backend is LDAP\n" -msgstr "" - -#: ../utils/net_idmap.c:281 -#, c-format -msgid "Missing ldap_user_dn option for domain %s\n" -msgstr "" - -#: ../utils/net_idmap.c:292 -msgid "Missing ldap_user_dn option for alloc backend\n" -msgstr "" - -#: ../utils/net_idmap.c:302 -msgid "Failed to store secret\n" -msgstr "" - -#: ../utils/net_idmap.c:307 -msgid "Secret stored\n" -msgstr "" - -#: ../utils/net_idmap.c:313 -msgid "" -"net idmap dump \n" -" Dump current id mapping\n" -msgstr "" - -#: ../utils/net_idmap.c:316 -msgid "" -"net idmap restore\n" -" Restore entries from stdin\n" -msgstr "" - -#. Deliberately *not* document net idmap delete -#: ../utils/net_idmap.c:321 -msgid "" -"net idmap secret |alloc \n" -" Set the secret for the specified DOMAIN (or the alloc module)\n" -msgstr "" - -#: ../utils/net_idmap.c:339 -msgid "usage: net idmap aclmapset \n" -msgstr "" - -#: ../utils/net_idmap.c:351 -#, fuzzy, c-format -msgid "db_open failed: %s\n" -msgstr "Passwortverwaltung" - -#: ../utils/net_idmap.c:356 ../utils/net_idmap.c:361 -#, c-format -msgid "%s is not a valid sid\n" -msgstr "" - -#: ../utils/net_idmap.c:367 -msgid "talloc_strdup failed\n" -msgstr "" - -#: ../utils/net_idmap.c:373 -msgid "could not fetch db record\n" -msgstr "" - -#: ../utils/net_idmap.c:381 -#, c-format -msgid "could not store record: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:402 -msgid "Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:403 -msgid "" -"net idmap dump\n" -" Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:410 -msgid "Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:411 -msgid "" -"net idmap restore\n" -" Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:418 ../utils/net_idmap.c:426 -msgid "Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:419 -msgid "" -"net idmap setmap\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:427 -msgid "" -"net idmap delete\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:434 -msgid "Set secret for specified domain" -msgstr "" - -#: ../utils/net_idmap.c:435 -msgid "" -"net idmap secret {|alloc} \n" -" Set secret for specified domain or alloc module" -msgstr "" - -#: ../utils/net_idmap.c:442 -msgid "Set acl map" -msgstr "" - -#: ../utils/net_idmap.c:443 -msgid "" -"net idmap aclmapset\n" -" Set acl map" -msgstr "" - -#: ../utils/net_join.c:26 -msgid "" -"\n" -"net [] join [misc. options]\n" -"\tjoins this server to a domain\n" -msgstr "" - -#: ../utils/net_join.c:47 -msgid "ADS join did not work, falling back to RPC...\n" -msgstr "" - -#: ../utils/net_lookup.c:25 -msgid "" -" net lookup [host] HOSTNAME[#]\n" -"\tgives IP for a hostname\n" -"\n" -" net lookup ldap [domain]\n" -"\tgives IP of domain's ldap server\n" -"\n" -" net lookup kdc [realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup pdc [domain|realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup dc [domain]\n" -"\tgives IP of domains Domain Controllers\n" -"\n" -" net lookup master [domain|wg]\n" -"\tgive IP of master browser\n" -"\n" -" net lookup name [name]\n" -"\tLookup name's sid and type\n" -"\n" -" net lookup sid [sid]\n" -"\tGive sid's name and type\n" -"\n" -" net lookup dsgetdcname [name] [flags] [sitename]\n" -"\n" -msgstr "" - -#: ../utils/net_lookup.c:112 -msgid "net_lookup_ldap: talloc_init() failed!\n" -msgstr "" - -#: ../utils/net_lookup.c:325 -msgid "usage: net lookup name \n" -msgstr "" - -#: ../utils/net_lookup.c:331 ../utils/net_lookup.c:358 -#, c-format -msgid "Could not lookup name %s\n" -msgstr "" - -#: ../utils/net_lookup.c:347 -msgid "usage: net lookup sid \n" -msgstr "" - -#: ../utils/net_lookup.c:352 -#, c-format -msgid "Could not convert %s to SID\n" -msgstr "" - -#: ../utils/net_lookup.c:378 -msgid "usage: net lookup dsgetdcname \n" -msgstr "" - -#: ../utils/net_lookup.c:404 -#, c-format -msgid "failed with: %s\n" -msgstr "" - -#: ../utils/net_lookup.c:437 -msgid "" -"\n" -"Usage: \n" -msgstr "" - -#: ../utils/net_lua.c:60 -msgid "connect: Expected IP-Address" -msgstr "" - -#: ../utils/net_lua.c:65 -msgid "connect: Expected port" -msgstr "" - -#: ../utils/net_lua.c:84 -#, fuzzy, c-format -msgid "connect failed: %s" -msgstr "Passwortverwaltung" - -#: ../utils/net_lua.c:132 -#, c-format -msgid "socket domain %s unknown" -msgstr "" - -#: ../utils/net_lua.c:144 -#, c-format -msgid "socket type %s unknown" -msgstr "" - -#: ../utils/net_lua.c:155 -#, fuzzy, c-format -msgid "socket() failed: %s" -msgstr "Passwortverwaltung" - -#: ../utils/net_lua.c:278 -msgid "evt_reference_thread failed\n" -msgstr "" - -#: ../utils/net_lua.c:287 -msgid "event_add_timed failed" -msgstr "" - -#: ../utils/net_lua.c:300 -msgid "event_once called from non-base thread" -msgstr "" - -#: ../utils/net_lua.c:323 -msgid "event_context_init failed" -msgstr "" - -#: ../utils/net_lua.c:353 -msgid "lua_newstate failed\n" -msgstr "" - -#: ../utils/net_lua.c:371 -msgid "luaL_dofile returned an error\n" -msgstr "" - -#: ../utils/net_lua.c:376 -msgid "luaL_dostring returned an error\n" -msgstr "" diff --git a/source3/po/en.msg b/source3/po/en.msg index 0704a28c58..01e6b6943b 100644 --- a/source3/po/en.msg +++ b/source3/po/en.msg @@ -17,8 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-30 12:18+0200\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2000-02-08 12:48+09:00\n" "Last-Translator: TAKAHASHI Motonobu \n" "Language-Team: (Samba Team) \n" @@ -26,3988 +25,568 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: \n" -#: ../web/swat.c:153 +#: ../web/swat.c:117 #, c-format msgid "ERROR: Can't open %s" msgstr "" -#: ../web/swat.c:241 +#: ../web/swat.c:200 msgid "Help" msgstr "" -#: ../web/swat.c:247 ../web/swat.c:272 ../web/swat.c:293 ../web/swat.c:302 ../web/swat.c:311 ../web/swat.c:317 ../web/swat.c:329 ../web/swat.c:343 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "" -#: ../web/swat.c:465 +#: ../web/swat.c:408 #, c-format msgid "failed to open %s for writing" msgstr "" -#: ../web/swat.c:488 +#: ../web/swat.c:431 #, c-format msgid "Can't reload %s" msgstr "" -#: ../web/swat.c:561 +#: ../web/swat.c:501 #, c-format msgid "Logged in as %s" msgstr "" -#: ../web/swat.c:565 +#: ../web/swat.c:505 msgid "Home" msgstr "" -#: ../web/swat.c:567 +#: ../web/swat.c:507 msgid "Globals" msgstr "" -#: ../web/swat.c:568 +#: ../web/swat.c:508 msgid "Shares" msgstr "" -#: ../web/swat.c:569 +#: ../web/swat.c:509 msgid "Printers" msgstr "" -#: ../web/swat.c:570 +#: ../web/swat.c:510 msgid "Wizard" msgstr "" -#: ../web/swat.c:574 +#: ../web/swat.c:513 msgid "Status" msgstr "" -#: ../web/swat.c:575 +#: ../web/swat.c:514 msgid "View Config" msgstr "" -#: ../web/swat.c:577 +#: ../web/swat.c:516 msgid "Password Management" msgstr "" -#: ../web/swat.c:587 +#: ../web/swat.c:526 msgid "Current View Is" msgstr "" -#: ../web/swat.c:588 ../web/swat.c:591 +#: ../web/swat.c:527 ../web/swat.c:530 msgid "Basic" msgstr "" -#: ../web/swat.c:589 ../web/swat.c:592 +#: ../web/swat.c:528 ../web/swat.c:531 msgid "Advanced" msgstr "" -#: ../web/swat.c:590 +#: ../web/swat.c:529 msgid "Change View To" msgstr "" -#: ../web/swat.c:619 +#: ../web/swat.c:554 msgid "Current Config" msgstr "" -#: ../web/swat.c:623 +#: ../web/swat.c:558 msgid "Normal View" msgstr "" -#: ../web/swat.c:625 +#: ../web/swat.c:560 msgid "Full View" msgstr "" #. Here we first set and commit all the parameters that were selected #. in the previous screen. -#: ../web/swat.c:644 +#: ../web/swat.c:579 msgid "Wizard Parameter Edit Page" msgstr "" -#: ../web/swat.c:673 +#: ../web/swat.c:608 msgid "Note: smb.conf file has been read and rewritten" msgstr "" #. Here we go ... -#: ../web/swat.c:779 +#: ../web/swat.c:716 msgid "Samba Configuration Wizard" msgstr "" -#: ../web/swat.c:783 +#: ../web/swat.c:720 msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." msgstr "" -#: ../web/swat.c:784 +#: ../web/swat.c:721 msgid "The same will happen if you press the commit button." msgstr "" -#: ../web/swat.c:787 +#: ../web/swat.c:724 msgid "Rewrite smb.conf file" msgstr "" -#: ../web/swat.c:788 +#: ../web/swat.c:725 msgid "Commit" msgstr "" -#: ../web/swat.c:789 +#: ../web/swat.c:726 msgid "Edit Parameter Values" msgstr "" -#: ../web/swat.c:795 +#: ../web/swat.c:732 msgid "Server Type" msgstr "" -#: ../web/swat.c:796 +#: ../web/swat.c:733 msgid "Stand Alone" msgstr "" -#: ../web/swat.c:797 +#: ../web/swat.c:734 msgid "Domain Member" msgstr "" -#: ../web/swat.c:798 +#: ../web/swat.c:735 msgid "Domain Controller" msgstr "" -#: ../web/swat.c:801 +#: ../web/swat.c:738 msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "" -#: ../web/swat.c:803 +#: ../web/swat.c:740 msgid "Configure WINS As" msgstr "" -#: ../web/swat.c:804 +#: ../web/swat.c:741 msgid "Not Used" msgstr "" -#: ../web/swat.c:805 +#: ../web/swat.c:742 msgid "Server for client use" msgstr "" -#: ../web/swat.c:806 +#: ../web/swat.c:743 msgid "Client of another WINS server" msgstr "" -#: ../web/swat.c:808 +#: ../web/swat.c:745 msgid "Remote WINS Server" msgstr "" -#: ../web/swat.c:819 +#: ../web/swat.c:756 msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "" -#: ../web/swat.c:820 +#: ../web/swat.c:757 msgid "Please Select desired WINS mode above." msgstr "" -#: ../web/swat.c:822 +#: ../web/swat.c:759 msgid "Expose Home Directories" msgstr "" -#: ../web/swat.c:837 +#: ../web/swat.c:774 msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." msgstr "" -#: ../web/swat.c:850 +#: ../web/swat.c:787 msgid "Global Parameters" msgstr "" -#: ../web/swat.c:878 ../web/swat.c:986 ../web/swat.c:1344 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "" -#: ../web/swat.c:882 ../web/swat.c:989 ../web/swat.c:1346 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "" -#: ../web/swat.c:908 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "" -#: ../web/swat.c:955 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "" -#: ../web/swat.c:971 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "" -#: ../web/swat.c:978 +#: ../web/swat.c:908 msgid "Create Share" msgstr "" -#: ../web/swat.c:1014 +#: ../web/swat.c:944 msgid "password change in demo mode rejected" msgstr "" -#: ../web/swat.c:1028 +#: ../web/swat.c:957 msgid "Can't setup password database vectors." msgstr "" -#: ../web/swat.c:1056 +#: ../web/swat.c:983 msgid " Must specify \"User Name\" " msgstr "" -#: ../web/swat.c:1072 +#: ../web/swat.c:999 msgid " Must specify \"Old Password\" " msgstr "" -#: ../web/swat.c:1078 +#: ../web/swat.c:1005 msgid " Must specify \"Remote Machine\" " msgstr "" -#: ../web/swat.c:1085 +#: ../web/swat.c:1012 msgid " Must specify \"New, and Re-typed Passwords\" " msgstr "" -#: ../web/swat.c:1091 +#: ../web/swat.c:1018 msgid " Re-typed password didn't match new password " msgstr "" -#: ../web/swat.c:1124 +#: ../web/swat.c:1048 #, c-format msgid " The passwd for '%s' has been changed." msgstr "" -#: ../web/swat.c:1127 +#: ../web/swat.c:1051 #, c-format msgid " The passwd for '%s' has NOT been changed." msgstr "" -#: ../web/swat.c:1152 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "" #. #. * Create all the dialog boxes for data collection #. -#: ../web/swat.c:1161 ../web/swat.c:1208 +#: ../web/swat.c:1085 ../web/swat.c:1132 msgid "User Name" msgstr "" -#: ../web/swat.c:1164 ../web/swat.c:1210 +#: ../web/swat.c:1088 ../web/swat.c:1134 msgid "Old Password" msgstr "" -#: ../web/swat.c:1167 ../web/swat.c:1212 +#: ../web/swat.c:1091 ../web/swat.c:1136 msgid "New Password" msgstr "" -#: ../web/swat.c:1169 ../web/swat.c:1214 +#: ../web/swat.c:1093 ../web/swat.c:1138 msgid "Re-type New Password" msgstr "" -#: ../web/swat.c:1177 ../web/swat.c:1225 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "" -#: ../web/swat.c:1180 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "" -#: ../web/swat.c:1182 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "" -#: ../web/swat.c:1184 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "" -#: ../web/swat.c:1186 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "" -#: ../web/swat.c:1199 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "" -#: ../web/swat.c:1216 +#: ../web/swat.c:1140 msgid "Remote Machine" msgstr "" -#: ../web/swat.c:1255 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "" -#: ../web/swat.c:1257 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "" -#: ../web/swat.c:1258 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "" -#: ../web/swat.c:1259 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "" -#: ../web/swat.c:1260 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "" -#: ../web/swat.c:1261 +#: ../web/swat.c:1185 msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "" -#: ../web/swat.c:1310 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "" -#: ../web/swat.c:1329 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "" -#: ../web/swat.c:1336 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "" -#: ../web/statuspage.c:151 -msgid "RDWR " +#: ../web/statuspage.c:123 +msgid "RDONLY " msgstr "" -#: ../web/statuspage.c:153 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "" -#: ../web/statuspage.c:155 -msgid "RDONLY " +#: ../web/statuspage.c:125 +msgid "RDWR " msgstr "" -#: ../web/statuspage.c:329 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "" -#: ../web/statuspage.c:334 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "" -#: ../web/statuspage.c:335 ../web/statuspage.c:340 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "" -#: ../web/statuspage.c:339 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "" -#: ../web/statuspage.c:348 +#: ../web/statuspage.c:334 msgid "version:" msgstr "" -#: ../web/statuspage.c:351 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "" -#: ../web/statuspage.c:355 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "" -#: ../web/statuspage.c:357 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "" -#: ../web/statuspage.c:359 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "" -#: ../web/statuspage.c:364 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: ../web/statuspage.c:368 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "" -#: ../web/statuspage.c:370 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "" -#: ../web/statuspage.c:372 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "" -#: ../web/statuspage.c:378 +#: ../web/statuspage.c:364 msgid "winbindd:" msgstr "" -#: ../web/statuspage.c:382 +#: ../web/statuspage.c:368 msgid "Stop winbindd" msgstr "" -#: ../web/statuspage.c:384 +#: ../web/statuspage.c:370 msgid "Start winbindd" msgstr "" -#: ../web/statuspage.c:386 +#: ../web/statuspage.c:372 msgid "Restart winbindd" msgstr "" #. stop, restart all -#: ../web/statuspage.c:395 +#: ../web/statuspage.c:381 msgid "Stop All" msgstr "" -#: ../web/statuspage.c:396 +#: ../web/statuspage.c:382 msgid "Restart All" msgstr "" #. start all -#: ../web/statuspage.c:400 +#: ../web/statuspage.c:386 msgid "Start All" msgstr "" -#: ../web/statuspage.c:407 +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "" -#: ../web/statuspage.c:409 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "" -#: ../web/statuspage.c:411 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "" -#: ../web/statuspage.c:419 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Share" msgstr "" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "User" msgstr "" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Group" msgstr "" -#: ../web/statuspage.c:428 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "" -#: ../web/statuspage.c:431 -msgid "UID" -msgstr "" - -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "File" msgstr "" -#: ../web/statuspage.c:438 +#: ../web/statuspage.c:425 msgid "Show Client in col 1" msgstr "" -#: ../web/statuspage.c:439 +#: ../web/statuspage.c:426 msgid "Show PID in col 1" msgstr "" -#: ../param/loadparm.c:907 +#: ../param/loadparm.c:755 msgid "Base Options" msgstr "" -#: ../param/loadparm.c:1047 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "" -#: ../param/loadparm.c:1800 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "" -#: ../param/loadparm.c:1929 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "" -#: ../param/loadparm.c:2301 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "" -#: ../param/loadparm.c:2538 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "" -#: ../param/loadparm.c:2858 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "" -#: ../param/loadparm.c:3088 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "" -#: ../param/loadparm.c:3100 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "" -#: ../param/loadparm.c:3273 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "" -#: ../param/loadparm.c:3384 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "" -#: ../param/loadparm.c:3432 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "" -#: ../param/loadparm.c:3552 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "" -#: ../param/loadparm.c:3708 -msgid "EventLog Options" -msgstr "" - -#: ../param/loadparm.c:3720 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "" -#: ../param/loadparm.c:4301 +#: ../param/loadparm.c:1138 msgid "VFS module options" msgstr "" -#: ../param/loadparm.c:4323 -msgid "MSDFS options" -msgstr "" - -#: ../param/loadparm.c:4353 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "" - -#: ../utils/net.c:103 -msgid "Enter machine password: " -msgstr "" - -#: ../utils/net.c:107 -msgid "Unable to write the machine account password in the secrets database" -msgstr "" - -#: ../utils/net.c:111 -msgid "Modified trust account password in secrets database\n" -msgstr "" - -#: ../utils/net.c:115 -msgid "" -"Machine account password change requires the -f flag.\n" -"Do NOT use this function unless you know what it does!\n" -"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" -msgstr "" - -#: ../utils/net.c:150 ../utils/net.c:228 -#, c-format -msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" -msgstr "" - -#: ../utils/net.c:163 ../utils/net.c:251 -#, c-format -msgid "SID for domain %s is: %s\n" -msgstr "" - -#: ../utils/net.c:175 -msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:195 -msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:213 -msgid "usage: net getdomainsid\n" -msgstr "" - -#: ../utils/net.c:238 -msgid "Could not fetch local SID\n" -msgstr "" - -#: ../utils/net.c:242 -#, c-format -msgid "SID for local machine %s is: %s\n" -msgstr "" - -#: ../utils/net.c:246 -msgid "Could not fetch domain SID\n" -msgstr "" - -#: ../utils/net.c:263 -#, c-format -msgid "get_maxrid: Could not search %s\n" -msgstr "" - -#: ../utils/net.c:297 -msgid "usage: net maxrid\n" -msgstr "" - -#: ../utils/net.c:302 -msgid "can't get current maximum rid\n" -msgstr "" - -#: ../utils/net.c:306 -#, c-format -msgid "Currently used maximum rid: %d\n" -msgstr "" - -#: ../utils/net.c:317 -msgid "Run functions using RPC transport" -msgstr "" - -#: ../utils/net.c:318 -msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." -msgstr "" - -#: ../utils/net.c:325 -msgid "Run functions using RAP transport" -msgstr "" - -#: ../utils/net.c:326 -msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." -msgstr "" - -#: ../utils/net.c:333 -msgid "Run functions using ADS transport" -msgstr "" - -#: ../utils/net.c:334 -msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." -msgstr "" - -#: ../utils/net.c:343 -msgid "Functions on remote opened files" -msgstr "" - -#: ../utils/net.c:344 -msgid " Use 'net help file' to get more information about 'net file' commands." -msgstr "" - -#: ../utils/net.c:351 -msgid "Functions on shares" -msgstr "" - -#: ../utils/net.c:352 -msgid " Use 'net help share' to get more information about 'net share' commands." -msgstr "" - -#: ../utils/net.c:359 -msgid "Manage sessions" -msgstr "" - -#: ../utils/net.c:360 -msgid " Use 'net help session' to get more information about 'net session' commands." -msgstr "" - -#: ../utils/net.c:367 -msgid "List servers in workgroup" -msgstr "" - -#: ../utils/net.c:368 -msgid " Use 'net help server' to get more information about 'net server' commands." -msgstr "" - -#: ../utils/net.c:375 -msgid "List domains/workgroups on network" -msgstr "" - -#: ../utils/net.c:376 -msgid " Use 'net help domain' to get more information about 'net domain' commands." -msgstr "" - -#: ../utils/net.c:383 -msgid "Modify printer queue" -msgstr "" - -#: ../utils/net.c:384 -msgid " Use 'net help printq' to get more information about 'net printq' commands." -msgstr "" - -#: ../utils/net.c:391 -msgid "Manage users" -msgstr "" - -#: ../utils/net.c:392 -msgid " Use 'net help user' to get more information about 'net user' commands." -msgstr "" - -#: ../utils/net.c:399 -msgid "Manage groups" -msgstr "" - -#: ../utils/net.c:400 -msgid " Use 'net help group' to get more information about 'net group' commands." -msgstr "" - -#: ../utils/net.c:407 -msgid "Manage group mappings" -msgstr "" - -#: ../utils/net.c:408 -msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." -msgstr "" - -#: ../utils/net.c:415 -msgid "Functions on the SAM database" -msgstr "" - -#: ../utils/net.c:416 -msgid " Use 'net help sam' to get more information about 'net sam' commands." -msgstr "" - -#: ../utils/net.c:423 -msgid "Validate username and password" -msgstr "" - -#: ../utils/net.c:424 -msgid " Use 'net help validate' to get more information about 'net validate' commands." -msgstr "" - -#: ../utils/net.c:431 -msgid "Modify group memberships" -msgstr "" - -#: ../utils/net.c:432 -msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." -msgstr "" - -#: ../utils/net.c:438 -msgid "Execute remote command on a remote OS/2 server" -msgstr "" - -#: ../utils/net.c:439 -msgid " Use 'net help admin' to get more information about 'net admin' commands." -msgstr "" - -#: ../utils/net.c:445 -msgid "List/modify running services" -msgstr "" - -#: ../utils/net.c:446 -msgid " Use 'net help service' to get more information about 'net service' commands." -msgstr "" - -#: ../utils/net.c:453 -msgid "Change user password on target server" -msgstr "" - -#: ../utils/net.c:454 -msgid " Use 'net help password' to get more information about 'net password' commands." -msgstr "" - -#: ../utils/net.c:460 -msgid "Change the trust password" -msgstr "" - -#: ../utils/net.c:461 -msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." -msgstr "" - -#: ../utils/net.c:467 -msgid "Change the secret password" -msgstr "" - -#: ../utils/net.c:468 -msgid "" -" net [options] changesecretpw\n" -" Change the ADS domain member machine account password in secrets.tdb.\n" -" Do NOT use this function unless you know what it does.\n" -" Requires the -f flag to work." -msgstr "" - -#: ../utils/net.c:477 -msgid "Show/set time" -msgstr "" - -#: ../utils/net.c:478 -msgid " Use 'net help time' to get more information about 'net time' commands." -msgstr "" - -#: ../utils/net.c:484 -msgid "Look up host names/IP addresses" -msgstr "" - -#: ../utils/net.c:485 -msgid " Use 'net help lookup' to get more information about 'net lookup' commands." -msgstr "" - -#: ../utils/net.c:491 -msgid "Join a domain/AD" -msgstr "" - -#: ../utils/net.c:492 -msgid " Use 'net help join' to get more information about 'net join'." -msgstr "" - -#: ../utils/net.c:498 -msgid "Join/unjoin (remote) machines to/from a domain/AD" -msgstr "" - -#: ../utils/net.c:499 -msgid " Use 'net help dom' to get more information about 'net dom' commands." -msgstr "" - -#: ../utils/net.c:505 -msgid "Operate on the cache tdb file" -msgstr "" - -#: ../utils/net.c:506 -msgid " Use 'net help cache' to get more information about 'net cache' commands." -msgstr "" - -#: ../utils/net.c:512 -msgid "Get the SID for the local domain" -msgstr "" - -#: ../utils/net.c:513 -msgid " net getlocalsid" -msgstr "" - -#: ../utils/net.c:518 -msgid "Set the SID for the local domain" -msgstr "" - -#: ../utils/net.c:519 -msgid " net setlocalsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:524 -msgid "Set domain SID on member servers" -msgstr "" - -#: ../utils/net.c:525 -msgid " net setdomainsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:530 -msgid "Get domain SID on member servers" -msgstr "" - -#: ../utils/net.c:531 -msgid " net getdomainsid" -msgstr "" - -#: ../utils/net.c:536 -msgid "Display the maximul RID currently used" -msgstr "" - -#: ../utils/net.c:537 -msgid " net maxrid" -msgstr "" - -#: ../utils/net.c:542 -msgid "IDmap functions" -msgstr "" - -#: ../utils/net.c:543 -msgid " Use 'net help idmap to get more information about 'net idmap' commands." -msgstr "" - -#: ../utils/net.c:549 -msgid "Display server status" -msgstr "" - -#: ../utils/net.c:550 -msgid " Use 'net help status' to get more information about 'net status' commands." -msgstr "" - -#: ../utils/net.c:556 -msgid "Manage user-modifiable shares" -msgstr "" - -#: ../utils/net.c:557 -msgid " Use 'net help usershare to get more information about 'net usershare' commands." -msgstr "" - -#: ../utils/net.c:563 -msgid "Display list of all users with SID" -msgstr "" - -#: ../utils/net.c:564 -msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." -msgstr "" - -#: ../utils/net.c:570 -msgid "Manage Samba registry based configuration" -msgstr "" - -#: ../utils/net.c:571 -msgid " Use 'net help conf' to get more information about 'net conf' commands." -msgstr "" - -#: ../utils/net.c:577 -msgid "Manage the Samba registry" -msgstr "" - -#: ../utils/net.c:578 -msgid " Use 'net help registry' to get more information about 'net registry' commands." -msgstr "" - -#: ../utils/net.c:584 -msgid "Open a lua interpreter" -msgstr "" - -#: ../utils/net.c:585 -msgid " Use 'net help lua' to get more information about 'net lua' commands." -msgstr "" - -#: ../utils/net.c:591 -msgid "Process Win32 *.evt eventlog files" -msgstr "" - -#: ../utils/net.c:592 -msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." -msgstr "" - -#: ../utils/net.c:600 -msgid "Manage AFS tokens" -msgstr "" - -#: ../utils/net.c:601 -msgid " Use 'net help afs' to get more information about 'net afs' commands." -msgstr "" - -#: ../utils/net.c:609 -msgid "Print usage information" -msgstr "" - -#: ../utils/net.c:610 -msgid " Use 'net help help' to list usage information for 'net' commands." -msgstr "" - -#: ../utils/net.c:639 -msgid "Encrypt SMB transport (UNIX extended servers only)" -msgstr "" - -#: ../utils/net.c:703 -msgid "" -"\n" -"Invalid ip address specified\n" -msgstr "" - -#: ../utils/net.c:718 -#, c-format -msgid "" -"\n" -"Invalid option %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:52 ../utils/net_ads.c:392 -msgid "CLDAP query failed!\n" -msgstr "" - -#: ../utils/net_ads.c:56 -#, c-format -msgid "" -"Information for Domain Controller: %s\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:59 -msgid "Response Type: " -msgstr "" - -#: ../utils/net_ads.c:72 -#, c-format -msgid "GUID: %s\n" -msgstr "" - -#: ../utils/net_ads.c:74 -#, c-format -msgid "" -"Flags:\n" -"\tIs a PDC: %s\n" -"\tIs a GC of the forest: %s\n" -"\tIs an LDAP server: %s\n" -"\tSupports DS: %s\n" -"\tIs running a KDC: %s\n" -"\tIs running time services: %s\n" -"\tIs the closest DC: %s\n" -"\tIs writable: %s\n" -"\tHas a hardware clock: %s\n" -"\tIs a non-domain NC serviced by LDAP server: %s\n" -"\tIs NT6 DC that has some secrets: %s\n" -"\tIs NT6 DC that has all secrets: %s\n" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "yes" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "no" -msgstr "" - -#: ../utils/net_ads.c:101 -#, c-format -msgid "Forest:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:102 -#, c-format -msgid "Domain:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:103 -#, c-format -msgid "Domain Controller:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:105 -#, c-format -msgid "Pre-Win2k Domain:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:106 -#, c-format -msgid "Pre-Win2k Hostname:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:108 -#, c-format -msgid "User name:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:110 -#, c-format -msgid "Server Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:111 -#, c-format -msgid "Client Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:113 -#, c-format -msgid "NT Version: %d\n" -msgstr "" - -#: ../utils/net_ads.c:114 -#, c-format -msgid "LMNT Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:115 -#, c-format -msgid "LM20 Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:130 -msgid "" -"Usage:\n" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookup.\n" -msgstr "" - -#: ../utils/net_ads.c:137 ../utils/net_ads.c:381 -msgid "Didn't find the cldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:160 -msgid "" -"Usage:\n" -"net ads info\n" -" Display information about an Active Directory server.\n" -msgstr "" - -#: ../utils/net_ads.c:168 ../utils/net_ads.c:173 -msgid "Didn't find the ldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:182 -msgid "Failed to get server's current time!\n" -msgstr "" - -#: ../utils/net_ads.c:187 -#, c-format -msgid "LDAP server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:188 -#, c-format -msgid "LDAP server name: %s\n" -msgstr "" - -#: ../utils/net_ads.c:189 -#, c-format -msgid "Realm: %s\n" -msgstr "" - -#: ../utils/net_ads.c:190 -#, c-format -msgid "Bind Path: %s\n" -msgstr "" - -#: ../utils/net_ads.c:191 -#, c-format -msgid "LDAP port: %d\n" -msgstr "" - -#: ../utils/net_ads.c:192 -#, c-format -msgid "Server time: %s\n" -msgstr "" - -#: ../utils/net_ads.c:195 -#, c-format -msgid "KDC server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:196 -#, c-format -msgid "Server time offset: %d\n" -msgstr "" - -#: ../utils/net_ads.c:374 -msgid "" -"Usage:\n" -"net ads workgroup\n" -" Print the workgroup name\n" -msgstr "" - -#: ../utils/net_ads.c:397 -#, c-format -msgid "Workgroup: %s\n" -msgstr "" - -#: ../utils/net_ads.c:458 -#, c-format -msgid "ads_user_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:463 -#, c-format -msgid "ads_user_add: User %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:477 -#, c-format -msgid "Could not add user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:484 ../utils/net_ads.c:497 -#, c-format -msgid "User %s added\n" -msgstr "" - -#. password didn't set, delete account -#: ../utils/net_ads.c:503 -#, c-format -msgid "Could not add user %s. Error setting password %s\n" -msgstr "" - -#: ../utils/net_ads.c:551 -#, c-format -msgid "ads_user_info: failed to escape user %s\n" -msgstr "" - -#: ../utils/net_ads.c:569 -#, c-format -msgid "ads_search: %s\n" -msgstr "" - -#: ../utils/net_ads.c:575 -msgid "ads_pull_uint32 failed\n" -msgstr "" - -#: ../utils/net_ads.c:582 -#, c-format -msgid "ads_domain_sid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:642 -#, c-format -msgid "User %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:652 -#, c-format -msgid "User %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:656 -#, c-format -msgid "Error deleting user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:669 -msgid "Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:670 -msgid "" -"net ads user add\n" -" Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:677 -msgid "Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:678 -msgid "" -"net ads user info\n" -" Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:685 -msgid "Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:686 -msgid "" -"net ads user delete\n" -" Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:699 -msgid "" -"Usage:\n" -"net ads user\n" -" List AD users\n" -msgstr "" - -#: ../utils/net_ads.c:711 -msgid "" -"\n" -"User name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:751 -#, c-format -msgid "ads_group_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:756 -#, c-format -msgid "ads_group_add: Group %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:769 -#, c-format -msgid "Group %s added\n" -msgstr "" - -#: ../utils/net_ads.c:772 -#, c-format -msgid "Could not add group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:801 -#, c-format -msgid "Group %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:811 -#, c-format -msgid "Group %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:815 -#, c-format -msgid "Error deleting group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:828 -msgid "Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:829 -msgid "" -"net ads group add\n" -" Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:836 -msgid "Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:837 -msgid "" -"net ads group delete\n" -" Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:850 -msgid "" -"Usage:\n" -"net ads group\n" -" List AD groups\n" -msgstr "" - -#: ../utils/net_ads.c:862 -msgid "" -"\n" -"Group name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:884 -msgid "" -"Usage:\n" -"net ads status\n" -" Display machine account details\n" -msgstr "" - -#: ../utils/net_ads.c:896 -#, c-format -msgid "ads_find_machine_acct: %s\n" -msgstr "" - -#: ../utils/net_ads.c:902 -#, c-format -msgid "No machine account for '%s' found\n" -msgstr "" - -#: ../utils/net_ads.c:926 -msgid "" -"Usage:\n" -"net ads leave\n" -" Leave an AD domain\n" -msgstr "" - -#: ../utils/net_ads.c:933 -msgid "No realm set, are we joined ?\n" -msgstr "" - -#: ../utils/net_ads.c:938 ../utils/net_ads.c:1260 -msgid "Could not initialise talloc context.\n" -msgstr "" - -#: ../utils/net_ads.c:948 -msgid "Could not initialise unjoin context.\n" -msgstr "" - -#: ../utils/net_ads.c:968 -#, c-format -msgid "Failed to leave domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:975 -#, c-format -msgid "Deleted account for '%s' in realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:982 -#, c-format -msgid "Disabled account for '%s' in realm '%s'\n" -msgstr "" - -#. Based on what we requseted, we shouldn't get here, but if -#. we did, it means the secrets were removed, and therefore -#. we have left the domain -#: ../utils/net_ads.c:991 -#, c-format -msgid "Machine '%s' Left domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1035 -msgid "" -"Usage:\n" -"net ads testjoin\n" -" Test if the existing join is ok\n" -msgstr "" - -#: ../utils/net_ads.c:1044 -#, c-format -msgid "Join to domain is not valid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1049 -#, c-format -msgid "Join is OK\n" -msgstr "" - -#: ../utils/net_ads.c:1060 -msgid "Host is not configured as a member server.\n" -msgstr "" - -#: ../utils/net_ads.c:1065 -#, c-format -msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" -msgstr "" - -#: ../utils/net_ads.c:1072 -#, c-format -msgid "realm must be set in in %s for ADS join to succeed.\n" -msgstr "" - -#: ../utils/net_ads.c:1105 -#, c-format -msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" -msgstr "" - -#: ../utils/net_ads.c:1212 -msgid "" -"net ads join [options]\n" -"Valid options:\n" -msgstr "" - -#: ../utils/net_ads.c:1214 -msgid "" -" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" -" The deault UPN is in the form host/netbiosname@REALM.\n" -msgstr "" - -#: ../utils/net_ads.c:1216 -msgid "" -" createcomputer=OU Precreate the computer account in a specific OU.\n" -" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" -" E.g. \"createcomputer=Computers/Servers/Unix\"\n" -" NB: A backslash '\\' is used as escape at multiple levels and may\n" -" need to be doubled or even quadrupled. It is not used as a separator.\n" -msgstr "" - -#: ../utils/net_ads.c:1221 -msgid " osName=string Set the operatingSystem attribute during the join.\n" -msgstr "" - -#: ../utils/net_ads.c:1222 -msgid "" -" osVer=string Set the operatingSystemVersion attribute during the join.\n" -" NB: osName and osVer must be specified together for either to take effect.\n" -" Also, the operatingSystemService attribute is also set when along with\n" -" the two other attributes.\n" -msgstr "" - -#: ../utils/net_ads.c:1254 -msgid "Invalid configuration. Exiting....\n" -msgstr "" - -#: ../utils/net_ads.c:1283 -msgid "Please supply a valid OU path.\n" -msgstr "" - -#: ../utils/net_ads.c:1290 -msgid "Please supply a operating system name.\n" -msgstr "" - -#: ../utils/net_ads.c:1297 -msgid "Please supply a valid operating system version.\n" -msgstr "" - -#: ../utils/net_ads.c:1308 -msgid "Please supply a valid domain name\n" -msgstr "" - -#: ../utils/net_ads.c:1339 -#, c-format -msgid "" -"The workgroup in %s does not match the short\n" -"domain name obtained from the server.\n" -"Using the name [%s] from the server.\n" -"You should set \"workgroup = %s\" in %s.\n" -msgstr "" - -#: ../utils/net_ads.c:1347 -#, c-format -msgid "Using short domain name -- %s\n" -msgstr "" - -#: ../utils/net_ads.c:1350 -#, c-format -msgid "Joined '%s' to realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1353 -#, c-format -msgid "Joined '%s' to domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1377 ../utils/net_ads.c:1433 -msgid "DNS update failed!\n" -msgstr "" - -#. issue an overall failure message at the end. -#: ../utils/net_ads.c:1391 ../utils/net_dom.c:198 -#, c-format -msgid "Failed to join domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1414 -msgid "" -"Usage:\n" -"net ads dns register\n" -" Register hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1421 -msgid "Could not initialise talloc context\n" -msgstr "" - -#: ../utils/net_ads.c:1439 -msgid "Successfully registered hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1447 -msgid "DNS update support not enabled at compile time!\n" -msgstr "" - -#: ../utils/net_ads.c:1466 -msgid "" -"Usage:\n" -"net ads dns gethostbyname \n" -" Look up hostname from the AD\n" -" server\tName server to use\n" -" name\tName to look up\n" -msgstr "" - -#: ../utils/net_ads.c:1476 -#, c-format -msgid "do_gethostbyname returned %d\n" -msgstr "" - -#: ../utils/net_ads.c:1488 -msgid "Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1489 -msgid "" -"net ads dns register\n" -" Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1496 -msgid "Look up host" -msgstr "" - -#: ../utils/net_ads.c:1497 -msgid "" -"net ads dns gethostbyname\n" -" Look up host" -msgstr "" - -#: ../utils/net_ads.c:1512 -msgid "" -"\n" -"net ads printer search \n" -"\tsearch for a printer in the directory\n" -"\n" -"net ads printer info \n" -"\tlookup info in directory for printer on server\n" -"\t(note: printer defaults to \"*\", server defaults to local)\n" -"\n" -"net ads printer publish \n" -"\tpublish printer in directory\n" -"\t(note: printer name is required)\n" -"\n" -"net ads printer remove \n" -"\tremove printer from directory\n" -"\t(note: printer name is required)\n" -msgstr "" - -#: ../utils/net_ads.c:1536 -msgid "" -"Usage:\n" -"net ads printer search\n" -" List printers in the AD\n" -msgstr "" - -#: ../utils/net_ads.c:1549 -#, c-format -msgid "ads_find_printer: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1556 -msgid "No results found\n" -msgstr "" - -#: ../utils/net_ads.c:1576 -msgid "" -"Usage:\n" -"net ads printer info [printername [servername]]\n" -" Display printer info from AD\n" -" printername\tPrinter name or wildcard\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1603 -#, c-format -msgid "Server '%s' not found: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1611 ../utils/net_ads.c:1794 -#, c-format -msgid "Printer '%s' not found\n" -msgstr "" - -#: ../utils/net_ads.c:1640 -msgid "" -"Usage:\n" -"net ads printer publish [servername]\n" -" Publish printer in AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1675 -#, c-format -msgid "Unable to open a connnection to %s to obtain data for %s\n" -msgstr "" - -#: ../utils/net_ads.c:1688 -#, c-format -msgid "Could not find machine account for server %s\n" -msgstr "" - -#: ../utils/net_ads.c:1704 ../utils/net_ads.c:1713 -msgid "Internal error, out of memory!" -msgstr "" - -#: ../utils/net_ads.c:1724 -#, c-format -msgid "Unable to open a connnection to the spoolss pipe on %s\n" -msgstr "" - -#: ../utils/net_ads.c:1766 -msgid "" -"Usage:\n" -"net ads printer remove [servername]\n" -" Remove a printer from the AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1787 -#, c-format -msgid "ads_find_printer_on_server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1806 -#, c-format -msgid "ads_del_dn: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1822 -msgid "Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1823 -msgid "" -"net ads printer search\n" -" Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1830 -msgid "Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1831 -msgid "" -"net ads printer info\n" -" Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1838 -msgid "Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1839 -msgid "" -"net ads printer publish\n" -" Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1846 -msgid "Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1847 -msgid "" -"net ads printer remove\n" -" Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1869 -msgid "" -"Usage:\n" -"net ads password \n" -" Change password for user\n" -" username\tName of user to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1877 -msgid "You must supply an administrator username/password\n" -msgstr "" - -#: ../utils/net_ads.c:1883 -msgid "ERROR: You must say which username to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1915 -msgid "Didn't find the kerberos server!\n" -msgstr "" - -#: ../utils/net_ads.c:1923 -#, c-format -msgid "Enter new password for %s:" -msgstr "" - -#: ../utils/net_ads.c:1933 ../utils/net_ads.c:1982 -#, c-format -msgid "Password change failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1938 -#, c-format -msgid "Password change for %s completed.\n" -msgstr "" - -#: ../utils/net_ads.c:1952 -msgid "" -"Usage:\n" -"net ads changetrustpw\n" -" Change the machine account's trust password\n" -msgstr "" - -#: ../utils/net_ads.c:1977 -#, c-format -msgid "Changing password for principal: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1988 -#, c-format -msgid "Password change for principal %s succeeded.\n" -msgstr "" - -#: ../utils/net_ads.c:1991 -msgid "Attempting to update system keytab with new password.\n" -msgstr "" - -#: ../utils/net_ads.c:1993 -msgid "Failed to update system keytab.\n" -msgstr "" - -#: ../utils/net_ads.c:2009 -msgid "" -"\n" -"net ads search \n" -"\n" -"Perform a raw LDAP search on a ADS server and dump the results.\n" -"The expression is a standard LDAP search expression, and the\n" -"attributes are a list of LDAP fields to show in the results.\n" -"\n" -"Example: net ads search '(objectCategory=group)' sAMAccountName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2046 ../utils/net_ads.c:2107 ../utils/net_ads.c:2171 ../utils/net_ads_gpo.c:250 -#, c-format -msgid "search failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2051 ../utils/net_ads.c:2176 ../utils/net_ads_gpo.c:256 -#, c-format -msgid "" -"Got %d replies\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2069 -msgid "" -"\n" -"net ads dn \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" -"\n" -"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2129 -msgid "" -"\n" -"net ads sid \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The SID is in string format, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads sid 'S-1-5-32' distinguishedName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2164 -msgid "could not convert sid\n" -msgstr "" - -#: ../utils/net_ads.c:2193 -msgid "" -"Usage:\n" -"net ads keytab flush\n" -" Delete the whole keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2214 -msgid "" -"Usage:\n" -"net ads keytab add [principal ...]\n" -" Add principals to local keytab\n" -" principal\tKerberos principal to add to keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2222 -msgid "Processing principals to add...\n" -msgstr "" - -#: ../utils/net_ads.c:2239 -msgid "" -"Usage:\n" -"net ads keytab create\n" -" Create new default keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2258 -msgid "" -"Usage:\n" -"net ads keytab list [keytab]\n" -" List a local keytab\n" -" keytab\tKeytab to list\n" -msgstr "" - -#: ../utils/net_ads.c:2280 -msgid "Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2281 -msgid "" -"net ads keytab add\n" -" Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2288 -msgid "Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2289 -msgid "" -"net ads keytab create\n" -" Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2296 -msgid "Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2297 -msgid "" -"net ads keytab flush\n" -" Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2304 -msgid "List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2305 -msgid "" -"net ads keytab list\n" -" List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2312 -msgid "" -"\n" -"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" -msgstr "" - -#: ../utils/net_ads.c:2324 -msgid "" -"Usage:\n" -"net ads kerberos renew\n" -" Renew TGT from existing credential cache\n" -msgstr "" - -#: ../utils/net_ads.c:2332 -#, c-format -msgid "failed to renew kerberos ticket: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2347 -msgid "" -"Usage:\n" -"net ads kerberos pac\n" -" Dump the Kerberos PAC\n" -msgstr "" - -#: ../utils/net_ads.c:2372 -#, c-format -msgid "failed to query kerberos PAC: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2381 -#, c-format -msgid "The Pac: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2397 -msgid "" -"Usage:\n" -"net ads kerberos kinit\n" -" Get Ticket Granting Ticket (TGT) for the user\n" -msgstr "" - -#: ../utils/net_ads.c:2421 -#, c-format -msgid "failed to kinit password: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2435 -msgid "Retrieve Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2436 -msgid "" -"net ads kerberos kinit\n" -" Receive Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2443 -msgid "Renew Ticket Granting Ticket from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2444 -msgid "" -"net ads kerberos renew\n" -" Renew Ticket Granting Ticket (TGT) from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2452 -msgid "Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2453 -msgid "" -"net ads kerberos pac\n" -" Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2469 -msgid "Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2470 -msgid "" -"net ads info\n" -" Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2477 -msgid "Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2478 -msgid "" -"net ads join\n" -" Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2485 -msgid "Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2486 -msgid "" -"net ads testjoin\n" -" Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2493 -msgid "Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2494 -msgid "" -"net ads leave\n" -" Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2501 -msgid "Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2502 -msgid "" -"net ads status\n" -" Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2509 -msgid "List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2510 -msgid "" -"net ads user\n" -" List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2517 -msgid "List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2518 -msgid "" -"net ads group\n" -" List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2525 -msgid "Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2526 -msgid "" -"net ads dns\n" -" Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2533 -msgid "Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2534 -msgid "" -"net ads password\n" -" Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2541 -msgid "Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2542 -msgid "" -"net ads changetrustpw\n" -" Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2549 -msgid "List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2550 -msgid "" -"net ads printer\n" -" List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2557 -msgid "Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2558 -msgid "" -"net ads search\n" -" Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2565 -msgid "Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2566 -msgid "" -"net ads dn\n" -" Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2573 -msgid "Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2574 -msgid "" -"net ads sid\n" -" Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2581 -msgid "Display workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2582 -msgid "" -"net ads workgroup\n" -" Display the workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2589 -msgid "Perfom CLDAP query on DC" -msgstr "" - -#: ../utils/net_ads.c:2590 -msgid "" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookups" -msgstr "" - -#: ../utils/net_ads.c:2597 -msgid "Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2598 -msgid "" -"net ads keytab\n" -" Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2605 -msgid "Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2606 -msgid "" -"net ads gpo\n" -" Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2613 -msgid "Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2614 -msgid "" -"net ads kerberos\n" -" Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2627 -msgid "ADS support not compiled in\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:40 -msgid "" -"Usage:\n" -"net ads gpo refresh \n" -" Lists all GPOs assigned to an account and downloads them\n" -" username\tUser to refresh GPOs for\n" -" machinename\tMachine to refresh GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:56 -#, c-format -msgid "failed to connect AD server: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:62 -#, c-format -msgid "failed to find samaccount for %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:70 -#, c-format -msgid "" -"\n" -"%s: '%s' has dn: '%s'\n" -"\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -msgid "machine" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -msgid "user" -msgstr "" - -#: ../utils/net_ads_gpo.c:74 -msgid "* fetching token " -msgstr "" - -#: ../utils/net_ads_gpo.c:82 ../utils/net_ads_gpo.c:90 ../utils/net_ads_gpo.c:102 ../utils/net_ads_gpo.c:113 ../utils/net_ads_gpo.c:158 -#, c-format -msgid "failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:85 ../utils/net_ads_gpo.c:94 ../utils/net_ads_gpo.c:105 ../utils/net_ads_gpo.c:118 ../utils/net_ads_gpo.c:163 -msgid "finished\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:87 -msgid "* fetching GPO List " -msgstr "" - -#: ../utils/net_ads_gpo.c:96 -msgid "* Refreshing Group Policy Data " -msgstr "" - -#: ../utils/net_ads_gpo.c:107 -msgid "* storing GPO list to registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:122 -msgid "* dumping GPO list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:151 -msgid "* re-reading GPO list from registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:167 -msgid "* dumping GPO list from registry\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:226 -msgid "" -"Usage:\n" -"net ads gpo listall\n" -" List all GPOs on the DC\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:270 -#, c-format -msgid "ads_parse_gpo failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:300 -msgid "" -"Usage:\n" -"net ads gpo list \n" -" Lists all GPOs for machine/user\n" -" username\tUser to list GPOs for\n" -" machinename\tMachine to list GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:327 -#, c-format -msgid "%s: '%s' has dn: '%s'\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:451 -msgid "" -"Usage:\n" -"net ads gpo linkget \n" -" Lists gPLink of a containter\n" -" container\tContainer to get link for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:470 -#, c-format -msgid "get link for %s failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:492 -msgid "" -"Usage:\n" -"net ads gpo linkadd [options]\n" -" Link a container to a GPO\n" -" linkdn\tContainer to link to a GPO\n" -" gpodn\tGPO to link container to\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:497 -msgid "" -"note: DNs must be provided properly escaped.\n" -"See RFC 4514 for details\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:518 -#, c-format -msgid "link add failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:579 -msgid "" -"Usage:\n" -"net ads gpo getgpo \n" -" List speciefied GPO\n" -" gpo\t\tGPO to list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:603 -#, c-format -msgid "get gpo for [%s] failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:634 -msgid "List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:635 -msgid "" -"net ads gpo getgpo\n" -" List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:642 -msgid "Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:643 -msgid "" -"net ads gpo linkadd\n" -" Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:660 -msgid "Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:661 -msgid "" -"net ads gpo linkget\n" -" Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:668 -msgid "Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:669 -msgid "" -"net ads gpo list\n" -" Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:676 -msgid "Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:677 -msgid "" -"net ads gpo listall\n" -" Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:684 -msgid "Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_ads_gpo.c:686 -msgid "" -"net ads gpo refresh\n" -" Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_afs.c:25 -msgid "" -" net afs key filename\n" -"\tImports a OpenAFS KeyFile into our secrets.tdb\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:27 -msgid "" -" net afs impersonate \n" -"\tCreates a token for user@cell\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:38 -msgid "usage: 'net afs key cell'\n" -msgstr "" - -#: ../utils/net_afs.c:43 -msgid "Could not open secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:48 -#, c-format -msgid "Could not open %s\n" -msgstr "" - -#: ../utils/net_afs.c:53 -msgid "Could not read keyfile\n" -msgstr "" - -#: ../utils/net_afs.c:58 -msgid "Could not write keyfile to secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:71 -#, c-format -msgid "Usage: net afs impersonate \n" -msgstr "" - -#: ../utils/net_afs.c:78 -#, c-format -msgid "Could not create token\n" -msgstr "" - -#: ../utils/net_afs.c:83 -#, c-format -msgid "Could not set token into kernel\n" -msgstr "" - -#: ../utils/net_afs.c:87 -#, c-format -msgid "Success: %s@%s\n" -msgstr "" - -#: ../utils/net_afs.c:98 -msgid "Import an OpenAFS keyfile" -msgstr "" - -#: ../utils/net_afs.c:99 -msgid "" -"net afs key \n" -" Import kefile from ." -msgstr "" - -#: ../utils/net_afs.c:106 -msgid "Get a user token" -msgstr "" - -#: ../utils/net_afs.c:107 -msgid "" -"net afs impersonate \n" -" Create token for user@cell" -msgstr "" - -#: ../utils/net_cache.c:74 -#, c-format -msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" -msgstr "" - -#: ../utils/net_cache.c:75 -msgid "(expired)" -msgstr "" - -#: ../utils/net_cache.c:84 -#, c-format -msgid "Couldn't delete entry! key = %s\n" -msgstr "" - -#: ../utils/net_cache.c:158 -msgid "" -"\n" -"Usage:\n" -"net cache add \n" -msgstr "" - -#: ../utils/net_cache.c:170 -msgid "Invalid timeout argument.\n" -msgstr "" - -#: ../utils/net_cache.c:175 -msgid "New cache entry stored successfully.\n" -msgstr "" - -#: ../utils/net_cache.c:179 -msgid "Entry couldn't be added. Perhaps there's already such a key.\n" -msgstr "" - -#: ../utils/net_cache.c:195 -msgid "" -"\n" -"Usage: net cache del \n" -msgstr "" - -#: ../utils/net_cache.c:200 -msgid "Entry deleted.\n" -msgstr "" - -#: ../utils/net_cache.c:204 -msgid "Couldn't delete specified entry\n" -msgstr "" - -#: ../utils/net_cache.c:223 -msgid "" -"\n" -"Usage: net cache get \n" -msgstr "" - -#: ../utils/net_cache.c:233 -msgid "Failed to find entry\n" -msgstr "" - -#: ../utils/net_cache.c:250 -msgid "Usage: net cache search \n" -msgstr "" - -#: ../utils/net_cache.c:272 -msgid "" -"Usage:\n" -"net cache list\n" -" List all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:293 ../utils/net_cache.c:306 -msgid "" -"Usage:\n" -"net cache flush\n" -" Delete all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:331 -msgid "Add new cache entry" -msgstr "" - -#: ../utils/net_cache.c:332 -msgid "" -"net cache add \n" -" Add new cache entry.\n" -" key string\tKey string to add cache data under.\n" -" data string\tData to store under given key.\n" -" timeout\tTimeout for cache data." -msgstr "" - -#: ../utils/net_cache.c:342 -msgid "Delete existing cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:343 -msgid "" -"net cache del \n" -" Delete existing cache entry by key.\n" -" key string\tKey string to delete." -msgstr "" - -#: ../utils/net_cache.c:351 -msgid "Get cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:352 -msgid "" -"net cache get \n" -" Get cache entry by key.\n" -" key string\tKey string to look up cache entry for." -msgstr "" - -#: ../utils/net_cache.c:361 -msgid "Search entry by pattern" -msgstr "" - -#: ../utils/net_cache.c:362 -msgid "" -"net cache search \n" -" Search entry by pattern.\n" -" pattern\tPattern to search for in cache." -msgstr "" - -#: ../utils/net_cache.c:370 -msgid "List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:371 -msgid "" -"net cache list\n" -" List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:378 -msgid "Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:379 -msgid "" -"net cache flush\n" -" Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:386 -msgid "Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_cache.c:387 -msgid "" -"net cache stabilize\n" -" Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_conf.c:42 -msgid "USAGE: net conf list\n" -msgstr "" - -#: ../utils/net_conf.c:49 -msgid "" -"USAGE: net conf import [--test|-T] []\n" -"\t[--test|-T] testmode - do not act, just print what would be done\n" -"\t only import service , ignore the rest\n" -msgstr "" - -#: ../utils/net_conf.c:61 -msgid "USAGE: net conf listshares\n" -msgstr "" - -#: ../utils/net_conf.c:68 -msgid "USAGE: net conf drop\n" -msgstr "" - -#: ../utils/net_conf.c:75 -msgid "USAGE: net conf showshare \n" -msgstr "" - -#: ../utils/net_conf.c:82 -msgid "" -"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" -"\t the new share name.\n" -"\t the path on the filesystem to export.\n" -"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" -"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" -"\t optional comment for the new share.\n" -msgstr "" - -#: ../utils/net_conf.c:97 -msgid "USAGE: net conf delshare \n" -msgstr "" - -#: ../utils/net_conf.c:104 -msgid "USAGE: net conf setparm
\n" -msgstr "" - -#: ../utils/net_conf.c:111 -msgid "USAGE: net conf getparm
\n" -msgstr "" - -#: ../utils/net_conf.c:118 -msgid "USAGE: net conf delparm
\n" -msgstr "" - -#: ../utils/net_conf.c:125 -msgid "USAGE: net conf getincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:132 -msgid "USAGE: net conf setincludes
[]*\n" -msgstr "" - -#: ../utils/net_conf.c:139 -msgid "USAGE: net conf delincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:251 -#, c-format -msgid "Error getting config: %s\n" -msgstr "" - -#: ../utils/net_conf.c:305 ../utils/net_conf.c:318 ../utils/net_conf.c:614 ../utils/net_conf.c:742 ../utils/net_conf.c:780 ../utils/net_conf.c:786 ../utils/net_conf.c:860 ../utils/net_conf.c:866 ../utils/net_conf.c:916 ../utils/net_conf.c:970 -#: ../utils/net_conf.c:1010 ../utils/net_conf.c:1050 -msgid "error: out of memory!\n" -msgstr "" - -#: ../utils/net_conf.c:324 -#, c-format -msgid "error loading file '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:330 -msgid "" -"\n" -"TEST MODE - would import the following configuration:\n" -"\n" -msgstr "" - -#: ../utils/net_conf.c:346 ../utils/net_conf.c:382 ../utils/net_conf.c:407 ../utils/net_conf.c:793 -#, c-format -msgid "error starting transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:400 ../utils/net_conf.c:416 ../utils/net_conf.c:817 -#, c-format -msgid "error committing transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:427 ../utils/net_conf.c:828 -#, c-format -msgid "error cancelling transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:484 -#, c-format -msgid "Error deleting configuration: %s\n" -msgstr "" - -#: ../utils/net_conf.c:521 -#, c-format -msgid "error getting share parameters: %s\n" -msgstr "" - -#: ../utils/net_conf.c:630 -#, c-format -msgid "ERROR: share name %s contains invalid characters (any of %s)\n" -msgstr "" - -#: ../utils/net_conf.c:638 -msgid "ERROR: 'global' is not a valid share name.\n" -msgstr "" - -#: ../utils/net_conf.c:643 -#, c-format -msgid "ERROR: share %s already exists.\n" -msgstr "" - -#: ../utils/net_conf.c:652 -#, c-format -msgid "Error: path '%s' is not an absolute path.\n" -msgstr "" - -#: ../utils/net_conf.c:659 -#, c-format -msgid "" -"ERROR: cannot stat path '%s' to ensure this is a directory.\n" -"Error was '%s'.\n" -msgstr "" - -#: ../utils/net_conf.c:668 -#, c-format -msgid "ERROR: path '%s' is not a directory.\n" -msgstr "" - -#: ../utils/net_conf.c:679 -#, c-format -msgid "Error creating share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:690 ../utils/net_conf.c:699 ../utils/net_conf.c:707 ../utils/net_conf.c:715 -#, c-format -msgid "Error setting parameter %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:748 -#, c-format -msgid "Error deleting share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:801 -#, c-format -msgid "Error creating share '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:810 -#, c-format -msgid "Error setting value '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:874 ../utils/net_conf.c:930 -#, c-format -msgid "Error: given service '%s' does not exist.\n" -msgstr "" - -#: ../utils/net_conf.c:879 ../utils/net_conf.c:935 -#, c-format -msgid "Error: given parameter '%s' is not set.\n" -msgstr "" - -#: ../utils/net_conf.c:883 -#, c-format -msgid "Error getting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:939 -#, c-format -msgid "Error deleting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:977 -#, c-format -msgid "error getting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1023 -#, c-format -msgid "error setting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1056 -#, c-format -msgid "error deleting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1136 ../utils/net_help.c:36 -msgid "Usage:\n" -msgstr "" - -#: ../utils/net_conf.c:1160 -msgid "Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1162 -msgid "" -"net conf list\n" -" Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1171 -msgid "Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1173 -msgid "" -"net conf import\n" -" Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1181 -msgid "List the share names." -msgstr "" - -#: ../utils/net_conf.c:1182 -msgid "" -"net conf listshares\n" -" List the share names." -msgstr "" - -#: ../utils/net_conf.c:1189 -msgid "Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1190 -msgid "" -"net conf drop\n" -" Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1197 -msgid "Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1198 -msgid "" -"net conf showshare\n" -" Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1205 -msgid "Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1206 -msgid "" -"net conf addshare\n" -" Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1213 -msgid "Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1214 -msgid "" -"net conf delshare\n" -" Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1221 -msgid "Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1222 -msgid "" -"net conf setparm\n" -" Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1229 -msgid "Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1230 -msgid "" -"net conf getparm\n" -" Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1237 -msgid "Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1238 -msgid "" -"net conf delparm\n" -" Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1245 -msgid "Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1246 -msgid "" -"net conf getincludes\n" -" Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1253 -msgid "Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1254 -msgid "" -"net conf setincludes\n" -" Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1261 -msgid "Delete includes from a share definition." -msgstr "" - -#: ../utils/net_conf.c:1262 -msgid "" -"net conf setincludes\n" -" Delete includes from a share definition." -msgstr "" - -#: ../utils/net_dom.c:25 -msgid "" -"usage: net dom join \n" -" Join a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:28 -msgid "" -"usage: net dom unjoin \n" -" Unjoin a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:31 -msgid "" -"usage: net dom renamecomputer \n" -" Rename joined computer\n" -msgstr "" - -#: ../utils/net_dom.c:91 -#, c-format -msgid "Failed to unjoin domain: %s\n" -msgstr "" - -#: ../utils/net_dom.c:97 ../utils/net_dom.c:204 -msgid "Shutting down due to a domain membership change" -msgstr "" - -#: ../utils/net_dom.c:290 -#, c-format -msgid "Failed to rename machine: " -msgstr "" - -#: ../utils/net_dom.c:292 -#, c-format -msgid "Computer is not joined to a Domain\n" -msgstr "" - -#: ../utils/net_dom.c:301 -msgid "Shutting down due to a computer rename" -msgstr "" - -#: ../utils/net_dom.c:338 -msgid "Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:339 -msgid "" -"net dom join \n" -" Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:347 -msgid "Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:348 -msgid "" -"net dom unjoin \n" -" Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:356 -msgid "Rename a computer that is joined to a domain" -msgstr "" - -#: ../utils/net_dom.c:357 -msgid "" -"net dom renamecomputer \n" -" Rename joined computer" -msgstr "" - -#: ../utils/net_eventlog.c:46 -msgid "usage: net eventlog dump \n" -msgstr "" - -#: ../utils/net_eventlog.c:52 ../utils/net_eventlog.c:108 -#, c-format -msgid "failed to load evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:59 ../utils/net_eventlog.c:129 -#, c-format -msgid "evt pull failed: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:102 -msgid "usage: net eventlog import \n" -msgstr "" - -#: ../utils/net_eventlog.c:116 -#, c-format -msgid "evt header pull failed: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:122 -msgid "input file is wrapped, cannot proceed\n" -msgstr "" - -#: ../utils/net_eventlog.c:138 ../utils/net_eventlog.c:203 -#, c-format -msgid "can't open the eventlog TDB (%s)\n" -msgstr "" - -#: ../utils/net_eventlog.c:158 -#, c-format -msgid "can't write to the eventlog: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:164 -#, c-format -msgid "wrote %d entries to tdb\n" -msgstr "" - -#: ../utils/net_eventlog.c:197 -msgid "usage: net eventlog export \n" -msgstr "" - -#: ../utils/net_eventlog.c:214 -#, c-format -msgid "failed to save evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:243 -msgid "Dump eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:244 -msgid "" -"net eventlog dump\n" -" Dump win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:251 -msgid "Import eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:252 -msgid "" -"net eventlog import\n" -" Import win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:259 -msgid "Export eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:260 -msgid "" -"net eventlog export\n" -" Export win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_file.c:27 -msgid "" -"net [] file [misc. options] [targets]\n" -"\tlists all open files on file server\n" -msgstr "" - -#: ../utils/net_file.c:29 -msgid "" -"net [] file USER [misc. options] [targets]\n" -"\tlists all files opened by username on file server\n" -msgstr "" - -#: ../utils/net_file.c:32 -msgid "" -"net [] file CLOSE [misc. options] [targets]\n" -"\tcloses specified file on target server\n" -msgstr "" - -#: ../utils/net_file.c:34 -msgid "" -"net [rap] file INFO [misc. options] [targets]\n" -"\tdisplays information about the specified open file\n" -msgstr "" - -#: ../utils/net_group.c:27 -msgid "" -"net [] group [misc. options] [targets]\n" -"\tList user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:29 -msgid "" -"net rpc group LIST [global|local|builtin]* [misc. options]\n" -"\tList specific user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:31 -msgid "" -"net [] group DELETE [misc. options] [targets]\n" -"\tDelete specified group\n" -msgstr "" - -#: ../utils/net_group.c:34 -msgid "" -"\n" -"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" -"\tCreate specified group\n" -msgstr "" - -#: ../utils/net_group.c:37 -msgid "" -"\n" -"net rpc group MEMBERS \n" -"\tList Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:38 -msgid "" -"\n" -"net rpc group ADDMEM \n" -"\tAdd Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:40 -msgid "" -"\n" -"net rpc group DELMEM \n" -"\tDelete Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:44 -msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" -msgstr "" - -#: ../utils/net_group.c:46 -msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" -msgstr "" - -#: ../utils/net_group.c:48 -msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" -msgstr "" - -#: ../utils/net_groupmap.c:38 -#, c-format -msgid "NT Group %s doesn't exist in mapping DB\n" -msgstr "" - -#: ../utils/net_groupmap.c:46 -#, c-format -msgid "converting sid %s from a string failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:65 -#, c-format -msgid "\tSID : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:66 -#, c-format -msgid "\tUnix gid : %u\n" -msgstr "" - -#: ../utils/net_groupmap.c:67 -#, c-format -msgid "\tUnix group: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:68 -#, c-format -msgid "\tGroup type: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:70 -#, c-format -msgid "\tComment : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:84 -msgid "" -"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" -" verbose\tPrint verbose list\n" -" ntgroup\tNT group to list\n" -" sid\tSID of group to list" -msgstr "" - -#: ../utils/net_groupmap.c:91 ../utils/net_groupmap.c:271 ../utils/net_groupmap.c:356 ../utils/net_groupmap.c:412 ../utils/net_groupmap.c:495 ../utils/net_groupmap.c:522 -#, c-format -msgid "" -"Usage:\n" -"%s\n" -msgstr "" - -#: ../utils/net_groupmap.c:106 ../utils/net_groupmap.c:213 ../utils/net_groupmap.c:220 ../utils/net_groupmap.c:365 ../utils/net_groupmap.c:372 ../utils/net_groupmap.c:504 -msgid "must supply a name\n" -msgstr "" - -#: ../utils/net_groupmap.c:113 ../utils/net_groupmap.c:227 ../utils/net_groupmap.c:511 -msgid "must supply a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:118 ../utils/net_groupmap.c:265 ../utils/net_groupmap.c:406 ../utils/net_groupmap.c:516 -#, c-format -msgid "Bad option: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:139 -msgid "Failure to local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:181 -msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" -msgstr "" - -#: ../utils/net_groupmap.c:195 -#, c-format -msgid "" -"Usage\n" -"%s\n" -msgstr "" - -#: ../utils/net_groupmap.c:205 -#, c-format -msgid "RID must be greater than %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:235 ../utils/net_groupmap.c:380 -msgid "must supply a comment string\n" -msgstr "" - -#: ../utils/net_groupmap.c:259 -#, c-format -msgid "unknown group type %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:276 -#, c-format -msgid "Can't lookup UNIX group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:282 -#, c-format -msgid "Unix group %s already mapped to SID %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:289 -msgid "No rid or sid specified, choosing a RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:292 -msgid "Could not get new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:297 -#, c-format -msgid "Got RID %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:328 -#, c-format -msgid "adding entry for group %s failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:332 -#, c-format -msgid "Successfully added group %s to the mapping db as a %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:349 -msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" -msgstr "" - -#: ../utils/net_groupmap.c:388 -msgid "must supply a group name\n" -msgstr "" - -#: ../utils/net_groupmap.c:434 -msgid "Failed to find local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:443 -msgid "Can't map to an unknown group type.\n" -msgstr "" - -#: ../utils/net_groupmap.c:449 -msgid "You can only change between domain and local groups.\n" -msgstr "" - -#: ../utils/net_groupmap.c:466 -#, c-format -msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" -msgstr "" - -#: ../utils/net_groupmap.c:476 -msgid "Could not update group database\n" -msgstr "" - -#: ../utils/net_groupmap.c:480 -#, c-format -msgid "Updated mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:491 -msgid "net groupmap delete {ntgroup=|sid=}" -msgstr "" - -#: ../utils/net_groupmap.c:532 -#, c-format -msgid "Unable to resolve group %s to a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:539 -#, c-format -msgid "Failed to remove group %s from the mapping db!\n" -msgstr "" - -#: ../utils/net_groupmap.c:544 -#, c-format -msgid "Sucessfully removed %s from the mapping db\n" -msgstr "" - -#: ../utils/net_groupmap.c:557 -msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" -msgstr "" - -#: ../utils/net_groupmap.c:563 -msgid "Can only specify -L or -D, not both\n" -msgstr "" - -#: ../utils/net_groupmap.c:573 -#, c-format -msgid "Could not find unix group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:594 -#, c-format -msgid "Could not find group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:605 -msgid "Could not allocate new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:622 -#, c-format -msgid "Could not add mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:633 -#, c-format -msgid "Can't change type of the BUILTIN group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:660 -#, c-format -msgid "Could not update group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:674 -msgid "" -"Usage:\n" -"net groupmap cleanup\n" -" Delete all group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:682 -msgid "Could not list group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:689 -#, c-format -msgid "Group %s is not mapped\n" -msgstr "" - -#: ../utils/net_groupmap.c:692 -#, c-format -msgid "Deleting mapping for NT Group %s, sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:712 -msgid "Usage: net groupmap addmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:717 -#, c-format -msgid "Could not add sid %s to alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:733 -msgid "Usage: net groupmap delmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:738 -#, c-format -msgid "Could not delete sid %s from alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:755 -msgid "Usage: net groupmap listmem alias-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:764 -#, c-format -msgid "Could not list members for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:791 -#, c-format -msgid "Could not list memberships for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:814 -msgid "Usage: net groupmap memberof sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:820 ../utils/net_idmap.c:345 -msgid "talloc_init failed\n" -msgstr "" - -#: ../utils/net_groupmap.c:827 -msgid "Could not get domain sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:850 -msgid "Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:851 -msgid "" -"net groupmap add\n" -" Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:858 -msgid "Update a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:859 -msgid "" -"net groupmap modify\n" -" Modify an existing group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:866 -msgid "Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:867 -msgid "" -"net groupmap delete\n" -" Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:874 -msgid "Set group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:875 -msgid "" -"net groupmap set\n" -" Set a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:882 -msgid "Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:883 -msgid "" -"net groupmap cleanup\n" -" Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:890 -msgid "Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:891 -msgid "" -"net groupmap addmem\n" -" Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:898 -msgid "Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:899 -msgid "" -"net groupmap delmem\n" -" Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:906 -msgid "List foreign group members" -msgstr "" - -#: ../utils/net_groupmap.c:907 -msgid "" -"net groupmap listmem\n" -" List foreign alias members" -msgstr "" - -#: ../utils/net_groupmap.c:914 -msgid "List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:915 -msgid "" -"net groupmap memberships\n" -" List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:922 -msgid "List current group map" -msgstr "" - -#: ../utils/net_groupmap.c:923 -msgid "" -"net groupmap list\n" -" List current group map" -msgstr "" - -#: ../utils/net_help.c:39 -#, c-format -msgid "net %s usage:\n" -msgstr "" - -#: ../utils/net_help_common.c:25 ../utils/net_join.c:28 -msgid "Valid methods: (auto-detected if not specified)\n" -msgstr "" - -#: ../utils/net_help_common.c:26 ../utils/net_join.c:29 -msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" -msgstr "" - -#: ../utils/net_help_common.c:27 ../utils/net_join.c:30 -msgid "\trpc\t\t\t\tDCE-RPC\n" -msgstr "" - -#: ../utils/net_help_common.c:28 -msgid "\trap\t\t\t\tRAP (older systems)\n" -msgstr "" - -#: ../utils/net_help_common.c:35 -msgid "Valid targets: choose one (none defaults to localhost)\n" -msgstr "" - -#: ../utils/net_help_common.c:36 -msgid "\t-S or --server=\t\tserver name\n" -msgstr "" - -#: ../utils/net_help_common.c:37 -msgid "\t-I or --ipaddress=\taddress of target server\n" -msgstr "" - -#: ../utils/net_help_common.c:38 -msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" -msgstr "" - -#: ../utils/net_help_common.c:41 -msgid "Valid miscellaneous options are:\n" -msgstr "" - -#. misc options -#: ../utils/net_help_common.c:42 -msgid "\t-p or --port=\t\tconnection port on target\n" -msgstr "" - -#: ../utils/net_help_common.c:43 -msgid "\t-W or --myworkgroup=\tclient workgroup\n" -msgstr "" - -#: ../utils/net_help_common.c:44 -msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" -msgstr "" - -#: ../utils/net_help_common.c:45 -msgid "\t-n or --myname=\t\tclient name\n" -msgstr "" - -#: ../utils/net_help_common.c:46 -msgid "\t-U or --user=\t\tuser name\n" -msgstr "" - -#: ../utils/net_help_common.c:47 -msgid "\t-s or --configfile=\tpathname of smb.conf file\n" -msgstr "" - -#: ../utils/net_help_common.c:48 -msgid "\t-l or --long\t\t\tDisplay full information\n" -msgstr "" - -#: ../utils/net_help_common.c:49 -msgid "\t-V or --version\t\t\tPrint samba version information\n" -msgstr "" - -#: ../utils/net_help_common.c:50 -msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" -msgstr "" - -#: ../utils/net_help_common.c:52 -msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" -msgstr "" - -#: ../utils/net_help_common.c:54 -msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" -msgstr "" - -#: ../utils/net_idmap.c:25 -msgid "Out of memory!\n" -msgstr "" - -#: ../utils/net_idmap.c:39 -#, c-format -msgid "USER HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:44 -#, c-format -msgid "GROUP HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:63 -msgid "" -"Usage:\n" -"net idmap dump \n" -" Dump current ID mapping.\n" -" inputfile\tTDB file to read mappings from.\n" -msgstr "" - -#: ../utils/net_idmap.c:73 -#, c-format -msgid "Could not open idmap: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:94 -msgid "" -"Usage:\n" -"net idmap restore [inputfile]\n" -" Restore ID mappings from file\n" -" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" -msgstr "" - -#: ../utils/net_idmap.c:104 -msgid "To use net idmap Winbindd must be running.\n" -msgstr "" - -#: ../utils/net_idmap.c:142 -#, c-format -msgid "Could not set USER HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:151 -#, c-format -msgid "Could not set GROUP HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:156 -#, c-format -msgid "ignoring invalid line [%s]\n" -msgstr "" - -#: ../utils/net_idmap.c:163 -#, c-format -msgid "ignoring invalid sid [%s]: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:175 -#, c-format -msgid "Could not set mapping of %s %lu to sid %s: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:196 ../utils/net_idmap.c:202 -msgid "Not Implemented yet\n" -msgstr "" - -#: ../utils/net_idmap.c:240 -msgid "" -"Usage:\n" -"net idmap secret {|alloc} \n" -" Set the secret for the specified domain (or alloc module)\n" -" DOMAIN\tDomain to set secret for.\n" -" alloc\tSet secret for the alloc module\n" -" secret\tNew secret to set.\n" -msgstr "" - -#: ../utils/net_idmap.c:271 -msgid "The only currently supported backend is LDAP\n" -msgstr "" - -#: ../utils/net_idmap.c:281 -#, c-format -msgid "Missing ldap_user_dn option for domain %s\n" -msgstr "" - -#: ../utils/net_idmap.c:292 -msgid "Missing ldap_user_dn option for alloc backend\n" -msgstr "" - -#: ../utils/net_idmap.c:302 -msgid "Failed to store secret\n" -msgstr "" - -#: ../utils/net_idmap.c:307 -msgid "Secret stored\n" -msgstr "" - -#: ../utils/net_idmap.c:313 -msgid "" -"net idmap dump \n" -" Dump current id mapping\n" -msgstr "" - -#: ../utils/net_idmap.c:316 -msgid "" -"net idmap restore\n" -" Restore entries from stdin\n" -msgstr "" - -#. Deliberately *not* document net idmap delete -#: ../utils/net_idmap.c:321 -msgid "" -"net idmap secret |alloc \n" -" Set the secret for the specified DOMAIN (or the alloc module)\n" -msgstr "" - -#: ../utils/net_idmap.c:339 -msgid "usage: net idmap aclmapset \n" -msgstr "" - -#: ../utils/net_idmap.c:351 -#, c-format -msgid "db_open failed: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:356 ../utils/net_idmap.c:361 -#, c-format -msgid "%s is not a valid sid\n" -msgstr "" - -#: ../utils/net_idmap.c:367 -msgid "talloc_strdup failed\n" -msgstr "" - -#: ../utils/net_idmap.c:373 -msgid "could not fetch db record\n" -msgstr "" - -#: ../utils/net_idmap.c:381 -#, c-format -msgid "could not store record: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:402 -msgid "Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:403 -msgid "" -"net idmap dump\n" -" Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:410 -msgid "Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:411 -msgid "" -"net idmap restore\n" -" Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:418 ../utils/net_idmap.c:426 -msgid "Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:419 -msgid "" -"net idmap setmap\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:427 -msgid "" -"net idmap delete\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:434 -msgid "Set secret for specified domain" -msgstr "" - -#: ../utils/net_idmap.c:435 -msgid "" -"net idmap secret {|alloc} \n" -" Set secret for specified domain or alloc module" -msgstr "" - -#: ../utils/net_idmap.c:442 -msgid "Set acl map" -msgstr "" - -#: ../utils/net_idmap.c:443 -msgid "" -"net idmap aclmapset\n" -" Set acl map" -msgstr "" - -#: ../utils/net_join.c:26 -msgid "" -"\n" -"net [] join [misc. options]\n" -"\tjoins this server to a domain\n" -msgstr "" - -#: ../utils/net_join.c:47 -msgid "ADS join did not work, falling back to RPC...\n" -msgstr "" - -#: ../utils/net_lookup.c:25 -msgid "" -" net lookup [host] HOSTNAME[#]\n" -"\tgives IP for a hostname\n" -"\n" -" net lookup ldap [domain]\n" -"\tgives IP of domain's ldap server\n" -"\n" -" net lookup kdc [realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup pdc [domain|realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup dc [domain]\n" -"\tgives IP of domains Domain Controllers\n" -"\n" -" net lookup master [domain|wg]\n" -"\tgive IP of master browser\n" -"\n" -" net lookup name [name]\n" -"\tLookup name's sid and type\n" -"\n" -" net lookup sid [sid]\n" -"\tGive sid's name and type\n" -"\n" -" net lookup dsgetdcname [name] [flags] [sitename]\n" -"\n" -msgstr "" - -#: ../utils/net_lookup.c:112 -msgid "net_lookup_ldap: talloc_init() failed!\n" -msgstr "" - -#: ../utils/net_lookup.c:325 -msgid "usage: net lookup name \n" -msgstr "" - -#: ../utils/net_lookup.c:331 ../utils/net_lookup.c:358 -#, c-format -msgid "Could not lookup name %s\n" -msgstr "" - -#: ../utils/net_lookup.c:347 -msgid "usage: net lookup sid \n" -msgstr "" - -#: ../utils/net_lookup.c:352 -#, c-format -msgid "Could not convert %s to SID\n" -msgstr "" - -#: ../utils/net_lookup.c:378 -msgid "usage: net lookup dsgetdcname \n" -msgstr "" - -#: ../utils/net_lookup.c:404 -#, c-format -msgid "failed with: %s\n" -msgstr "" - -#: ../utils/net_lookup.c:437 -msgid "" -"\n" -"Usage: \n" -msgstr "" - -#: ../utils/net_lua.c:60 -msgid "connect: Expected IP-Address" -msgstr "" - -#: ../utils/net_lua.c:65 -msgid "connect: Expected port" -msgstr "" - -#: ../utils/net_lua.c:84 -#, c-format -msgid "connect failed: %s" -msgstr "" - -#: ../utils/net_lua.c:132 -#, c-format -msgid "socket domain %s unknown" -msgstr "" - -#: ../utils/net_lua.c:144 -#, c-format -msgid "socket type %s unknown" -msgstr "" - -#: ../utils/net_lua.c:155 -#, c-format -msgid "socket() failed: %s" -msgstr "" - -#: ../utils/net_lua.c:278 -msgid "evt_reference_thread failed\n" -msgstr "" - -#: ../utils/net_lua.c:287 -msgid "event_add_timed failed" -msgstr "" - -#: ../utils/net_lua.c:300 -msgid "event_once called from non-base thread" -msgstr "" - -#: ../utils/net_lua.c:323 -msgid "event_context_init failed" -msgstr "" - -#: ../utils/net_lua.c:353 -msgid "lua_newstate failed\n" -msgstr "" - -#: ../utils/net_lua.c:371 -msgid "luaL_dofile returned an error\n" -msgstr "" - -#: ../utils/net_lua.c:376 -msgid "luaL_dostring returned an error\n" -msgstr "" diff --git a/source3/po/fr.msg b/source3/po/fr.msg index 817187a12c..aac900223e 100644 --- a/source3/po/fr.msg +++ b/source3/po/fr.msg @@ -17,8 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-30 12:18+0200\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2000-02-08 14:45+0100\n" "Last-Translator: François Le Lay \n" "Language-Team: (Samba Team) \n" @@ -26,4013 +25,568 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: \n" -#: ../web/swat.c:153 +#: ../web/swat.c:117 #, c-format msgid "ERROR: Can't open %s" msgstr "" -#: ../web/swat.c:241 +#: ../web/swat.c:200 msgid "Help" msgstr "Aide" -#: ../web/swat.c:247 ../web/swat.c:272 ../web/swat.c:293 ../web/swat.c:302 ../web/swat.c:311 ../web/swat.c:317 ../web/swat.c:329 ../web/swat.c:343 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "Définir par défaut" -#: ../web/swat.c:465 +#: ../web/swat.c:408 #, c-format msgid "failed to open %s for writing" msgstr "" -#: ../web/swat.c:488 +#: ../web/swat.c:431 #, c-format msgid "Can't reload %s" msgstr "" -#: ../web/swat.c:561 +#: ../web/swat.c:501 #, c-format msgid "Logged in as %s" msgstr "Connecté en tant que %s" -#: ../web/swat.c:565 +#: ../web/swat.c:505 msgid "Home" msgstr "Home" -#: ../web/swat.c:567 +#: ../web/swat.c:507 msgid "Globals" msgstr "Paramètres Généraux" -#: ../web/swat.c:568 +#: ../web/swat.c:508 msgid "Shares" msgstr "Partages" -#: ../web/swat.c:569 +#: ../web/swat.c:509 msgid "Printers" msgstr "Imprimantes" -#: ../web/swat.c:570 +#: ../web/swat.c:510 msgid "Wizard" msgstr "" -#: ../web/swat.c:574 +#: ../web/swat.c:513 msgid "Status" msgstr "Statut" -#: ../web/swat.c:575 +#: ../web/swat.c:514 msgid "View Config" msgstr "Voir Configuration" -#: ../web/swat.c:577 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Gestion des mots de passe" -#: ../web/swat.c:587 +#: ../web/swat.c:526 msgid "Current View Is" msgstr "Configuration Actuelle" -#: ../web/swat.c:588 ../web/swat.c:591 +#: ../web/swat.c:527 ../web/swat.c:530 msgid "Basic" msgstr "Vue Basique" -#: ../web/swat.c:589 ../web/swat.c:592 +#: ../web/swat.c:528 ../web/swat.c:531 msgid "Advanced" msgstr "Vue Détaillée" -#: ../web/swat.c:590 +#: ../web/swat.c:529 msgid "Change View To" msgstr "Modifier le mot de passe" -#: ../web/swat.c:619 +#: ../web/swat.c:554 msgid "Current Config" msgstr "Configuration Actuelle" -#: ../web/swat.c:623 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Vue Normale" -#: ../web/swat.c:625 +#: ../web/swat.c:560 msgid "Full View" msgstr "Vue Complète" #. Here we first set and commit all the parameters that were selected #. in the previous screen. -#: ../web/swat.c:644 +#: ../web/swat.c:579 msgid "Wizard Parameter Edit Page" msgstr "" -#: ../web/swat.c:673 +#: ../web/swat.c:608 msgid "Note: smb.conf file has been read and rewritten" msgstr "" #. Here we go ... -#: ../web/swat.c:779 +#: ../web/swat.c:716 msgid "Samba Configuration Wizard" msgstr "" -#: ../web/swat.c:783 +#: ../web/swat.c:720 msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." msgstr "" -#: ../web/swat.c:784 +#: ../web/swat.c:721 msgid "The same will happen if you press the commit button." msgstr "" -#: ../web/swat.c:787 +#: ../web/swat.c:724 msgid "Rewrite smb.conf file" msgstr "" -#: ../web/swat.c:788 +#: ../web/swat.c:725 msgid "Commit" msgstr "commentaire" -#: ../web/swat.c:789 +#: ../web/swat.c:726 msgid "Edit Parameter Values" msgstr "Paramètres Imprimantes" -#: ../web/swat.c:795 +#: ../web/swat.c:732 msgid "Server Type" msgstr "" -#: ../web/swat.c:796 +#: ../web/swat.c:733 msgid "Stand Alone" msgstr "" -#: ../web/swat.c:797 +#: ../web/swat.c:734 msgid "Domain Member" msgstr "master de domaine" -#: ../web/swat.c:798 +#: ../web/swat.c:735 msgid "Domain Controller" msgstr "master de domaine" -#: ../web/swat.c:801 +#: ../web/swat.c:738 msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "" -#: ../web/swat.c:803 +#: ../web/swat.c:740 msgid "Configure WINS As" msgstr "" -#: ../web/swat.c:804 +#: ../web/swat.c:741 msgid "Not Used" msgstr "ne pas descendre" -#: ../web/swat.c:805 +#: ../web/swat.c:742 msgid "Server for client use" msgstr "" -#: ../web/swat.c:806 +#: ../web/swat.c:743 msgid "Client of another WINS server" msgstr "" -#: ../web/swat.c:808 +#: ../web/swat.c:745 msgid "Remote WINS Server" msgstr "" -#: ../web/swat.c:819 +#: ../web/swat.c:756 msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "" -#: ../web/swat.c:820 +#: ../web/swat.c:757 msgid "Please Select desired WINS mode above." msgstr "" -#: ../web/swat.c:822 +#: ../web/swat.c:759 msgid "Expose Home Directories" msgstr "" -#: ../web/swat.c:837 +#: ../web/swat.c:774 msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." msgstr "" -#: ../web/swat.c:850 +#: ../web/swat.c:787 msgid "Global Parameters" msgstr "Variables Globales" -#: ../web/swat.c:878 ../web/swat.c:986 ../web/swat.c:1344 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Sauver les modifications" -#: ../web/swat.c:882 ../web/swat.c:989 ../web/swat.c:1346 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "Réinitialiser Valeurs" -#: ../web/swat.c:908 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Paramètres de partage" -#: ../web/swat.c:955 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Choisir un partage" -#: ../web/swat.c:971 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Supprimer un partage" -#: ../web/swat.c:978 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Créer un partage" -#: ../web/swat.c:1014 +#: ../web/swat.c:944 msgid "password change in demo mode rejected" msgstr "changement de mot de passe en mode démo rejeté" -#: ../web/swat.c:1028 +#: ../web/swat.c:957 msgid "Can't setup password database vectors." msgstr "" -#: ../web/swat.c:1056 +#: ../web/swat.c:983 msgid " Must specify \"User Name\" " msgstr " Le champ \"Nom d'utilisateur\" doit être spécifié" -#: ../web/swat.c:1072 +#: ../web/swat.c:999 msgid " Must specify \"Old Password\" " msgstr " Le champ \"Ancien mot de passe\" doît être spécifié" -#: ../web/swat.c:1078 +#: ../web/swat.c:1005 msgid " Must specify \"Remote Machine\" " msgstr " Le champ \"Machine Distante\" doît être spécifié" -#: ../web/swat.c:1085 +#: ../web/swat.c:1012 msgid " Must specify \"New, and Re-typed Passwords\" " msgstr "Les champs \"Nouveau mot de passe\" et \"Confirmation du nouveau mot de passe\" doivent être spécifiés \n" -#: ../web/swat.c:1091 +#: ../web/swat.c:1018 msgid " Re-typed password didn't match new password " msgstr " Echec de la confirmation du nouveau mot de passe" -#: ../web/swat.c:1124 +#: ../web/swat.c:1048 #, c-format msgid " The passwd for '%s' has been changed." msgstr " Le mot de passe de '%s' a été modifié. " -#: ../web/swat.c:1127 +#: ../web/swat.c:1051 #, c-format msgid " The passwd for '%s' has NOT been changed." msgstr " Le mot de passe de '%s' n'a PAS été modifié. \n" -#: ../web/swat.c:1152 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Gestion des mots de passe serveur" #. #. * Create all the dialog boxes for data collection #. -#: ../web/swat.c:1161 ../web/swat.c:1208 +#: ../web/swat.c:1085 ../web/swat.c:1132 msgid "User Name" msgstr " Nom d'utilisateur : " -#: ../web/swat.c:1164 ../web/swat.c:1210 +#: ../web/swat.c:1088 ../web/swat.c:1134 msgid "Old Password" msgstr " Ancien mot de passe : " -#: ../web/swat.c:1167 ../web/swat.c:1212 +#: ../web/swat.c:1091 ../web/swat.c:1136 msgid "New Password" msgstr " Nouveau mot de passe : " -#: ../web/swat.c:1169 ../web/swat.c:1214 +#: ../web/swat.c:1093 ../web/swat.c:1138 msgid "Re-type New Password" msgstr " Confirmation du nouveau mot de passe : " -#: ../web/swat.c:1177 ../web/swat.c:1225 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "Modifier le mot de passe" -#: ../web/swat.c:1180 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Nouvel Utilisateur" -#: ../web/swat.c:1182 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Supprimer Utilisateur" -#: ../web/swat.c:1184 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "Désactiver Utilisateur" -#: ../web/swat.c:1186 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Activer Utilisateur" -#: ../web/swat.c:1199 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "Gestion des mots de passe Client/Serveur" -#: ../web/swat.c:1216 +#: ../web/swat.c:1140 msgid "Remote Machine" msgstr " Machine distante : " -#: ../web/swat.c:1255 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Paramètres Imprimantes" -#: ../web/swat.c:1257 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "Note Importante:" -#: ../web/swat.c:1258 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Les Noms d'imprimantes marqués du signe [*] dans le menu déroulant Choisir Imprimante" -#: ../web/swat.c:1259 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "désignent des imprimantes automatiquement chargées depuis le " -#: ../web/swat.c:1260 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Nom Printcap" -#: ../web/swat.c:1261 +#: ../web/swat.c:1185 msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "Essayer de supprimer ces imprimantes depuis SWAT n'aura aucun effet." -#: ../web/swat.c:1310 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Choisir Imprimante" -#: ../web/swat.c:1329 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Supprimer Imprimante" -#: ../web/swat.c:1336 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Créer Imprimante" -#: ../web/statuspage.c:151 -msgid "RDWR " +#: ../web/statuspage.c:123 +msgid "RDONLY " msgstr "" -#: ../web/statuspage.c:153 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "" -#: ../web/statuspage.c:155 -msgid "RDONLY " +#: ../web/statuspage.c:125 +msgid "RDWR " msgstr "" -#: ../web/statuspage.c:329 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Statut du Serveur" -#: ../web/statuspage.c:334 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Rafraîchissement Automatique" -#: ../web/statuspage.c:335 ../web/statuspage.c:340 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Intervalle de rafraîchissement: " -#: ../web/statuspage.c:339 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Stopper Rafraîchissement" -#: ../web/statuspage.c:348 +#: ../web/statuspage.c:334 msgid "version:" msgstr "version:" -#: ../web/statuspage.c:351 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "actif" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "non actif" -#: ../web/statuspage.c:355 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Stopper smbd" -#: ../web/statuspage.c:357 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Lancer smbd" -#: ../web/statuspage.c:359 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Relancer smbd" -#: ../web/statuspage.c:364 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: ../web/statuspage.c:368 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Stopper nmbd" -#: ../web/statuspage.c:370 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Lancer nmbd" -#: ../web/statuspage.c:372 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Relancer nmbd" -#: ../web/statuspage.c:378 +#: ../web/statuspage.c:364 msgid "winbindd:" msgstr "" -#: ../web/statuspage.c:382 +#: ../web/statuspage.c:368 msgid "Stop winbindd" msgstr "Stopper nmbd" -#: ../web/statuspage.c:384 +#: ../web/statuspage.c:370 msgid "Start winbindd" msgstr "Lancer nmbd" -#: ../web/statuspage.c:386 +#: ../web/statuspage.c:372 msgid "Restart winbindd" msgstr "Relancer nmbd" #. stop, restart all -#: ../web/statuspage.c:395 +#: ../web/statuspage.c:381 msgid "Stop All" msgstr "" -#: ../web/statuspage.c:396 +#: ../web/statuspage.c:382 msgid "Restart All" msgstr "Relancer nmbd" #. start all -#: ../web/statuspage.c:400 +#: ../web/statuspage.c:386 msgid "Start All" msgstr "Lancer nmbd" -#: ../web/statuspage.c:407 +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Connections Actives" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "" -#: ../web/statuspage.c:409 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "adresse IP" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Date" -#: ../web/statuspage.c:411 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Terminer" -#: ../web/statuspage.c:419 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Partages Actifs" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Partager" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "User" msgstr "Utilisateur" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Groupe" -#: ../web/statuspage.c:428 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "Fichiers Ouverts" -#: ../web/statuspage.c:431 -msgid "UID" -msgstr "" - -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "File" msgstr "Fichier" -#: ../web/statuspage.c:438 +#: ../web/statuspage.c:425 msgid "Show Client in col 1" msgstr "" -#: ../web/statuspage.c:439 +#: ../web/statuspage.c:426 msgid "Show PID in col 1" msgstr "" -#: ../param/loadparm.c:907 +#: ../param/loadparm.c:755 msgid "Base Options" msgstr "Options de base" -#: ../param/loadparm.c:1047 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Options de Sécurité" -#: ../param/loadparm.c:1800 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Options de Logging" -#: ../param/loadparm.c:1929 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Options de Protocole" -#: ../param/loadparm.c:2301 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Options de réglage" -#: ../param/loadparm.c:2538 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Options d'impression" -#: ../param/loadparm.c:2858 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Gestion des noms de fichier" -#: ../param/loadparm.c:3088 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Options de Domaine" -#: ../param/loadparm.c:3100 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Options de Logon" -#: ../param/loadparm.c:3273 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Options de Navigation" -#: ../param/loadparm.c:3384 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "Options WINS" -#: ../param/loadparm.c:3432 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Options de Verrouillage" -#: ../param/loadparm.c:3552 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Options Ldap" -#: ../param/loadparm.c:3708 -#, fuzzy -msgid "EventLog Options" -msgstr "Options de Logon" - -#: ../param/loadparm.c:3720 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Options Diverses" -#: ../param/loadparm.c:4301 +#: ../param/loadparm.c:1138 msgid "VFS module options" msgstr "Options VFS" -#: ../param/loadparm.c:4323 -#, fuzzy -msgid "MSDFS options" -msgstr "Options VFS" - -#: ../param/loadparm.c:4353 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Options Winbind" - -#: ../utils/net.c:103 -msgid "Enter machine password: " -msgstr "" - -#: ../utils/net.c:107 -msgid "Unable to write the machine account password in the secrets database" -msgstr "" - -#: ../utils/net.c:111 -msgid "Modified trust account password in secrets database\n" -msgstr "" - -#: ../utils/net.c:115 -msgid "" -"Machine account password change requires the -f flag.\n" -"Do NOT use this function unless you know what it does!\n" -"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" -msgstr "" - -#: ../utils/net.c:150 ../utils/net.c:228 -#, c-format -msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" -msgstr "" - -#: ../utils/net.c:163 ../utils/net.c:251 -#, c-format -msgid "SID for domain %s is: %s\n" -msgstr "" - -#: ../utils/net.c:175 -msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:195 -msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:213 -msgid "usage: net getdomainsid\n" -msgstr "" - -#: ../utils/net.c:238 -msgid "Could not fetch local SID\n" -msgstr "" - -#: ../utils/net.c:242 -#, c-format -msgid "SID for local machine %s is: %s\n" -msgstr "" - -#: ../utils/net.c:246 -msgid "Could not fetch domain SID\n" -msgstr "" - -#: ../utils/net.c:263 -#, c-format -msgid "get_maxrid: Could not search %s\n" -msgstr "" - -#: ../utils/net.c:297 -msgid "usage: net maxrid\n" -msgstr "" - -#: ../utils/net.c:302 -msgid "can't get current maximum rid\n" -msgstr "" - -#: ../utils/net.c:306 -#, c-format -msgid "Currently used maximum rid: %d\n" -msgstr "" - -#: ../utils/net.c:317 -msgid "Run functions using RPC transport" -msgstr "" - -#: ../utils/net.c:318 -msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." -msgstr "" - -#: ../utils/net.c:325 -msgid "Run functions using RAP transport" -msgstr "" - -#: ../utils/net.c:326 -msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." -msgstr "" - -#: ../utils/net.c:333 -msgid "Run functions using ADS transport" -msgstr "" - -#: ../utils/net.c:334 -msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." -msgstr "" - -#: ../utils/net.c:343 -msgid "Functions on remote opened files" -msgstr "" - -#: ../utils/net.c:344 -msgid " Use 'net help file' to get more information about 'net file' commands." -msgstr "" - -#: ../utils/net.c:351 -msgid "Functions on shares" -msgstr "" - -#: ../utils/net.c:352 -msgid " Use 'net help share' to get more information about 'net share' commands." -msgstr "" - -#: ../utils/net.c:359 -msgid "Manage sessions" -msgstr "" - -#: ../utils/net.c:360 -msgid " Use 'net help session' to get more information about 'net session' commands." -msgstr "" - -#: ../utils/net.c:367 -msgid "List servers in workgroup" -msgstr "" - -#: ../utils/net.c:368 -msgid " Use 'net help server' to get more information about 'net server' commands." -msgstr "" - -#: ../utils/net.c:375 -msgid "List domains/workgroups on network" -msgstr "" - -#: ../utils/net.c:376 -msgid " Use 'net help domain' to get more information about 'net domain' commands." -msgstr "" - -#: ../utils/net.c:383 -msgid "Modify printer queue" -msgstr "" - -#: ../utils/net.c:384 -msgid " Use 'net help printq' to get more information about 'net printq' commands." -msgstr "" - -#: ../utils/net.c:391 -#, fuzzy -msgid "Manage users" -msgstr "Activer Utilisateur" - -#: ../utils/net.c:392 -msgid " Use 'net help user' to get more information about 'net user' commands." -msgstr "" - -#: ../utils/net.c:399 -msgid "Manage groups" -msgstr "" - -#: ../utils/net.c:400 -msgid " Use 'net help group' to get more information about 'net group' commands." -msgstr "" - -#: ../utils/net.c:407 -msgid "Manage group mappings" -msgstr "" - -#: ../utils/net.c:408 -msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." -msgstr "" - -#: ../utils/net.c:415 -msgid "Functions on the SAM database" -msgstr "" - -#: ../utils/net.c:416 -msgid " Use 'net help sam' to get more information about 'net sam' commands." -msgstr "" - -#: ../utils/net.c:423 -msgid "Validate username and password" -msgstr "" - -#: ../utils/net.c:424 -msgid " Use 'net help validate' to get more information about 'net validate' commands." -msgstr "" - -#: ../utils/net.c:431 -msgid "Modify group memberships" -msgstr "" - -#: ../utils/net.c:432 -msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." -msgstr "" - -#: ../utils/net.c:438 -msgid "Execute remote command on a remote OS/2 server" -msgstr "" - -#: ../utils/net.c:439 -msgid " Use 'net help admin' to get more information about 'net admin' commands." -msgstr "" - -#: ../utils/net.c:445 -msgid "List/modify running services" -msgstr "" - -#: ../utils/net.c:446 -msgid " Use 'net help service' to get more information about 'net service' commands." -msgstr "" - -#: ../utils/net.c:453 -msgid "Change user password on target server" -msgstr "" - -#: ../utils/net.c:454 -msgid " Use 'net help password' to get more information about 'net password' commands." -msgstr "" - -#: ../utils/net.c:460 -#, fuzzy -msgid "Change the trust password" -msgstr "Modifier le mot de passe" - -#: ../utils/net.c:461 -msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." -msgstr "" - -#: ../utils/net.c:467 -#, fuzzy -msgid "Change the secret password" -msgstr "Modifier le mot de passe" - -#: ../utils/net.c:468 -msgid "" -" net [options] changesecretpw\n" -" Change the ADS domain member machine account password in secrets.tdb.\n" -" Do NOT use this function unless you know what it does.\n" -" Requires the -f flag to work." -msgstr "" - -#: ../utils/net.c:477 -msgid "Show/set time" -msgstr "" - -#: ../utils/net.c:478 -msgid " Use 'net help time' to get more information about 'net time' commands." -msgstr "" - -#: ../utils/net.c:484 -msgid "Look up host names/IP addresses" -msgstr "" - -#: ../utils/net.c:485 -msgid " Use 'net help lookup' to get more information about 'net lookup' commands." -msgstr "" - -#: ../utils/net.c:491 -msgid "Join a domain/AD" -msgstr "" - -#: ../utils/net.c:492 -msgid " Use 'net help join' to get more information about 'net join'." -msgstr "" - -#: ../utils/net.c:498 -msgid "Join/unjoin (remote) machines to/from a domain/AD" -msgstr "" - -#: ../utils/net.c:499 -msgid " Use 'net help dom' to get more information about 'net dom' commands." -msgstr "" - -#: ../utils/net.c:505 -msgid "Operate on the cache tdb file" -msgstr "" - -#: ../utils/net.c:506 -msgid " Use 'net help cache' to get more information about 'net cache' commands." -msgstr "" - -#: ../utils/net.c:512 -msgid "Get the SID for the local domain" -msgstr "" - -#: ../utils/net.c:513 -msgid " net getlocalsid" -msgstr "" - -#: ../utils/net.c:518 -msgid "Set the SID for the local domain" -msgstr "" - -#: ../utils/net.c:519 -msgid " net setlocalsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:524 -msgid "Set domain SID on member servers" -msgstr "" - -#: ../utils/net.c:525 -msgid " net setdomainsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:530 -msgid "Get domain SID on member servers" -msgstr "" - -#: ../utils/net.c:531 -msgid " net getdomainsid" -msgstr "" - -#: ../utils/net.c:536 -msgid "Display the maximul RID currently used" -msgstr "" - -#: ../utils/net.c:537 -msgid " net maxrid" -msgstr "" - -#: ../utils/net.c:542 -#, fuzzy -msgid "IDmap functions" -msgstr "Options de Domaine" - -#: ../utils/net.c:543 -msgid " Use 'net help idmap to get more information about 'net idmap' commands." -msgstr "" - -#: ../utils/net.c:549 -#, fuzzy -msgid "Display server status" -msgstr "Statut du Serveur" - -#: ../utils/net.c:550 -msgid " Use 'net help status' to get more information about 'net status' commands." -msgstr "" - -#: ../utils/net.c:556 -msgid "Manage user-modifiable shares" -msgstr "" - -#: ../utils/net.c:557 -msgid " Use 'net help usershare to get more information about 'net usershare' commands." -msgstr "" - -#: ../utils/net.c:563 -msgid "Display list of all users with SID" -msgstr "" - -#: ../utils/net.c:564 -msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." -msgstr "" - -#: ../utils/net.c:570 -msgid "Manage Samba registry based configuration" -msgstr "" - -#: ../utils/net.c:571 -msgid " Use 'net help conf' to get more information about 'net conf' commands." -msgstr "" - -#: ../utils/net.c:577 -msgid "Manage the Samba registry" -msgstr "" - -#: ../utils/net.c:578 -msgid " Use 'net help registry' to get more information about 'net registry' commands." -msgstr "" - -#: ../utils/net.c:584 -msgid "Open a lua interpreter" -msgstr "" - -#: ../utils/net.c:585 -msgid " Use 'net help lua' to get more information about 'net lua' commands." -msgstr "" - -#: ../utils/net.c:591 -msgid "Process Win32 *.evt eventlog files" -msgstr "" - -#: ../utils/net.c:592 -msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." -msgstr "" - -#: ../utils/net.c:600 -msgid "Manage AFS tokens" -msgstr "" - -#: ../utils/net.c:601 -msgid " Use 'net help afs' to get more information about 'net afs' commands." -msgstr "" - -#: ../utils/net.c:609 -msgid "Print usage information" -msgstr "" - -#: ../utils/net.c:610 -msgid " Use 'net help help' to list usage information for 'net' commands." -msgstr "" - -#: ../utils/net.c:639 -msgid "Encrypt SMB transport (UNIX extended servers only)" -msgstr "" - -#: ../utils/net.c:703 -msgid "" -"\n" -"Invalid ip address specified\n" -msgstr "" - -#: ../utils/net.c:718 -#, c-format -msgid "" -"\n" -"Invalid option %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:52 ../utils/net_ads.c:392 -msgid "CLDAP query failed!\n" -msgstr "" - -#: ../utils/net_ads.c:56 -#, fuzzy, c-format -msgid "" -"Information for Domain Controller: %s\n" -"\n" -msgstr "master de domaine" - -#: ../utils/net_ads.c:59 -msgid "Response Type: " -msgstr "" - -#: ../utils/net_ads.c:72 -#, c-format -msgid "GUID: %s\n" -msgstr "" - -#: ../utils/net_ads.c:74 -#, c-format -msgid "" -"Flags:\n" -"\tIs a PDC: %s\n" -"\tIs a GC of the forest: %s\n" -"\tIs an LDAP server: %s\n" -"\tSupports DS: %s\n" -"\tIs running a KDC: %s\n" -"\tIs running time services: %s\n" -"\tIs the closest DC: %s\n" -"\tIs writable: %s\n" -"\tHas a hardware clock: %s\n" -"\tIs a non-domain NC serviced by LDAP server: %s\n" -"\tIs NT6 DC that has some secrets: %s\n" -"\tIs NT6 DC that has all secrets: %s\n" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "yes" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "no" -msgstr "" - -#: ../utils/net_ads.c:101 -#, c-format -msgid "Forest:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:102 -#, c-format -msgid "Domain:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:103 -#, fuzzy, c-format -msgid "Domain Controller:\t%s\n" -msgstr "master de domaine" - -#: ../utils/net_ads.c:105 -#, c-format -msgid "Pre-Win2k Domain:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:106 -#, c-format -msgid "Pre-Win2k Hostname:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:108 -#, fuzzy, c-format -msgid "User name:\t%s\n" -msgstr " Nom d'utilisateur : " - -#: ../utils/net_ads.c:110 -#, fuzzy, c-format -msgid "Server Site Name :\t\t%s\n" -msgstr "Statut du Serveur" - -#: ../utils/net_ads.c:111 -#, c-format -msgid "Client Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:113 -#, fuzzy, c-format -msgid "NT Version: %d\n" -msgstr "version:" - -#: ../utils/net_ads.c:114 -#, c-format -msgid "LMNT Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:115 -#, c-format -msgid "LM20 Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:130 -msgid "" -"Usage:\n" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookup.\n" -msgstr "" - -#: ../utils/net_ads.c:137 ../utils/net_ads.c:381 -msgid "Didn't find the cldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:160 -msgid "" -"Usage:\n" -"net ads info\n" -" Display information about an Active Directory server.\n" -msgstr "" - -#: ../utils/net_ads.c:168 ../utils/net_ads.c:173 -msgid "Didn't find the ldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:182 -msgid "Failed to get server's current time!\n" -msgstr "" - -#: ../utils/net_ads.c:187 -#, c-format -msgid "LDAP server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:188 -#, c-format -msgid "LDAP server name: %s\n" -msgstr "" - -#: ../utils/net_ads.c:189 -#, c-format -msgid "Realm: %s\n" -msgstr "" - -#: ../utils/net_ads.c:190 -#, c-format -msgid "Bind Path: %s\n" -msgstr "" - -#: ../utils/net_ads.c:191 -#, c-format -msgid "LDAP port: %d\n" -msgstr "" - -#: ../utils/net_ads.c:192 -#, fuzzy, c-format -msgid "Server time: %s\n" -msgstr "Statut du Serveur" - -#: ../utils/net_ads.c:195 -#, c-format -msgid "KDC server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:196 -#, c-format -msgid "Server time offset: %d\n" -msgstr "" - -#: ../utils/net_ads.c:374 -msgid "" -"Usage:\n" -"net ads workgroup\n" -" Print the workgroup name\n" -msgstr "" - -#: ../utils/net_ads.c:397 -#, c-format -msgid "Workgroup: %s\n" -msgstr "" - -#: ../utils/net_ads.c:458 -#, c-format -msgid "ads_user_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:463 -#, c-format -msgid "ads_user_add: User %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:477 -#, c-format -msgid "Could not add user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:484 ../utils/net_ads.c:497 -#, fuzzy, c-format -msgid "User %s added\n" -msgstr " Nom d'utilisateur : " - -#. password didn't set, delete account -#: ../utils/net_ads.c:503 -#, c-format -msgid "Could not add user %s. Error setting password %s\n" -msgstr "" - -#: ../utils/net_ads.c:551 -#, c-format -msgid "ads_user_info: failed to escape user %s\n" -msgstr "" - -#: ../utils/net_ads.c:569 -#, c-format -msgid "ads_search: %s\n" -msgstr "" - -#: ../utils/net_ads.c:575 -msgid "ads_pull_uint32 failed\n" -msgstr "" - -#: ../utils/net_ads.c:582 -#, c-format -msgid "ads_domain_sid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:642 -#, c-format -msgid "User %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:652 -#, c-format -msgid "User %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:656 -#, c-format -msgid "Error deleting user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:669 -#, fuzzy -msgid "Add an AD user" -msgstr "Nouvel Utilisateur" - -#: ../utils/net_ads.c:670 -msgid "" -"net ads user add\n" -" Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:677 -msgid "Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:678 -msgid "" -"net ads user info\n" -" Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:685 -#, fuzzy -msgid "Delete an AD user" -msgstr "Supprimer Utilisateur" - -#: ../utils/net_ads.c:686 -msgid "" -"net ads user delete\n" -" Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:699 -msgid "" -"Usage:\n" -"net ads user\n" -" List AD users\n" -msgstr "" - -#: ../utils/net_ads.c:711 -msgid "" -"\n" -"User name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:751 -#, c-format -msgid "ads_group_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:756 -#, c-format -msgid "ads_group_add: Group %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:769 -#, c-format -msgid "Group %s added\n" -msgstr "" - -#: ../utils/net_ads.c:772 -#, c-format -msgid "Could not add group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:801 -#, c-format -msgid "Group %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:811 -#, c-format -msgid "Group %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:815 -#, c-format -msgid "Error deleting group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:828 -msgid "Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:829 -msgid "" -"net ads group add\n" -" Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:836 -#, fuzzy -msgid "Delete an AD group" -msgstr "Supprimer un partage" - -#: ../utils/net_ads.c:837 -msgid "" -"net ads group delete\n" -" Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:850 -msgid "" -"Usage:\n" -"net ads group\n" -" List AD groups\n" -msgstr "" - -#: ../utils/net_ads.c:862 -msgid "" -"\n" -"Group name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:884 -msgid "" -"Usage:\n" -"net ads status\n" -" Display machine account details\n" -msgstr "" - -#: ../utils/net_ads.c:896 -#, c-format -msgid "ads_find_machine_acct: %s\n" -msgstr "" - -#: ../utils/net_ads.c:902 -#, c-format -msgid "No machine account for '%s' found\n" -msgstr "" - -#: ../utils/net_ads.c:926 -msgid "" -"Usage:\n" -"net ads leave\n" -" Leave an AD domain\n" -msgstr "" - -#: ../utils/net_ads.c:933 -msgid "No realm set, are we joined ?\n" -msgstr "" - -#: ../utils/net_ads.c:938 ../utils/net_ads.c:1260 -msgid "Could not initialise talloc context.\n" -msgstr "" - -#: ../utils/net_ads.c:948 -msgid "Could not initialise unjoin context.\n" -msgstr "" - -#: ../utils/net_ads.c:968 -#, c-format -msgid "Failed to leave domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:975 -#, c-format -msgid "Deleted account for '%s' in realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:982 -#, c-format -msgid "Disabled account for '%s' in realm '%s'\n" -msgstr "" - -#. Based on what we requseted, we shouldn't get here, but if -#. we did, it means the secrets were removed, and therefore -#. we have left the domain -#: ../utils/net_ads.c:991 -#, c-format -msgid "Machine '%s' Left domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1035 -msgid "" -"Usage:\n" -"net ads testjoin\n" -" Test if the existing join is ok\n" -msgstr "" - -#: ../utils/net_ads.c:1044 -#, c-format -msgid "Join to domain is not valid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1049 -#, c-format -msgid "Join is OK\n" -msgstr "" - -#: ../utils/net_ads.c:1060 -msgid "Host is not configured as a member server.\n" -msgstr "" - -#: ../utils/net_ads.c:1065 -#, c-format -msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" -msgstr "" - -#: ../utils/net_ads.c:1072 -#, c-format -msgid "realm must be set in in %s for ADS join to succeed.\n" -msgstr "" - -#: ../utils/net_ads.c:1105 -#, c-format -msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" -msgstr "" - -#: ../utils/net_ads.c:1212 -msgid "" -"net ads join [options]\n" -"Valid options:\n" -msgstr "" - -#: ../utils/net_ads.c:1214 -msgid "" -" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" -" The deault UPN is in the form host/netbiosname@REALM.\n" -msgstr "" - -#: ../utils/net_ads.c:1216 -msgid "" -" createcomputer=OU Precreate the computer account in a specific OU.\n" -" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" -" E.g. \"createcomputer=Computers/Servers/Unix\"\n" -" NB: A backslash '\\' is used as escape at multiple levels and may\n" -" need to be doubled or even quadrupled. It is not used as a separator.\n" -msgstr "" - -#: ../utils/net_ads.c:1221 -msgid " osName=string Set the operatingSystem attribute during the join.\n" -msgstr "" - -#: ../utils/net_ads.c:1222 -msgid "" -" osVer=string Set the operatingSystemVersion attribute during the join.\n" -" NB: osName and osVer must be specified together for either to take effect.\n" -" Also, the operatingSystemService attribute is also set when along with\n" -" the two other attributes.\n" -msgstr "" - -#: ../utils/net_ads.c:1254 -msgid "Invalid configuration. Exiting....\n" -msgstr "" - -#: ../utils/net_ads.c:1283 -msgid "Please supply a valid OU path.\n" -msgstr "" - -#: ../utils/net_ads.c:1290 -msgid "Please supply a operating system name.\n" -msgstr "" - -#: ../utils/net_ads.c:1297 -msgid "Please supply a valid operating system version.\n" -msgstr "" - -#: ../utils/net_ads.c:1308 -msgid "Please supply a valid domain name\n" -msgstr "" - -#: ../utils/net_ads.c:1339 -#, c-format -msgid "" -"The workgroup in %s does not match the short\n" -"domain name obtained from the server.\n" -"Using the name [%s] from the server.\n" -"You should set \"workgroup = %s\" in %s.\n" -msgstr "" - -#: ../utils/net_ads.c:1347 -#, c-format -msgid "Using short domain name -- %s\n" -msgstr "" - -#: ../utils/net_ads.c:1350 -#, c-format -msgid "Joined '%s' to realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1353 -#, c-format -msgid "Joined '%s' to domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1377 ../utils/net_ads.c:1433 -msgid "DNS update failed!\n" -msgstr "" - -#. issue an overall failure message at the end. -#: ../utils/net_ads.c:1391 ../utils/net_dom.c:198 -#, c-format -msgid "Failed to join domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1414 -msgid "" -"Usage:\n" -"net ads dns register\n" -" Register hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1421 -msgid "Could not initialise talloc context\n" -msgstr "" - -#: ../utils/net_ads.c:1439 -msgid "Successfully registered hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1447 -msgid "DNS update support not enabled at compile time!\n" -msgstr "" - -#: ../utils/net_ads.c:1466 -msgid "" -"Usage:\n" -"net ads dns gethostbyname \n" -" Look up hostname from the AD\n" -" server\tName server to use\n" -" name\tName to look up\n" -msgstr "" - -#: ../utils/net_ads.c:1476 -#, c-format -msgid "do_gethostbyname returned %d\n" -msgstr "" - -#: ../utils/net_ads.c:1488 -msgid "Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1489 -msgid "" -"net ads dns register\n" -" Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1496 -msgid "Look up host" -msgstr "" - -#: ../utils/net_ads.c:1497 -msgid "" -"net ads dns gethostbyname\n" -" Look up host" -msgstr "" - -#: ../utils/net_ads.c:1512 -msgid "" -"\n" -"net ads printer search \n" -"\tsearch for a printer in the directory\n" -"\n" -"net ads printer info \n" -"\tlookup info in directory for printer on server\n" -"\t(note: printer defaults to \"*\", server defaults to local)\n" -"\n" -"net ads printer publish \n" -"\tpublish printer in directory\n" -"\t(note: printer name is required)\n" -"\n" -"net ads printer remove \n" -"\tremove printer from directory\n" -"\t(note: printer name is required)\n" -msgstr "" - -#: ../utils/net_ads.c:1536 -msgid "" -"Usage:\n" -"net ads printer search\n" -" List printers in the AD\n" -msgstr "" - -#: ../utils/net_ads.c:1549 -#, c-format -msgid "ads_find_printer: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1556 -msgid "No results found\n" -msgstr "" - -#: ../utils/net_ads.c:1576 -msgid "" -"Usage:\n" -"net ads printer info [printername [servername]]\n" -" Display printer info from AD\n" -" printername\tPrinter name or wildcard\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1603 -#, c-format -msgid "Server '%s' not found: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1611 ../utils/net_ads.c:1794 -#, c-format -msgid "Printer '%s' not found\n" -msgstr "" - -#: ../utils/net_ads.c:1640 -msgid "" -"Usage:\n" -"net ads printer publish [servername]\n" -" Publish printer in AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1675 -#, c-format -msgid "Unable to open a connnection to %s to obtain data for %s\n" -msgstr "" - -#: ../utils/net_ads.c:1688 -#, c-format -msgid "Could not find machine account for server %s\n" -msgstr "" - -#: ../utils/net_ads.c:1704 ../utils/net_ads.c:1713 -msgid "Internal error, out of memory!" -msgstr "" - -#: ../utils/net_ads.c:1724 -#, c-format -msgid "Unable to open a connnection to the spoolss pipe on %s\n" -msgstr "" - -#: ../utils/net_ads.c:1766 -msgid "" -"Usage:\n" -"net ads printer remove [servername]\n" -" Remove a printer from the AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1787 -#, c-format -msgid "ads_find_printer_on_server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1806 -#, c-format -msgid "ads_del_dn: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1822 -msgid "Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1823 -msgid "" -"net ads printer search\n" -" Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1830 -msgid "Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1831 -msgid "" -"net ads printer info\n" -" Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1838 -msgid "Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1839 -msgid "" -"net ads printer publish\n" -" Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1846 -#, fuzzy -msgid "Delete a printer" -msgstr "Supprimer Imprimante" - -#: ../utils/net_ads.c:1847 -msgid "" -"net ads printer remove\n" -" Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1869 -msgid "" -"Usage:\n" -"net ads password \n" -" Change password for user\n" -" username\tName of user to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1877 -msgid "You must supply an administrator username/password\n" -msgstr "" - -#: ../utils/net_ads.c:1883 -msgid "ERROR: You must say which username to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1915 -msgid "Didn't find the kerberos server!\n" -msgstr "" - -#: ../utils/net_ads.c:1923 -#, c-format -msgid "Enter new password for %s:" -msgstr "" - -#: ../utils/net_ads.c:1933 ../utils/net_ads.c:1982 -#, fuzzy, c-format -msgid "Password change failed: %s\n" -msgstr "Gestion des mots de passe" - -#: ../utils/net_ads.c:1938 -#, fuzzy, c-format -msgid "Password change for %s completed.\n" -msgstr "changement de mot de passe en mode démo rejeté" - -#: ../utils/net_ads.c:1952 -msgid "" -"Usage:\n" -"net ads changetrustpw\n" -" Change the machine account's trust password\n" -msgstr "" - -#: ../utils/net_ads.c:1977 -#, c-format -msgid "Changing password for principal: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1988 -#, c-format -msgid "Password change for principal %s succeeded.\n" -msgstr "" - -#: ../utils/net_ads.c:1991 -msgid "Attempting to update system keytab with new password.\n" -msgstr "" - -#: ../utils/net_ads.c:1993 -msgid "Failed to update system keytab.\n" -msgstr "" - -#: ../utils/net_ads.c:2009 -msgid "" -"\n" -"net ads search \n" -"\n" -"Perform a raw LDAP search on a ADS server and dump the results.\n" -"The expression is a standard LDAP search expression, and the\n" -"attributes are a list of LDAP fields to show in the results.\n" -"\n" -"Example: net ads search '(objectCategory=group)' sAMAccountName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2046 ../utils/net_ads.c:2107 ../utils/net_ads.c:2171 ../utils/net_ads_gpo.c:250 -#, c-format -msgid "search failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2051 ../utils/net_ads.c:2176 ../utils/net_ads_gpo.c:256 -#, c-format -msgid "" -"Got %d replies\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2069 -msgid "" -"\n" -"net ads dn \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" -"\n" -"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2129 -msgid "" -"\n" -"net ads sid \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The SID is in string format, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads sid 'S-1-5-32' distinguishedName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2164 -msgid "could not convert sid\n" -msgstr "" - -#: ../utils/net_ads.c:2193 -msgid "" -"Usage:\n" -"net ads keytab flush\n" -" Delete the whole keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2214 -msgid "" -"Usage:\n" -"net ads keytab add [principal ...]\n" -" Add principals to local keytab\n" -" principal\tKerberos principal to add to keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2222 -msgid "Processing principals to add...\n" -msgstr "" - -#: ../utils/net_ads.c:2239 -msgid "" -"Usage:\n" -"net ads keytab create\n" -" Create new default keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2258 -msgid "" -"Usage:\n" -"net ads keytab list [keytab]\n" -" List a local keytab\n" -" keytab\tKeytab to list\n" -msgstr "" - -#: ../utils/net_ads.c:2280 -msgid "Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2281 -msgid "" -"net ads keytab add\n" -" Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2288 -#, fuzzy -msgid "Create a fresh keytab" -msgstr "Créer un partage" - -#: ../utils/net_ads.c:2289 -msgid "" -"net ads keytab create\n" -" Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2296 -msgid "Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2297 -msgid "" -"net ads keytab flush\n" -" Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2304 -msgid "List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2305 -msgid "" -"net ads keytab list\n" -" List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2312 -msgid "" -"\n" -"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" -msgstr "" - -#: ../utils/net_ads.c:2324 -msgid "" -"Usage:\n" -"net ads kerberos renew\n" -" Renew TGT from existing credential cache\n" -msgstr "" - -#: ../utils/net_ads.c:2332 -#, c-format -msgid "failed to renew kerberos ticket: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2347 -msgid "" -"Usage:\n" -"net ads kerberos pac\n" -" Dump the Kerberos PAC\n" -msgstr "" - -#: ../utils/net_ads.c:2372 -#, c-format -msgid "failed to query kerberos PAC: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2381 -#, c-format -msgid "The Pac: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2397 -msgid "" -"Usage:\n" -"net ads kerberos kinit\n" -" Get Ticket Granting Ticket (TGT) for the user\n" -msgstr "" - -#: ../utils/net_ads.c:2421 -#, c-format -msgid "failed to kinit password: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2435 -msgid "Retrieve Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2436 -msgid "" -"net ads kerberos kinit\n" -" Receive Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2443 -msgid "Renew Ticket Granting Ticket from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2444 -msgid "" -"net ads kerberos renew\n" -" Renew Ticket Granting Ticket (TGT) from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2452 -msgid "Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2453 -msgid "" -"net ads kerberos pac\n" -" Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2469 -msgid "Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2470 -msgid "" -"net ads info\n" -" Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2477 -msgid "Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2478 -msgid "" -"net ads join\n" -" Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2485 -msgid "Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2486 -msgid "" -"net ads testjoin\n" -" Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2493 -msgid "Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2494 -msgid "" -"net ads leave\n" -" Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2501 -msgid "Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2502 -msgid "" -"net ads status\n" -" Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2509 -msgid "List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2510 -msgid "" -"net ads user\n" -" List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2517 -msgid "List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2518 -msgid "" -"net ads group\n" -" List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2525 -msgid "Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2526 -msgid "" -"net ads dns\n" -" Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2533 -#, fuzzy -msgid "Change user passwords" -msgstr "Modifier le mot de passe" - -#: ../utils/net_ads.c:2534 -msgid "" -"net ads password\n" -" Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2541 -#, fuzzy -msgid "Change trust account password" -msgstr "Modifier le mot de passe" - -#: ../utils/net_ads.c:2542 -msgid "" -"net ads changetrustpw\n" -" Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2549 -msgid "List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2550 -msgid "" -"net ads printer\n" -" List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2557 -msgid "Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2558 -msgid "" -"net ads search\n" -" Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2565 -msgid "Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2566 -msgid "" -"net ads dn\n" -" Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2573 -msgid "Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2574 -msgid "" -"net ads sid\n" -" Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2581 -msgid "Display workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2582 -msgid "" -"net ads workgroup\n" -" Display the workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2589 -msgid "Perfom CLDAP query on DC" -msgstr "" - -#: ../utils/net_ads.c:2590 -msgid "" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookups" -msgstr "" - -#: ../utils/net_ads.c:2597 -msgid "Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2598 -msgid "" -"net ads keytab\n" -" Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2605 -msgid "Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2606 -msgid "" -"net ads gpo\n" -" Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2613 -msgid "Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2614 -msgid "" -"net ads kerberos\n" -" Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2627 -msgid "ADS support not compiled in\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:40 -msgid "" -"Usage:\n" -"net ads gpo refresh \n" -" Lists all GPOs assigned to an account and downloads them\n" -" username\tUser to refresh GPOs for\n" -" machinename\tMachine to refresh GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:56 -#, c-format -msgid "failed to connect AD server: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:62 -#, c-format -msgid "failed to find samaccount for %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:70 -#, c-format -msgid "" -"\n" -"%s: '%s' has dn: '%s'\n" -"\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "machine" -msgstr " Machine distante : " - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "user" -msgstr "Utilisateur" - -#: ../utils/net_ads_gpo.c:74 -msgid "* fetching token " -msgstr "" - -#: ../utils/net_ads_gpo.c:82 ../utils/net_ads_gpo.c:90 ../utils/net_ads_gpo.c:102 ../utils/net_ads_gpo.c:113 ../utils/net_ads_gpo.c:158 -#, c-format -msgid "failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:85 ../utils/net_ads_gpo.c:94 ../utils/net_ads_gpo.c:105 ../utils/net_ads_gpo.c:118 ../utils/net_ads_gpo.c:163 -msgid "finished\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:87 -msgid "* fetching GPO List " -msgstr "" - -#: ../utils/net_ads_gpo.c:96 -msgid "* Refreshing Group Policy Data " -msgstr "" - -#: ../utils/net_ads_gpo.c:107 -msgid "* storing GPO list to registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:122 -msgid "* dumping GPO list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:151 -msgid "* re-reading GPO list from registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:167 -msgid "* dumping GPO list from registry\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:226 -msgid "" -"Usage:\n" -"net ads gpo listall\n" -" List all GPOs on the DC\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:270 -#, fuzzy, c-format -msgid "ads_parse_gpo failed: %s\n" -msgstr "Gestion des mots de passe" - -#: ../utils/net_ads_gpo.c:300 -msgid "" -"Usage:\n" -"net ads gpo list \n" -" Lists all GPOs for machine/user\n" -" username\tUser to list GPOs for\n" -" machinename\tMachine to list GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:327 -#, c-format -msgid "%s: '%s' has dn: '%s'\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:451 -msgid "" -"Usage:\n" -"net ads gpo linkget \n" -" Lists gPLink of a containter\n" -" container\tContainer to get link for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:470 -#, c-format -msgid "get link for %s failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:492 -msgid "" -"Usage:\n" -"net ads gpo linkadd [options]\n" -" Link a container to a GPO\n" -" linkdn\tContainer to link to a GPO\n" -" gpodn\tGPO to link container to\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:497 -msgid "" -"note: DNs must be provided properly escaped.\n" -"See RFC 4514 for details\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:518 -#, c-format -msgid "link add failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:579 -msgid "" -"Usage:\n" -"net ads gpo getgpo \n" -" List speciefied GPO\n" -" gpo\t\tGPO to list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:603 -#, c-format -msgid "get gpo for [%s] failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:634 -msgid "List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:635 -msgid "" -"net ads gpo getgpo\n" -" List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:642 -msgid "Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:643 -msgid "" -"net ads gpo linkadd\n" -" Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:660 -msgid "Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:661 -msgid "" -"net ads gpo linkget\n" -" Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:668 -msgid "Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:669 -msgid "" -"net ads gpo list\n" -" Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:676 -msgid "Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:677 -msgid "" -"net ads gpo listall\n" -" Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:684 -msgid "Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_ads_gpo.c:686 -msgid "" -"net ads gpo refresh\n" -" Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_afs.c:25 -msgid "" -" net afs key filename\n" -"\tImports a OpenAFS KeyFile into our secrets.tdb\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:27 -msgid "" -" net afs impersonate \n" -"\tCreates a token for user@cell\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:38 -msgid "usage: 'net afs key cell'\n" -msgstr "" - -#: ../utils/net_afs.c:43 -msgid "Could not open secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:48 -#, c-format -msgid "Could not open %s\n" -msgstr "" - -#: ../utils/net_afs.c:53 -msgid "Could not read keyfile\n" -msgstr "" - -#: ../utils/net_afs.c:58 -msgid "Could not write keyfile to secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:71 -#, c-format -msgid "Usage: net afs impersonate \n" -msgstr "" - -#: ../utils/net_afs.c:78 -#, c-format -msgid "Could not create token\n" -msgstr "" - -#: ../utils/net_afs.c:83 -#, c-format -msgid "Could not set token into kernel\n" -msgstr "" - -#: ../utils/net_afs.c:87 -#, c-format -msgid "Success: %s@%s\n" -msgstr "" - -#: ../utils/net_afs.c:98 -msgid "Import an OpenAFS keyfile" -msgstr "" - -#: ../utils/net_afs.c:99 -msgid "" -"net afs key \n" -" Import kefile from ." -msgstr "" - -#: ../utils/net_afs.c:106 -msgid "Get a user token" -msgstr "" - -#: ../utils/net_afs.c:107 -msgid "" -"net afs impersonate \n" -" Create token for user@cell" -msgstr "" - -#: ../utils/net_cache.c:74 -#, c-format -msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" -msgstr "" - -#: ../utils/net_cache.c:75 -msgid "(expired)" -msgstr "" - -#: ../utils/net_cache.c:84 -#, c-format -msgid "Couldn't delete entry! key = %s\n" -msgstr "" - -#: ../utils/net_cache.c:158 -msgid "" -"\n" -"Usage:\n" -"net cache add \n" -msgstr "" - -#: ../utils/net_cache.c:170 -msgid "Invalid timeout argument.\n" -msgstr "" - -#: ../utils/net_cache.c:175 -msgid "New cache entry stored successfully.\n" -msgstr "" - -#: ../utils/net_cache.c:179 -msgid "Entry couldn't be added. Perhaps there's already such a key.\n" -msgstr "" - -#: ../utils/net_cache.c:195 -msgid "" -"\n" -"Usage: net cache del \n" -msgstr "" - -#: ../utils/net_cache.c:200 -msgid "Entry deleted.\n" -msgstr "" - -#: ../utils/net_cache.c:204 -msgid "Couldn't delete specified entry\n" -msgstr "" - -#: ../utils/net_cache.c:223 -msgid "" -"\n" -"Usage: net cache get \n" -msgstr "" - -#: ../utils/net_cache.c:233 -msgid "Failed to find entry\n" -msgstr "" - -#: ../utils/net_cache.c:250 -msgid "Usage: net cache search \n" -msgstr "" - -#: ../utils/net_cache.c:272 -msgid "" -"Usage:\n" -"net cache list\n" -" List all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:293 ../utils/net_cache.c:306 -msgid "" -"Usage:\n" -"net cache flush\n" -" Delete all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:331 -msgid "Add new cache entry" -msgstr "" - -#: ../utils/net_cache.c:332 -msgid "" -"net cache add \n" -" Add new cache entry.\n" -" key string\tKey string to add cache data under.\n" -" data string\tData to store under given key.\n" -" timeout\tTimeout for cache data." -msgstr "" - -#: ../utils/net_cache.c:342 -msgid "Delete existing cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:343 -msgid "" -"net cache del \n" -" Delete existing cache entry by key.\n" -" key string\tKey string to delete." -msgstr "" - -#: ../utils/net_cache.c:351 -msgid "Get cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:352 -msgid "" -"net cache get \n" -" Get cache entry by key.\n" -" key string\tKey string to look up cache entry for." -msgstr "" - -#: ../utils/net_cache.c:361 -msgid "Search entry by pattern" -msgstr "" - -#: ../utils/net_cache.c:362 -msgid "" -"net cache search \n" -" Search entry by pattern.\n" -" pattern\tPattern to search for in cache." -msgstr "" - -#: ../utils/net_cache.c:370 -msgid "List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:371 -msgid "" -"net cache list\n" -" List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:378 -#, fuzzy -msgid "Delete all cache entries" -msgstr "Supprimer Imprimante" - -#: ../utils/net_cache.c:379 -msgid "" -"net cache flush\n" -" Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:386 -msgid "Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_cache.c:387 -msgid "" -"net cache stabilize\n" -" Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_conf.c:42 -msgid "USAGE: net conf list\n" -msgstr "" - -#: ../utils/net_conf.c:49 -msgid "" -"USAGE: net conf import [--test|-T] []\n" -"\t[--test|-T] testmode - do not act, just print what would be done\n" -"\t only import service , ignore the rest\n" -msgstr "" - -#: ../utils/net_conf.c:61 -msgid "USAGE: net conf listshares\n" -msgstr "" - -#: ../utils/net_conf.c:68 -msgid "USAGE: net conf drop\n" -msgstr "" - -#: ../utils/net_conf.c:75 -msgid "USAGE: net conf showshare \n" -msgstr "" - -#: ../utils/net_conf.c:82 -msgid "" -"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" -"\t the new share name.\n" -"\t the path on the filesystem to export.\n" -"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" -"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" -"\t optional comment for the new share.\n" -msgstr "" - -#: ../utils/net_conf.c:97 -msgid "USAGE: net conf delshare \n" -msgstr "" - -#: ../utils/net_conf.c:104 -msgid "USAGE: net conf setparm
\n" -msgstr "" - -#: ../utils/net_conf.c:111 -msgid "USAGE: net conf getparm
\n" -msgstr "" - -#: ../utils/net_conf.c:118 -msgid "USAGE: net conf delparm
\n" -msgstr "" - -#: ../utils/net_conf.c:125 -msgid "USAGE: net conf getincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:132 -msgid "USAGE: net conf setincludes
[]*\n" -msgstr "" - -#: ../utils/net_conf.c:139 -msgid "USAGE: net conf delincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:251 -#, c-format -msgid "Error getting config: %s\n" -msgstr "" - -#: ../utils/net_conf.c:305 ../utils/net_conf.c:318 ../utils/net_conf.c:614 ../utils/net_conf.c:742 ../utils/net_conf.c:780 ../utils/net_conf.c:786 ../utils/net_conf.c:860 ../utils/net_conf.c:866 ../utils/net_conf.c:916 ../utils/net_conf.c:970 -#: ../utils/net_conf.c:1010 ../utils/net_conf.c:1050 -msgid "error: out of memory!\n" -msgstr "" - -#: ../utils/net_conf.c:324 -#, c-format -msgid "error loading file '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:330 -msgid "" -"\n" -"TEST MODE - would import the following configuration:\n" -"\n" -msgstr "" - -#: ../utils/net_conf.c:346 ../utils/net_conf.c:382 ../utils/net_conf.c:407 ../utils/net_conf.c:793 -#, c-format -msgid "error starting transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:400 ../utils/net_conf.c:416 ../utils/net_conf.c:817 -#, c-format -msgid "error committing transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:427 ../utils/net_conf.c:828 -#, c-format -msgid "error cancelling transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:484 -#, c-format -msgid "Error deleting configuration: %s\n" -msgstr "" - -#: ../utils/net_conf.c:521 -#, c-format -msgid "error getting share parameters: %s\n" -msgstr "" - -#: ../utils/net_conf.c:630 -#, c-format -msgid "ERROR: share name %s contains invalid characters (any of %s)\n" -msgstr "" - -#: ../utils/net_conf.c:638 -msgid "ERROR: 'global' is not a valid share name.\n" -msgstr "" - -#: ../utils/net_conf.c:643 -#, c-format -msgid "ERROR: share %s already exists.\n" -msgstr "" - -#: ../utils/net_conf.c:652 -#, c-format -msgid "Error: path '%s' is not an absolute path.\n" -msgstr "" - -#: ../utils/net_conf.c:659 -#, c-format -msgid "" -"ERROR: cannot stat path '%s' to ensure this is a directory.\n" -"Error was '%s'.\n" -msgstr "" - -#: ../utils/net_conf.c:668 -#, c-format -msgid "ERROR: path '%s' is not a directory.\n" -msgstr "" - -#: ../utils/net_conf.c:679 -#, c-format -msgid "Error creating share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:690 ../utils/net_conf.c:699 ../utils/net_conf.c:707 ../utils/net_conf.c:715 -#, c-format -msgid "Error setting parameter %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:748 -#, c-format -msgid "Error deleting share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:801 -#, c-format -msgid "Error creating share '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:810 -#, c-format -msgid "Error setting value '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:874 ../utils/net_conf.c:930 -#, c-format -msgid "Error: given service '%s' does not exist.\n" -msgstr "" - -#: ../utils/net_conf.c:879 ../utils/net_conf.c:935 -#, c-format -msgid "Error: given parameter '%s' is not set.\n" -msgstr "" - -#: ../utils/net_conf.c:883 -#, c-format -msgid "Error getting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:939 -#, c-format -msgid "Error deleting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:977 -#, c-format -msgid "error getting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1023 -#, c-format -msgid "error setting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1056 -#, c-format -msgid "error deleting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1136 ../utils/net_help.c:36 -msgid "Usage:\n" -msgstr "" - -#: ../utils/net_conf.c:1160 -msgid "Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1162 -msgid "" -"net conf list\n" -" Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1171 -msgid "Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1173 -msgid "" -"net conf import\n" -" Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1181 -msgid "List the share names." -msgstr "" - -#: ../utils/net_conf.c:1182 -msgid "" -"net conf listshares\n" -" List the share names." -msgstr "" - -#: ../utils/net_conf.c:1189 -msgid "Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1190 -msgid "" -"net conf drop\n" -" Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1197 -msgid "Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1198 -msgid "" -"net conf showshare\n" -" Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1205 -#, fuzzy -msgid "Create a new share." -msgstr "Créer un partage" - -#: ../utils/net_conf.c:1206 -msgid "" -"net conf addshare\n" -" Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1213 -#, fuzzy -msgid "Delete a share." -msgstr "Supprimer un partage" - -#: ../utils/net_conf.c:1214 -msgid "" -"net conf delshare\n" -" Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1221 -#, fuzzy -msgid "Store a parameter." -msgstr "Paramètres de partage" - -#: ../utils/net_conf.c:1222 -msgid "" -"net conf setparm\n" -" Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1229 -msgid "Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1230 -msgid "" -"net conf getparm\n" -" Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1237 -#, fuzzy -msgid "Delete a parameter." -msgstr "Supprimer Imprimante" - -#: ../utils/net_conf.c:1238 -msgid "" -"net conf delparm\n" -" Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1245 -msgid "Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1246 -msgid "" -"net conf getincludes\n" -" Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1253 -msgid "Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1254 -msgid "" -"net conf setincludes\n" -" Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1261 -msgid "Delete includes from a share definition." -msgstr "" - -#: ../utils/net_conf.c:1262 -msgid "" -"net conf setincludes\n" -" Delete includes from a share definition." -msgstr "" - -#: ../utils/net_dom.c:25 -msgid "" -"usage: net dom join \n" -" Join a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:28 -msgid "" -"usage: net dom unjoin \n" -" Unjoin a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:31 -msgid "" -"usage: net dom renamecomputer \n" -" Rename joined computer\n" -msgstr "" - -#: ../utils/net_dom.c:91 -#, c-format -msgid "Failed to unjoin domain: %s\n" -msgstr "" - -#: ../utils/net_dom.c:97 ../utils/net_dom.c:204 -msgid "Shutting down due to a domain membership change" -msgstr "" - -#: ../utils/net_dom.c:290 -#, c-format -msgid "Failed to rename machine: " -msgstr "" - -#: ../utils/net_dom.c:292 -#, c-format -msgid "Computer is not joined to a Domain\n" -msgstr "" - -#: ../utils/net_dom.c:301 -msgid "Shutting down due to a computer rename" -msgstr "" - -#: ../utils/net_dom.c:338 -#, fuzzy -msgid "Join a remote machine" -msgstr " Machine distante : " - -#: ../utils/net_dom.c:339 -msgid "" -"net dom join \n" -" Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:347 -#, fuzzy -msgid "Unjoin a remote machine" -msgstr " Machine distante : " - -#: ../utils/net_dom.c:348 -msgid "" -"net dom unjoin \n" -" Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:356 -msgid "Rename a computer that is joined to a domain" -msgstr "" - -#: ../utils/net_dom.c:357 -msgid "" -"net dom renamecomputer \n" -" Rename joined computer" -msgstr "" - -#: ../utils/net_eventlog.c:46 -msgid "usage: net eventlog dump \n" -msgstr "" - -#: ../utils/net_eventlog.c:52 ../utils/net_eventlog.c:108 -#, c-format -msgid "failed to load evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:59 ../utils/net_eventlog.c:129 -#, fuzzy, c-format -msgid "evt pull failed: %s\n" -msgstr "Gestion des mots de passe" - -#: ../utils/net_eventlog.c:102 -msgid "usage: net eventlog import \n" -msgstr "" - -#: ../utils/net_eventlog.c:116 -#, fuzzy, c-format -msgid "evt header pull failed: %s\n" -msgstr "Gestion des mots de passe" - -#: ../utils/net_eventlog.c:122 -msgid "input file is wrapped, cannot proceed\n" -msgstr "" - -#: ../utils/net_eventlog.c:138 ../utils/net_eventlog.c:203 -#, c-format -msgid "can't open the eventlog TDB (%s)\n" -msgstr "" - -#: ../utils/net_eventlog.c:158 -#, c-format -msgid "can't write to the eventlog: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:164 -#, c-format -msgid "wrote %d entries to tdb\n" -msgstr "" - -#: ../utils/net_eventlog.c:197 -msgid "usage: net eventlog export \n" -msgstr "" - -#: ../utils/net_eventlog.c:214 -#, c-format -msgid "failed to save evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:243 -msgid "Dump eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:244 -msgid "" -"net eventlog dump\n" -" Dump win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:251 -#, fuzzy -msgid "Import eventlog" -msgstr "Note Importante:" - -#: ../utils/net_eventlog.c:252 -msgid "" -"net eventlog import\n" -" Import win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:259 -msgid "Export eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:260 -msgid "" -"net eventlog export\n" -" Export win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_file.c:27 -msgid "" -"net [] file [misc. options] [targets]\n" -"\tlists all open files on file server\n" -msgstr "" - -#: ../utils/net_file.c:29 -msgid "" -"net [] file USER [misc. options] [targets]\n" -"\tlists all files opened by username on file server\n" -msgstr "" - -#: ../utils/net_file.c:32 -msgid "" -"net [] file CLOSE [misc. options] [targets]\n" -"\tcloses specified file on target server\n" -msgstr "" - -#: ../utils/net_file.c:34 -msgid "" -"net [rap] file INFO [misc. options] [targets]\n" -"\tdisplays information about the specified open file\n" -msgstr "" - -#: ../utils/net_group.c:27 -msgid "" -"net [] group [misc. options] [targets]\n" -"\tList user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:29 -msgid "" -"net rpc group LIST [global|local|builtin]* [misc. options]\n" -"\tList specific user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:31 -msgid "" -"net [] group DELETE [misc. options] [targets]\n" -"\tDelete specified group\n" -msgstr "" - -#: ../utils/net_group.c:34 -msgid "" -"\n" -"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" -"\tCreate specified group\n" -msgstr "" - -#: ../utils/net_group.c:37 -msgid "" -"\n" -"net rpc group MEMBERS \n" -"\tList Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:38 -msgid "" -"\n" -"net rpc group ADDMEM \n" -"\tAdd Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:40 -msgid "" -"\n" -"net rpc group DELMEM \n" -"\tDelete Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:44 -msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" -msgstr "" - -#: ../utils/net_group.c:46 -msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" -msgstr "" - -#: ../utils/net_group.c:48 -msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" -msgstr "" - -#: ../utils/net_groupmap.c:38 -#, c-format -msgid "NT Group %s doesn't exist in mapping DB\n" -msgstr "" - -#: ../utils/net_groupmap.c:46 -#, c-format -msgid "converting sid %s from a string failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:65 -#, c-format -msgid "\tSID : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:66 -#, c-format -msgid "\tUnix gid : %u\n" -msgstr "" - -#: ../utils/net_groupmap.c:67 -#, c-format -msgid "\tUnix group: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:68 -#, c-format -msgid "\tGroup type: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:70 -#, c-format -msgid "\tComment : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:84 -msgid "" -"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" -" verbose\tPrint verbose list\n" -" ntgroup\tNT group to list\n" -" sid\tSID of group to list" -msgstr "" - -#: ../utils/net_groupmap.c:91 ../utils/net_groupmap.c:271 ../utils/net_groupmap.c:356 ../utils/net_groupmap.c:412 ../utils/net_groupmap.c:495 ../utils/net_groupmap.c:522 -#, fuzzy, c-format -msgid "" -"Usage:\n" -"%s\n" -msgstr " Nom d'utilisateur : " - -#: ../utils/net_groupmap.c:106 ../utils/net_groupmap.c:213 ../utils/net_groupmap.c:220 ../utils/net_groupmap.c:365 ../utils/net_groupmap.c:372 ../utils/net_groupmap.c:504 -msgid "must supply a name\n" -msgstr "" - -#: ../utils/net_groupmap.c:113 ../utils/net_groupmap.c:227 ../utils/net_groupmap.c:511 -msgid "must supply a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:118 ../utils/net_groupmap.c:265 ../utils/net_groupmap.c:406 ../utils/net_groupmap.c:516 -#, fuzzy, c-format -msgid "Bad option: %s\n" -msgstr "Options de base" - -#: ../utils/net_groupmap.c:139 -msgid "Failure to local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:181 -msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" -msgstr "" - -#: ../utils/net_groupmap.c:195 -#, fuzzy, c-format -msgid "" -"Usage\n" -"%s\n" -msgstr " Nom d'utilisateur : " - -#: ../utils/net_groupmap.c:205 -#, c-format -msgid "RID must be greater than %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:235 ../utils/net_groupmap.c:380 -msgid "must supply a comment string\n" -msgstr "" - -#: ../utils/net_groupmap.c:259 -#, c-format -msgid "unknown group type %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:276 -#, c-format -msgid "Can't lookup UNIX group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:282 -#, c-format -msgid "Unix group %s already mapped to SID %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:289 -msgid "No rid or sid specified, choosing a RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:292 -msgid "Could not get new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:297 -#, c-format -msgid "Got RID %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:328 -#, c-format -msgid "adding entry for group %s failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:332 -#, c-format -msgid "Successfully added group %s to the mapping db as a %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:349 -msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" -msgstr "" - -#: ../utils/net_groupmap.c:388 -msgid "must supply a group name\n" -msgstr "" - -#: ../utils/net_groupmap.c:434 -msgid "Failed to find local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:443 -msgid "Can't map to an unknown group type.\n" -msgstr "" - -#: ../utils/net_groupmap.c:449 -msgid "You can only change between domain and local groups.\n" -msgstr "" - -#: ../utils/net_groupmap.c:466 -#, c-format -msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" -msgstr "" - -#: ../utils/net_groupmap.c:476 -msgid "Could not update group database\n" -msgstr "" - -#: ../utils/net_groupmap.c:480 -#, c-format -msgid "Updated mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:491 -msgid "net groupmap delete {ntgroup=|sid=}" -msgstr "" - -#: ../utils/net_groupmap.c:532 -#, c-format -msgid "Unable to resolve group %s to a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:539 -#, c-format -msgid "Failed to remove group %s from the mapping db!\n" -msgstr "" - -#: ../utils/net_groupmap.c:544 -#, c-format -msgid "Sucessfully removed %s from the mapping db\n" -msgstr "" - -#: ../utils/net_groupmap.c:557 -msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" -msgstr "" - -#: ../utils/net_groupmap.c:563 -msgid "Can only specify -L or -D, not both\n" -msgstr "" - -#: ../utils/net_groupmap.c:573 -#, c-format -msgid "Could not find unix group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:594 -#, c-format -msgid "Could not find group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:605 -msgid "Could not allocate new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:622 -#, c-format -msgid "Could not add mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:633 -#, c-format -msgid "Can't change type of the BUILTIN group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:660 -#, c-format -msgid "Could not update group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:674 -msgid "" -"Usage:\n" -"net groupmap cleanup\n" -" Delete all group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:682 -msgid "Could not list group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:689 -#, c-format -msgid "Group %s is not mapped\n" -msgstr "" - -#: ../utils/net_groupmap.c:692 -#, c-format -msgid "Deleting mapping for NT Group %s, sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:712 -msgid "Usage: net groupmap addmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:717 -#, c-format -msgid "Could not add sid %s to alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:733 -msgid "Usage: net groupmap delmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:738 -#, c-format -msgid "Could not delete sid %s from alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:755 -msgid "Usage: net groupmap listmem alias-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:764 -#, c-format -msgid "Could not list members for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:791 -#, c-format -msgid "Could not list memberships for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:814 -msgid "Usage: net groupmap memberof sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:820 ../utils/net_idmap.c:345 -msgid "talloc_init failed\n" -msgstr "" - -#: ../utils/net_groupmap.c:827 -msgid "Could not get domain sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:850 -msgid "Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:851 -msgid "" -"net groupmap add\n" -" Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:858 -msgid "Update a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:859 -msgid "" -"net groupmap modify\n" -" Modify an existing group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:866 -msgid "Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:867 -msgid "" -"net groupmap delete\n" -" Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:874 -msgid "Set group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:875 -msgid "" -"net groupmap set\n" -" Set a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:882 -msgid "Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:883 -msgid "" -"net groupmap cleanup\n" -" Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:890 -msgid "Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:891 -msgid "" -"net groupmap addmem\n" -" Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:898 -msgid "Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:899 -msgid "" -"net groupmap delmem\n" -" Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:906 -msgid "List foreign group members" -msgstr "" - -#: ../utils/net_groupmap.c:907 -msgid "" -"net groupmap listmem\n" -" List foreign alias members" -msgstr "" - -#: ../utils/net_groupmap.c:914 -msgid "List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:915 -msgid "" -"net groupmap memberships\n" -" List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:922 -msgid "List current group map" -msgstr "" - -#: ../utils/net_groupmap.c:923 -msgid "" -"net groupmap list\n" -" List current group map" -msgstr "" - -#: ../utils/net_help.c:39 -#, c-format -msgid "net %s usage:\n" -msgstr "" - -#: ../utils/net_help_common.c:25 ../utils/net_join.c:28 -msgid "Valid methods: (auto-detected if not specified)\n" -msgstr "" - -#: ../utils/net_help_common.c:26 ../utils/net_join.c:29 -msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" -msgstr "" - -#: ../utils/net_help_common.c:27 ../utils/net_join.c:30 -msgid "\trpc\t\t\t\tDCE-RPC\n" -msgstr "" - -#: ../utils/net_help_common.c:28 -msgid "\trap\t\t\t\tRAP (older systems)\n" -msgstr "" - -#: ../utils/net_help_common.c:35 -msgid "Valid targets: choose one (none defaults to localhost)\n" -msgstr "" - -#: ../utils/net_help_common.c:36 -msgid "\t-S or --server=\t\tserver name\n" -msgstr "" - -#: ../utils/net_help_common.c:37 -msgid "\t-I or --ipaddress=\taddress of target server\n" -msgstr "" - -#: ../utils/net_help_common.c:38 -msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" -msgstr "" - -#: ../utils/net_help_common.c:41 -#, fuzzy -msgid "Valid miscellaneous options are:\n" -msgstr "Options Diverses" - -#. misc options -#: ../utils/net_help_common.c:42 -msgid "\t-p or --port=\t\tconnection port on target\n" -msgstr "" - -#: ../utils/net_help_common.c:43 -msgid "\t-W or --myworkgroup=\tclient workgroup\n" -msgstr "" - -#: ../utils/net_help_common.c:44 -msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" -msgstr "" - -#: ../utils/net_help_common.c:45 -msgid "\t-n or --myname=\t\tclient name\n" -msgstr "" - -#: ../utils/net_help_common.c:46 -msgid "\t-U or --user=\t\tuser name\n" -msgstr "" - -#: ../utils/net_help_common.c:47 -msgid "\t-s or --configfile=\tpathname of smb.conf file\n" -msgstr "" - -#: ../utils/net_help_common.c:48 -msgid "\t-l or --long\t\t\tDisplay full information\n" -msgstr "" - -#: ../utils/net_help_common.c:49 -msgid "\t-V or --version\t\t\tPrint samba version information\n" -msgstr "" - -#: ../utils/net_help_common.c:50 -msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" -msgstr "" - -#: ../utils/net_help_common.c:52 -msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" -msgstr "" - -#: ../utils/net_help_common.c:54 -msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" -msgstr "" - -#: ../utils/net_idmap.c:25 -msgid "Out of memory!\n" -msgstr "" - -#: ../utils/net_idmap.c:39 -#, c-format -msgid "USER HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:44 -#, c-format -msgid "GROUP HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:63 -msgid "" -"Usage:\n" -"net idmap dump \n" -" Dump current ID mapping.\n" -" inputfile\tTDB file to read mappings from.\n" -msgstr "" - -#: ../utils/net_idmap.c:73 -#, c-format -msgid "Could not open idmap: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:94 -msgid "" -"Usage:\n" -"net idmap restore [inputfile]\n" -" Restore ID mappings from file\n" -" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" -msgstr "" - -#: ../utils/net_idmap.c:104 -msgid "To use net idmap Winbindd must be running.\n" -msgstr "" - -#: ../utils/net_idmap.c:142 -#, c-format -msgid "Could not set USER HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:151 -#, c-format -msgid "Could not set GROUP HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:156 -#, c-format -msgid "ignoring invalid line [%s]\n" -msgstr "" - -#: ../utils/net_idmap.c:163 -#, c-format -msgid "ignoring invalid sid [%s]: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:175 -#, c-format -msgid "Could not set mapping of %s %lu to sid %s: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:196 ../utils/net_idmap.c:202 -msgid "Not Implemented yet\n" -msgstr "" - -#: ../utils/net_idmap.c:240 -msgid "" -"Usage:\n" -"net idmap secret {|alloc} \n" -" Set the secret for the specified domain (or alloc module)\n" -" DOMAIN\tDomain to set secret for.\n" -" alloc\tSet secret for the alloc module\n" -" secret\tNew secret to set.\n" -msgstr "" - -#: ../utils/net_idmap.c:271 -msgid "The only currently supported backend is LDAP\n" -msgstr "" - -#: ../utils/net_idmap.c:281 -#, c-format -msgid "Missing ldap_user_dn option for domain %s\n" -msgstr "" - -#: ../utils/net_idmap.c:292 -msgid "Missing ldap_user_dn option for alloc backend\n" -msgstr "" - -#: ../utils/net_idmap.c:302 -msgid "Failed to store secret\n" -msgstr "" - -#: ../utils/net_idmap.c:307 -msgid "Secret stored\n" -msgstr "" - -#: ../utils/net_idmap.c:313 -msgid "" -"net idmap dump \n" -" Dump current id mapping\n" -msgstr "" - -#: ../utils/net_idmap.c:316 -msgid "" -"net idmap restore\n" -" Restore entries from stdin\n" -msgstr "" - -#. Deliberately *not* document net idmap delete -#: ../utils/net_idmap.c:321 -msgid "" -"net idmap secret |alloc \n" -" Set the secret for the specified DOMAIN (or the alloc module)\n" -msgstr "" - -#: ../utils/net_idmap.c:339 -msgid "usage: net idmap aclmapset \n" -msgstr "" - -#: ../utils/net_idmap.c:351 -#, fuzzy, c-format -msgid "db_open failed: %s\n" -msgstr "Gestion des mots de passe" - -#: ../utils/net_idmap.c:356 ../utils/net_idmap.c:361 -#, c-format -msgid "%s is not a valid sid\n" -msgstr "" - -#: ../utils/net_idmap.c:367 -msgid "talloc_strdup failed\n" -msgstr "" - -#: ../utils/net_idmap.c:373 -msgid "could not fetch db record\n" -msgstr "" - -#: ../utils/net_idmap.c:381 -#, c-format -msgid "could not store record: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:402 -msgid "Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:403 -msgid "" -"net idmap dump\n" -" Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:410 -msgid "Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:411 -msgid "" -"net idmap restore\n" -" Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:418 ../utils/net_idmap.c:426 -msgid "Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:419 -msgid "" -"net idmap setmap\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:427 -msgid "" -"net idmap delete\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:434 -msgid "Set secret for specified domain" -msgstr "" - -#: ../utils/net_idmap.c:435 -msgid "" -"net idmap secret {|alloc} \n" -" Set secret for specified domain or alloc module" -msgstr "" - -#: ../utils/net_idmap.c:442 -msgid "Set acl map" -msgstr "" - -#: ../utils/net_idmap.c:443 -msgid "" -"net idmap aclmapset\n" -" Set acl map" -msgstr "" - -#: ../utils/net_join.c:26 -msgid "" -"\n" -"net [] join [misc. options]\n" -"\tjoins this server to a domain\n" -msgstr "" - -#: ../utils/net_join.c:47 -msgid "ADS join did not work, falling back to RPC...\n" -msgstr "" - -#: ../utils/net_lookup.c:25 -msgid "" -" net lookup [host] HOSTNAME[#]\n" -"\tgives IP for a hostname\n" -"\n" -" net lookup ldap [domain]\n" -"\tgives IP of domain's ldap server\n" -"\n" -" net lookup kdc [realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup pdc [domain|realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup dc [domain]\n" -"\tgives IP of domains Domain Controllers\n" -"\n" -" net lookup master [domain|wg]\n" -"\tgive IP of master browser\n" -"\n" -" net lookup name [name]\n" -"\tLookup name's sid and type\n" -"\n" -" net lookup sid [sid]\n" -"\tGive sid's name and type\n" -"\n" -" net lookup dsgetdcname [name] [flags] [sitename]\n" -"\n" -msgstr "" - -#: ../utils/net_lookup.c:112 -msgid "net_lookup_ldap: talloc_init() failed!\n" -msgstr "" - -#: ../utils/net_lookup.c:325 -msgid "usage: net lookup name \n" -msgstr "" - -#: ../utils/net_lookup.c:331 ../utils/net_lookup.c:358 -#, c-format -msgid "Could not lookup name %s\n" -msgstr "" - -#: ../utils/net_lookup.c:347 -msgid "usage: net lookup sid \n" -msgstr "" - -#: ../utils/net_lookup.c:352 -#, c-format -msgid "Could not convert %s to SID\n" -msgstr "" - -#: ../utils/net_lookup.c:378 -msgid "usage: net lookup dsgetdcname \n" -msgstr "" - -#: ../utils/net_lookup.c:404 -#, c-format -msgid "failed with: %s\n" -msgstr "" - -#: ../utils/net_lookup.c:437 -msgid "" -"\n" -"Usage: \n" -msgstr "" - -#: ../utils/net_lua.c:60 -msgid "connect: Expected IP-Address" -msgstr "" - -#: ../utils/net_lua.c:65 -msgid "connect: Expected port" -msgstr "" - -#: ../utils/net_lua.c:84 -#, fuzzy, c-format -msgid "connect failed: %s" -msgstr "Gestion des mots de passe" - -#: ../utils/net_lua.c:132 -#, c-format -msgid "socket domain %s unknown" -msgstr "" - -#: ../utils/net_lua.c:144 -#, c-format -msgid "socket type %s unknown" -msgstr "" - -#: ../utils/net_lua.c:155 -#, fuzzy, c-format -msgid "socket() failed: %s" -msgstr "Gestion des mots de passe" - -#: ../utils/net_lua.c:278 -msgid "evt_reference_thread failed\n" -msgstr "" - -#: ../utils/net_lua.c:287 -msgid "event_add_timed failed" -msgstr "" - -#: ../utils/net_lua.c:300 -msgid "event_once called from non-base thread" -msgstr "" - -#: ../utils/net_lua.c:323 -msgid "event_context_init failed" -msgstr "" - -#: ../utils/net_lua.c:353 -msgid "lua_newstate failed\n" -msgstr "" - -#: ../utils/net_lua.c:371 -msgid "luaL_dofile returned an error\n" -msgstr "" - -#: ../utils/net_lua.c:376 -msgid "luaL_dostring returned an error\n" -msgstr "" diff --git a/source3/po/genmsg b/source3/po/genmsg index bab6dd6e5c..9e9b53b3c8 100755 --- a/source3/po/genmsg +++ b/source3/po/genmsg @@ -15,24 +15,8 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, see . # -add_basedir_to_filelist() { - BASEDIR="$1" - shift; - FILELIST="$@" - FULL_LIST="" - for file in ${FILELIST}; do - FULL_LIST="${FULL_LIST} $BASEDIR/${file}" - done - echo ${FULL_LIST} -} -NET_FILES=`add_basedir_to_filelist ../utils net.c net_ads.c net_ads_gpo.c \ - net_afs.c net_cache.c net_conf.c net_dom.c net_eventlog.c \ - net_file.c net_group.c net_groupmap.c net_help.c net_help_common.c \ - net_idmap.c net_join.c net_lookup.c net_lua.c net_rap.c \ - net_registry.c net_registry_util.c net_rpc.c` - -FILES="../web/swat.c ../web/statuspage.c ../param/loadparm.c ${NET_FILES}" +FILES='../web/swat.c ../web/statuspage.c ../param/loadparm.c' LANGS='en ja tr pl fr de it ru' XGETTEXT=xgettext diff --git a/source3/po/it.msg b/source3/po/it.msg index e157732fb6..90c3ed5672 100644 --- a/source3/po/it.msg +++ b/source3/po/it.msg @@ -17,8 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-30 12:18+0200\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2000-02-08 14:45+0100\n" "Last-Translator: Simo Sorce \n" "Language-Team: (Samba Team) \n" @@ -26,4013 +25,568 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: \n" -#: ../web/swat.c:153 +#: ../web/swat.c:117 #, c-format msgid "ERROR: Can't open %s" msgstr "" -#: ../web/swat.c:241 +#: ../web/swat.c:200 msgid "Help" msgstr "Aiuto" -#: ../web/swat.c:247 ../web/swat.c:272 ../web/swat.c:293 ../web/swat.c:302 ../web/swat.c:311 ../web/swat.c:317 ../web/swat.c:329 ../web/swat.c:343 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "Imposta Default" -#: ../web/swat.c:465 +#: ../web/swat.c:408 #, c-format msgid "failed to open %s for writing" msgstr "" -#: ../web/swat.c:488 +#: ../web/swat.c:431 #, c-format msgid "Can't reload %s" msgstr "" -#: ../web/swat.c:561 +#: ../web/swat.c:501 #, c-format msgid "Logged in as %s" msgstr "Connesso come %s

\n" -#: ../web/swat.c:565 +#: ../web/swat.c:505 msgid "Home" msgstr "Home" -#: ../web/swat.c:567 +#: ../web/swat.c:507 msgid "Globals" msgstr "Globali" -#: ../web/swat.c:568 +#: ../web/swat.c:508 msgid "Shares" msgstr "Condivisioni" -#: ../web/swat.c:569 +#: ../web/swat.c:509 msgid "Printers" msgstr "Stampanti" -#: ../web/swat.c:570 +#: ../web/swat.c:510 msgid "Wizard" msgstr "" -#: ../web/swat.c:574 +#: ../web/swat.c:513 msgid "Status" msgstr "Stato" -#: ../web/swat.c:575 +#: ../web/swat.c:514 msgid "View Config" msgstr "Visualizza Configurazione" -#: ../web/swat.c:577 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Gestione Password" -#: ../web/swat.c:587 +#: ../web/swat.c:526 msgid "Current View Is" msgstr "Configurazione Attuale" -#: ../web/swat.c:588 ../web/swat.c:591 +#: ../web/swat.c:527 ../web/swat.c:530 msgid "Basic" msgstr "Vista Semplice" -#: ../web/swat.c:589 ../web/swat.c:592 +#: ../web/swat.c:528 ../web/swat.c:531 msgid "Advanced" msgstr "Vista Avanzata" -#: ../web/swat.c:590 +#: ../web/swat.c:529 msgid "Change View To" msgstr "Cambia Password" -#: ../web/swat.c:619 +#: ../web/swat.c:554 msgid "Current Config" msgstr "Configurazione Attuale" -#: ../web/swat.c:623 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Vista Normale" -#: ../web/swat.c:625 +#: ../web/swat.c:560 msgid "Full View" msgstr "Vista Completa" #. Here we first set and commit all the parameters that were selected #. in the previous screen. -#: ../web/swat.c:644 +#: ../web/swat.c:579 msgid "Wizard Parameter Edit Page" msgstr "" -#: ../web/swat.c:673 +#: ../web/swat.c:608 msgid "Note: smb.conf file has been read and rewritten" msgstr "" #. Here we go ... -#: ../web/swat.c:779 +#: ../web/swat.c:716 msgid "Samba Configuration Wizard" msgstr "" -#: ../web/swat.c:783 +#: ../web/swat.c:720 msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." msgstr "" -#: ../web/swat.c:784 +#: ../web/swat.c:721 msgid "The same will happen if you press the commit button." msgstr "" -#: ../web/swat.c:787 +#: ../web/swat.c:724 msgid "Rewrite smb.conf file" msgstr "" -#: ../web/swat.c:788 +#: ../web/swat.c:725 msgid "Commit" msgstr "commento" -#: ../web/swat.c:789 +#: ../web/swat.c:726 msgid "Edit Parameter Values" msgstr "Parametri Stampante" -#: ../web/swat.c:795 +#: ../web/swat.c:732 msgid "Server Type" msgstr "" -#: ../web/swat.c:796 +#: ../web/swat.c:733 msgid "Stand Alone" msgstr "" -#: ../web/swat.c:797 +#: ../web/swat.c:734 msgid "Domain Member" msgstr "master dominio" -#: ../web/swat.c:798 +#: ../web/swat.c:735 msgid "Domain Controller" msgstr "master dominio" -#: ../web/swat.c:801 +#: ../web/swat.c:738 msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "" -#: ../web/swat.c:803 +#: ../web/swat.c:740 msgid "Configure WINS As" msgstr "" -#: ../web/swat.c:804 +#: ../web/swat.c:741 msgid "Not Used" msgstr "non discendere" -#: ../web/swat.c:805 +#: ../web/swat.c:742 msgid "Server for client use" msgstr "" -#: ../web/swat.c:806 +#: ../web/swat.c:743 msgid "Client of another WINS server" msgstr "" -#: ../web/swat.c:808 +#: ../web/swat.c:745 msgid "Remote WINS Server" msgstr "" -#: ../web/swat.c:819 +#: ../web/swat.c:756 msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "" -#: ../web/swat.c:820 +#: ../web/swat.c:757 msgid "Please Select desired WINS mode above." msgstr "" -#: ../web/swat.c:822 +#: ../web/swat.c:759 msgid "Expose Home Directories" msgstr "" -#: ../web/swat.c:837 +#: ../web/swat.c:774 msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." msgstr "" -#: ../web/swat.c:850 +#: ../web/swat.c:787 msgid "Global Parameters" msgstr "Variabili Globali" -#: ../web/swat.c:878 ../web/swat.c:986 ../web/swat.c:1344 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Salva Modifiche" -#: ../web/swat.c:882 ../web/swat.c:989 ../web/swat.c:1346 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "Resetta Valori" -#: ../web/swat.c:908 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Parametri Condivisioni" -#: ../web/swat.c:955 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Scegli Condivisione" -#: ../web/swat.c:971 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Cancella Condivisione" -#: ../web/swat.c:978 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Crea Condivisione" -#: ../web/swat.c:1014 +#: ../web/swat.c:944 msgid "password change in demo mode rejected" msgstr "cambio password in modalita' demo rigettata" -#: ../web/swat.c:1028 +#: ../web/swat.c:957 msgid "Can't setup password database vectors." msgstr "" -#: ../web/swat.c:1056 +#: ../web/swat.c:983 msgid " Must specify \"User Name\" " msgstr " \"Nome Utente\" deve essere specificato " -#: ../web/swat.c:1072 +#: ../web/swat.c:999 msgid " Must specify \"Old Password\" " msgstr " \"Vecchia Password\" deve essere specificato " -#: ../web/swat.c:1078 +#: ../web/swat.c:1005 msgid " Must specify \"Remote Machine\" " msgstr " \"Macchina Remota\" deve essere specificato " -#: ../web/swat.c:1085 +#: ../web/swat.c:1012 msgid " Must specify \"New, and Re-typed Passwords\" " msgstr " \"Nuova/Conferma Password\" devono essere specificati " -#: ../web/swat.c:1091 +#: ../web/swat.c:1018 msgid " Re-typed password didn't match new password " msgstr " la password di conferma non e' uguale alla nuova password " -#: ../web/swat.c:1124 +#: ../web/swat.c:1048 #, c-format msgid " The passwd for '%s' has been changed." msgstr " La password per '%s' e' stata cambiata." -#: ../web/swat.c:1127 +#: ../web/swat.c:1051 #, c-format msgid " The passwd for '%s' has NOT been changed." msgstr " La password per '%s' non e' stata cambianta." -#: ../web/swat.c:1152 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Gestione Password del Server" #. #. * Create all the dialog boxes for data collection #. -#: ../web/swat.c:1161 ../web/swat.c:1208 +#: ../web/swat.c:1085 ../web/swat.c:1132 msgid "User Name" msgstr " Nome Utente" -#: ../web/swat.c:1164 ../web/swat.c:1210 +#: ../web/swat.c:1088 ../web/swat.c:1134 msgid "Old Password" msgstr " Vecchia Password" -#: ../web/swat.c:1167 ../web/swat.c:1212 +#: ../web/swat.c:1091 ../web/swat.c:1136 msgid "New Password" msgstr " Nuova Password" -#: ../web/swat.c:1169 ../web/swat.c:1214 +#: ../web/swat.c:1093 ../web/swat.c:1138 msgid "Re-type New Password" msgstr " Conferma nuova Password" -#: ../web/swat.c:1177 ../web/swat.c:1225 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "Cambia Password" -#: ../web/swat.c:1180 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Aggiungi Nuovo Utente" -#: ../web/swat.c:1182 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Cancella Utente" -#: ../web/swat.c:1184 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "Disabilita Utente" -#: ../web/swat.c:1186 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Abilita Utente" -#: ../web/swat.c:1199 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "Gestione Password Client/Server" -#: ../web/swat.c:1216 +#: ../web/swat.c:1140 msgid "Remote Machine" msgstr " Macchina Remota" -#: ../web/swat.c:1255 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Parametri Stampante" -#: ../web/swat.c:1257 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "Nota Importante:" -#: ../web/swat.c:1258 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "nomi di stampante marcati con [*] nel riquadro a scomparsa Scegli Stampante" -#: ../web/swat.c:1259 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "sono stampanti caricate automaticamente da " -#: ../web/swat.c:1260 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Nome Printcap" -#: ../web/swat.c:1261 +#: ../web/swat.c:1185 msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "Il tentativo di cancellare queste stampanti da sWAT non avara' effetto.\n" -#: ../web/swat.c:1310 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Scegli Stampante" -#: ../web/swat.c:1329 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Cancella Stampante" -#: ../web/swat.c:1336 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Crea Stampante" -#: ../web/statuspage.c:151 -msgid "RDWR " +#: ../web/statuspage.c:123 +msgid "RDONLY " msgstr "" -#: ../web/statuspage.c:153 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "" -#: ../web/statuspage.c:155 -msgid "RDONLY " +#: ../web/statuspage.c:125 +msgid "RDWR " msgstr "" -#: ../web/statuspage.c:329 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Stato del Server" -#: ../web/statuspage.c:334 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Rinfresco Automatico" -#: ../web/statuspage.c:335 ../web/statuspage.c:340 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Intervallo Rinfresco: " -#: ../web/statuspage.c:339 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Ferma Rinfresco" -#: ../web/statuspage.c:348 +#: ../web/statuspage.c:334 msgid "version:" msgstr "versione:" -#: ../web/statuspage.c:351 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "attivo" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "non attivo" -#: ../web/statuspage.c:355 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Ferma smbd" -#: ../web/statuspage.c:357 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Lancia smbd" -#: ../web/statuspage.c:359 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Rilancia smbd" -#: ../web/statuspage.c:364 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: ../web/statuspage.c:368 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Ferma nmbd" -#: ../web/statuspage.c:370 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Lancia nmbd" -#: ../web/statuspage.c:372 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Rilancia nmbd" -#: ../web/statuspage.c:378 +#: ../web/statuspage.c:364 msgid "winbindd:" msgstr "" -#: ../web/statuspage.c:382 +#: ../web/statuspage.c:368 msgid "Stop winbindd" msgstr "Ferma nmbd" -#: ../web/statuspage.c:384 +#: ../web/statuspage.c:370 msgid "Start winbindd" msgstr "Lancia nmbd" -#: ../web/statuspage.c:386 +#: ../web/statuspage.c:372 msgid "Restart winbindd" msgstr "Rilancia nmbd" #. stop, restart all -#: ../web/statuspage.c:395 +#: ../web/statuspage.c:381 msgid "Stop All" msgstr "" -#: ../web/statuspage.c:396 +#: ../web/statuspage.c:382 msgid "Restart All" msgstr "Rilancia nmbd" #. start all -#: ../web/statuspage.c:400 +#: ../web/statuspage.c:386 msgid "Start All" msgstr "Lancia nmbd" -#: ../web/statuspage.c:407 +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Connessioni Attive" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "" -#: ../web/statuspage.c:409 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "indirizzo IP" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Data" -#: ../web/statuspage.c:411 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Termina" -#: ../web/statuspage.c:419 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Condivisioni Attive" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Condivisione" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "User" msgstr "Utente" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Gruppo" -#: ../web/statuspage.c:428 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "File Aperti" -#: ../web/statuspage.c:431 -msgid "UID" -msgstr "" - -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "File" msgstr "" -#: ../web/statuspage.c:438 +#: ../web/statuspage.c:425 msgid "Show Client in col 1" msgstr "" -#: ../web/statuspage.c:439 +#: ../web/statuspage.c:426 msgid "Show PID in col 1" msgstr "" -#: ../param/loadparm.c:907 +#: ../param/loadparm.c:755 msgid "Base Options" msgstr "Opzioni Basilari" -#: ../param/loadparm.c:1047 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Opzioni di Sicurezza" -#: ../param/loadparm.c:1800 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Opzioni di Log" -#: ../param/loadparm.c:1929 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Opzioni Protocollo" -#: ../param/loadparm.c:2301 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Opzioni Tuning" -#: ../param/loadparm.c:2538 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Opzioni di Stampa" -#: ../param/loadparm.c:2858 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Gestione Nomi File" -#: ../param/loadparm.c:3088 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Opzioni Dominio" -#: ../param/loadparm.c:3100 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Opzioni di Logon" -#: ../param/loadparm.c:3273 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Opzioni Browsing" -#: ../param/loadparm.c:3384 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "opzioni WINS" -#: ../param/loadparm.c:3432 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Opzioni Locking" -#: ../param/loadparm.c:3552 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Opzioni Ldap" -#: ../param/loadparm.c:3708 -#, fuzzy -msgid "EventLog Options" -msgstr "Opzioni di Logon" - -#: ../param/loadparm.c:3720 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Opzioni Generiche" -#: ../param/loadparm.c:4301 +#: ../param/loadparm.c:1138 msgid "VFS module options" msgstr "Opzioni VFS" -#: ../param/loadparm.c:4323 -#, fuzzy -msgid "MSDFS options" -msgstr "Opzioni VFS" - -#: ../param/loadparm.c:4353 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Opzioni Winbind" - -#: ../utils/net.c:103 -msgid "Enter machine password: " -msgstr "" - -#: ../utils/net.c:107 -msgid "Unable to write the machine account password in the secrets database" -msgstr "" - -#: ../utils/net.c:111 -msgid "Modified trust account password in secrets database\n" -msgstr "" - -#: ../utils/net.c:115 -msgid "" -"Machine account password change requires the -f flag.\n" -"Do NOT use this function unless you know what it does!\n" -"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" -msgstr "" - -#: ../utils/net.c:150 ../utils/net.c:228 -#, c-format -msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" -msgstr "" - -#: ../utils/net.c:163 ../utils/net.c:251 -#, c-format -msgid "SID for domain %s is: %s\n" -msgstr "" - -#: ../utils/net.c:175 -msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:195 -msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:213 -msgid "usage: net getdomainsid\n" -msgstr "" - -#: ../utils/net.c:238 -msgid "Could not fetch local SID\n" -msgstr "" - -#: ../utils/net.c:242 -#, c-format -msgid "SID for local machine %s is: %s\n" -msgstr "" - -#: ../utils/net.c:246 -msgid "Could not fetch domain SID\n" -msgstr "" - -#: ../utils/net.c:263 -#, c-format -msgid "get_maxrid: Could not search %s\n" -msgstr "" - -#: ../utils/net.c:297 -msgid "usage: net maxrid\n" -msgstr "" - -#: ../utils/net.c:302 -msgid "can't get current maximum rid\n" -msgstr "" - -#: ../utils/net.c:306 -#, c-format -msgid "Currently used maximum rid: %d\n" -msgstr "" - -#: ../utils/net.c:317 -msgid "Run functions using RPC transport" -msgstr "" - -#: ../utils/net.c:318 -msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." -msgstr "" - -#: ../utils/net.c:325 -msgid "Run functions using RAP transport" -msgstr "" - -#: ../utils/net.c:326 -msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." -msgstr "" - -#: ../utils/net.c:333 -msgid "Run functions using ADS transport" -msgstr "" - -#: ../utils/net.c:334 -msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." -msgstr "" - -#: ../utils/net.c:343 -msgid "Functions on remote opened files" -msgstr "" - -#: ../utils/net.c:344 -msgid " Use 'net help file' to get more information about 'net file' commands." -msgstr "" - -#: ../utils/net.c:351 -msgid "Functions on shares" -msgstr "" - -#: ../utils/net.c:352 -msgid " Use 'net help share' to get more information about 'net share' commands." -msgstr "" - -#: ../utils/net.c:359 -msgid "Manage sessions" -msgstr "" - -#: ../utils/net.c:360 -msgid " Use 'net help session' to get more information about 'net session' commands." -msgstr "" - -#: ../utils/net.c:367 -msgid "List servers in workgroup" -msgstr "" - -#: ../utils/net.c:368 -msgid " Use 'net help server' to get more information about 'net server' commands." -msgstr "" - -#: ../utils/net.c:375 -msgid "List domains/workgroups on network" -msgstr "" - -#: ../utils/net.c:376 -msgid " Use 'net help domain' to get more information about 'net domain' commands." -msgstr "" - -#: ../utils/net.c:383 -msgid "Modify printer queue" -msgstr "" - -#: ../utils/net.c:384 -msgid " Use 'net help printq' to get more information about 'net printq' commands." -msgstr "" - -#: ../utils/net.c:391 -#, fuzzy -msgid "Manage users" -msgstr "Abilita Utente" - -#: ../utils/net.c:392 -msgid " Use 'net help user' to get more information about 'net user' commands." -msgstr "" - -#: ../utils/net.c:399 -msgid "Manage groups" -msgstr "" - -#: ../utils/net.c:400 -msgid " Use 'net help group' to get more information about 'net group' commands." -msgstr "" - -#: ../utils/net.c:407 -msgid "Manage group mappings" -msgstr "" - -#: ../utils/net.c:408 -msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." -msgstr "" - -#: ../utils/net.c:415 -msgid "Functions on the SAM database" -msgstr "" - -#: ../utils/net.c:416 -msgid " Use 'net help sam' to get more information about 'net sam' commands." -msgstr "" - -#: ../utils/net.c:423 -msgid "Validate username and password" -msgstr "" - -#: ../utils/net.c:424 -msgid " Use 'net help validate' to get more information about 'net validate' commands." -msgstr "" - -#: ../utils/net.c:431 -msgid "Modify group memberships" -msgstr "" - -#: ../utils/net.c:432 -msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." -msgstr "" - -#: ../utils/net.c:438 -msgid "Execute remote command on a remote OS/2 server" -msgstr "" - -#: ../utils/net.c:439 -msgid " Use 'net help admin' to get more information about 'net admin' commands." -msgstr "" - -#: ../utils/net.c:445 -msgid "List/modify running services" -msgstr "" - -#: ../utils/net.c:446 -msgid " Use 'net help service' to get more information about 'net service' commands." -msgstr "" - -#: ../utils/net.c:453 -msgid "Change user password on target server" -msgstr "" - -#: ../utils/net.c:454 -msgid " Use 'net help password' to get more information about 'net password' commands." -msgstr "" - -#: ../utils/net.c:460 -#, fuzzy -msgid "Change the trust password" -msgstr "Cambia Password" - -#: ../utils/net.c:461 -msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." -msgstr "" - -#: ../utils/net.c:467 -#, fuzzy -msgid "Change the secret password" -msgstr "Cambia Password" - -#: ../utils/net.c:468 -msgid "" -" net [options] changesecretpw\n" -" Change the ADS domain member machine account password in secrets.tdb.\n" -" Do NOT use this function unless you know what it does.\n" -" Requires the -f flag to work." -msgstr "" - -#: ../utils/net.c:477 -msgid "Show/set time" -msgstr "" - -#: ../utils/net.c:478 -msgid " Use 'net help time' to get more information about 'net time' commands." -msgstr "" - -#: ../utils/net.c:484 -msgid "Look up host names/IP addresses" -msgstr "" - -#: ../utils/net.c:485 -msgid " Use 'net help lookup' to get more information about 'net lookup' commands." -msgstr "" - -#: ../utils/net.c:491 -msgid "Join a domain/AD" -msgstr "" - -#: ../utils/net.c:492 -msgid " Use 'net help join' to get more information about 'net join'." -msgstr "" - -#: ../utils/net.c:498 -msgid "Join/unjoin (remote) machines to/from a domain/AD" -msgstr "" - -#: ../utils/net.c:499 -msgid " Use 'net help dom' to get more information about 'net dom' commands." -msgstr "" - -#: ../utils/net.c:505 -msgid "Operate on the cache tdb file" -msgstr "" - -#: ../utils/net.c:506 -msgid " Use 'net help cache' to get more information about 'net cache' commands." -msgstr "" - -#: ../utils/net.c:512 -msgid "Get the SID for the local domain" -msgstr "" - -#: ../utils/net.c:513 -msgid " net getlocalsid" -msgstr "" - -#: ../utils/net.c:518 -msgid "Set the SID for the local domain" -msgstr "" - -#: ../utils/net.c:519 -msgid " net setlocalsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:524 -msgid "Set domain SID on member servers" -msgstr "" - -#: ../utils/net.c:525 -msgid " net setdomainsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:530 -msgid "Get domain SID on member servers" -msgstr "" - -#: ../utils/net.c:531 -msgid " net getdomainsid" -msgstr "" - -#: ../utils/net.c:536 -msgid "Display the maximul RID currently used" -msgstr "" - -#: ../utils/net.c:537 -msgid " net maxrid" -msgstr "" - -#: ../utils/net.c:542 -#, fuzzy -msgid "IDmap functions" -msgstr "Opzioni Dominio" - -#: ../utils/net.c:543 -msgid " Use 'net help idmap to get more information about 'net idmap' commands." -msgstr "" - -#: ../utils/net.c:549 -#, fuzzy -msgid "Display server status" -msgstr "Stato del Server" - -#: ../utils/net.c:550 -msgid " Use 'net help status' to get more information about 'net status' commands." -msgstr "" - -#: ../utils/net.c:556 -msgid "Manage user-modifiable shares" -msgstr "" - -#: ../utils/net.c:557 -msgid " Use 'net help usershare to get more information about 'net usershare' commands." -msgstr "" - -#: ../utils/net.c:563 -msgid "Display list of all users with SID" -msgstr "" - -#: ../utils/net.c:564 -msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." -msgstr "" - -#: ../utils/net.c:570 -msgid "Manage Samba registry based configuration" -msgstr "" - -#: ../utils/net.c:571 -msgid " Use 'net help conf' to get more information about 'net conf' commands." -msgstr "" - -#: ../utils/net.c:577 -msgid "Manage the Samba registry" -msgstr "" - -#: ../utils/net.c:578 -msgid " Use 'net help registry' to get more information about 'net registry' commands." -msgstr "" - -#: ../utils/net.c:584 -msgid "Open a lua interpreter" -msgstr "" - -#: ../utils/net.c:585 -msgid " Use 'net help lua' to get more information about 'net lua' commands." -msgstr "" - -#: ../utils/net.c:591 -msgid "Process Win32 *.evt eventlog files" -msgstr "" - -#: ../utils/net.c:592 -msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." -msgstr "" - -#: ../utils/net.c:600 -msgid "Manage AFS tokens" -msgstr "" - -#: ../utils/net.c:601 -msgid " Use 'net help afs' to get more information about 'net afs' commands." -msgstr "" - -#: ../utils/net.c:609 -msgid "Print usage information" -msgstr "" - -#: ../utils/net.c:610 -msgid " Use 'net help help' to list usage information for 'net' commands." -msgstr "" - -#: ../utils/net.c:639 -msgid "Encrypt SMB transport (UNIX extended servers only)" -msgstr "" - -#: ../utils/net.c:703 -msgid "" -"\n" -"Invalid ip address specified\n" -msgstr "" - -#: ../utils/net.c:718 -#, c-format -msgid "" -"\n" -"Invalid option %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:52 ../utils/net_ads.c:392 -msgid "CLDAP query failed!\n" -msgstr "" - -#: ../utils/net_ads.c:56 -#, fuzzy, c-format -msgid "" -"Information for Domain Controller: %s\n" -"\n" -msgstr "master dominio" - -#: ../utils/net_ads.c:59 -msgid "Response Type: " -msgstr "" - -#: ../utils/net_ads.c:72 -#, c-format -msgid "GUID: %s\n" -msgstr "" - -#: ../utils/net_ads.c:74 -#, c-format -msgid "" -"Flags:\n" -"\tIs a PDC: %s\n" -"\tIs a GC of the forest: %s\n" -"\tIs an LDAP server: %s\n" -"\tSupports DS: %s\n" -"\tIs running a KDC: %s\n" -"\tIs running time services: %s\n" -"\tIs the closest DC: %s\n" -"\tIs writable: %s\n" -"\tHas a hardware clock: %s\n" -"\tIs a non-domain NC serviced by LDAP server: %s\n" -"\tIs NT6 DC that has some secrets: %s\n" -"\tIs NT6 DC that has all secrets: %s\n" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "yes" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "no" -msgstr "" - -#: ../utils/net_ads.c:101 -#, c-format -msgid "Forest:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:102 -#, c-format -msgid "Domain:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:103 -#, fuzzy, c-format -msgid "Domain Controller:\t%s\n" -msgstr "master dominio" - -#: ../utils/net_ads.c:105 -#, c-format -msgid "Pre-Win2k Domain:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:106 -#, c-format -msgid "Pre-Win2k Hostname:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:108 -#, fuzzy, c-format -msgid "User name:\t%s\n" -msgstr " Nome Utente" - -#: ../utils/net_ads.c:110 -#, fuzzy, c-format -msgid "Server Site Name :\t\t%s\n" -msgstr "Stato del Server" - -#: ../utils/net_ads.c:111 -#, c-format -msgid "Client Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:113 -#, fuzzy, c-format -msgid "NT Version: %d\n" -msgstr "versione:" - -#: ../utils/net_ads.c:114 -#, c-format -msgid "LMNT Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:115 -#, c-format -msgid "LM20 Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:130 -msgid "" -"Usage:\n" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookup.\n" -msgstr "" - -#: ../utils/net_ads.c:137 ../utils/net_ads.c:381 -msgid "Didn't find the cldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:160 -msgid "" -"Usage:\n" -"net ads info\n" -" Display information about an Active Directory server.\n" -msgstr "" - -#: ../utils/net_ads.c:168 ../utils/net_ads.c:173 -msgid "Didn't find the ldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:182 -msgid "Failed to get server's current time!\n" -msgstr "" - -#: ../utils/net_ads.c:187 -#, c-format -msgid "LDAP server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:188 -#, c-format -msgid "LDAP server name: %s\n" -msgstr "" - -#: ../utils/net_ads.c:189 -#, c-format -msgid "Realm: %s\n" -msgstr "" - -#: ../utils/net_ads.c:190 -#, c-format -msgid "Bind Path: %s\n" -msgstr "" - -#: ../utils/net_ads.c:191 -#, c-format -msgid "LDAP port: %d\n" -msgstr "" - -#: ../utils/net_ads.c:192 -#, fuzzy, c-format -msgid "Server time: %s\n" -msgstr "Stato del Server" - -#: ../utils/net_ads.c:195 -#, c-format -msgid "KDC server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:196 -#, c-format -msgid "Server time offset: %d\n" -msgstr "" - -#: ../utils/net_ads.c:374 -msgid "" -"Usage:\n" -"net ads workgroup\n" -" Print the workgroup name\n" -msgstr "" - -#: ../utils/net_ads.c:397 -#, c-format -msgid "Workgroup: %s\n" -msgstr "" - -#: ../utils/net_ads.c:458 -#, c-format -msgid "ads_user_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:463 -#, c-format -msgid "ads_user_add: User %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:477 -#, c-format -msgid "Could not add user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:484 ../utils/net_ads.c:497 -#, fuzzy, c-format -msgid "User %s added\n" -msgstr " Nome Utente" - -#. password didn't set, delete account -#: ../utils/net_ads.c:503 -#, c-format -msgid "Could not add user %s. Error setting password %s\n" -msgstr "" - -#: ../utils/net_ads.c:551 -#, c-format -msgid "ads_user_info: failed to escape user %s\n" -msgstr "" - -#: ../utils/net_ads.c:569 -#, c-format -msgid "ads_search: %s\n" -msgstr "" - -#: ../utils/net_ads.c:575 -msgid "ads_pull_uint32 failed\n" -msgstr "" - -#: ../utils/net_ads.c:582 -#, c-format -msgid "ads_domain_sid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:642 -#, c-format -msgid "User %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:652 -#, c-format -msgid "User %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:656 -#, c-format -msgid "Error deleting user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:669 -#, fuzzy -msgid "Add an AD user" -msgstr "Aggiungi Nuovo Utente" - -#: ../utils/net_ads.c:670 -msgid "" -"net ads user add\n" -" Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:677 -msgid "Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:678 -msgid "" -"net ads user info\n" -" Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:685 -#, fuzzy -msgid "Delete an AD user" -msgstr "Cancella Utente" - -#: ../utils/net_ads.c:686 -msgid "" -"net ads user delete\n" -" Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:699 -msgid "" -"Usage:\n" -"net ads user\n" -" List AD users\n" -msgstr "" - -#: ../utils/net_ads.c:711 -msgid "" -"\n" -"User name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:751 -#, c-format -msgid "ads_group_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:756 -#, c-format -msgid "ads_group_add: Group %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:769 -#, c-format -msgid "Group %s added\n" -msgstr "" - -#: ../utils/net_ads.c:772 -#, c-format -msgid "Could not add group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:801 -#, c-format -msgid "Group %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:811 -#, c-format -msgid "Group %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:815 -#, c-format -msgid "Error deleting group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:828 -msgid "Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:829 -msgid "" -"net ads group add\n" -" Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:836 -#, fuzzy -msgid "Delete an AD group" -msgstr "Cancella Condivisione" - -#: ../utils/net_ads.c:837 -msgid "" -"net ads group delete\n" -" Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:850 -msgid "" -"Usage:\n" -"net ads group\n" -" List AD groups\n" -msgstr "" - -#: ../utils/net_ads.c:862 -msgid "" -"\n" -"Group name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:884 -msgid "" -"Usage:\n" -"net ads status\n" -" Display machine account details\n" -msgstr "" - -#: ../utils/net_ads.c:896 -#, c-format -msgid "ads_find_machine_acct: %s\n" -msgstr "" - -#: ../utils/net_ads.c:902 -#, c-format -msgid "No machine account for '%s' found\n" -msgstr "" - -#: ../utils/net_ads.c:926 -msgid "" -"Usage:\n" -"net ads leave\n" -" Leave an AD domain\n" -msgstr "" - -#: ../utils/net_ads.c:933 -msgid "No realm set, are we joined ?\n" -msgstr "" - -#: ../utils/net_ads.c:938 ../utils/net_ads.c:1260 -msgid "Could not initialise talloc context.\n" -msgstr "" - -#: ../utils/net_ads.c:948 -msgid "Could not initialise unjoin context.\n" -msgstr "" - -#: ../utils/net_ads.c:968 -#, c-format -msgid "Failed to leave domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:975 -#, c-format -msgid "Deleted account for '%s' in realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:982 -#, c-format -msgid "Disabled account for '%s' in realm '%s'\n" -msgstr "" - -#. Based on what we requseted, we shouldn't get here, but if -#. we did, it means the secrets were removed, and therefore -#. we have left the domain -#: ../utils/net_ads.c:991 -#, c-format -msgid "Machine '%s' Left domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1035 -msgid "" -"Usage:\n" -"net ads testjoin\n" -" Test if the existing join is ok\n" -msgstr "" - -#: ../utils/net_ads.c:1044 -#, c-format -msgid "Join to domain is not valid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1049 -#, c-format -msgid "Join is OK\n" -msgstr "" - -#: ../utils/net_ads.c:1060 -msgid "Host is not configured as a member server.\n" -msgstr "" - -#: ../utils/net_ads.c:1065 -#, c-format -msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" -msgstr "" - -#: ../utils/net_ads.c:1072 -#, c-format -msgid "realm must be set in in %s for ADS join to succeed.\n" -msgstr "" - -#: ../utils/net_ads.c:1105 -#, c-format -msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" -msgstr "" - -#: ../utils/net_ads.c:1212 -msgid "" -"net ads join [options]\n" -"Valid options:\n" -msgstr "" - -#: ../utils/net_ads.c:1214 -msgid "" -" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" -" The deault UPN is in the form host/netbiosname@REALM.\n" -msgstr "" - -#: ../utils/net_ads.c:1216 -msgid "" -" createcomputer=OU Precreate the computer account in a specific OU.\n" -" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" -" E.g. \"createcomputer=Computers/Servers/Unix\"\n" -" NB: A backslash '\\' is used as escape at multiple levels and may\n" -" need to be doubled or even quadrupled. It is not used as a separator.\n" -msgstr "" - -#: ../utils/net_ads.c:1221 -msgid " osName=string Set the operatingSystem attribute during the join.\n" -msgstr "" - -#: ../utils/net_ads.c:1222 -msgid "" -" osVer=string Set the operatingSystemVersion attribute during the join.\n" -" NB: osName and osVer must be specified together for either to take effect.\n" -" Also, the operatingSystemService attribute is also set when along with\n" -" the two other attributes.\n" -msgstr "" - -#: ../utils/net_ads.c:1254 -msgid "Invalid configuration. Exiting....\n" -msgstr "" - -#: ../utils/net_ads.c:1283 -msgid "Please supply a valid OU path.\n" -msgstr "" - -#: ../utils/net_ads.c:1290 -msgid "Please supply a operating system name.\n" -msgstr "" - -#: ../utils/net_ads.c:1297 -msgid "Please supply a valid operating system version.\n" -msgstr "" - -#: ../utils/net_ads.c:1308 -msgid "Please supply a valid domain name\n" -msgstr "" - -#: ../utils/net_ads.c:1339 -#, c-format -msgid "" -"The workgroup in %s does not match the short\n" -"domain name obtained from the server.\n" -"Using the name [%s] from the server.\n" -"You should set \"workgroup = %s\" in %s.\n" -msgstr "" - -#: ../utils/net_ads.c:1347 -#, c-format -msgid "Using short domain name -- %s\n" -msgstr "" - -#: ../utils/net_ads.c:1350 -#, c-format -msgid "Joined '%s' to realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1353 -#, c-format -msgid "Joined '%s' to domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1377 ../utils/net_ads.c:1433 -msgid "DNS update failed!\n" -msgstr "" - -#. issue an overall failure message at the end. -#: ../utils/net_ads.c:1391 ../utils/net_dom.c:198 -#, c-format -msgid "Failed to join domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1414 -msgid "" -"Usage:\n" -"net ads dns register\n" -" Register hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1421 -msgid "Could not initialise talloc context\n" -msgstr "" - -#: ../utils/net_ads.c:1439 -msgid "Successfully registered hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1447 -msgid "DNS update support not enabled at compile time!\n" -msgstr "" - -#: ../utils/net_ads.c:1466 -msgid "" -"Usage:\n" -"net ads dns gethostbyname \n" -" Look up hostname from the AD\n" -" server\tName server to use\n" -" name\tName to look up\n" -msgstr "" - -#: ../utils/net_ads.c:1476 -#, c-format -msgid "do_gethostbyname returned %d\n" -msgstr "" - -#: ../utils/net_ads.c:1488 -msgid "Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1489 -msgid "" -"net ads dns register\n" -" Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1496 -msgid "Look up host" -msgstr "" - -#: ../utils/net_ads.c:1497 -msgid "" -"net ads dns gethostbyname\n" -" Look up host" -msgstr "" - -#: ../utils/net_ads.c:1512 -msgid "" -"\n" -"net ads printer search \n" -"\tsearch for a printer in the directory\n" -"\n" -"net ads printer info \n" -"\tlookup info in directory for printer on server\n" -"\t(note: printer defaults to \"*\", server defaults to local)\n" -"\n" -"net ads printer publish \n" -"\tpublish printer in directory\n" -"\t(note: printer name is required)\n" -"\n" -"net ads printer remove \n" -"\tremove printer from directory\n" -"\t(note: printer name is required)\n" -msgstr "" - -#: ../utils/net_ads.c:1536 -msgid "" -"Usage:\n" -"net ads printer search\n" -" List printers in the AD\n" -msgstr "" - -#: ../utils/net_ads.c:1549 -#, c-format -msgid "ads_find_printer: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1556 -msgid "No results found\n" -msgstr "" - -#: ../utils/net_ads.c:1576 -msgid "" -"Usage:\n" -"net ads printer info [printername [servername]]\n" -" Display printer info from AD\n" -" printername\tPrinter name or wildcard\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1603 -#, c-format -msgid "Server '%s' not found: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1611 ../utils/net_ads.c:1794 -#, c-format -msgid "Printer '%s' not found\n" -msgstr "" - -#: ../utils/net_ads.c:1640 -msgid "" -"Usage:\n" -"net ads printer publish [servername]\n" -" Publish printer in AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1675 -#, c-format -msgid "Unable to open a connnection to %s to obtain data for %s\n" -msgstr "" - -#: ../utils/net_ads.c:1688 -#, c-format -msgid "Could not find machine account for server %s\n" -msgstr "" - -#: ../utils/net_ads.c:1704 ../utils/net_ads.c:1713 -msgid "Internal error, out of memory!" -msgstr "" - -#: ../utils/net_ads.c:1724 -#, c-format -msgid "Unable to open a connnection to the spoolss pipe on %s\n" -msgstr "" - -#: ../utils/net_ads.c:1766 -msgid "" -"Usage:\n" -"net ads printer remove [servername]\n" -" Remove a printer from the AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1787 -#, c-format -msgid "ads_find_printer_on_server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1806 -#, c-format -msgid "ads_del_dn: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1822 -msgid "Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1823 -msgid "" -"net ads printer search\n" -" Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1830 -msgid "Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1831 -msgid "" -"net ads printer info\n" -" Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1838 -msgid "Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1839 -msgid "" -"net ads printer publish\n" -" Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1846 -#, fuzzy -msgid "Delete a printer" -msgstr "Cancella Stampante" - -#: ../utils/net_ads.c:1847 -msgid "" -"net ads printer remove\n" -" Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1869 -msgid "" -"Usage:\n" -"net ads password \n" -" Change password for user\n" -" username\tName of user to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1877 -msgid "You must supply an administrator username/password\n" -msgstr "" - -#: ../utils/net_ads.c:1883 -msgid "ERROR: You must say which username to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1915 -msgid "Didn't find the kerberos server!\n" -msgstr "" - -#: ../utils/net_ads.c:1923 -#, c-format -msgid "Enter new password for %s:" -msgstr "" - -#: ../utils/net_ads.c:1933 ../utils/net_ads.c:1982 -#, fuzzy, c-format -msgid "Password change failed: %s\n" -msgstr "Gestione Password" - -#: ../utils/net_ads.c:1938 -#, fuzzy, c-format -msgid "Password change for %s completed.\n" -msgstr "cambio password in modalita' demo rigettata" - -#: ../utils/net_ads.c:1952 -msgid "" -"Usage:\n" -"net ads changetrustpw\n" -" Change the machine account's trust password\n" -msgstr "" - -#: ../utils/net_ads.c:1977 -#, c-format -msgid "Changing password for principal: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1988 -#, c-format -msgid "Password change for principal %s succeeded.\n" -msgstr "" - -#: ../utils/net_ads.c:1991 -msgid "Attempting to update system keytab with new password.\n" -msgstr "" - -#: ../utils/net_ads.c:1993 -msgid "Failed to update system keytab.\n" -msgstr "" - -#: ../utils/net_ads.c:2009 -msgid "" -"\n" -"net ads search \n" -"\n" -"Perform a raw LDAP search on a ADS server and dump the results.\n" -"The expression is a standard LDAP search expression, and the\n" -"attributes are a list of LDAP fields to show in the results.\n" -"\n" -"Example: net ads search '(objectCategory=group)' sAMAccountName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2046 ../utils/net_ads.c:2107 ../utils/net_ads.c:2171 ../utils/net_ads_gpo.c:250 -#, c-format -msgid "search failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2051 ../utils/net_ads.c:2176 ../utils/net_ads_gpo.c:256 -#, c-format -msgid "" -"Got %d replies\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2069 -msgid "" -"\n" -"net ads dn \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" -"\n" -"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2129 -msgid "" -"\n" -"net ads sid \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The SID is in string format, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads sid 'S-1-5-32' distinguishedName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2164 -msgid "could not convert sid\n" -msgstr "" - -#: ../utils/net_ads.c:2193 -msgid "" -"Usage:\n" -"net ads keytab flush\n" -" Delete the whole keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2214 -msgid "" -"Usage:\n" -"net ads keytab add [principal ...]\n" -" Add principals to local keytab\n" -" principal\tKerberos principal to add to keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2222 -msgid "Processing principals to add...\n" -msgstr "" - -#: ../utils/net_ads.c:2239 -msgid "" -"Usage:\n" -"net ads keytab create\n" -" Create new default keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2258 -msgid "" -"Usage:\n" -"net ads keytab list [keytab]\n" -" List a local keytab\n" -" keytab\tKeytab to list\n" -msgstr "" - -#: ../utils/net_ads.c:2280 -msgid "Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2281 -msgid "" -"net ads keytab add\n" -" Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2288 -#, fuzzy -msgid "Create a fresh keytab" -msgstr "Crea Condivisione" - -#: ../utils/net_ads.c:2289 -msgid "" -"net ads keytab create\n" -" Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2296 -msgid "Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2297 -msgid "" -"net ads keytab flush\n" -" Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2304 -msgid "List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2305 -msgid "" -"net ads keytab list\n" -" List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2312 -msgid "" -"\n" -"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" -msgstr "" - -#: ../utils/net_ads.c:2324 -msgid "" -"Usage:\n" -"net ads kerberos renew\n" -" Renew TGT from existing credential cache\n" -msgstr "" - -#: ../utils/net_ads.c:2332 -#, c-format -msgid "failed to renew kerberos ticket: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2347 -msgid "" -"Usage:\n" -"net ads kerberos pac\n" -" Dump the Kerberos PAC\n" -msgstr "" - -#: ../utils/net_ads.c:2372 -#, c-format -msgid "failed to query kerberos PAC: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2381 -#, c-format -msgid "The Pac: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2397 -msgid "" -"Usage:\n" -"net ads kerberos kinit\n" -" Get Ticket Granting Ticket (TGT) for the user\n" -msgstr "" - -#: ../utils/net_ads.c:2421 -#, c-format -msgid "failed to kinit password: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2435 -msgid "Retrieve Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2436 -msgid "" -"net ads kerberos kinit\n" -" Receive Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2443 -msgid "Renew Ticket Granting Ticket from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2444 -msgid "" -"net ads kerberos renew\n" -" Renew Ticket Granting Ticket (TGT) from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2452 -msgid "Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2453 -msgid "" -"net ads kerberos pac\n" -" Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2469 -msgid "Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2470 -msgid "" -"net ads info\n" -" Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2477 -msgid "Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2478 -msgid "" -"net ads join\n" -" Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2485 -msgid "Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2486 -msgid "" -"net ads testjoin\n" -" Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2493 -msgid "Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2494 -msgid "" -"net ads leave\n" -" Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2501 -msgid "Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2502 -msgid "" -"net ads status\n" -" Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2509 -msgid "List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2510 -msgid "" -"net ads user\n" -" List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2517 -msgid "List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2518 -msgid "" -"net ads group\n" -" List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2525 -msgid "Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2526 -msgid "" -"net ads dns\n" -" Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2533 -#, fuzzy -msgid "Change user passwords" -msgstr "Cambia Password" - -#: ../utils/net_ads.c:2534 -msgid "" -"net ads password\n" -" Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2541 -#, fuzzy -msgid "Change trust account password" -msgstr "Cambia Password" - -#: ../utils/net_ads.c:2542 -msgid "" -"net ads changetrustpw\n" -" Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2549 -msgid "List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2550 -msgid "" -"net ads printer\n" -" List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2557 -msgid "Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2558 -msgid "" -"net ads search\n" -" Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2565 -msgid "Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2566 -msgid "" -"net ads dn\n" -" Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2573 -msgid "Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2574 -msgid "" -"net ads sid\n" -" Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2581 -msgid "Display workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2582 -msgid "" -"net ads workgroup\n" -" Display the workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2589 -msgid "Perfom CLDAP query on DC" -msgstr "" - -#: ../utils/net_ads.c:2590 -msgid "" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookups" -msgstr "" - -#: ../utils/net_ads.c:2597 -msgid "Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2598 -msgid "" -"net ads keytab\n" -" Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2605 -msgid "Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2606 -msgid "" -"net ads gpo\n" -" Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2613 -msgid "Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2614 -msgid "" -"net ads kerberos\n" -" Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2627 -msgid "ADS support not compiled in\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:40 -msgid "" -"Usage:\n" -"net ads gpo refresh \n" -" Lists all GPOs assigned to an account and downloads them\n" -" username\tUser to refresh GPOs for\n" -" machinename\tMachine to refresh GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:56 -#, c-format -msgid "failed to connect AD server: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:62 -#, c-format -msgid "failed to find samaccount for %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:70 -#, c-format -msgid "" -"\n" -"%s: '%s' has dn: '%s'\n" -"\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "machine" -msgstr " Macchina Remota" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "user" -msgstr "Utente" - -#: ../utils/net_ads_gpo.c:74 -msgid "* fetching token " -msgstr "" - -#: ../utils/net_ads_gpo.c:82 ../utils/net_ads_gpo.c:90 ../utils/net_ads_gpo.c:102 ../utils/net_ads_gpo.c:113 ../utils/net_ads_gpo.c:158 -#, c-format -msgid "failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:85 ../utils/net_ads_gpo.c:94 ../utils/net_ads_gpo.c:105 ../utils/net_ads_gpo.c:118 ../utils/net_ads_gpo.c:163 -msgid "finished\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:87 -msgid "* fetching GPO List " -msgstr "" - -#: ../utils/net_ads_gpo.c:96 -msgid "* Refreshing Group Policy Data " -msgstr "" - -#: ../utils/net_ads_gpo.c:107 -msgid "* storing GPO list to registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:122 -msgid "* dumping GPO list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:151 -msgid "* re-reading GPO list from registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:167 -msgid "* dumping GPO list from registry\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:226 -msgid "" -"Usage:\n" -"net ads gpo listall\n" -" List all GPOs on the DC\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:270 -#, fuzzy, c-format -msgid "ads_parse_gpo failed: %s\n" -msgstr "Gestione Password" - -#: ../utils/net_ads_gpo.c:300 -msgid "" -"Usage:\n" -"net ads gpo list \n" -" Lists all GPOs for machine/user\n" -" username\tUser to list GPOs for\n" -" machinename\tMachine to list GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:327 -#, c-format -msgid "%s: '%s' has dn: '%s'\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:451 -msgid "" -"Usage:\n" -"net ads gpo linkget \n" -" Lists gPLink of a containter\n" -" container\tContainer to get link for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:470 -#, c-format -msgid "get link for %s failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:492 -msgid "" -"Usage:\n" -"net ads gpo linkadd [options]\n" -" Link a container to a GPO\n" -" linkdn\tContainer to link to a GPO\n" -" gpodn\tGPO to link container to\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:497 -msgid "" -"note: DNs must be provided properly escaped.\n" -"See RFC 4514 for details\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:518 -#, c-format -msgid "link add failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:579 -msgid "" -"Usage:\n" -"net ads gpo getgpo \n" -" List speciefied GPO\n" -" gpo\t\tGPO to list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:603 -#, c-format -msgid "get gpo for [%s] failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:634 -msgid "List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:635 -msgid "" -"net ads gpo getgpo\n" -" List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:642 -msgid "Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:643 -msgid "" -"net ads gpo linkadd\n" -" Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:660 -msgid "Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:661 -msgid "" -"net ads gpo linkget\n" -" Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:668 -msgid "Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:669 -msgid "" -"net ads gpo list\n" -" Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:676 -msgid "Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:677 -msgid "" -"net ads gpo listall\n" -" Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:684 -msgid "Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_ads_gpo.c:686 -msgid "" -"net ads gpo refresh\n" -" Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_afs.c:25 -msgid "" -" net afs key filename\n" -"\tImports a OpenAFS KeyFile into our secrets.tdb\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:27 -msgid "" -" net afs impersonate \n" -"\tCreates a token for user@cell\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:38 -msgid "usage: 'net afs key cell'\n" -msgstr "" - -#: ../utils/net_afs.c:43 -msgid "Could not open secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:48 -#, c-format -msgid "Could not open %s\n" -msgstr "" - -#: ../utils/net_afs.c:53 -msgid "Could not read keyfile\n" -msgstr "" - -#: ../utils/net_afs.c:58 -msgid "Could not write keyfile to secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:71 -#, c-format -msgid "Usage: net afs impersonate \n" -msgstr "" - -#: ../utils/net_afs.c:78 -#, c-format -msgid "Could not create token\n" -msgstr "" - -#: ../utils/net_afs.c:83 -#, c-format -msgid "Could not set token into kernel\n" -msgstr "" - -#: ../utils/net_afs.c:87 -#, c-format -msgid "Success: %s@%s\n" -msgstr "" - -#: ../utils/net_afs.c:98 -msgid "Import an OpenAFS keyfile" -msgstr "" - -#: ../utils/net_afs.c:99 -msgid "" -"net afs key \n" -" Import kefile from ." -msgstr "" - -#: ../utils/net_afs.c:106 -msgid "Get a user token" -msgstr "" - -#: ../utils/net_afs.c:107 -msgid "" -"net afs impersonate \n" -" Create token for user@cell" -msgstr "" - -#: ../utils/net_cache.c:74 -#, c-format -msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" -msgstr "" - -#: ../utils/net_cache.c:75 -msgid "(expired)" -msgstr "" - -#: ../utils/net_cache.c:84 -#, c-format -msgid "Couldn't delete entry! key = %s\n" -msgstr "" - -#: ../utils/net_cache.c:158 -msgid "" -"\n" -"Usage:\n" -"net cache add \n" -msgstr "" - -#: ../utils/net_cache.c:170 -msgid "Invalid timeout argument.\n" -msgstr "" - -#: ../utils/net_cache.c:175 -msgid "New cache entry stored successfully.\n" -msgstr "" - -#: ../utils/net_cache.c:179 -msgid "Entry couldn't be added. Perhaps there's already such a key.\n" -msgstr "" - -#: ../utils/net_cache.c:195 -msgid "" -"\n" -"Usage: net cache del \n" -msgstr "" - -#: ../utils/net_cache.c:200 -msgid "Entry deleted.\n" -msgstr "" - -#: ../utils/net_cache.c:204 -msgid "Couldn't delete specified entry\n" -msgstr "" - -#: ../utils/net_cache.c:223 -msgid "" -"\n" -"Usage: net cache get \n" -msgstr "" - -#: ../utils/net_cache.c:233 -msgid "Failed to find entry\n" -msgstr "" - -#: ../utils/net_cache.c:250 -msgid "Usage: net cache search \n" -msgstr "" - -#: ../utils/net_cache.c:272 -msgid "" -"Usage:\n" -"net cache list\n" -" List all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:293 ../utils/net_cache.c:306 -msgid "" -"Usage:\n" -"net cache flush\n" -" Delete all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:331 -msgid "Add new cache entry" -msgstr "" - -#: ../utils/net_cache.c:332 -msgid "" -"net cache add \n" -" Add new cache entry.\n" -" key string\tKey string to add cache data under.\n" -" data string\tData to store under given key.\n" -" timeout\tTimeout for cache data." -msgstr "" - -#: ../utils/net_cache.c:342 -msgid "Delete existing cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:343 -msgid "" -"net cache del \n" -" Delete existing cache entry by key.\n" -" key string\tKey string to delete." -msgstr "" - -#: ../utils/net_cache.c:351 -msgid "Get cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:352 -msgid "" -"net cache get \n" -" Get cache entry by key.\n" -" key string\tKey string to look up cache entry for." -msgstr "" - -#: ../utils/net_cache.c:361 -msgid "Search entry by pattern" -msgstr "" - -#: ../utils/net_cache.c:362 -msgid "" -"net cache search \n" -" Search entry by pattern.\n" -" pattern\tPattern to search for in cache." -msgstr "" - -#: ../utils/net_cache.c:370 -msgid "List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:371 -msgid "" -"net cache list\n" -" List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:378 -#, fuzzy -msgid "Delete all cache entries" -msgstr "Cancella Stampante" - -#: ../utils/net_cache.c:379 -msgid "" -"net cache flush\n" -" Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:386 -msgid "Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_cache.c:387 -msgid "" -"net cache stabilize\n" -" Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_conf.c:42 -msgid "USAGE: net conf list\n" -msgstr "" - -#: ../utils/net_conf.c:49 -msgid "" -"USAGE: net conf import [--test|-T] []\n" -"\t[--test|-T] testmode - do not act, just print what would be done\n" -"\t only import service , ignore the rest\n" -msgstr "" - -#: ../utils/net_conf.c:61 -msgid "USAGE: net conf listshares\n" -msgstr "" - -#: ../utils/net_conf.c:68 -msgid "USAGE: net conf drop\n" -msgstr "" - -#: ../utils/net_conf.c:75 -msgid "USAGE: net conf showshare \n" -msgstr "" - -#: ../utils/net_conf.c:82 -msgid "" -"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" -"\t the new share name.\n" -"\t the path on the filesystem to export.\n" -"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" -"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" -"\t optional comment for the new share.\n" -msgstr "" - -#: ../utils/net_conf.c:97 -msgid "USAGE: net conf delshare \n" -msgstr "" - -#: ../utils/net_conf.c:104 -msgid "USAGE: net conf setparm

\n" -msgstr "" - -#: ../utils/net_conf.c:111 -msgid "USAGE: net conf getparm
\n" -msgstr "" - -#: ../utils/net_conf.c:118 -msgid "USAGE: net conf delparm
\n" -msgstr "" - -#: ../utils/net_conf.c:125 -msgid "USAGE: net conf getincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:132 -msgid "USAGE: net conf setincludes
[]*\n" -msgstr "" - -#: ../utils/net_conf.c:139 -msgid "USAGE: net conf delincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:251 -#, c-format -msgid "Error getting config: %s\n" -msgstr "" - -#: ../utils/net_conf.c:305 ../utils/net_conf.c:318 ../utils/net_conf.c:614 ../utils/net_conf.c:742 ../utils/net_conf.c:780 ../utils/net_conf.c:786 ../utils/net_conf.c:860 ../utils/net_conf.c:866 ../utils/net_conf.c:916 ../utils/net_conf.c:970 -#: ../utils/net_conf.c:1010 ../utils/net_conf.c:1050 -msgid "error: out of memory!\n" -msgstr "" - -#: ../utils/net_conf.c:324 -#, c-format -msgid "error loading file '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:330 -msgid "" -"\n" -"TEST MODE - would import the following configuration:\n" -"\n" -msgstr "" - -#: ../utils/net_conf.c:346 ../utils/net_conf.c:382 ../utils/net_conf.c:407 ../utils/net_conf.c:793 -#, c-format -msgid "error starting transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:400 ../utils/net_conf.c:416 ../utils/net_conf.c:817 -#, c-format -msgid "error committing transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:427 ../utils/net_conf.c:828 -#, c-format -msgid "error cancelling transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:484 -#, c-format -msgid "Error deleting configuration: %s\n" -msgstr "" - -#: ../utils/net_conf.c:521 -#, c-format -msgid "error getting share parameters: %s\n" -msgstr "" - -#: ../utils/net_conf.c:630 -#, c-format -msgid "ERROR: share name %s contains invalid characters (any of %s)\n" -msgstr "" - -#: ../utils/net_conf.c:638 -msgid "ERROR: 'global' is not a valid share name.\n" -msgstr "" - -#: ../utils/net_conf.c:643 -#, c-format -msgid "ERROR: share %s already exists.\n" -msgstr "" - -#: ../utils/net_conf.c:652 -#, c-format -msgid "Error: path '%s' is not an absolute path.\n" -msgstr "" - -#: ../utils/net_conf.c:659 -#, c-format -msgid "" -"ERROR: cannot stat path '%s' to ensure this is a directory.\n" -"Error was '%s'.\n" -msgstr "" - -#: ../utils/net_conf.c:668 -#, c-format -msgid "ERROR: path '%s' is not a directory.\n" -msgstr "" - -#: ../utils/net_conf.c:679 -#, c-format -msgid "Error creating share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:690 ../utils/net_conf.c:699 ../utils/net_conf.c:707 ../utils/net_conf.c:715 -#, c-format -msgid "Error setting parameter %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:748 -#, c-format -msgid "Error deleting share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:801 -#, c-format -msgid "Error creating share '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:810 -#, c-format -msgid "Error setting value '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:874 ../utils/net_conf.c:930 -#, c-format -msgid "Error: given service '%s' does not exist.\n" -msgstr "" - -#: ../utils/net_conf.c:879 ../utils/net_conf.c:935 -#, c-format -msgid "Error: given parameter '%s' is not set.\n" -msgstr "" - -#: ../utils/net_conf.c:883 -#, c-format -msgid "Error getting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:939 -#, c-format -msgid "Error deleting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:977 -#, c-format -msgid "error getting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1023 -#, c-format -msgid "error setting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1056 -#, c-format -msgid "error deleting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1136 ../utils/net_help.c:36 -msgid "Usage:\n" -msgstr "" - -#: ../utils/net_conf.c:1160 -msgid "Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1162 -msgid "" -"net conf list\n" -" Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1171 -msgid "Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1173 -msgid "" -"net conf import\n" -" Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1181 -msgid "List the share names." -msgstr "" - -#: ../utils/net_conf.c:1182 -msgid "" -"net conf listshares\n" -" List the share names." -msgstr "" - -#: ../utils/net_conf.c:1189 -msgid "Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1190 -msgid "" -"net conf drop\n" -" Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1197 -msgid "Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1198 -msgid "" -"net conf showshare\n" -" Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1205 -#, fuzzy -msgid "Create a new share." -msgstr "Crea Condivisione" - -#: ../utils/net_conf.c:1206 -msgid "" -"net conf addshare\n" -" Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1213 -#, fuzzy -msgid "Delete a share." -msgstr "Cancella Condivisione" - -#: ../utils/net_conf.c:1214 -msgid "" -"net conf delshare\n" -" Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1221 -#, fuzzy -msgid "Store a parameter." -msgstr "Parametri Condivisioni" - -#: ../utils/net_conf.c:1222 -msgid "" -"net conf setparm\n" -" Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1229 -msgid "Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1230 -msgid "" -"net conf getparm\n" -" Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1237 -#, fuzzy -msgid "Delete a parameter." -msgstr "Cancella Stampante" - -#: ../utils/net_conf.c:1238 -msgid "" -"net conf delparm\n" -" Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1245 -msgid "Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1246 -msgid "" -"net conf getincludes\n" -" Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1253 -msgid "Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1254 -msgid "" -"net conf setincludes\n" -" Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1261 -msgid "Delete includes from a share definition." -msgstr "" - -#: ../utils/net_conf.c:1262 -msgid "" -"net conf setincludes\n" -" Delete includes from a share definition." -msgstr "" - -#: ../utils/net_dom.c:25 -msgid "" -"usage: net dom join \n" -" Join a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:28 -msgid "" -"usage: net dom unjoin \n" -" Unjoin a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:31 -msgid "" -"usage: net dom renamecomputer \n" -" Rename joined computer\n" -msgstr "" - -#: ../utils/net_dom.c:91 -#, c-format -msgid "Failed to unjoin domain: %s\n" -msgstr "" - -#: ../utils/net_dom.c:97 ../utils/net_dom.c:204 -msgid "Shutting down due to a domain membership change" -msgstr "" - -#: ../utils/net_dom.c:290 -#, c-format -msgid "Failed to rename machine: " -msgstr "" - -#: ../utils/net_dom.c:292 -#, c-format -msgid "Computer is not joined to a Domain\n" -msgstr "" - -#: ../utils/net_dom.c:301 -msgid "Shutting down due to a computer rename" -msgstr "" - -#: ../utils/net_dom.c:338 -#, fuzzy -msgid "Join a remote machine" -msgstr " Macchina Remota" - -#: ../utils/net_dom.c:339 -msgid "" -"net dom join \n" -" Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:347 -#, fuzzy -msgid "Unjoin a remote machine" -msgstr " Macchina Remota" - -#: ../utils/net_dom.c:348 -msgid "" -"net dom unjoin \n" -" Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:356 -msgid "Rename a computer that is joined to a domain" -msgstr "" - -#: ../utils/net_dom.c:357 -msgid "" -"net dom renamecomputer \n" -" Rename joined computer" -msgstr "" - -#: ../utils/net_eventlog.c:46 -msgid "usage: net eventlog dump \n" -msgstr "" - -#: ../utils/net_eventlog.c:52 ../utils/net_eventlog.c:108 -#, c-format -msgid "failed to load evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:59 ../utils/net_eventlog.c:129 -#, fuzzy, c-format -msgid "evt pull failed: %s\n" -msgstr "Gestione Password" - -#: ../utils/net_eventlog.c:102 -msgid "usage: net eventlog import \n" -msgstr "" - -#: ../utils/net_eventlog.c:116 -#, fuzzy, c-format -msgid "evt header pull failed: %s\n" -msgstr "Gestione Password" - -#: ../utils/net_eventlog.c:122 -msgid "input file is wrapped, cannot proceed\n" -msgstr "" - -#: ../utils/net_eventlog.c:138 ../utils/net_eventlog.c:203 -#, c-format -msgid "can't open the eventlog TDB (%s)\n" -msgstr "" - -#: ../utils/net_eventlog.c:158 -#, c-format -msgid "can't write to the eventlog: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:164 -#, c-format -msgid "wrote %d entries to tdb\n" -msgstr "" - -#: ../utils/net_eventlog.c:197 -msgid "usage: net eventlog export \n" -msgstr "" - -#: ../utils/net_eventlog.c:214 -#, c-format -msgid "failed to save evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:243 -msgid "Dump eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:244 -msgid "" -"net eventlog dump\n" -" Dump win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:251 -#, fuzzy -msgid "Import eventlog" -msgstr "Nota Importante:" - -#: ../utils/net_eventlog.c:252 -msgid "" -"net eventlog import\n" -" Import win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:259 -msgid "Export eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:260 -msgid "" -"net eventlog export\n" -" Export win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_file.c:27 -msgid "" -"net [] file [misc. options] [targets]\n" -"\tlists all open files on file server\n" -msgstr "" - -#: ../utils/net_file.c:29 -msgid "" -"net [] file USER [misc. options] [targets]\n" -"\tlists all files opened by username on file server\n" -msgstr "" - -#: ../utils/net_file.c:32 -msgid "" -"net [] file CLOSE [misc. options] [targets]\n" -"\tcloses specified file on target server\n" -msgstr "" - -#: ../utils/net_file.c:34 -msgid "" -"net [rap] file INFO [misc. options] [targets]\n" -"\tdisplays information about the specified open file\n" -msgstr "" - -#: ../utils/net_group.c:27 -msgid "" -"net [] group [misc. options] [targets]\n" -"\tList user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:29 -msgid "" -"net rpc group LIST [global|local|builtin]* [misc. options]\n" -"\tList specific user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:31 -msgid "" -"net [] group DELETE [misc. options] [targets]\n" -"\tDelete specified group\n" -msgstr "" - -#: ../utils/net_group.c:34 -msgid "" -"\n" -"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" -"\tCreate specified group\n" -msgstr "" - -#: ../utils/net_group.c:37 -msgid "" -"\n" -"net rpc group MEMBERS \n" -"\tList Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:38 -msgid "" -"\n" -"net rpc group ADDMEM \n" -"\tAdd Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:40 -msgid "" -"\n" -"net rpc group DELMEM \n" -"\tDelete Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:44 -msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" -msgstr "" - -#: ../utils/net_group.c:46 -msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" -msgstr "" - -#: ../utils/net_group.c:48 -msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" -msgstr "" - -#: ../utils/net_groupmap.c:38 -#, c-format -msgid "NT Group %s doesn't exist in mapping DB\n" -msgstr "" - -#: ../utils/net_groupmap.c:46 -#, c-format -msgid "converting sid %s from a string failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:65 -#, c-format -msgid "\tSID : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:66 -#, c-format -msgid "\tUnix gid : %u\n" -msgstr "" - -#: ../utils/net_groupmap.c:67 -#, c-format -msgid "\tUnix group: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:68 -#, c-format -msgid "\tGroup type: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:70 -#, c-format -msgid "\tComment : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:84 -msgid "" -"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" -" verbose\tPrint verbose list\n" -" ntgroup\tNT group to list\n" -" sid\tSID of group to list" -msgstr "" - -#: ../utils/net_groupmap.c:91 ../utils/net_groupmap.c:271 ../utils/net_groupmap.c:356 ../utils/net_groupmap.c:412 ../utils/net_groupmap.c:495 ../utils/net_groupmap.c:522 -#, fuzzy, c-format -msgid "" -"Usage:\n" -"%s\n" -msgstr " Nome Utente" - -#: ../utils/net_groupmap.c:106 ../utils/net_groupmap.c:213 ../utils/net_groupmap.c:220 ../utils/net_groupmap.c:365 ../utils/net_groupmap.c:372 ../utils/net_groupmap.c:504 -msgid "must supply a name\n" -msgstr "" - -#: ../utils/net_groupmap.c:113 ../utils/net_groupmap.c:227 ../utils/net_groupmap.c:511 -msgid "must supply a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:118 ../utils/net_groupmap.c:265 ../utils/net_groupmap.c:406 ../utils/net_groupmap.c:516 -#, fuzzy, c-format -msgid "Bad option: %s\n" -msgstr "Opzioni Basilari" - -#: ../utils/net_groupmap.c:139 -msgid "Failure to local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:181 -msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" -msgstr "" - -#: ../utils/net_groupmap.c:195 -#, fuzzy, c-format -msgid "" -"Usage\n" -"%s\n" -msgstr " Nome Utente" - -#: ../utils/net_groupmap.c:205 -#, c-format -msgid "RID must be greater than %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:235 ../utils/net_groupmap.c:380 -msgid "must supply a comment string\n" -msgstr "" - -#: ../utils/net_groupmap.c:259 -#, c-format -msgid "unknown group type %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:276 -#, c-format -msgid "Can't lookup UNIX group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:282 -#, c-format -msgid "Unix group %s already mapped to SID %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:289 -msgid "No rid or sid specified, choosing a RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:292 -msgid "Could not get new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:297 -#, c-format -msgid "Got RID %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:328 -#, c-format -msgid "adding entry for group %s failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:332 -#, c-format -msgid "Successfully added group %s to the mapping db as a %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:349 -msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" -msgstr "" - -#: ../utils/net_groupmap.c:388 -msgid "must supply a group name\n" -msgstr "" - -#: ../utils/net_groupmap.c:434 -msgid "Failed to find local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:443 -msgid "Can't map to an unknown group type.\n" -msgstr "" - -#: ../utils/net_groupmap.c:449 -msgid "You can only change between domain and local groups.\n" -msgstr "" - -#: ../utils/net_groupmap.c:466 -#, c-format -msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" -msgstr "" - -#: ../utils/net_groupmap.c:476 -msgid "Could not update group database\n" -msgstr "" - -#: ../utils/net_groupmap.c:480 -#, c-format -msgid "Updated mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:491 -msgid "net groupmap delete {ntgroup=|sid=}" -msgstr "" - -#: ../utils/net_groupmap.c:532 -#, c-format -msgid "Unable to resolve group %s to a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:539 -#, c-format -msgid "Failed to remove group %s from the mapping db!\n" -msgstr "" - -#: ../utils/net_groupmap.c:544 -#, c-format -msgid "Sucessfully removed %s from the mapping db\n" -msgstr "" - -#: ../utils/net_groupmap.c:557 -msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" -msgstr "" - -#: ../utils/net_groupmap.c:563 -msgid "Can only specify -L or -D, not both\n" -msgstr "" - -#: ../utils/net_groupmap.c:573 -#, c-format -msgid "Could not find unix group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:594 -#, c-format -msgid "Could not find group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:605 -msgid "Could not allocate new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:622 -#, c-format -msgid "Could not add mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:633 -#, c-format -msgid "Can't change type of the BUILTIN group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:660 -#, c-format -msgid "Could not update group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:674 -msgid "" -"Usage:\n" -"net groupmap cleanup\n" -" Delete all group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:682 -msgid "Could not list group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:689 -#, c-format -msgid "Group %s is not mapped\n" -msgstr "" - -#: ../utils/net_groupmap.c:692 -#, c-format -msgid "Deleting mapping for NT Group %s, sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:712 -msgid "Usage: net groupmap addmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:717 -#, c-format -msgid "Could not add sid %s to alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:733 -msgid "Usage: net groupmap delmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:738 -#, c-format -msgid "Could not delete sid %s from alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:755 -msgid "Usage: net groupmap listmem alias-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:764 -#, c-format -msgid "Could not list members for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:791 -#, c-format -msgid "Could not list memberships for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:814 -msgid "Usage: net groupmap memberof sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:820 ../utils/net_idmap.c:345 -msgid "talloc_init failed\n" -msgstr "" - -#: ../utils/net_groupmap.c:827 -msgid "Could not get domain sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:850 -msgid "Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:851 -msgid "" -"net groupmap add\n" -" Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:858 -msgid "Update a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:859 -msgid "" -"net groupmap modify\n" -" Modify an existing group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:866 -msgid "Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:867 -msgid "" -"net groupmap delete\n" -" Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:874 -msgid "Set group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:875 -msgid "" -"net groupmap set\n" -" Set a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:882 -msgid "Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:883 -msgid "" -"net groupmap cleanup\n" -" Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:890 -msgid "Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:891 -msgid "" -"net groupmap addmem\n" -" Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:898 -msgid "Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:899 -msgid "" -"net groupmap delmem\n" -" Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:906 -msgid "List foreign group members" -msgstr "" - -#: ../utils/net_groupmap.c:907 -msgid "" -"net groupmap listmem\n" -" List foreign alias members" -msgstr "" - -#: ../utils/net_groupmap.c:914 -msgid "List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:915 -msgid "" -"net groupmap memberships\n" -" List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:922 -msgid "List current group map" -msgstr "" - -#: ../utils/net_groupmap.c:923 -msgid "" -"net groupmap list\n" -" List current group map" -msgstr "" - -#: ../utils/net_help.c:39 -#, c-format -msgid "net %s usage:\n" -msgstr "" - -#: ../utils/net_help_common.c:25 ../utils/net_join.c:28 -msgid "Valid methods: (auto-detected if not specified)\n" -msgstr "" - -#: ../utils/net_help_common.c:26 ../utils/net_join.c:29 -msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" -msgstr "" - -#: ../utils/net_help_common.c:27 ../utils/net_join.c:30 -msgid "\trpc\t\t\t\tDCE-RPC\n" -msgstr "" - -#: ../utils/net_help_common.c:28 -msgid "\trap\t\t\t\tRAP (older systems)\n" -msgstr "" - -#: ../utils/net_help_common.c:35 -msgid "Valid targets: choose one (none defaults to localhost)\n" -msgstr "" - -#: ../utils/net_help_common.c:36 -msgid "\t-S or --server=\t\tserver name\n" -msgstr "" - -#: ../utils/net_help_common.c:37 -msgid "\t-I or --ipaddress=\taddress of target server\n" -msgstr "" - -#: ../utils/net_help_common.c:38 -msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" -msgstr "" - -#: ../utils/net_help_common.c:41 -#, fuzzy -msgid "Valid miscellaneous options are:\n" -msgstr "Opzioni Generiche" - -#. misc options -#: ../utils/net_help_common.c:42 -msgid "\t-p or --port=\t\tconnection port on target\n" -msgstr "" - -#: ../utils/net_help_common.c:43 -msgid "\t-W or --myworkgroup=\tclient workgroup\n" -msgstr "" - -#: ../utils/net_help_common.c:44 -msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" -msgstr "" - -#: ../utils/net_help_common.c:45 -msgid "\t-n or --myname=\t\tclient name\n" -msgstr "" - -#: ../utils/net_help_common.c:46 -msgid "\t-U or --user=\t\tuser name\n" -msgstr "" - -#: ../utils/net_help_common.c:47 -msgid "\t-s or --configfile=\tpathname of smb.conf file\n" -msgstr "" - -#: ../utils/net_help_common.c:48 -msgid "\t-l or --long\t\t\tDisplay full information\n" -msgstr "" - -#: ../utils/net_help_common.c:49 -msgid "\t-V or --version\t\t\tPrint samba version information\n" -msgstr "" - -#: ../utils/net_help_common.c:50 -msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" -msgstr "" - -#: ../utils/net_help_common.c:52 -msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" -msgstr "" - -#: ../utils/net_help_common.c:54 -msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" -msgstr "" - -#: ../utils/net_idmap.c:25 -msgid "Out of memory!\n" -msgstr "" - -#: ../utils/net_idmap.c:39 -#, c-format -msgid "USER HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:44 -#, c-format -msgid "GROUP HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:63 -msgid "" -"Usage:\n" -"net idmap dump \n" -" Dump current ID mapping.\n" -" inputfile\tTDB file to read mappings from.\n" -msgstr "" - -#: ../utils/net_idmap.c:73 -#, c-format -msgid "Could not open idmap: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:94 -msgid "" -"Usage:\n" -"net idmap restore [inputfile]\n" -" Restore ID mappings from file\n" -" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" -msgstr "" - -#: ../utils/net_idmap.c:104 -msgid "To use net idmap Winbindd must be running.\n" -msgstr "" - -#: ../utils/net_idmap.c:142 -#, c-format -msgid "Could not set USER HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:151 -#, c-format -msgid "Could not set GROUP HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:156 -#, c-format -msgid "ignoring invalid line [%s]\n" -msgstr "" - -#: ../utils/net_idmap.c:163 -#, c-format -msgid "ignoring invalid sid [%s]: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:175 -#, c-format -msgid "Could not set mapping of %s %lu to sid %s: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:196 ../utils/net_idmap.c:202 -msgid "Not Implemented yet\n" -msgstr "" - -#: ../utils/net_idmap.c:240 -msgid "" -"Usage:\n" -"net idmap secret {|alloc} \n" -" Set the secret for the specified domain (or alloc module)\n" -" DOMAIN\tDomain to set secret for.\n" -" alloc\tSet secret for the alloc module\n" -" secret\tNew secret to set.\n" -msgstr "" - -#: ../utils/net_idmap.c:271 -msgid "The only currently supported backend is LDAP\n" -msgstr "" - -#: ../utils/net_idmap.c:281 -#, c-format -msgid "Missing ldap_user_dn option for domain %s\n" -msgstr "" - -#: ../utils/net_idmap.c:292 -msgid "Missing ldap_user_dn option for alloc backend\n" -msgstr "" - -#: ../utils/net_idmap.c:302 -msgid "Failed to store secret\n" -msgstr "" - -#: ../utils/net_idmap.c:307 -msgid "Secret stored\n" -msgstr "" - -#: ../utils/net_idmap.c:313 -msgid "" -"net idmap dump \n" -" Dump current id mapping\n" -msgstr "" - -#: ../utils/net_idmap.c:316 -msgid "" -"net idmap restore\n" -" Restore entries from stdin\n" -msgstr "" - -#. Deliberately *not* document net idmap delete -#: ../utils/net_idmap.c:321 -msgid "" -"net idmap secret |alloc \n" -" Set the secret for the specified DOMAIN (or the alloc module)\n" -msgstr "" - -#: ../utils/net_idmap.c:339 -msgid "usage: net idmap aclmapset \n" -msgstr "" - -#: ../utils/net_idmap.c:351 -#, fuzzy, c-format -msgid "db_open failed: %s\n" -msgstr "Gestione Password" - -#: ../utils/net_idmap.c:356 ../utils/net_idmap.c:361 -#, c-format -msgid "%s is not a valid sid\n" -msgstr "" - -#: ../utils/net_idmap.c:367 -msgid "talloc_strdup failed\n" -msgstr "" - -#: ../utils/net_idmap.c:373 -msgid "could not fetch db record\n" -msgstr "" - -#: ../utils/net_idmap.c:381 -#, c-format -msgid "could not store record: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:402 -msgid "Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:403 -msgid "" -"net idmap dump\n" -" Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:410 -msgid "Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:411 -msgid "" -"net idmap restore\n" -" Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:418 ../utils/net_idmap.c:426 -msgid "Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:419 -msgid "" -"net idmap setmap\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:427 -msgid "" -"net idmap delete\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:434 -msgid "Set secret for specified domain" -msgstr "" - -#: ../utils/net_idmap.c:435 -msgid "" -"net idmap secret {|alloc} \n" -" Set secret for specified domain or alloc module" -msgstr "" - -#: ../utils/net_idmap.c:442 -msgid "Set acl map" -msgstr "" - -#: ../utils/net_idmap.c:443 -msgid "" -"net idmap aclmapset\n" -" Set acl map" -msgstr "" - -#: ../utils/net_join.c:26 -msgid "" -"\n" -"net [] join [misc. options]\n" -"\tjoins this server to a domain\n" -msgstr "" - -#: ../utils/net_join.c:47 -msgid "ADS join did not work, falling back to RPC...\n" -msgstr "" - -#: ../utils/net_lookup.c:25 -msgid "" -" net lookup [host] HOSTNAME[#]\n" -"\tgives IP for a hostname\n" -"\n" -" net lookup ldap [domain]\n" -"\tgives IP of domain's ldap server\n" -"\n" -" net lookup kdc [realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup pdc [domain|realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup dc [domain]\n" -"\tgives IP of domains Domain Controllers\n" -"\n" -" net lookup master [domain|wg]\n" -"\tgive IP of master browser\n" -"\n" -" net lookup name [name]\n" -"\tLookup name's sid and type\n" -"\n" -" net lookup sid [sid]\n" -"\tGive sid's name and type\n" -"\n" -" net lookup dsgetdcname [name] [flags] [sitename]\n" -"\n" -msgstr "" - -#: ../utils/net_lookup.c:112 -msgid "net_lookup_ldap: talloc_init() failed!\n" -msgstr "" - -#: ../utils/net_lookup.c:325 -msgid "usage: net lookup name \n" -msgstr "" - -#: ../utils/net_lookup.c:331 ../utils/net_lookup.c:358 -#, c-format -msgid "Could not lookup name %s\n" -msgstr "" - -#: ../utils/net_lookup.c:347 -msgid "usage: net lookup sid \n" -msgstr "" - -#: ../utils/net_lookup.c:352 -#, c-format -msgid "Could not convert %s to SID\n" -msgstr "" - -#: ../utils/net_lookup.c:378 -msgid "usage: net lookup dsgetdcname \n" -msgstr "" - -#: ../utils/net_lookup.c:404 -#, c-format -msgid "failed with: %s\n" -msgstr "" - -#: ../utils/net_lookup.c:437 -msgid "" -"\n" -"Usage: \n" -msgstr "" - -#: ../utils/net_lua.c:60 -msgid "connect: Expected IP-Address" -msgstr "" - -#: ../utils/net_lua.c:65 -msgid "connect: Expected port" -msgstr "" - -#: ../utils/net_lua.c:84 -#, fuzzy, c-format -msgid "connect failed: %s" -msgstr "Gestione Password" - -#: ../utils/net_lua.c:132 -#, c-format -msgid "socket domain %s unknown" -msgstr "" - -#: ../utils/net_lua.c:144 -#, c-format -msgid "socket type %s unknown" -msgstr "" - -#: ../utils/net_lua.c:155 -#, fuzzy, c-format -msgid "socket() failed: %s" -msgstr "Gestione Password" - -#: ../utils/net_lua.c:278 -msgid "evt_reference_thread failed\n" -msgstr "" - -#: ../utils/net_lua.c:287 -msgid "event_add_timed failed" -msgstr "" - -#: ../utils/net_lua.c:300 -msgid "event_once called from non-base thread" -msgstr "" - -#: ../utils/net_lua.c:323 -msgid "event_context_init failed" -msgstr "" - -#: ../utils/net_lua.c:353 -msgid "lua_newstate failed\n" -msgstr "" - -#: ../utils/net_lua.c:371 -msgid "luaL_dofile returned an error\n" -msgstr "" - -#: ../utils/net_lua.c:376 -msgid "luaL_dostring returned an error\n" -msgstr "" diff --git a/source3/po/ja.msg b/source3/po/ja.msg index e3cc5ad5f1..52ec57105f 100644 --- a/source3/po/ja.msg +++ b/source3/po/ja.msg @@ -18,8 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: i18n-swat\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-30 12:18+0200\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2003-09-23 04:38+900\n" "Last-Translator: TAKAHASHI Motonobu \n" "Language-Team: Samba Users Group Japan \n" @@ -27,4015 +26,569 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../web/swat.c:153 +#: ../web/swat.c:117 #, c-format msgid "ERROR: Can't open %s" msgstr "%s をオープンできません" -#: ../web/swat.c:241 +#: ../web/swat.c:200 msgid "Help" msgstr "ヘルプ" -#: ../web/swat.c:247 ../web/swat.c:272 ../web/swat.c:293 ../web/swat.c:302 ../web/swat.c:311 ../web/swat.c:317 ../web/swat.c:329 ../web/swat.c:343 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "デフォルト値" -#: ../web/swat.c:465 +#: ../web/swat.c:408 #, c-format msgid "failed to open %s for writing" msgstr "%s を書き込み用にオープンできません" -#: ../web/swat.c:488 +#: ../web/swat.c:431 #, c-format msgid "Can't reload %s" msgstr "%s を再読み込みできません\n" # msgid "Logged in as %s

\n" -#: ../web/swat.c:561 +#: ../web/swat.c:501 #, c-format msgid "Logged in as %s" msgstr "%sとしてログイン" -#: ../web/swat.c:565 +#: ../web/swat.c:505 msgid "Home" msgstr "ホーム" -#: ../web/swat.c:567 +#: ../web/swat.c:507 msgid "Globals" msgstr "グローバル" -#: ../web/swat.c:568 +#: ../web/swat.c:508 msgid "Shares" msgstr "ファイル共有" -#: ../web/swat.c:569 +#: ../web/swat.c:509 msgid "Printers" msgstr "印刷共有" -#: ../web/swat.c:570 +#: ../web/swat.c:510 msgid "Wizard" msgstr "ウィザード" -#: ../web/swat.c:574 +#: ../web/swat.c:513 msgid "Status" msgstr "サーバの状態" -#: ../web/swat.c:575 +#: ../web/swat.c:514 msgid "View Config" msgstr "現在の設定" -#: ../web/swat.c:577 +#: ../web/swat.c:516 msgid "Password Management" msgstr "パスワード管理" -#: ../web/swat.c:587 +#: ../web/swat.c:526 msgid "Current View Is" msgstr "現在の表示モード" -#: ../web/swat.c:588 ../web/swat.c:591 +#: ../web/swat.c:527 ../web/swat.c:530 msgid "Basic" msgstr "標準表示" -#: ../web/swat.c:589 ../web/swat.c:592 +#: ../web/swat.c:528 ../web/swat.c:531 msgid "Advanced" msgstr "詳細表示" -#: ../web/swat.c:590 +#: ../web/swat.c:529 msgid "Change View To" msgstr "表示モードの変更" -#: ../web/swat.c:619 +#: ../web/swat.c:554 msgid "Current Config" msgstr "現在の設定" -#: ../web/swat.c:623 +#: ../web/swat.c:558 msgid "Normal View" msgstr "標準表示" -#: ../web/swat.c:625 +#: ../web/swat.c:560 msgid "Full View" msgstr "完全表示" #. Here we first set and commit all the parameters that were selected #. in the previous screen. -#: ../web/swat.c:644 +#: ../web/swat.c:579 msgid "Wizard Parameter Edit Page" msgstr "ウィザードによるパラメータ編集ページ" -#: ../web/swat.c:673 +#: ../web/swat.c:608 msgid "Note: smb.conf file has been read and rewritten" msgstr "smb.conf ファイルが書き換えられました。" #. Here we go ... -#: ../web/swat.c:779 +#: ../web/swat.c:716 msgid "Samba Configuration Wizard" msgstr "Samba 設定ウィザード" -#: ../web/swat.c:783 +#: ../web/swat.c:720 msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." msgstr "「smb.conf の書換」ボタンを押すと smb.conf ファイル中のすべてのデフォルト値やコメントは削除されます。" -#: ../web/swat.c:784 +#: ../web/swat.c:721 msgid "The same will happen if you press the commit button." msgstr "「commit」ボタンを押した場合にも同様の変更が行なわれます。" -#: ../web/swat.c:787 +#: ../web/swat.c:724 msgid "Rewrite smb.conf file" msgstr "smb.conf の書換" -#: ../web/swat.c:788 +#: ../web/swat.c:725 msgid "Commit" msgstr "設定を反映" -#: ../web/swat.c:789 +#: ../web/swat.c:726 msgid "Edit Parameter Values" msgstr "各パラメータの編集" -#: ../web/swat.c:795 +#: ../web/swat.c:732 msgid "Server Type" msgstr "サーバタイプ" -#: ../web/swat.c:796 +#: ../web/swat.c:733 msgid "Stand Alone" msgstr "スタンドアロン" -#: ../web/swat.c:797 +#: ../web/swat.c:734 msgid "Domain Member" msgstr "ドメインメンバ" -#: ../web/swat.c:798 +#: ../web/swat.c:735 msgid "Domain Controller" msgstr "ドメインコントローラ" -#: ../web/swat.c:801 +#: ../web/swat.c:738 msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "通常の形式ではない - 新しいモードを選択のこと" -#: ../web/swat.c:803 +#: ../web/swat.c:740 msgid "Configure WINS As" msgstr "WINS" -#: ../web/swat.c:804 +#: ../web/swat.c:741 msgid "Not Used" msgstr "使わない" -#: ../web/swat.c:805 +#: ../web/swat.c:742 msgid "Server for client use" msgstr "サーバとして構成" -#: ../web/swat.c:806 +#: ../web/swat.c:743 msgid "Client of another WINS server" msgstr "別の WINS サーバのクライアントとして構成" -#: ../web/swat.c:808 +#: ../web/swat.c:745 msgid "Remote WINS Server" msgstr "別の WINS サーバ" -#: ../web/swat.c:819 +#: ../web/swat.c:756 msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "エラー: wins server と wins support の両パラメータが smb.conf で指定されています" -#: ../web/swat.c:820 +#: ../web/swat.c:757 msgid "Please Select desired WINS mode above." msgstr "いずれかの WINS モードを選択してください。" -#: ../web/swat.c:822 +#: ../web/swat.c:759 msgid "Expose Home Directories" msgstr "ホームディレクトリの公開" -#: ../web/swat.c:837 +#: ../web/swat.c:774 msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." msgstr "上記の設定オプションにより、複数のパラメータが同期して設定されるため、 Samba の運用を迅速に開始する上での助けとなるでしょう。" -#: ../web/swat.c:850 +#: ../web/swat.c:787 msgid "Global Parameters" msgstr "Global パラメータ" -#: ../web/swat.c:878 ../web/swat.c:986 ../web/swat.c:1344 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "変更を反映" -#: ../web/swat.c:882 ../web/swat.c:989 ../web/swat.c:1346 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "変更を取消" -#: ../web/swat.c:908 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "ファイル共有 パラメータ" -#: ../web/swat.c:955 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "ファイル共有の選択" -#: ../web/swat.c:971 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "ファイル共有の削除" -#: ../web/swat.c:978 +#: ../web/swat.c:908 msgid "Create Share" msgstr "ファイル共有の作成" -#: ../web/swat.c:1014 +#: ../web/swat.c:944 msgid "password change in demo mode rejected" msgstr "デモ・モードでのパスワード変更はできません" -#: ../web/swat.c:1028 +#: ../web/swat.c:957 msgid "Can't setup password database vectors." msgstr "パスワード・データベースが見つけられません" -#: ../web/swat.c:1056 +#: ../web/swat.c:983 msgid " Must specify \"User Name\" " msgstr "「ユーザ名」欄に入力してください" -#: ../web/swat.c:1072 +#: ../web/swat.c:999 msgid " Must specify \"Old Password\" " msgstr "「旧パスワード」欄に入力してください" -#: ../web/swat.c:1078 +#: ../web/swat.c:1005 msgid " Must specify \"Remote Machine\" " msgstr "「リモートマシン」欄に入力してください" -#: ../web/swat.c:1085 +#: ../web/swat.c:1012 msgid " Must specify \"New, and Re-typed Passwords\" " msgstr "「新パスワード」欄と「新パスワードの再入力」欄に入力してください" -#: ../web/swat.c:1091 +#: ../web/swat.c:1018 msgid " Re-typed password didn't match new password " msgstr "「新パスワードの再入力」欄の入力内容が「新パスワード」欄の入力と一致していません。" -#: ../web/swat.c:1124 +#: ../web/swat.c:1048 #, c-format msgid " The passwd for '%s' has been changed." msgstr " %s のパスワードは変更されました。" -#: ../web/swat.c:1127 +#: ../web/swat.c:1051 #, c-format msgid " The passwd for '%s' has NOT been changed." msgstr " '%s' のパスワードは変更されませんでした。" -#: ../web/swat.c:1152 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "ローカルマシンのパスワード管理" #. #. * Create all the dialog boxes for data collection #. -#: ../web/swat.c:1161 ../web/swat.c:1208 +#: ../web/swat.c:1085 ../web/swat.c:1132 msgid "User Name" msgstr "ユーザ名" -#: ../web/swat.c:1164 ../web/swat.c:1210 +#: ../web/swat.c:1088 ../web/swat.c:1134 msgid "Old Password" msgstr "旧パスワード" -#: ../web/swat.c:1167 ../web/swat.c:1212 +#: ../web/swat.c:1091 ../web/swat.c:1136 msgid "New Password" msgstr "新パスワード" -#: ../web/swat.c:1169 ../web/swat.c:1214 +#: ../web/swat.c:1093 ../web/swat.c:1138 msgid "Re-type New Password" msgstr "新パスワードの再入力" -#: ../web/swat.c:1177 ../web/swat.c:1225 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "パスワード変更" -#: ../web/swat.c:1180 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "新規ユーザ追加" -#: ../web/swat.c:1182 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "ユーザの削除" -#: ../web/swat.c:1184 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "ユーザの無効化" -#: ../web/swat.c:1186 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "ユーザの有効化" -#: ../web/swat.c:1199 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "リモートマシンのパスワード管理" -#: ../web/swat.c:1216 +#: ../web/swat.c:1140 msgid "Remote Machine" msgstr "リモートマシン" -#: ../web/swat.c:1255 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "印刷共有 パラメータ" -#: ../web/swat.c:1257 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "*注" -#: ../web/swat.c:1258 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "名前の先頭に [*] がついたプリンタ" -#: ../web/swat.c:1259 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "は" -#: ../web/swat.c:1260 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "printcap name パラメータ" -#: ../web/swat.c:1261 +#: ../web/swat.c:1185 msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "から自動設定されたものですから、削除することはできません。" -#: ../web/swat.c:1310 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "印刷共有の選択" -#: ../web/swat.c:1329 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "印刷共有の削除" -#: ../web/swat.c:1336 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "印刷共有の作成" -#: ../web/statuspage.c:151 -msgid "RDWR " -msgstr "参照/更新 " +#: ../web/statuspage.c:123 +msgid "RDONLY " +msgstr "参照のみ " -#: ../web/statuspage.c:153 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "更新のみ " -#: ../web/statuspage.c:155 -msgid "RDONLY " -msgstr "参照のみ " +#: ../web/statuspage.c:125 +msgid "RDWR " +msgstr "参照/更新 " -#: ../web/statuspage.c:329 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "サーバの状態" -#: ../web/statuspage.c:334 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "自動更新の開始" -#: ../web/statuspage.c:335 ../web/statuspage.c:340 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "更新間隔: " -#: ../web/statuspage.c:339 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "自動更新の停止" -#: ../web/statuspage.c:348 +#: ../web/statuspage.c:334 msgid "version:" msgstr "バージョン" -#: ../web/statuspage.c:351 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "実行中" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "停止中" -#: ../web/statuspage.c:355 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "smbd の停止" -#: ../web/statuspage.c:357 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "smbd の起動" -#: ../web/statuspage.c:359 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "smbd の再起動" -#: ../web/statuspage.c:364 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: ../web/statuspage.c:368 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "nmbd の停止" -#: ../web/statuspage.c:370 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "nmbd の起動" -#: ../web/statuspage.c:372 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "nmbd の再起動" -#: ../web/statuspage.c:378 +#: ../web/statuspage.c:364 msgid "winbindd:" msgstr "" -#: ../web/statuspage.c:382 +#: ../web/statuspage.c:368 msgid "Stop winbindd" msgstr "winbindd の停止" -#: ../web/statuspage.c:384 +#: ../web/statuspage.c:370 msgid "Start winbindd" msgstr "winbindd の起動" -#: ../web/statuspage.c:386 +#: ../web/statuspage.c:372 msgid "Restart winbindd" msgstr "winbindd の再起動" #. stop, restart all -#: ../web/statuspage.c:395 +#: ../web/statuspage.c:381 msgid "Stop All" msgstr "すべて停止" -#: ../web/statuspage.c:396 +#: ../web/statuspage.c:382 msgid "Restart All" msgstr "すべて再起動" #. start all -#: ../web/statuspage.c:400 +#: ../web/statuspage.c:386 msgid "Start All" msgstr "すべて起動" -#: ../web/statuspage.c:407 +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "接続中のクライアント" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "クライアント" -#: ../web/statuspage.c:409 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "IPアドレス" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "日付" -#: ../web/statuspage.c:411 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "切断" -#: ../web/statuspage.c:419 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "接続中の共有" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Share" msgstr "共有名" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "User" msgstr "ユーザ" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Group" msgstr "グループ" -#: ../web/statuspage.c:428 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "使用中のファイル" -#: ../web/statuspage.c:431 -msgid "UID" -msgstr "" - -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "排他モード" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "参照/更新" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "File" msgstr "ファイル名" -#: ../web/statuspage.c:438 +#: ../web/statuspage.c:425 msgid "Show Client in col 1" msgstr "クライアント名を先頭に表示" -#: ../web/statuspage.c:439 +#: ../web/statuspage.c:426 msgid "Show PID in col 1" msgstr "PIDを先頭に表示" -#: ../param/loadparm.c:907 +#: ../param/loadparm.c:755 msgid "Base Options" msgstr "基本 オプション" -#: ../param/loadparm.c:1047 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "セキュリティ オプション" -#: ../param/loadparm.c:1800 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "ロギング オプション" -#: ../param/loadparm.c:1929 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "プロトコル オプション" -#: ../param/loadparm.c:2301 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "チューニング オプション" -#: ../param/loadparm.c:2538 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "印刷 オプション" -#: ../param/loadparm.c:2858 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "ファイル名の取扱" -#: ../param/loadparm.c:3088 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "ドメイン オプション" -#: ../param/loadparm.c:3100 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "ログオン オプション" -#: ../param/loadparm.c:3273 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "ブラウジング オプション" -#: ../param/loadparm.c:3384 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "WINS オプション" -#: ../param/loadparm.c:3432 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "ロッキング オプション" -#: ../param/loadparm.c:3552 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "LDAP オプション" -#: ../param/loadparm.c:3708 -#, fuzzy -msgid "EventLog Options" -msgstr "ログオン オプション" - -#: ../param/loadparm.c:3720 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "その他のオプション" -#: ../param/loadparm.c:4301 +#: ../param/loadparm.c:1138 msgid "VFS module options" msgstr "VFS オプション" -#: ../param/loadparm.c:4323 -#, fuzzy -msgid "MSDFS options" -msgstr "VFS オプション" - -#: ../param/loadparm.c:4353 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Winbind オプション" - -#: ../utils/net.c:103 -msgid "Enter machine password: " -msgstr "" - -#: ../utils/net.c:107 -msgid "Unable to write the machine account password in the secrets database" -msgstr "" - -#: ../utils/net.c:111 -msgid "Modified trust account password in secrets database\n" -msgstr "" - -#: ../utils/net.c:115 -msgid "" -"Machine account password change requires the -f flag.\n" -"Do NOT use this function unless you know what it does!\n" -"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" -msgstr "" - -#: ../utils/net.c:150 ../utils/net.c:228 -#, c-format -msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" -msgstr "" - -#: ../utils/net.c:163 ../utils/net.c:251 -#, c-format -msgid "SID for domain %s is: %s\n" -msgstr "" - -#: ../utils/net.c:175 -msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:195 -msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:213 -msgid "usage: net getdomainsid\n" -msgstr "" - -#: ../utils/net.c:238 -msgid "Could not fetch local SID\n" -msgstr "" - -#: ../utils/net.c:242 -#, c-format -msgid "SID for local machine %s is: %s\n" -msgstr "" - -#: ../utils/net.c:246 -msgid "Could not fetch domain SID\n" -msgstr "" - -#: ../utils/net.c:263 -#, c-format -msgid "get_maxrid: Could not search %s\n" -msgstr "" - -#: ../utils/net.c:297 -msgid "usage: net maxrid\n" -msgstr "" - -#: ../utils/net.c:302 -msgid "can't get current maximum rid\n" -msgstr "" - -#: ../utils/net.c:306 -#, c-format -msgid "Currently used maximum rid: %d\n" -msgstr "" - -#: ../utils/net.c:317 -msgid "Run functions using RPC transport" -msgstr "" - -#: ../utils/net.c:318 -msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." -msgstr "" - -#: ../utils/net.c:325 -msgid "Run functions using RAP transport" -msgstr "" - -#: ../utils/net.c:326 -msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." -msgstr "" - -#: ../utils/net.c:333 -msgid "Run functions using ADS transport" -msgstr "" - -#: ../utils/net.c:334 -msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." -msgstr "" - -#: ../utils/net.c:343 -msgid "Functions on remote opened files" -msgstr "" - -#: ../utils/net.c:344 -msgid " Use 'net help file' to get more information about 'net file' commands." -msgstr "" - -#: ../utils/net.c:351 -msgid "Functions on shares" -msgstr "" - -#: ../utils/net.c:352 -msgid " Use 'net help share' to get more information about 'net share' commands." -msgstr "" - -#: ../utils/net.c:359 -msgid "Manage sessions" -msgstr "" - -#: ../utils/net.c:360 -msgid " Use 'net help session' to get more information about 'net session' commands." -msgstr "" - -#: ../utils/net.c:367 -msgid "List servers in workgroup" -msgstr "" - -#: ../utils/net.c:368 -msgid " Use 'net help server' to get more information about 'net server' commands." -msgstr "" - -#: ../utils/net.c:375 -msgid "List domains/workgroups on network" -msgstr "" - -#: ../utils/net.c:376 -msgid " Use 'net help domain' to get more information about 'net domain' commands." -msgstr "" - -#: ../utils/net.c:383 -msgid "Modify printer queue" -msgstr "" - -#: ../utils/net.c:384 -msgid " Use 'net help printq' to get more information about 'net printq' commands." -msgstr "" - -#: ../utils/net.c:391 -#, fuzzy -msgid "Manage users" -msgstr "ユーザの有効化" - -#: ../utils/net.c:392 -msgid " Use 'net help user' to get more information about 'net user' commands." -msgstr "" - -#: ../utils/net.c:399 -msgid "Manage groups" -msgstr "" - -#: ../utils/net.c:400 -msgid " Use 'net help group' to get more information about 'net group' commands." -msgstr "" - -#: ../utils/net.c:407 -msgid "Manage group mappings" -msgstr "" - -#: ../utils/net.c:408 -msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." -msgstr "" - -#: ../utils/net.c:415 -msgid "Functions on the SAM database" -msgstr "" - -#: ../utils/net.c:416 -msgid " Use 'net help sam' to get more information about 'net sam' commands." -msgstr "" - -#: ../utils/net.c:423 -msgid "Validate username and password" -msgstr "" - -#: ../utils/net.c:424 -msgid " Use 'net help validate' to get more information about 'net validate' commands." -msgstr "" - -#: ../utils/net.c:431 -msgid "Modify group memberships" -msgstr "" - -#: ../utils/net.c:432 -msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." -msgstr "" - -#: ../utils/net.c:438 -msgid "Execute remote command on a remote OS/2 server" -msgstr "" - -#: ../utils/net.c:439 -msgid " Use 'net help admin' to get more information about 'net admin' commands." -msgstr "" - -#: ../utils/net.c:445 -msgid "List/modify running services" -msgstr "" - -#: ../utils/net.c:446 -msgid " Use 'net help service' to get more information about 'net service' commands." -msgstr "" - -#: ../utils/net.c:453 -#, fuzzy -msgid "Change user password on target server" -msgstr "パスワード・データベースが見つけられません" - -#: ../utils/net.c:454 -msgid " Use 'net help password' to get more information about 'net password' commands." -msgstr "" - -#: ../utils/net.c:460 -#, fuzzy -msgid "Change the trust password" -msgstr "パスワード変更" - -#: ../utils/net.c:461 -msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." -msgstr "" - -#: ../utils/net.c:467 -#, fuzzy -msgid "Change the secret password" -msgstr "パスワード変更" - -#: ../utils/net.c:468 -msgid "" -" net [options] changesecretpw\n" -" Change the ADS domain member machine account password in secrets.tdb.\n" -" Do NOT use this function unless you know what it does.\n" -" Requires the -f flag to work." -msgstr "" - -#: ../utils/net.c:477 -msgid "Show/set time" -msgstr "" - -#: ../utils/net.c:478 -msgid " Use 'net help time' to get more information about 'net time' commands." -msgstr "" - -#: ../utils/net.c:484 -msgid "Look up host names/IP addresses" -msgstr "" - -#: ../utils/net.c:485 -msgid " Use 'net help lookup' to get more information about 'net lookup' commands." -msgstr "" - -#: ../utils/net.c:491 -msgid "Join a domain/AD" -msgstr "" - -#: ../utils/net.c:492 -msgid " Use 'net help join' to get more information about 'net join'." -msgstr "" - -#: ../utils/net.c:498 -msgid "Join/unjoin (remote) machines to/from a domain/AD" -msgstr "" - -#: ../utils/net.c:499 -msgid " Use 'net help dom' to get more information about 'net dom' commands." -msgstr "" - -#: ../utils/net.c:505 -msgid "Operate on the cache tdb file" -msgstr "" - -#: ../utils/net.c:506 -msgid " Use 'net help cache' to get more information about 'net cache' commands." -msgstr "" - -#: ../utils/net.c:512 -msgid "Get the SID for the local domain" -msgstr "" - -#: ../utils/net.c:513 -msgid " net getlocalsid" -msgstr "" - -#: ../utils/net.c:518 -msgid "Set the SID for the local domain" -msgstr "" - -#: ../utils/net.c:519 -msgid " net setlocalsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:524 -msgid "Set domain SID on member servers" -msgstr "" - -#: ../utils/net.c:525 -msgid " net setdomainsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:530 -msgid "Get domain SID on member servers" -msgstr "" - -#: ../utils/net.c:531 -msgid " net getdomainsid" -msgstr "" - -#: ../utils/net.c:536 -msgid "Display the maximul RID currently used" -msgstr "" - -#: ../utils/net.c:537 -msgid " net maxrid" -msgstr "" - -#: ../utils/net.c:542 -#, fuzzy -msgid "IDmap functions" -msgstr "ドメイン オプション" - -#: ../utils/net.c:543 -msgid " Use 'net help idmap to get more information about 'net idmap' commands." -msgstr "" - -#: ../utils/net.c:549 -#, fuzzy -msgid "Display server status" -msgstr "サーバの状態" - -#: ../utils/net.c:550 -msgid " Use 'net help status' to get more information about 'net status' commands." -msgstr "" - -#: ../utils/net.c:556 -msgid "Manage user-modifiable shares" -msgstr "" - -#: ../utils/net.c:557 -msgid " Use 'net help usershare to get more information about 'net usershare' commands." -msgstr "" - -#: ../utils/net.c:563 -msgid "Display list of all users with SID" -msgstr "" - -#: ../utils/net.c:564 -msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." -msgstr "" - -#: ../utils/net.c:570 -msgid "Manage Samba registry based configuration" -msgstr "" - -#: ../utils/net.c:571 -msgid " Use 'net help conf' to get more information about 'net conf' commands." -msgstr "" - -#: ../utils/net.c:577 -msgid "Manage the Samba registry" -msgstr "" - -#: ../utils/net.c:578 -msgid " Use 'net help registry' to get more information about 'net registry' commands." -msgstr "" - -#: ../utils/net.c:584 -msgid "Open a lua interpreter" -msgstr "" - -#: ../utils/net.c:585 -msgid " Use 'net help lua' to get more information about 'net lua' commands." -msgstr "" - -#: ../utils/net.c:591 -msgid "Process Win32 *.evt eventlog files" -msgstr "" - -#: ../utils/net.c:592 -msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." -msgstr "" - -#: ../utils/net.c:600 -msgid "Manage AFS tokens" -msgstr "" - -#: ../utils/net.c:601 -msgid " Use 'net help afs' to get more information about 'net afs' commands." -msgstr "" - -#: ../utils/net.c:609 -msgid "Print usage information" -msgstr "" - -#: ../utils/net.c:610 -msgid " Use 'net help help' to list usage information for 'net' commands." -msgstr "" - -#: ../utils/net.c:639 -msgid "Encrypt SMB transport (UNIX extended servers only)" -msgstr "" - -#: ../utils/net.c:703 -msgid "" -"\n" -"Invalid ip address specified\n" -msgstr "" - -#: ../utils/net.c:718 -#, c-format -msgid "" -"\n" -"Invalid option %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:52 ../utils/net_ads.c:392 -msgid "CLDAP query failed!\n" -msgstr "" - -#: ../utils/net_ads.c:56 -#, fuzzy, c-format -msgid "" -"Information for Domain Controller: %s\n" -"\n" -msgstr "ドメインコントローラ" - -#: ../utils/net_ads.c:59 -msgid "Response Type: " -msgstr "" - -#: ../utils/net_ads.c:72 -#, c-format -msgid "GUID: %s\n" -msgstr "" - -#: ../utils/net_ads.c:74 -#, c-format -msgid "" -"Flags:\n" -"\tIs a PDC: %s\n" -"\tIs a GC of the forest: %s\n" -"\tIs an LDAP server: %s\n" -"\tSupports DS: %s\n" -"\tIs running a KDC: %s\n" -"\tIs running time services: %s\n" -"\tIs the closest DC: %s\n" -"\tIs writable: %s\n" -"\tHas a hardware clock: %s\n" -"\tIs a non-domain NC serviced by LDAP server: %s\n" -"\tIs NT6 DC that has some secrets: %s\n" -"\tIs NT6 DC that has all secrets: %s\n" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "yes" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "no" -msgstr "" - -#: ../utils/net_ads.c:101 -#, c-format -msgid "Forest:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:102 -#, c-format -msgid "Domain:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:103 -#, fuzzy, c-format -msgid "Domain Controller:\t%s\n" -msgstr "ドメインコントローラ" - -#: ../utils/net_ads.c:105 -#, c-format -msgid "Pre-Win2k Domain:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:106 -#, c-format -msgid "Pre-Win2k Hostname:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:108 -#, fuzzy, c-format -msgid "User name:\t%s\n" -msgstr "ユーザ名" - -#: ../utils/net_ads.c:110 -#, fuzzy, c-format -msgid "Server Site Name :\t\t%s\n" -msgstr "サーバの状態" - -#: ../utils/net_ads.c:111 -#, c-format -msgid "Client Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:113 -#, fuzzy, c-format -msgid "NT Version: %d\n" -msgstr "バージョン" - -#: ../utils/net_ads.c:114 -#, c-format -msgid "LMNT Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:115 -#, c-format -msgid "LM20 Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:130 -msgid "" -"Usage:\n" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookup.\n" -msgstr "" - -#: ../utils/net_ads.c:137 ../utils/net_ads.c:381 -msgid "Didn't find the cldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:160 -msgid "" -"Usage:\n" -"net ads info\n" -" Display information about an Active Directory server.\n" -msgstr "" - -#: ../utils/net_ads.c:168 ../utils/net_ads.c:173 -msgid "Didn't find the ldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:182 -msgid "Failed to get server's current time!\n" -msgstr "" - -#: ../utils/net_ads.c:187 -#, c-format -msgid "LDAP server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:188 -#, c-format -msgid "LDAP server name: %s\n" -msgstr "" - -#: ../utils/net_ads.c:189 -#, c-format -msgid "Realm: %s\n" -msgstr "" - -#: ../utils/net_ads.c:190 -#, c-format -msgid "Bind Path: %s\n" -msgstr "" - -#: ../utils/net_ads.c:191 -#, c-format -msgid "LDAP port: %d\n" -msgstr "" - -#: ../utils/net_ads.c:192 -#, fuzzy, c-format -msgid "Server time: %s\n" -msgstr "サーバの状態" - -#: ../utils/net_ads.c:195 -#, c-format -msgid "KDC server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:196 -#, c-format -msgid "Server time offset: %d\n" -msgstr "" - -#: ../utils/net_ads.c:374 -msgid "" -"Usage:\n" -"net ads workgroup\n" -" Print the workgroup name\n" -msgstr "" - -#: ../utils/net_ads.c:397 -#, c-format -msgid "Workgroup: %s\n" -msgstr "" - -#: ../utils/net_ads.c:458 -#, c-format -msgid "ads_user_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:463 -#, c-format -msgid "ads_user_add: User %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:477 -#, c-format -msgid "Could not add user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:484 ../utils/net_ads.c:497 -#, fuzzy, c-format -msgid "User %s added\n" -msgstr "ユーザ名" - -#. password didn't set, delete account -#: ../utils/net_ads.c:503 -#, c-format -msgid "Could not add user %s. Error setting password %s\n" -msgstr "" - -#: ../utils/net_ads.c:551 -#, c-format -msgid "ads_user_info: failed to escape user %s\n" -msgstr "" - -#: ../utils/net_ads.c:569 -#, c-format -msgid "ads_search: %s\n" -msgstr "" - -#: ../utils/net_ads.c:575 -msgid "ads_pull_uint32 failed\n" -msgstr "" - -#: ../utils/net_ads.c:582 -#, c-format -msgid "ads_domain_sid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:642 -#, c-format -msgid "User %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:652 -#, c-format -msgid "User %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:656 -#, c-format -msgid "Error deleting user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:669 -#, fuzzy -msgid "Add an AD user" -msgstr "新規ユーザ追加" - -#: ../utils/net_ads.c:670 -msgid "" -"net ads user add\n" -" Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:677 -msgid "Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:678 -msgid "" -"net ads user info\n" -" Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:685 -#, fuzzy -msgid "Delete an AD user" -msgstr "ユーザの削除" - -#: ../utils/net_ads.c:686 -msgid "" -"net ads user delete\n" -" Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:699 -msgid "" -"Usage:\n" -"net ads user\n" -" List AD users\n" -msgstr "" - -#: ../utils/net_ads.c:711 -msgid "" -"\n" -"User name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:751 -#, c-format -msgid "ads_group_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:756 -#, c-format -msgid "ads_group_add: Group %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:769 -#, c-format -msgid "Group %s added\n" -msgstr "" - -#: ../utils/net_ads.c:772 -#, c-format -msgid "Could not add group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:801 -#, c-format -msgid "Group %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:811 -#, c-format -msgid "Group %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:815 -#, c-format -msgid "Error deleting group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:828 -msgid "Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:829 -msgid "" -"net ads group add\n" -" Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:836 -#, fuzzy -msgid "Delete an AD group" -msgstr "ファイル共有の削除" - -#: ../utils/net_ads.c:837 -msgid "" -"net ads group delete\n" -" Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:850 -msgid "" -"Usage:\n" -"net ads group\n" -" List AD groups\n" -msgstr "" - -#: ../utils/net_ads.c:862 -msgid "" -"\n" -"Group name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:884 -msgid "" -"Usage:\n" -"net ads status\n" -" Display machine account details\n" -msgstr "" - -#: ../utils/net_ads.c:896 -#, c-format -msgid "ads_find_machine_acct: %s\n" -msgstr "" - -#: ../utils/net_ads.c:902 -#, c-format -msgid "No machine account for '%s' found\n" -msgstr "" - -#: ../utils/net_ads.c:926 -msgid "" -"Usage:\n" -"net ads leave\n" -" Leave an AD domain\n" -msgstr "" - -#: ../utils/net_ads.c:933 -msgid "No realm set, are we joined ?\n" -msgstr "" - -#: ../utils/net_ads.c:938 ../utils/net_ads.c:1260 -msgid "Could not initialise talloc context.\n" -msgstr "" - -#: ../utils/net_ads.c:948 -msgid "Could not initialise unjoin context.\n" -msgstr "" - -#: ../utils/net_ads.c:968 -#, c-format -msgid "Failed to leave domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:975 -#, c-format -msgid "Deleted account for '%s' in realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:982 -#, c-format -msgid "Disabled account for '%s' in realm '%s'\n" -msgstr "" - -#. Based on what we requseted, we shouldn't get here, but if -#. we did, it means the secrets were removed, and therefore -#. we have left the domain -#: ../utils/net_ads.c:991 -#, c-format -msgid "Machine '%s' Left domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1035 -msgid "" -"Usage:\n" -"net ads testjoin\n" -" Test if the existing join is ok\n" -msgstr "" - -#: ../utils/net_ads.c:1044 -#, c-format -msgid "Join to domain is not valid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1049 -#, c-format -msgid "Join is OK\n" -msgstr "" - -#: ../utils/net_ads.c:1060 -msgid "Host is not configured as a member server.\n" -msgstr "" - -#: ../utils/net_ads.c:1065 -#, c-format -msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" -msgstr "" - -#: ../utils/net_ads.c:1072 -#, c-format -msgid "realm must be set in in %s for ADS join to succeed.\n" -msgstr "" - -#: ../utils/net_ads.c:1105 -#, c-format -msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" -msgstr "" - -#: ../utils/net_ads.c:1212 -msgid "" -"net ads join [options]\n" -"Valid options:\n" -msgstr "" - -#: ../utils/net_ads.c:1214 -msgid "" -" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" -" The deault UPN is in the form host/netbiosname@REALM.\n" -msgstr "" - -#: ../utils/net_ads.c:1216 -msgid "" -" createcomputer=OU Precreate the computer account in a specific OU.\n" -" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" -" E.g. \"createcomputer=Computers/Servers/Unix\"\n" -" NB: A backslash '\\' is used as escape at multiple levels and may\n" -" need to be doubled or even quadrupled. It is not used as a separator.\n" -msgstr "" - -#: ../utils/net_ads.c:1221 -msgid " osName=string Set the operatingSystem attribute during the join.\n" -msgstr "" - -#: ../utils/net_ads.c:1222 -msgid "" -" osVer=string Set the operatingSystemVersion attribute during the join.\n" -" NB: osName and osVer must be specified together for either to take effect.\n" -" Also, the operatingSystemService attribute is also set when along with\n" -" the two other attributes.\n" -msgstr "" - -#: ../utils/net_ads.c:1254 -msgid "Invalid configuration. Exiting....\n" -msgstr "" - -#: ../utils/net_ads.c:1283 -msgid "Please supply a valid OU path.\n" -msgstr "" - -#: ../utils/net_ads.c:1290 -msgid "Please supply a operating system name.\n" -msgstr "" - -#: ../utils/net_ads.c:1297 -msgid "Please supply a valid operating system version.\n" -msgstr "" - -#: ../utils/net_ads.c:1308 -msgid "Please supply a valid domain name\n" -msgstr "" - -#: ../utils/net_ads.c:1339 -#, c-format -msgid "" -"The workgroup in %s does not match the short\n" -"domain name obtained from the server.\n" -"Using the name [%s] from the server.\n" -"You should set \"workgroup = %s\" in %s.\n" -msgstr "" - -#: ../utils/net_ads.c:1347 -#, c-format -msgid "Using short domain name -- %s\n" -msgstr "" - -#: ../utils/net_ads.c:1350 -#, c-format -msgid "Joined '%s' to realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1353 -#, c-format -msgid "Joined '%s' to domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1377 ../utils/net_ads.c:1433 -msgid "DNS update failed!\n" -msgstr "" - -#. issue an overall failure message at the end. -#: ../utils/net_ads.c:1391 ../utils/net_dom.c:198 -#, c-format -msgid "Failed to join domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1414 -msgid "" -"Usage:\n" -"net ads dns register\n" -" Register hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1421 -msgid "Could not initialise talloc context\n" -msgstr "" - -#: ../utils/net_ads.c:1439 -msgid "Successfully registered hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1447 -msgid "DNS update support not enabled at compile time!\n" -msgstr "" - -#: ../utils/net_ads.c:1466 -msgid "" -"Usage:\n" -"net ads dns gethostbyname \n" -" Look up hostname from the AD\n" -" server\tName server to use\n" -" name\tName to look up\n" -msgstr "" - -#: ../utils/net_ads.c:1476 -#, c-format -msgid "do_gethostbyname returned %d\n" -msgstr "" - -#: ../utils/net_ads.c:1488 -msgid "Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1489 -msgid "" -"net ads dns register\n" -" Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1496 -msgid "Look up host" -msgstr "" - -#: ../utils/net_ads.c:1497 -msgid "" -"net ads dns gethostbyname\n" -" Look up host" -msgstr "" - -#: ../utils/net_ads.c:1512 -msgid "" -"\n" -"net ads printer search \n" -"\tsearch for a printer in the directory\n" -"\n" -"net ads printer info \n" -"\tlookup info in directory for printer on server\n" -"\t(note: printer defaults to \"*\", server defaults to local)\n" -"\n" -"net ads printer publish \n" -"\tpublish printer in directory\n" -"\t(note: printer name is required)\n" -"\n" -"net ads printer remove \n" -"\tremove printer from directory\n" -"\t(note: printer name is required)\n" -msgstr "" - -#: ../utils/net_ads.c:1536 -msgid "" -"Usage:\n" -"net ads printer search\n" -" List printers in the AD\n" -msgstr "" - -#: ../utils/net_ads.c:1549 -#, c-format -msgid "ads_find_printer: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1556 -msgid "No results found\n" -msgstr "" - -#: ../utils/net_ads.c:1576 -msgid "" -"Usage:\n" -"net ads printer info [printername [servername]]\n" -" Display printer info from AD\n" -" printername\tPrinter name or wildcard\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1603 -#, c-format -msgid "Server '%s' not found: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1611 ../utils/net_ads.c:1794 -#, c-format -msgid "Printer '%s' not found\n" -msgstr "" - -#: ../utils/net_ads.c:1640 -msgid "" -"Usage:\n" -"net ads printer publish [servername]\n" -" Publish printer in AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1675 -#, c-format -msgid "Unable to open a connnection to %s to obtain data for %s\n" -msgstr "" - -#: ../utils/net_ads.c:1688 -#, c-format -msgid "Could not find machine account for server %s\n" -msgstr "" - -#: ../utils/net_ads.c:1704 ../utils/net_ads.c:1713 -msgid "Internal error, out of memory!" -msgstr "" - -#: ../utils/net_ads.c:1724 -#, c-format -msgid "Unable to open a connnection to the spoolss pipe on %s\n" -msgstr "" - -#: ../utils/net_ads.c:1766 -msgid "" -"Usage:\n" -"net ads printer remove [servername]\n" -" Remove a printer from the AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1787 -#, c-format -msgid "ads_find_printer_on_server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1806 -#, c-format -msgid "ads_del_dn: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1822 -msgid "Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1823 -msgid "" -"net ads printer search\n" -" Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1830 -msgid "Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1831 -msgid "" -"net ads printer info\n" -" Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1838 -msgid "Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1839 -msgid "" -"net ads printer publish\n" -" Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1846 -#, fuzzy -msgid "Delete a printer" -msgstr "印刷共有の削除" - -#: ../utils/net_ads.c:1847 -msgid "" -"net ads printer remove\n" -" Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1869 -msgid "" -"Usage:\n" -"net ads password \n" -" Change password for user\n" -" username\tName of user to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1877 -msgid "You must supply an administrator username/password\n" -msgstr "" - -#: ../utils/net_ads.c:1883 -msgid "ERROR: You must say which username to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1915 -msgid "Didn't find the kerberos server!\n" -msgstr "" - -#: ../utils/net_ads.c:1923 -#, c-format -msgid "Enter new password for %s:" -msgstr "" - -#: ../utils/net_ads.c:1933 ../utils/net_ads.c:1982 -#, fuzzy, c-format -msgid "Password change failed: %s\n" -msgstr "パスワード管理" - -#: ../utils/net_ads.c:1938 -#, fuzzy, c-format -msgid "Password change for %s completed.\n" -msgstr "デモ・モードでのパスワード変更はできません" - -#: ../utils/net_ads.c:1952 -msgid "" -"Usage:\n" -"net ads changetrustpw\n" -" Change the machine account's trust password\n" -msgstr "" - -#: ../utils/net_ads.c:1977 -#, c-format -msgid "Changing password for principal: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1988 -#, c-format -msgid "Password change for principal %s succeeded.\n" -msgstr "" - -#: ../utils/net_ads.c:1991 -msgid "Attempting to update system keytab with new password.\n" -msgstr "" - -#: ../utils/net_ads.c:1993 -msgid "Failed to update system keytab.\n" -msgstr "" - -#: ../utils/net_ads.c:2009 -msgid "" -"\n" -"net ads search \n" -"\n" -"Perform a raw LDAP search on a ADS server and dump the results.\n" -"The expression is a standard LDAP search expression, and the\n" -"attributes are a list of LDAP fields to show in the results.\n" -"\n" -"Example: net ads search '(objectCategory=group)' sAMAccountName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2046 ../utils/net_ads.c:2107 ../utils/net_ads.c:2171 ../utils/net_ads_gpo.c:250 -#, c-format -msgid "search failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2051 ../utils/net_ads.c:2176 ../utils/net_ads_gpo.c:256 -#, c-format -msgid "" -"Got %d replies\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2069 -msgid "" -"\n" -"net ads dn \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" -"\n" -"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2129 -msgid "" -"\n" -"net ads sid \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The SID is in string format, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads sid 'S-1-5-32' distinguishedName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2164 -msgid "could not convert sid\n" -msgstr "" - -#: ../utils/net_ads.c:2193 -msgid "" -"Usage:\n" -"net ads keytab flush\n" -" Delete the whole keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2214 -msgid "" -"Usage:\n" -"net ads keytab add [principal ...]\n" -" Add principals to local keytab\n" -" principal\tKerberos principal to add to keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2222 -msgid "Processing principals to add...\n" -msgstr "" - -#: ../utils/net_ads.c:2239 -msgid "" -"Usage:\n" -"net ads keytab create\n" -" Create new default keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2258 -msgid "" -"Usage:\n" -"net ads keytab list [keytab]\n" -" List a local keytab\n" -" keytab\tKeytab to list\n" -msgstr "" - -#: ../utils/net_ads.c:2280 -msgid "Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2281 -msgid "" -"net ads keytab add\n" -" Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2288 -#, fuzzy -msgid "Create a fresh keytab" -msgstr "ファイル共有の作成" - -#: ../utils/net_ads.c:2289 -msgid "" -"net ads keytab create\n" -" Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2296 -msgid "Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2297 -msgid "" -"net ads keytab flush\n" -" Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2304 -msgid "List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2305 -msgid "" -"net ads keytab list\n" -" List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2312 -msgid "" -"\n" -"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" -msgstr "" - -#: ../utils/net_ads.c:2324 -msgid "" -"Usage:\n" -"net ads kerberos renew\n" -" Renew TGT from existing credential cache\n" -msgstr "" - -#: ../utils/net_ads.c:2332 -#, c-format -msgid "failed to renew kerberos ticket: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2347 -msgid "" -"Usage:\n" -"net ads kerberos pac\n" -" Dump the Kerberos PAC\n" -msgstr "" - -#: ../utils/net_ads.c:2372 -#, c-format -msgid "failed to query kerberos PAC: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2381 -#, c-format -msgid "The Pac: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2397 -msgid "" -"Usage:\n" -"net ads kerberos kinit\n" -" Get Ticket Granting Ticket (TGT) for the user\n" -msgstr "" - -#: ../utils/net_ads.c:2421 -#, c-format -msgid "failed to kinit password: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2435 -msgid "Retrieve Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2436 -msgid "" -"net ads kerberos kinit\n" -" Receive Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2443 -msgid "Renew Ticket Granting Ticket from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2444 -msgid "" -"net ads kerberos renew\n" -" Renew Ticket Granting Ticket (TGT) from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2452 -msgid "Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2453 -msgid "" -"net ads kerberos pac\n" -" Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2469 -msgid "Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2470 -msgid "" -"net ads info\n" -" Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2477 -msgid "Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2478 -msgid "" -"net ads join\n" -" Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2485 -msgid "Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2486 -msgid "" -"net ads testjoin\n" -" Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2493 -msgid "Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2494 -msgid "" -"net ads leave\n" -" Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2501 -msgid "Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2502 -msgid "" -"net ads status\n" -" Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2509 -msgid "List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2510 -msgid "" -"net ads user\n" -" List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2517 -msgid "List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2518 -msgid "" -"net ads group\n" -" List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2525 -msgid "Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2526 -msgid "" -"net ads dns\n" -" Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2533 -#, fuzzy -msgid "Change user passwords" -msgstr "パスワード変更" - -#: ../utils/net_ads.c:2534 -msgid "" -"net ads password\n" -" Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2541 -#, fuzzy -msgid "Change trust account password" -msgstr "パスワード変更" - -#: ../utils/net_ads.c:2542 -msgid "" -"net ads changetrustpw\n" -" Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2549 -msgid "List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2550 -msgid "" -"net ads printer\n" -" List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2557 -msgid "Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2558 -msgid "" -"net ads search\n" -" Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2565 -msgid "Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2566 -msgid "" -"net ads dn\n" -" Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2573 -msgid "Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2574 -msgid "" -"net ads sid\n" -" Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2581 -msgid "Display workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2582 -msgid "" -"net ads workgroup\n" -" Display the workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2589 -msgid "Perfom CLDAP query on DC" -msgstr "" - -#: ../utils/net_ads.c:2590 -msgid "" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookups" -msgstr "" - -#: ../utils/net_ads.c:2597 -msgid "Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2598 -msgid "" -"net ads keytab\n" -" Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2605 -msgid "Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2606 -msgid "" -"net ads gpo\n" -" Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2613 -msgid "Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2614 -msgid "" -"net ads kerberos\n" -" Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2627 -msgid "ADS support not compiled in\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:40 -msgid "" -"Usage:\n" -"net ads gpo refresh \n" -" Lists all GPOs assigned to an account and downloads them\n" -" username\tUser to refresh GPOs for\n" -" machinename\tMachine to refresh GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:56 -#, c-format -msgid "failed to connect AD server: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:62 -#, c-format -msgid "failed to find samaccount for %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:70 -#, c-format -msgid "" -"\n" -"%s: '%s' has dn: '%s'\n" -"\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "machine" -msgstr "リモートマシン" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "user" -msgstr "ユーザ" - -#: ../utils/net_ads_gpo.c:74 -msgid "* fetching token " -msgstr "" - -#: ../utils/net_ads_gpo.c:82 ../utils/net_ads_gpo.c:90 ../utils/net_ads_gpo.c:102 ../utils/net_ads_gpo.c:113 ../utils/net_ads_gpo.c:158 -#, c-format -msgid "failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:85 ../utils/net_ads_gpo.c:94 ../utils/net_ads_gpo.c:105 ../utils/net_ads_gpo.c:118 ../utils/net_ads_gpo.c:163 -msgid "finished\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:87 -msgid "* fetching GPO List " -msgstr "" - -#: ../utils/net_ads_gpo.c:96 -msgid "* Refreshing Group Policy Data " -msgstr "" - -#: ../utils/net_ads_gpo.c:107 -msgid "* storing GPO list to registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:122 -msgid "* dumping GPO list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:151 -msgid "* re-reading GPO list from registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:167 -msgid "* dumping GPO list from registry\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:226 -msgid "" -"Usage:\n" -"net ads gpo listall\n" -" List all GPOs on the DC\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:270 -#, fuzzy, c-format -msgid "ads_parse_gpo failed: %s\n" -msgstr "パスワード管理" - -#: ../utils/net_ads_gpo.c:300 -msgid "" -"Usage:\n" -"net ads gpo list \n" -" Lists all GPOs for machine/user\n" -" username\tUser to list GPOs for\n" -" machinename\tMachine to list GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:327 -#, c-format -msgid "%s: '%s' has dn: '%s'\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:451 -msgid "" -"Usage:\n" -"net ads gpo linkget \n" -" Lists gPLink of a containter\n" -" container\tContainer to get link for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:470 -#, c-format -msgid "get link for %s failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:492 -msgid "" -"Usage:\n" -"net ads gpo linkadd [options]\n" -" Link a container to a GPO\n" -" linkdn\tContainer to link to a GPO\n" -" gpodn\tGPO to link container to\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:497 -msgid "" -"note: DNs must be provided properly escaped.\n" -"See RFC 4514 for details\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:518 -#, c-format -msgid "link add failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:579 -msgid "" -"Usage:\n" -"net ads gpo getgpo \n" -" List speciefied GPO\n" -" gpo\t\tGPO to list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:603 -#, c-format -msgid "get gpo for [%s] failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:634 -msgid "List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:635 -msgid "" -"net ads gpo getgpo\n" -" List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:642 -msgid "Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:643 -msgid "" -"net ads gpo linkadd\n" -" Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:660 -msgid "Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:661 -msgid "" -"net ads gpo linkget\n" -" Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:668 -msgid "Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:669 -msgid "" -"net ads gpo list\n" -" Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:676 -msgid "Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:677 -msgid "" -"net ads gpo listall\n" -" Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:684 -msgid "Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_ads_gpo.c:686 -msgid "" -"net ads gpo refresh\n" -" Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_afs.c:25 -msgid "" -" net afs key filename\n" -"\tImports a OpenAFS KeyFile into our secrets.tdb\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:27 -msgid "" -" net afs impersonate \n" -"\tCreates a token for user@cell\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:38 -msgid "usage: 'net afs key cell'\n" -msgstr "" - -#: ../utils/net_afs.c:43 -msgid "Could not open secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:48 -#, c-format -msgid "Could not open %s\n" -msgstr "" - -#: ../utils/net_afs.c:53 -msgid "Could not read keyfile\n" -msgstr "" - -#: ../utils/net_afs.c:58 -msgid "Could not write keyfile to secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:71 -#, c-format -msgid "Usage: net afs impersonate \n" -msgstr "" - -#: ../utils/net_afs.c:78 -#, c-format -msgid "Could not create token\n" -msgstr "" - -#: ../utils/net_afs.c:83 -#, c-format -msgid "Could not set token into kernel\n" -msgstr "" - -#: ../utils/net_afs.c:87 -#, c-format -msgid "Success: %s@%s\n" -msgstr "" - -#: ../utils/net_afs.c:98 -msgid "Import an OpenAFS keyfile" -msgstr "" - -#: ../utils/net_afs.c:99 -msgid "" -"net afs key \n" -" Import kefile from ." -msgstr "" - -#: ../utils/net_afs.c:106 -msgid "Get a user token" -msgstr "" - -#: ../utils/net_afs.c:107 -msgid "" -"net afs impersonate \n" -" Create token for user@cell" -msgstr "" - -#: ../utils/net_cache.c:74 -#, c-format -msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" -msgstr "" - -#: ../utils/net_cache.c:75 -msgid "(expired)" -msgstr "" - -#: ../utils/net_cache.c:84 -#, c-format -msgid "Couldn't delete entry! key = %s\n" -msgstr "" - -#: ../utils/net_cache.c:158 -msgid "" -"\n" -"Usage:\n" -"net cache add \n" -msgstr "" - -#: ../utils/net_cache.c:170 -msgid "Invalid timeout argument.\n" -msgstr "" - -#: ../utils/net_cache.c:175 -msgid "New cache entry stored successfully.\n" -msgstr "" - -#: ../utils/net_cache.c:179 -msgid "Entry couldn't be added. Perhaps there's already such a key.\n" -msgstr "" - -#: ../utils/net_cache.c:195 -msgid "" -"\n" -"Usage: net cache del \n" -msgstr "" - -#: ../utils/net_cache.c:200 -msgid "Entry deleted.\n" -msgstr "" - -#: ../utils/net_cache.c:204 -msgid "Couldn't delete specified entry\n" -msgstr "" - -#: ../utils/net_cache.c:223 -msgid "" -"\n" -"Usage: net cache get \n" -msgstr "" - -#: ../utils/net_cache.c:233 -msgid "Failed to find entry\n" -msgstr "" - -#: ../utils/net_cache.c:250 -msgid "Usage: net cache search \n" -msgstr "" - -#: ../utils/net_cache.c:272 -msgid "" -"Usage:\n" -"net cache list\n" -" List all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:293 ../utils/net_cache.c:306 -msgid "" -"Usage:\n" -"net cache flush\n" -" Delete all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:331 -msgid "Add new cache entry" -msgstr "" - -#: ../utils/net_cache.c:332 -msgid "" -"net cache add \n" -" Add new cache entry.\n" -" key string\tKey string to add cache data under.\n" -" data string\tData to store under given key.\n" -" timeout\tTimeout for cache data." -msgstr "" - -#: ../utils/net_cache.c:342 -msgid "Delete existing cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:343 -msgid "" -"net cache del \n" -" Delete existing cache entry by key.\n" -" key string\tKey string to delete." -msgstr "" - -#: ../utils/net_cache.c:351 -msgid "Get cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:352 -msgid "" -"net cache get \n" -" Get cache entry by key.\n" -" key string\tKey string to look up cache entry for." -msgstr "" - -#: ../utils/net_cache.c:361 -msgid "Search entry by pattern" -msgstr "" - -#: ../utils/net_cache.c:362 -msgid "" -"net cache search \n" -" Search entry by pattern.\n" -" pattern\tPattern to search for in cache." -msgstr "" - -#: ../utils/net_cache.c:370 -msgid "List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:371 -msgid "" -"net cache list\n" -" List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:378 -#, fuzzy -msgid "Delete all cache entries" -msgstr "印刷共有の削除" - -#: ../utils/net_cache.c:379 -msgid "" -"net cache flush\n" -" Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:386 -msgid "Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_cache.c:387 -msgid "" -"net cache stabilize\n" -" Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_conf.c:42 -msgid "USAGE: net conf list\n" -msgstr "" - -#: ../utils/net_conf.c:49 -msgid "" -"USAGE: net conf import [--test|-T] []\n" -"\t[--test|-T] testmode - do not act, just print what would be done\n" -"\t only import service , ignore the rest\n" -msgstr "" - -#: ../utils/net_conf.c:61 -msgid "USAGE: net conf listshares\n" -msgstr "" - -#: ../utils/net_conf.c:68 -msgid "USAGE: net conf drop\n" -msgstr "" - -#: ../utils/net_conf.c:75 -msgid "USAGE: net conf showshare \n" -msgstr "" - -#: ../utils/net_conf.c:82 -msgid "" -"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" -"\t the new share name.\n" -"\t the path on the filesystem to export.\n" -"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" -"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" -"\t optional comment for the new share.\n" -msgstr "" - -#: ../utils/net_conf.c:97 -msgid "USAGE: net conf delshare \n" -msgstr "" - -#: ../utils/net_conf.c:104 -msgid "USAGE: net conf setparm

\n" -msgstr "" - -#: ../utils/net_conf.c:111 -msgid "USAGE: net conf getparm
\n" -msgstr "" - -#: ../utils/net_conf.c:118 -msgid "USAGE: net conf delparm
\n" -msgstr "" - -#: ../utils/net_conf.c:125 -msgid "USAGE: net conf getincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:132 -msgid "USAGE: net conf setincludes
[]*\n" -msgstr "" - -#: ../utils/net_conf.c:139 -msgid "USAGE: net conf delincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:251 -#, c-format -msgid "Error getting config: %s\n" -msgstr "" - -#: ../utils/net_conf.c:305 ../utils/net_conf.c:318 ../utils/net_conf.c:614 ../utils/net_conf.c:742 ../utils/net_conf.c:780 ../utils/net_conf.c:786 ../utils/net_conf.c:860 ../utils/net_conf.c:866 ../utils/net_conf.c:916 ../utils/net_conf.c:970 -#: ../utils/net_conf.c:1010 ../utils/net_conf.c:1050 -msgid "error: out of memory!\n" -msgstr "" - -#: ../utils/net_conf.c:324 -#, c-format -msgid "error loading file '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:330 -msgid "" -"\n" -"TEST MODE - would import the following configuration:\n" -"\n" -msgstr "" - -#: ../utils/net_conf.c:346 ../utils/net_conf.c:382 ../utils/net_conf.c:407 ../utils/net_conf.c:793 -#, c-format -msgid "error starting transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:400 ../utils/net_conf.c:416 ../utils/net_conf.c:817 -#, c-format -msgid "error committing transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:427 ../utils/net_conf.c:828 -#, c-format -msgid "error cancelling transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:484 -#, c-format -msgid "Error deleting configuration: %s\n" -msgstr "" - -#: ../utils/net_conf.c:521 -#, c-format -msgid "error getting share parameters: %s\n" -msgstr "" - -#: ../utils/net_conf.c:630 -#, c-format -msgid "ERROR: share name %s contains invalid characters (any of %s)\n" -msgstr "" - -#: ../utils/net_conf.c:638 -msgid "ERROR: 'global' is not a valid share name.\n" -msgstr "" - -#: ../utils/net_conf.c:643 -#, c-format -msgid "ERROR: share %s already exists.\n" -msgstr "" - -#: ../utils/net_conf.c:652 -#, c-format -msgid "Error: path '%s' is not an absolute path.\n" -msgstr "" - -#: ../utils/net_conf.c:659 -#, c-format -msgid "" -"ERROR: cannot stat path '%s' to ensure this is a directory.\n" -"Error was '%s'.\n" -msgstr "" - -#: ../utils/net_conf.c:668 -#, c-format -msgid "ERROR: path '%s' is not a directory.\n" -msgstr "" - -#: ../utils/net_conf.c:679 -#, c-format -msgid "Error creating share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:690 ../utils/net_conf.c:699 ../utils/net_conf.c:707 ../utils/net_conf.c:715 -#, c-format -msgid "Error setting parameter %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:748 -#, c-format -msgid "Error deleting share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:801 -#, c-format -msgid "Error creating share '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:810 -#, c-format -msgid "Error setting value '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:874 ../utils/net_conf.c:930 -#, c-format -msgid "Error: given service '%s' does not exist.\n" -msgstr "" - -#: ../utils/net_conf.c:879 ../utils/net_conf.c:935 -#, c-format -msgid "Error: given parameter '%s' is not set.\n" -msgstr "" - -#: ../utils/net_conf.c:883 -#, c-format -msgid "Error getting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:939 -#, c-format -msgid "Error deleting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:977 -#, c-format -msgid "error getting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1023 -#, c-format -msgid "error setting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1056 -#, c-format -msgid "error deleting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1136 ../utils/net_help.c:36 -msgid "Usage:\n" -msgstr "" - -#: ../utils/net_conf.c:1160 -msgid "Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1162 -msgid "" -"net conf list\n" -" Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1171 -msgid "Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1173 -msgid "" -"net conf import\n" -" Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1181 -msgid "List the share names." -msgstr "" - -#: ../utils/net_conf.c:1182 -msgid "" -"net conf listshares\n" -" List the share names." -msgstr "" - -#: ../utils/net_conf.c:1189 -msgid "Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1190 -msgid "" -"net conf drop\n" -" Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1197 -msgid "Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1198 -msgid "" -"net conf showshare\n" -" Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1205 -#, fuzzy -msgid "Create a new share." -msgstr "ファイル共有の作成" - -#: ../utils/net_conf.c:1206 -msgid "" -"net conf addshare\n" -" Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1213 -#, fuzzy -msgid "Delete a share." -msgstr "ファイル共有の削除" - -#: ../utils/net_conf.c:1214 -msgid "" -"net conf delshare\n" -" Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1221 -#, fuzzy -msgid "Store a parameter." -msgstr "ファイル共有 パラメータ" - -#: ../utils/net_conf.c:1222 -msgid "" -"net conf setparm\n" -" Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1229 -msgid "Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1230 -msgid "" -"net conf getparm\n" -" Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1237 -#, fuzzy -msgid "Delete a parameter." -msgstr "印刷共有の削除" - -#: ../utils/net_conf.c:1238 -msgid "" -"net conf delparm\n" -" Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1245 -msgid "Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1246 -msgid "" -"net conf getincludes\n" -" Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1253 -msgid "Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1254 -msgid "" -"net conf setincludes\n" -" Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1261 -msgid "Delete includes from a share definition." -msgstr "" - -#: ../utils/net_conf.c:1262 -msgid "" -"net conf setincludes\n" -" Delete includes from a share definition." -msgstr "" - -#: ../utils/net_dom.c:25 -msgid "" -"usage: net dom join \n" -" Join a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:28 -msgid "" -"usage: net dom unjoin \n" -" Unjoin a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:31 -msgid "" -"usage: net dom renamecomputer \n" -" Rename joined computer\n" -msgstr "" - -#: ../utils/net_dom.c:91 -#, c-format -msgid "Failed to unjoin domain: %s\n" -msgstr "" - -#: ../utils/net_dom.c:97 ../utils/net_dom.c:204 -msgid "Shutting down due to a domain membership change" -msgstr "" - -#: ../utils/net_dom.c:290 -#, c-format -msgid "Failed to rename machine: " -msgstr "" - -#: ../utils/net_dom.c:292 -#, c-format -msgid "Computer is not joined to a Domain\n" -msgstr "" - -#: ../utils/net_dom.c:301 -msgid "Shutting down due to a computer rename" -msgstr "" - -#: ../utils/net_dom.c:338 -#, fuzzy -msgid "Join a remote machine" -msgstr "リモートマシン" - -#: ../utils/net_dom.c:339 -msgid "" -"net dom join \n" -" Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:347 -#, fuzzy -msgid "Unjoin a remote machine" -msgstr "リモートマシン" - -#: ../utils/net_dom.c:348 -msgid "" -"net dom unjoin \n" -" Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:356 -msgid "Rename a computer that is joined to a domain" -msgstr "" - -#: ../utils/net_dom.c:357 -msgid "" -"net dom renamecomputer \n" -" Rename joined computer" -msgstr "" - -#: ../utils/net_eventlog.c:46 -msgid "usage: net eventlog dump \n" -msgstr "" - -#: ../utils/net_eventlog.c:52 ../utils/net_eventlog.c:108 -#, c-format -msgid "failed to load evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:59 ../utils/net_eventlog.c:129 -#, fuzzy, c-format -msgid "evt pull failed: %s\n" -msgstr "パスワード管理" - -#: ../utils/net_eventlog.c:102 -msgid "usage: net eventlog import \n" -msgstr "" - -#: ../utils/net_eventlog.c:116 -#, fuzzy, c-format -msgid "evt header pull failed: %s\n" -msgstr "パスワード管理" - -#: ../utils/net_eventlog.c:122 -msgid "input file is wrapped, cannot proceed\n" -msgstr "" - -#: ../utils/net_eventlog.c:138 ../utils/net_eventlog.c:203 -#, c-format -msgid "can't open the eventlog TDB (%s)\n" -msgstr "" - -#: ../utils/net_eventlog.c:158 -#, c-format -msgid "can't write to the eventlog: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:164 -#, c-format -msgid "wrote %d entries to tdb\n" -msgstr "" - -#: ../utils/net_eventlog.c:197 -msgid "usage: net eventlog export \n" -msgstr "" - -#: ../utils/net_eventlog.c:214 -#, c-format -msgid "failed to save evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:243 -msgid "Dump eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:244 -msgid "" -"net eventlog dump\n" -" Dump win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:251 -#, fuzzy -msgid "Import eventlog" -msgstr "*注" - -#: ../utils/net_eventlog.c:252 -msgid "" -"net eventlog import\n" -" Import win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:259 -msgid "Export eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:260 -msgid "" -"net eventlog export\n" -" Export win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_file.c:27 -msgid "" -"net [] file [misc. options] [targets]\n" -"\tlists all open files on file server\n" -msgstr "" - -#: ../utils/net_file.c:29 -msgid "" -"net [] file USER [misc. options] [targets]\n" -"\tlists all files opened by username on file server\n" -msgstr "" - -#: ../utils/net_file.c:32 -msgid "" -"net [] file CLOSE [misc. options] [targets]\n" -"\tcloses specified file on target server\n" -msgstr "" - -#: ../utils/net_file.c:34 -msgid "" -"net [rap] file INFO [misc. options] [targets]\n" -"\tdisplays information about the specified open file\n" -msgstr "" - -#: ../utils/net_group.c:27 -msgid "" -"net [] group [misc. options] [targets]\n" -"\tList user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:29 -msgid "" -"net rpc group LIST [global|local|builtin]* [misc. options]\n" -"\tList specific user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:31 -msgid "" -"net [] group DELETE [misc. options] [targets]\n" -"\tDelete specified group\n" -msgstr "" - -#: ../utils/net_group.c:34 -msgid "" -"\n" -"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" -"\tCreate specified group\n" -msgstr "" - -#: ../utils/net_group.c:37 -msgid "" -"\n" -"net rpc group MEMBERS \n" -"\tList Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:38 -msgid "" -"\n" -"net rpc group ADDMEM \n" -"\tAdd Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:40 -msgid "" -"\n" -"net rpc group DELMEM \n" -"\tDelete Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:44 -msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" -msgstr "" - -#: ../utils/net_group.c:46 -msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" -msgstr "" - -#: ../utils/net_group.c:48 -msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" -msgstr "" - -#: ../utils/net_groupmap.c:38 -#, c-format -msgid "NT Group %s doesn't exist in mapping DB\n" -msgstr "" - -#: ../utils/net_groupmap.c:46 -#, c-format -msgid "converting sid %s from a string failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:65 -#, c-format -msgid "\tSID : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:66 -#, c-format -msgid "\tUnix gid : %u\n" -msgstr "" - -#: ../utils/net_groupmap.c:67 -#, c-format -msgid "\tUnix group: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:68 -#, c-format -msgid "\tGroup type: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:70 -#, c-format -msgid "\tComment : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:84 -msgid "" -"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" -" verbose\tPrint verbose list\n" -" ntgroup\tNT group to list\n" -" sid\tSID of group to list" -msgstr "" - -#: ../utils/net_groupmap.c:91 ../utils/net_groupmap.c:271 ../utils/net_groupmap.c:356 ../utils/net_groupmap.c:412 ../utils/net_groupmap.c:495 ../utils/net_groupmap.c:522 -#, fuzzy, c-format -msgid "" -"Usage:\n" -"%s\n" -msgstr "ユーザ名" - -#: ../utils/net_groupmap.c:106 ../utils/net_groupmap.c:213 ../utils/net_groupmap.c:220 ../utils/net_groupmap.c:365 ../utils/net_groupmap.c:372 ../utils/net_groupmap.c:504 -msgid "must supply a name\n" -msgstr "" - -#: ../utils/net_groupmap.c:113 ../utils/net_groupmap.c:227 ../utils/net_groupmap.c:511 -msgid "must supply a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:118 ../utils/net_groupmap.c:265 ../utils/net_groupmap.c:406 ../utils/net_groupmap.c:516 -#, fuzzy, c-format -msgid "Bad option: %s\n" -msgstr "基本 オプション" - -#: ../utils/net_groupmap.c:139 -msgid "Failure to local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:181 -msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" -msgstr "" - -#: ../utils/net_groupmap.c:195 -#, fuzzy, c-format -msgid "" -"Usage\n" -"%s\n" -msgstr "ユーザ名" - -#: ../utils/net_groupmap.c:205 -#, c-format -msgid "RID must be greater than %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:235 ../utils/net_groupmap.c:380 -msgid "must supply a comment string\n" -msgstr "" - -#: ../utils/net_groupmap.c:259 -#, c-format -msgid "unknown group type %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:276 -#, c-format -msgid "Can't lookup UNIX group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:282 -#, c-format -msgid "Unix group %s already mapped to SID %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:289 -msgid "No rid or sid specified, choosing a RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:292 -msgid "Could not get new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:297 -#, c-format -msgid "Got RID %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:328 -#, c-format -msgid "adding entry for group %s failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:332 -#, c-format -msgid "Successfully added group %s to the mapping db as a %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:349 -msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" -msgstr "" - -#: ../utils/net_groupmap.c:388 -msgid "must supply a group name\n" -msgstr "" - -#: ../utils/net_groupmap.c:434 -msgid "Failed to find local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:443 -msgid "Can't map to an unknown group type.\n" -msgstr "" - -#: ../utils/net_groupmap.c:449 -msgid "You can only change between domain and local groups.\n" -msgstr "" - -#: ../utils/net_groupmap.c:466 -#, c-format -msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" -msgstr "" - -#: ../utils/net_groupmap.c:476 -msgid "Could not update group database\n" -msgstr "" - -#: ../utils/net_groupmap.c:480 -#, c-format -msgid "Updated mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:491 -msgid "net groupmap delete {ntgroup=|sid=}" -msgstr "" - -#: ../utils/net_groupmap.c:532 -#, c-format -msgid "Unable to resolve group %s to a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:539 -#, c-format -msgid "Failed to remove group %s from the mapping db!\n" -msgstr "" - -#: ../utils/net_groupmap.c:544 -#, c-format -msgid "Sucessfully removed %s from the mapping db\n" -msgstr "" - -#: ../utils/net_groupmap.c:557 -msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" -msgstr "" - -#: ../utils/net_groupmap.c:563 -msgid "Can only specify -L or -D, not both\n" -msgstr "" - -#: ../utils/net_groupmap.c:573 -#, c-format -msgid "Could not find unix group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:594 -#, c-format -msgid "Could not find group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:605 -msgid "Could not allocate new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:622 -#, c-format -msgid "Could not add mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:633 -#, c-format -msgid "Can't change type of the BUILTIN group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:660 -#, c-format -msgid "Could not update group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:674 -msgid "" -"Usage:\n" -"net groupmap cleanup\n" -" Delete all group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:682 -msgid "Could not list group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:689 -#, c-format -msgid "Group %s is not mapped\n" -msgstr "" - -#: ../utils/net_groupmap.c:692 -#, c-format -msgid "Deleting mapping for NT Group %s, sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:712 -msgid "Usage: net groupmap addmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:717 -#, c-format -msgid "Could not add sid %s to alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:733 -msgid "Usage: net groupmap delmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:738 -#, c-format -msgid "Could not delete sid %s from alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:755 -msgid "Usage: net groupmap listmem alias-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:764 -#, c-format -msgid "Could not list members for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:791 -#, c-format -msgid "Could not list memberships for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:814 -msgid "Usage: net groupmap memberof sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:820 ../utils/net_idmap.c:345 -msgid "talloc_init failed\n" -msgstr "" - -#: ../utils/net_groupmap.c:827 -msgid "Could not get domain sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:850 -msgid "Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:851 -msgid "" -"net groupmap add\n" -" Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:858 -msgid "Update a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:859 -msgid "" -"net groupmap modify\n" -" Modify an existing group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:866 -msgid "Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:867 -msgid "" -"net groupmap delete\n" -" Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:874 -msgid "Set group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:875 -msgid "" -"net groupmap set\n" -" Set a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:882 -msgid "Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:883 -msgid "" -"net groupmap cleanup\n" -" Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:890 -msgid "Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:891 -msgid "" -"net groupmap addmem\n" -" Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:898 -msgid "Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:899 -msgid "" -"net groupmap delmem\n" -" Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:906 -msgid "List foreign group members" -msgstr "" - -#: ../utils/net_groupmap.c:907 -msgid "" -"net groupmap listmem\n" -" List foreign alias members" -msgstr "" - -#: ../utils/net_groupmap.c:914 -msgid "List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:915 -msgid "" -"net groupmap memberships\n" -" List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:922 -msgid "List current group map" -msgstr "" - -#: ../utils/net_groupmap.c:923 -msgid "" -"net groupmap list\n" -" List current group map" -msgstr "" - -#: ../utils/net_help.c:39 -#, c-format -msgid "net %s usage:\n" -msgstr "" - -#: ../utils/net_help_common.c:25 ../utils/net_join.c:28 -msgid "Valid methods: (auto-detected if not specified)\n" -msgstr "" - -#: ../utils/net_help_common.c:26 ../utils/net_join.c:29 -msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" -msgstr "" - -#: ../utils/net_help_common.c:27 ../utils/net_join.c:30 -msgid "\trpc\t\t\t\tDCE-RPC\n" -msgstr "" - -#: ../utils/net_help_common.c:28 -msgid "\trap\t\t\t\tRAP (older systems)\n" -msgstr "" - -#: ../utils/net_help_common.c:35 -msgid "Valid targets: choose one (none defaults to localhost)\n" -msgstr "" - -#: ../utils/net_help_common.c:36 -msgid "\t-S or --server=\t\tserver name\n" -msgstr "" - -#: ../utils/net_help_common.c:37 -msgid "\t-I or --ipaddress=\taddress of target server\n" -msgstr "" - -#: ../utils/net_help_common.c:38 -msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" -msgstr "" - -#: ../utils/net_help_common.c:41 -#, fuzzy -msgid "Valid miscellaneous options are:\n" -msgstr "その他のオプション" - -#. misc options -#: ../utils/net_help_common.c:42 -msgid "\t-p or --port=\t\tconnection port on target\n" -msgstr "" - -#: ../utils/net_help_common.c:43 -msgid "\t-W or --myworkgroup=\tclient workgroup\n" -msgstr "" - -#: ../utils/net_help_common.c:44 -msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" -msgstr "" - -#: ../utils/net_help_common.c:45 -msgid "\t-n or --myname=\t\tclient name\n" -msgstr "" - -#: ../utils/net_help_common.c:46 -msgid "\t-U or --user=\t\tuser name\n" -msgstr "" - -#: ../utils/net_help_common.c:47 -msgid "\t-s or --configfile=\tpathname of smb.conf file\n" -msgstr "" - -#: ../utils/net_help_common.c:48 -msgid "\t-l or --long\t\t\tDisplay full information\n" -msgstr "" - -#: ../utils/net_help_common.c:49 -msgid "\t-V or --version\t\t\tPrint samba version information\n" -msgstr "" - -#: ../utils/net_help_common.c:50 -msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" -msgstr "" - -#: ../utils/net_help_common.c:52 -msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" -msgstr "" - -#: ../utils/net_help_common.c:54 -msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" -msgstr "" - -#: ../utils/net_idmap.c:25 -msgid "Out of memory!\n" -msgstr "" - -#: ../utils/net_idmap.c:39 -#, c-format -msgid "USER HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:44 -#, c-format -msgid "GROUP HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:63 -msgid "" -"Usage:\n" -"net idmap dump \n" -" Dump current ID mapping.\n" -" inputfile\tTDB file to read mappings from.\n" -msgstr "" - -#: ../utils/net_idmap.c:73 -#, c-format -msgid "Could not open idmap: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:94 -msgid "" -"Usage:\n" -"net idmap restore [inputfile]\n" -" Restore ID mappings from file\n" -" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" -msgstr "" - -#: ../utils/net_idmap.c:104 -msgid "To use net idmap Winbindd must be running.\n" -msgstr "" - -#: ../utils/net_idmap.c:142 -#, c-format -msgid "Could not set USER HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:151 -#, c-format -msgid "Could not set GROUP HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:156 -#, c-format -msgid "ignoring invalid line [%s]\n" -msgstr "" - -#: ../utils/net_idmap.c:163 -#, c-format -msgid "ignoring invalid sid [%s]: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:175 -#, c-format -msgid "Could not set mapping of %s %lu to sid %s: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:196 ../utils/net_idmap.c:202 -msgid "Not Implemented yet\n" -msgstr "" - -#: ../utils/net_idmap.c:240 -msgid "" -"Usage:\n" -"net idmap secret {|alloc} \n" -" Set the secret for the specified domain (or alloc module)\n" -" DOMAIN\tDomain to set secret for.\n" -" alloc\tSet secret for the alloc module\n" -" secret\tNew secret to set.\n" -msgstr "" - -#: ../utils/net_idmap.c:271 -msgid "The only currently supported backend is LDAP\n" -msgstr "" - -#: ../utils/net_idmap.c:281 -#, c-format -msgid "Missing ldap_user_dn option for domain %s\n" -msgstr "" - -#: ../utils/net_idmap.c:292 -msgid "Missing ldap_user_dn option for alloc backend\n" -msgstr "" - -#: ../utils/net_idmap.c:302 -msgid "Failed to store secret\n" -msgstr "" - -#: ../utils/net_idmap.c:307 -msgid "Secret stored\n" -msgstr "" - -#: ../utils/net_idmap.c:313 -msgid "" -"net idmap dump \n" -" Dump current id mapping\n" -msgstr "" - -#: ../utils/net_idmap.c:316 -msgid "" -"net idmap restore\n" -" Restore entries from stdin\n" -msgstr "" - -#. Deliberately *not* document net idmap delete -#: ../utils/net_idmap.c:321 -msgid "" -"net idmap secret |alloc \n" -" Set the secret for the specified DOMAIN (or the alloc module)\n" -msgstr "" - -#: ../utils/net_idmap.c:339 -msgid "usage: net idmap aclmapset \n" -msgstr "" - -#: ../utils/net_idmap.c:351 -#, fuzzy, c-format -msgid "db_open failed: %s\n" -msgstr "パスワード管理" - -#: ../utils/net_idmap.c:356 ../utils/net_idmap.c:361 -#, c-format -msgid "%s is not a valid sid\n" -msgstr "" - -#: ../utils/net_idmap.c:367 -msgid "talloc_strdup failed\n" -msgstr "" - -#: ../utils/net_idmap.c:373 -msgid "could not fetch db record\n" -msgstr "" - -#: ../utils/net_idmap.c:381 -#, c-format -msgid "could not store record: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:402 -msgid "Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:403 -msgid "" -"net idmap dump\n" -" Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:410 -msgid "Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:411 -msgid "" -"net idmap restore\n" -" Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:418 ../utils/net_idmap.c:426 -msgid "Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:419 -msgid "" -"net idmap setmap\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:427 -msgid "" -"net idmap delete\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:434 -msgid "Set secret for specified domain" -msgstr "" - -#: ../utils/net_idmap.c:435 -msgid "" -"net idmap secret {|alloc} \n" -" Set secret for specified domain or alloc module" -msgstr "" - -#: ../utils/net_idmap.c:442 -msgid "Set acl map" -msgstr "" - -#: ../utils/net_idmap.c:443 -msgid "" -"net idmap aclmapset\n" -" Set acl map" -msgstr "" - -#: ../utils/net_join.c:26 -msgid "" -"\n" -"net [] join [misc. options]\n" -"\tjoins this server to a domain\n" -msgstr "" - -#: ../utils/net_join.c:47 -msgid "ADS join did not work, falling back to RPC...\n" -msgstr "" - -#: ../utils/net_lookup.c:25 -msgid "" -" net lookup [host] HOSTNAME[#]\n" -"\tgives IP for a hostname\n" -"\n" -" net lookup ldap [domain]\n" -"\tgives IP of domain's ldap server\n" -"\n" -" net lookup kdc [realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup pdc [domain|realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup dc [domain]\n" -"\tgives IP of domains Domain Controllers\n" -"\n" -" net lookup master [domain|wg]\n" -"\tgive IP of master browser\n" -"\n" -" net lookup name [name]\n" -"\tLookup name's sid and type\n" -"\n" -" net lookup sid [sid]\n" -"\tGive sid's name and type\n" -"\n" -" net lookup dsgetdcname [name] [flags] [sitename]\n" -"\n" -msgstr "" - -#: ../utils/net_lookup.c:112 -msgid "net_lookup_ldap: talloc_init() failed!\n" -msgstr "" - -#: ../utils/net_lookup.c:325 -msgid "usage: net lookup name \n" -msgstr "" - -#: ../utils/net_lookup.c:331 ../utils/net_lookup.c:358 -#, c-format -msgid "Could not lookup name %s\n" -msgstr "" - -#: ../utils/net_lookup.c:347 -msgid "usage: net lookup sid \n" -msgstr "" - -#: ../utils/net_lookup.c:352 -#, c-format -msgid "Could not convert %s to SID\n" -msgstr "" - -#: ../utils/net_lookup.c:378 -msgid "usage: net lookup dsgetdcname \n" -msgstr "" - -#: ../utils/net_lookup.c:404 -#, c-format -msgid "failed with: %s\n" -msgstr "" - -#: ../utils/net_lookup.c:437 -msgid "" -"\n" -"Usage: \n" -msgstr "" - -#: ../utils/net_lua.c:60 -msgid "connect: Expected IP-Address" -msgstr "" - -#: ../utils/net_lua.c:65 -msgid "connect: Expected port" -msgstr "" - -#: ../utils/net_lua.c:84 -#, fuzzy, c-format -msgid "connect failed: %s" -msgstr "パスワード管理" - -#: ../utils/net_lua.c:132 -#, c-format -msgid "socket domain %s unknown" -msgstr "" - -#: ../utils/net_lua.c:144 -#, c-format -msgid "socket type %s unknown" -msgstr "" - -#: ../utils/net_lua.c:155 -#, fuzzy, c-format -msgid "socket() failed: %s" -msgstr "パスワード管理" - -#: ../utils/net_lua.c:278 -msgid "evt_reference_thread failed\n" -msgstr "" - -#: ../utils/net_lua.c:287 -msgid "event_add_timed failed" -msgstr "" - -#: ../utils/net_lua.c:300 -msgid "event_once called from non-base thread" -msgstr "" - -#: ../utils/net_lua.c:323 -msgid "event_context_init failed" -msgstr "" - -#: ../utils/net_lua.c:353 -msgid "lua_newstate failed\n" -msgstr "" - -#: ../utils/net_lua.c:371 -msgid "luaL_dofile returned an error\n" -msgstr "" - -#: ../utils/net_lua.c:376 -msgid "luaL_dostring returned an error\n" -msgstr "" diff --git a/source3/po/pl.msg b/source3/po/pl.msg index f818c6698d..aca5de6eb3 100644 --- a/source3/po/pl.msg +++ b/source3/po/pl.msg @@ -17,8 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-30 12:18+0200\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2001-08-15 22:45+02:00\n" "Last-Translator: Rafal Szczesniak \n" "Language-Team: pl\n" @@ -26,4013 +25,568 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -#: ../web/swat.c:153 +#: ../web/swat.c:117 #, c-format msgid "ERROR: Can't open %s" msgstr "" -#: ../web/swat.c:241 +#: ../web/swat.c:200 msgid "Help" msgstr "Pomoc" -#: ../web/swat.c:247 ../web/swat.c:272 ../web/swat.c:293 ../web/swat.c:302 ../web/swat.c:311 ../web/swat.c:317 ../web/swat.c:329 ../web/swat.c:343 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "Ustaw domyślnie" -#: ../web/swat.c:465 +#: ../web/swat.c:408 #, c-format msgid "failed to open %s for writing" msgstr "" -#: ../web/swat.c:488 +#: ../web/swat.c:431 #, c-format msgid "Can't reload %s" msgstr "" -#: ../web/swat.c:561 +#: ../web/swat.c:501 #, c-format msgid "Logged in as %s" msgstr "Zalogowany jako %s

\n" -#: ../web/swat.c:565 +#: ../web/swat.c:505 msgid "Home" msgstr "Strona domowa" -#: ../web/swat.c:567 +#: ../web/swat.c:507 msgid "Globals" msgstr "Ustawienia globalne" -#: ../web/swat.c:568 +#: ../web/swat.c:508 msgid "Shares" msgstr "Współudziały" -#: ../web/swat.c:569 +#: ../web/swat.c:509 msgid "Printers" msgstr "Drukarki" -#: ../web/swat.c:570 +#: ../web/swat.c:510 msgid "Wizard" msgstr "" -#: ../web/swat.c:574 +#: ../web/swat.c:513 msgid "Status" msgstr "Status" -#: ../web/swat.c:575 +#: ../web/swat.c:514 msgid "View Config" msgstr "Przejrzyj Konfigurację" -#: ../web/swat.c:577 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Zarządzanie Hasłami" -#: ../web/swat.c:587 +#: ../web/swat.c:526 msgid "Current View Is" msgstr "Bieżąca Konfiguracja" -#: ../web/swat.c:588 ../web/swat.c:591 +#: ../web/swat.c:527 ../web/swat.c:530 msgid "Basic" msgstr "Widok Podstawowy" -#: ../web/swat.c:589 ../web/swat.c:592 +#: ../web/swat.c:528 ../web/swat.c:531 msgid "Advanced" msgstr "Widok Zaawansowany" -#: ../web/swat.c:590 +#: ../web/swat.c:529 msgid "Change View To" msgstr "Zmień Hasło" -#: ../web/swat.c:619 +#: ../web/swat.c:554 msgid "Current Config" msgstr "Bieżąca Konfiguracja" -#: ../web/swat.c:623 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Normalny Widok" -#: ../web/swat.c:625 +#: ../web/swat.c:560 msgid "Full View" msgstr "Pełny Widok" #. Here we first set and commit all the parameters that were selected #. in the previous screen. -#: ../web/swat.c:644 +#: ../web/swat.c:579 msgid "Wizard Parameter Edit Page" msgstr "" -#: ../web/swat.c:673 +#: ../web/swat.c:608 msgid "Note: smb.conf file has been read and rewritten" msgstr "" #. Here we go ... -#: ../web/swat.c:779 +#: ../web/swat.c:716 msgid "Samba Configuration Wizard" msgstr "" -#: ../web/swat.c:783 +#: ../web/swat.c:720 msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." msgstr "" -#: ../web/swat.c:784 +#: ../web/swat.c:721 msgid "The same will happen if you press the commit button." msgstr "" -#: ../web/swat.c:787 +#: ../web/swat.c:724 msgid "Rewrite smb.conf file" msgstr "" -#: ../web/swat.c:788 +#: ../web/swat.c:725 msgid "Commit" msgstr "Potwierdź Zmiany" -#: ../web/swat.c:789 +#: ../web/swat.c:726 msgid "Edit Parameter Values" msgstr "Parametry Drukarki" -#: ../web/swat.c:795 +#: ../web/swat.c:732 msgid "Server Type" msgstr "" -#: ../web/swat.c:796 +#: ../web/swat.c:733 msgid "Stand Alone" msgstr "Uruchom nmbd" -#: ../web/swat.c:797 +#: ../web/swat.c:734 msgid "Domain Member" msgstr "" -#: ../web/swat.c:798 +#: ../web/swat.c:735 msgid "Domain Controller" msgstr "" -#: ../web/swat.c:801 +#: ../web/swat.c:738 msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "" -#: ../web/swat.c:803 +#: ../web/swat.c:740 msgid "Configure WINS As" msgstr "" -#: ../web/swat.c:804 +#: ../web/swat.c:741 msgid "Not Used" msgstr "" -#: ../web/swat.c:805 +#: ../web/swat.c:742 msgid "Server for client use" msgstr "" -#: ../web/swat.c:806 +#: ../web/swat.c:743 msgid "Client of another WINS server" msgstr "" -#: ../web/swat.c:808 +#: ../web/swat.c:745 msgid "Remote WINS Server" msgstr "" -#: ../web/swat.c:819 +#: ../web/swat.c:756 msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "" -#: ../web/swat.c:820 +#: ../web/swat.c:757 msgid "Please Select desired WINS mode above." msgstr "" -#: ../web/swat.c:822 +#: ../web/swat.c:759 msgid "Expose Home Directories" msgstr "" -#: ../web/swat.c:837 +#: ../web/swat.c:774 msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." msgstr "" -#: ../web/swat.c:850 +#: ../web/swat.c:787 msgid "Global Parameters" msgstr "Zmienne Globalne" -#: ../web/swat.c:878 ../web/swat.c:986 ../web/swat.c:1344 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Potwierdź Zmiany" -#: ../web/swat.c:882 ../web/swat.c:989 ../web/swat.c:1346 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "Zresetuj Wartości" -#: ../web/swat.c:908 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Parametry Współudziału" -#: ../web/swat.c:955 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Wybierz Współudział" -#: ../web/swat.c:971 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Usuń Współudział" -#: ../web/swat.c:978 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Utwórz Współudział" -#: ../web/swat.c:1014 +#: ../web/swat.c:944 msgid "password change in demo mode rejected" msgstr "zmiana hasła w trybie demo odrzucona\n" -#: ../web/swat.c:1028 +#: ../web/swat.c:957 msgid "Can't setup password database vectors." msgstr "" -#: ../web/swat.c:1056 +#: ../web/swat.c:983 msgid " Must specify \"User Name\" " msgstr " Musisz podać \"Nazwę Użytkownika\" \n" -#: ../web/swat.c:1072 +#: ../web/swat.c:999 msgid " Must specify \"Old Password\" " msgstr " Musisz podać \"Stare Hasło\" \n" -#: ../web/swat.c:1078 +#: ../web/swat.c:1005 msgid " Must specify \"Remote Machine\" " msgstr " Musisz podać \"Zdalną Maszynę\" \n" -#: ../web/swat.c:1085 +#: ../web/swat.c:1012 msgid " Must specify \"New, and Re-typed Passwords\" " msgstr " Musisz podać \"Nowe Hasło, i ponownie wpisane Nowe Hasło\" \n" -#: ../web/swat.c:1091 +#: ../web/swat.c:1018 msgid " Re-typed password didn't match new password " msgstr " Ponownie wpisane hasło nie pasuje do nowego hasła\n" -#: ../web/swat.c:1124 +#: ../web/swat.c:1048 #, c-format msgid " The passwd for '%s' has been changed." msgstr " Hasło dla '%s' zostało zmienione. \n" -#: ../web/swat.c:1127 +#: ../web/swat.c:1051 #, c-format msgid " The passwd for '%s' has NOT been changed." msgstr " Hasło dla '%s' NIE zostało zmienione. \n" -#: ../web/swat.c:1152 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Zarządzanie Hasłami na Serwerze" #. #. * Create all the dialog boxes for data collection #. -#: ../web/swat.c:1161 ../web/swat.c:1208 +#: ../web/swat.c:1085 ../web/swat.c:1132 msgid "User Name" msgstr " Nazwa Użytkownika" -#: ../web/swat.c:1164 ../web/swat.c:1210 +#: ../web/swat.c:1088 ../web/swat.c:1134 msgid "Old Password" msgstr " Stare Hasło" -#: ../web/swat.c:1167 ../web/swat.c:1212 +#: ../web/swat.c:1091 ../web/swat.c:1136 msgid "New Password" msgstr " Nowe Hasło" -#: ../web/swat.c:1169 ../web/swat.c:1214 +#: ../web/swat.c:1093 ../web/swat.c:1138 msgid "Re-type New Password" msgstr " Ponownie wpisz Nowe Hasło" -#: ../web/swat.c:1177 ../web/swat.c:1225 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "Zmień Hasło" -#: ../web/swat.c:1180 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Dodaj Nowego Użytkownika" -#: ../web/swat.c:1182 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Usuń Użytkownika" -#: ../web/swat.c:1184 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "Zablokuj Użytkownika" -#: ../web/swat.c:1186 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Odblokuj Użytkownika" -#: ../web/swat.c:1199 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "Zarządzanie Hasłami Klient/Serwer" -#: ../web/swat.c:1216 +#: ../web/swat.c:1140 msgid "Remote Machine" msgstr " Zdalna Maszyna" -#: ../web/swat.c:1255 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Parametry Drukarki" -#: ../web/swat.c:1257 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "Ważna Informacja:" -#: ../web/swat.c:1258 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Nazwy Drukarek zaznaczone [*] w rozwijanym polu Wybierz Drukarkę " -#: ../web/swat.c:1259 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "są drukarkami automatycznie ładowanymi z " -#: ../web/swat.c:1260 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Nazwa Printcap" -#: ../web/swat.c:1261 +#: ../web/swat.c:1185 msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "Próby usunięcia tych drukarek ze SWAT nie przyniosą efektu.\n" -#: ../web/swat.c:1310 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Wybierz Drukarkę" -#: ../web/swat.c:1329 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Usuń Drukarkę" -#: ../web/swat.c:1336 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Utwórz Drukarkę" -#: ../web/statuspage.c:151 -msgid "RDWR " +#: ../web/statuspage.c:123 +msgid "RDONLY " msgstr "" -#: ../web/statuspage.c:153 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "" -#: ../web/statuspage.c:155 -msgid "RDONLY " +#: ../web/statuspage.c:125 +msgid "RDWR " msgstr "" -#: ../web/statuspage.c:329 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Status Serwera" -#: ../web/statuspage.c:334 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Automatyczne Odświeżanie" -#: ../web/statuspage.c:335 ../web/statuspage.c:340 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Interwał Odświeżania: " -#: ../web/statuspage.c:339 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Zatrzymaj Odświeżanie" -#: ../web/statuspage.c:348 +#: ../web/statuspage.c:334 msgid "version:" msgstr "wersja:" -#: ../web/statuspage.c:351 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "działa" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "nie działa" -#: ../web/statuspage.c:355 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Zatrzymaj smbd" -#: ../web/statuspage.c:357 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Uruchom smbd" -#: ../web/statuspage.c:359 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Zrestartuj smbd" -#: ../web/statuspage.c:364 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "" -#: ../web/statuspage.c:368 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Zatrzymaj nmbd" -#: ../web/statuspage.c:370 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Uruchom nmbd" -#: ../web/statuspage.c:372 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Zrestartuj nmbd" -#: ../web/statuspage.c:378 +#: ../web/statuspage.c:364 msgid "winbindd:" msgstr "" -#: ../web/statuspage.c:382 +#: ../web/statuspage.c:368 msgid "Stop winbindd" msgstr "Zatrzymaj nmbd" -#: ../web/statuspage.c:384 +#: ../web/statuspage.c:370 msgid "Start winbindd" msgstr "Uruchom nmbd" -#: ../web/statuspage.c:386 +#: ../web/statuspage.c:372 msgid "Restart winbindd" msgstr "Zrestartuj nmbd" #. stop, restart all -#: ../web/statuspage.c:395 +#: ../web/statuspage.c:381 msgid "Stop All" msgstr "" -#: ../web/statuspage.c:396 +#: ../web/statuspage.c:382 msgid "Restart All" msgstr "Zrestartuj nmbd" #. start all -#: ../web/statuspage.c:400 +#: ../web/statuspage.c:386 msgid "Start All" msgstr "Uruchom nmbd" -#: ../web/statuspage.c:407 +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Aktywne Połączenia" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "Klient" -#: ../web/statuspage.c:409 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "adres IP" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Data" -#: ../web/statuspage.c:411 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Zatrzymaj" -#: ../web/statuspage.c:419 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Aktywne Współudziały" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Współudział" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "User" msgstr "Użytkownik" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Grupa" -#: ../web/statuspage.c:428 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "Otwarte Pliki" -#: ../web/statuspage.c:431 -msgid "UID" -msgstr "" - -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "Współdzielenie" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "File" msgstr "Plik" -#: ../web/statuspage.c:438 +#: ../web/statuspage.c:425 msgid "Show Client in col 1" msgstr "" -#: ../web/statuspage.c:439 +#: ../web/statuspage.c:426 msgid "Show PID in col 1" msgstr "" -#: ../param/loadparm.c:907 +#: ../param/loadparm.c:755 msgid "Base Options" msgstr "Bazowe Opcje" -#: ../param/loadparm.c:1047 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Opcje Zabezpieczeń" -#: ../param/loadparm.c:1800 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Opcje Blokowania" -#: ../param/loadparm.c:1929 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Opcje Protokołu" -#: ../param/loadparm.c:2301 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Opcje Dostrajające" -#: ../param/loadparm.c:2538 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Opcje Drukowania" -#: ../param/loadparm.c:2858 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Obsługa Nazw Plików" -#: ../param/loadparm.c:3088 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Opcje Domeny" -#: ../param/loadparm.c:3100 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Opcje Logowania" -#: ../param/loadparm.c:3273 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Opcje Przeglądania" -#: ../param/loadparm.c:3384 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "Opcje WINS" -#: ../param/loadparm.c:3432 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Opcje Blokowania" -#: ../param/loadparm.c:3552 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Opcje Ldap" -#: ../param/loadparm.c:3708 -#, fuzzy -msgid "EventLog Options" -msgstr "Opcje Logowania" - -#: ../param/loadparm.c:3720 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Pozostałe Opcje" -#: ../param/loadparm.c:4301 +#: ../param/loadparm.c:1138 msgid "VFS module options" msgstr "Opcje WINS" -#: ../param/loadparm.c:4323 -#, fuzzy -msgid "MSDFS options" -msgstr "Opcje WINS" - -#: ../param/loadparm.c:4353 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Opcje Drukowania" - -#: ../utils/net.c:103 -msgid "Enter machine password: " -msgstr "" - -#: ../utils/net.c:107 -msgid "Unable to write the machine account password in the secrets database" -msgstr "" - -#: ../utils/net.c:111 -msgid "Modified trust account password in secrets database\n" -msgstr "" - -#: ../utils/net.c:115 -msgid "" -"Machine account password change requires the -f flag.\n" -"Do NOT use this function unless you know what it does!\n" -"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" -msgstr "" - -#: ../utils/net.c:150 ../utils/net.c:228 -#, c-format -msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" -msgstr "" - -#: ../utils/net.c:163 ../utils/net.c:251 -#, c-format -msgid "SID for domain %s is: %s\n" -msgstr "" - -#: ../utils/net.c:175 -msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:195 -msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:213 -msgid "usage: net getdomainsid\n" -msgstr "" - -#: ../utils/net.c:238 -msgid "Could not fetch local SID\n" -msgstr "" - -#: ../utils/net.c:242 -#, c-format -msgid "SID for local machine %s is: %s\n" -msgstr "" - -#: ../utils/net.c:246 -msgid "Could not fetch domain SID\n" -msgstr "" - -#: ../utils/net.c:263 -#, c-format -msgid "get_maxrid: Could not search %s\n" -msgstr "" - -#: ../utils/net.c:297 -msgid "usage: net maxrid\n" -msgstr "" - -#: ../utils/net.c:302 -msgid "can't get current maximum rid\n" -msgstr "" - -#: ../utils/net.c:306 -#, c-format -msgid "Currently used maximum rid: %d\n" -msgstr "" - -#: ../utils/net.c:317 -msgid "Run functions using RPC transport" -msgstr "" - -#: ../utils/net.c:318 -msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." -msgstr "" - -#: ../utils/net.c:325 -msgid "Run functions using RAP transport" -msgstr "" - -#: ../utils/net.c:326 -msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." -msgstr "" - -#: ../utils/net.c:333 -msgid "Run functions using ADS transport" -msgstr "" - -#: ../utils/net.c:334 -msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." -msgstr "" - -#: ../utils/net.c:343 -msgid "Functions on remote opened files" -msgstr "" - -#: ../utils/net.c:344 -msgid " Use 'net help file' to get more information about 'net file' commands." -msgstr "" - -#: ../utils/net.c:351 -msgid "Functions on shares" -msgstr "" - -#: ../utils/net.c:352 -msgid " Use 'net help share' to get more information about 'net share' commands." -msgstr "" - -#: ../utils/net.c:359 -msgid "Manage sessions" -msgstr "" - -#: ../utils/net.c:360 -msgid " Use 'net help session' to get more information about 'net session' commands." -msgstr "" - -#: ../utils/net.c:367 -msgid "List servers in workgroup" -msgstr "" - -#: ../utils/net.c:368 -msgid " Use 'net help server' to get more information about 'net server' commands." -msgstr "" - -#: ../utils/net.c:375 -msgid "List domains/workgroups on network" -msgstr "" - -#: ../utils/net.c:376 -msgid " Use 'net help domain' to get more information about 'net domain' commands." -msgstr "" - -#: ../utils/net.c:383 -msgid "Modify printer queue" -msgstr "" - -#: ../utils/net.c:384 -msgid " Use 'net help printq' to get more information about 'net printq' commands." -msgstr "" - -#: ../utils/net.c:391 -#, fuzzy -msgid "Manage users" -msgstr "Odblokuj Użytkownika" - -#: ../utils/net.c:392 -msgid " Use 'net help user' to get more information about 'net user' commands." -msgstr "" - -#: ../utils/net.c:399 -msgid "Manage groups" -msgstr "" - -#: ../utils/net.c:400 -msgid " Use 'net help group' to get more information about 'net group' commands." -msgstr "" - -#: ../utils/net.c:407 -msgid "Manage group mappings" -msgstr "" - -#: ../utils/net.c:408 -msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." -msgstr "" - -#: ../utils/net.c:415 -msgid "Functions on the SAM database" -msgstr "" - -#: ../utils/net.c:416 -msgid " Use 'net help sam' to get more information about 'net sam' commands." -msgstr "" - -#: ../utils/net.c:423 -msgid "Validate username and password" -msgstr "" - -#: ../utils/net.c:424 -msgid " Use 'net help validate' to get more information about 'net validate' commands." -msgstr "" - -#: ../utils/net.c:431 -msgid "Modify group memberships" -msgstr "" - -#: ../utils/net.c:432 -msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." -msgstr "" - -#: ../utils/net.c:438 -msgid "Execute remote command on a remote OS/2 server" -msgstr "" - -#: ../utils/net.c:439 -msgid " Use 'net help admin' to get more information about 'net admin' commands." -msgstr "" - -#: ../utils/net.c:445 -msgid "List/modify running services" -msgstr "" - -#: ../utils/net.c:446 -msgid " Use 'net help service' to get more information about 'net service' commands." -msgstr "" - -#: ../utils/net.c:453 -msgid "Change user password on target server" -msgstr "" - -#: ../utils/net.c:454 -msgid " Use 'net help password' to get more information about 'net password' commands." -msgstr "" - -#: ../utils/net.c:460 -#, fuzzy -msgid "Change the trust password" -msgstr "Zmień Hasło" - -#: ../utils/net.c:461 -msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." -msgstr "" - -#: ../utils/net.c:467 -#, fuzzy -msgid "Change the secret password" -msgstr "Zmień Hasło" - -#: ../utils/net.c:468 -msgid "" -" net [options] changesecretpw\n" -" Change the ADS domain member machine account password in secrets.tdb.\n" -" Do NOT use this function unless you know what it does.\n" -" Requires the -f flag to work." -msgstr "" - -#: ../utils/net.c:477 -msgid "Show/set time" -msgstr "" - -#: ../utils/net.c:478 -msgid " Use 'net help time' to get more information about 'net time' commands." -msgstr "" - -#: ../utils/net.c:484 -msgid "Look up host names/IP addresses" -msgstr "" - -#: ../utils/net.c:485 -msgid " Use 'net help lookup' to get more information about 'net lookup' commands." -msgstr "" - -#: ../utils/net.c:491 -msgid "Join a domain/AD" -msgstr "" - -#: ../utils/net.c:492 -msgid " Use 'net help join' to get more information about 'net join'." -msgstr "" - -#: ../utils/net.c:498 -msgid "Join/unjoin (remote) machines to/from a domain/AD" -msgstr "" - -#: ../utils/net.c:499 -msgid " Use 'net help dom' to get more information about 'net dom' commands." -msgstr "" - -#: ../utils/net.c:505 -msgid "Operate on the cache tdb file" -msgstr "" - -#: ../utils/net.c:506 -msgid " Use 'net help cache' to get more information about 'net cache' commands." -msgstr "" - -#: ../utils/net.c:512 -msgid "Get the SID for the local domain" -msgstr "" - -#: ../utils/net.c:513 -msgid " net getlocalsid" -msgstr "" - -#: ../utils/net.c:518 -msgid "Set the SID for the local domain" -msgstr "" - -#: ../utils/net.c:519 -msgid " net setlocalsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:524 -msgid "Set domain SID on member servers" -msgstr "" - -#: ../utils/net.c:525 -msgid " net setdomainsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:530 -msgid "Get domain SID on member servers" -msgstr "" - -#: ../utils/net.c:531 -msgid " net getdomainsid" -msgstr "" - -#: ../utils/net.c:536 -msgid "Display the maximul RID currently used" -msgstr "" - -#: ../utils/net.c:537 -msgid " net maxrid" -msgstr "" - -#: ../utils/net.c:542 -#, fuzzy -msgid "IDmap functions" -msgstr "Opcje Domeny" - -#: ../utils/net.c:543 -msgid " Use 'net help idmap to get more information about 'net idmap' commands." -msgstr "" - -#: ../utils/net.c:549 -#, fuzzy -msgid "Display server status" -msgstr "Status Serwera" - -#: ../utils/net.c:550 -msgid " Use 'net help status' to get more information about 'net status' commands." -msgstr "" - -#: ../utils/net.c:556 -msgid "Manage user-modifiable shares" -msgstr "" - -#: ../utils/net.c:557 -msgid " Use 'net help usershare to get more information about 'net usershare' commands." -msgstr "" - -#: ../utils/net.c:563 -msgid "Display list of all users with SID" -msgstr "" - -#: ../utils/net.c:564 -msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." -msgstr "" - -#: ../utils/net.c:570 -msgid "Manage Samba registry based configuration" -msgstr "" - -#: ../utils/net.c:571 -msgid " Use 'net help conf' to get more information about 'net conf' commands." -msgstr "" - -#: ../utils/net.c:577 -msgid "Manage the Samba registry" -msgstr "" - -#: ../utils/net.c:578 -msgid " Use 'net help registry' to get more information about 'net registry' commands." -msgstr "" - -#: ../utils/net.c:584 -msgid "Open a lua interpreter" -msgstr "" - -#: ../utils/net.c:585 -msgid " Use 'net help lua' to get more information about 'net lua' commands." -msgstr "" - -#: ../utils/net.c:591 -msgid "Process Win32 *.evt eventlog files" -msgstr "" - -#: ../utils/net.c:592 -msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." -msgstr "" - -#: ../utils/net.c:600 -msgid "Manage AFS tokens" -msgstr "" - -#: ../utils/net.c:601 -msgid " Use 'net help afs' to get more information about 'net afs' commands." -msgstr "" - -#: ../utils/net.c:609 -msgid "Print usage information" -msgstr "" - -#: ../utils/net.c:610 -msgid " Use 'net help help' to list usage information for 'net' commands." -msgstr "" - -#: ../utils/net.c:639 -msgid "Encrypt SMB transport (UNIX extended servers only)" -msgstr "" - -#: ../utils/net.c:703 -msgid "" -"\n" -"Invalid ip address specified\n" -msgstr "" - -#: ../utils/net.c:718 -#, c-format -msgid "" -"\n" -"Invalid option %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:52 ../utils/net_ads.c:392 -msgid "CLDAP query failed!\n" -msgstr "" - -#: ../utils/net_ads.c:56 -#, c-format -msgid "" -"Information for Domain Controller: %s\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:59 -msgid "Response Type: " -msgstr "" - -#: ../utils/net_ads.c:72 -#, c-format -msgid "GUID: %s\n" -msgstr "" - -#: ../utils/net_ads.c:74 -#, c-format -msgid "" -"Flags:\n" -"\tIs a PDC: %s\n" -"\tIs a GC of the forest: %s\n" -"\tIs an LDAP server: %s\n" -"\tSupports DS: %s\n" -"\tIs running a KDC: %s\n" -"\tIs running time services: %s\n" -"\tIs the closest DC: %s\n" -"\tIs writable: %s\n" -"\tHas a hardware clock: %s\n" -"\tIs a non-domain NC serviced by LDAP server: %s\n" -"\tIs NT6 DC that has some secrets: %s\n" -"\tIs NT6 DC that has all secrets: %s\n" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "yes" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "no" -msgstr "" - -#: ../utils/net_ads.c:101 -#, c-format -msgid "Forest:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:102 -#, c-format -msgid "Domain:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:103 -#, c-format -msgid "Domain Controller:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:105 -#, c-format -msgid "Pre-Win2k Domain:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:106 -#, c-format -msgid "Pre-Win2k Hostname:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:108 -#, fuzzy, c-format -msgid "User name:\t%s\n" -msgstr " Nazwa Użytkownika" - -#: ../utils/net_ads.c:110 -#, fuzzy, c-format -msgid "Server Site Name :\t\t%s\n" -msgstr "Status Serwera" - -#: ../utils/net_ads.c:111 -#, c-format -msgid "Client Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:113 -#, fuzzy, c-format -msgid "NT Version: %d\n" -msgstr "wersja:" - -#: ../utils/net_ads.c:114 -#, c-format -msgid "LMNT Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:115 -#, c-format -msgid "LM20 Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:130 -msgid "" -"Usage:\n" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookup.\n" -msgstr "" - -#: ../utils/net_ads.c:137 ../utils/net_ads.c:381 -msgid "Didn't find the cldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:160 -msgid "" -"Usage:\n" -"net ads info\n" -" Display information about an Active Directory server.\n" -msgstr "" - -#: ../utils/net_ads.c:168 ../utils/net_ads.c:173 -msgid "Didn't find the ldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:182 -msgid "Failed to get server's current time!\n" -msgstr "" - -#: ../utils/net_ads.c:187 -#, c-format -msgid "LDAP server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:188 -#, c-format -msgid "LDAP server name: %s\n" -msgstr "" - -#: ../utils/net_ads.c:189 -#, c-format -msgid "Realm: %s\n" -msgstr "" - -#: ../utils/net_ads.c:190 -#, c-format -msgid "Bind Path: %s\n" -msgstr "" - -#: ../utils/net_ads.c:191 -#, c-format -msgid "LDAP port: %d\n" -msgstr "" - -#: ../utils/net_ads.c:192 -#, fuzzy, c-format -msgid "Server time: %s\n" -msgstr "Status Serwera" - -#: ../utils/net_ads.c:195 -#, c-format -msgid "KDC server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:196 -#, c-format -msgid "Server time offset: %d\n" -msgstr "" - -#: ../utils/net_ads.c:374 -msgid "" -"Usage:\n" -"net ads workgroup\n" -" Print the workgroup name\n" -msgstr "" - -#: ../utils/net_ads.c:397 -#, c-format -msgid "Workgroup: %s\n" -msgstr "" - -#: ../utils/net_ads.c:458 -#, c-format -msgid "ads_user_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:463 -#, c-format -msgid "ads_user_add: User %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:477 -#, c-format -msgid "Could not add user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:484 ../utils/net_ads.c:497 -#, fuzzy, c-format -msgid "User %s added\n" -msgstr " Nazwa Użytkownika" - -#. password didn't set, delete account -#: ../utils/net_ads.c:503 -#, c-format -msgid "Could not add user %s. Error setting password %s\n" -msgstr "" - -#: ../utils/net_ads.c:551 -#, c-format -msgid "ads_user_info: failed to escape user %s\n" -msgstr "" - -#: ../utils/net_ads.c:569 -#, c-format -msgid "ads_search: %s\n" -msgstr "" - -#: ../utils/net_ads.c:575 -msgid "ads_pull_uint32 failed\n" -msgstr "" - -#: ../utils/net_ads.c:582 -#, c-format -msgid "ads_domain_sid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:642 -#, c-format -msgid "User %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:652 -#, c-format -msgid "User %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:656 -#, c-format -msgid "Error deleting user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:669 -#, fuzzy -msgid "Add an AD user" -msgstr "Dodaj Nowego Użytkownika" - -#: ../utils/net_ads.c:670 -msgid "" -"net ads user add\n" -" Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:677 -msgid "Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:678 -msgid "" -"net ads user info\n" -" Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:685 -#, fuzzy -msgid "Delete an AD user" -msgstr "Usuń Użytkownika" - -#: ../utils/net_ads.c:686 -msgid "" -"net ads user delete\n" -" Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:699 -msgid "" -"Usage:\n" -"net ads user\n" -" List AD users\n" -msgstr "" - -#: ../utils/net_ads.c:711 -msgid "" -"\n" -"User name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:751 -#, c-format -msgid "ads_group_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:756 -#, c-format -msgid "ads_group_add: Group %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:769 -#, c-format -msgid "Group %s added\n" -msgstr "" - -#: ../utils/net_ads.c:772 -#, c-format -msgid "Could not add group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:801 -#, c-format -msgid "Group %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:811 -#, c-format -msgid "Group %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:815 -#, c-format -msgid "Error deleting group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:828 -msgid "Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:829 -msgid "" -"net ads group add\n" -" Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:836 -#, fuzzy -msgid "Delete an AD group" -msgstr "Usuń Współudział" - -#: ../utils/net_ads.c:837 -msgid "" -"net ads group delete\n" -" Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:850 -msgid "" -"Usage:\n" -"net ads group\n" -" List AD groups\n" -msgstr "" - -#: ../utils/net_ads.c:862 -msgid "" -"\n" -"Group name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:884 -msgid "" -"Usage:\n" -"net ads status\n" -" Display machine account details\n" -msgstr "" - -#: ../utils/net_ads.c:896 -#, c-format -msgid "ads_find_machine_acct: %s\n" -msgstr "" - -#: ../utils/net_ads.c:902 -#, c-format -msgid "No machine account for '%s' found\n" -msgstr "" - -#: ../utils/net_ads.c:926 -msgid "" -"Usage:\n" -"net ads leave\n" -" Leave an AD domain\n" -msgstr "" - -#: ../utils/net_ads.c:933 -msgid "No realm set, are we joined ?\n" -msgstr "" - -#: ../utils/net_ads.c:938 ../utils/net_ads.c:1260 -msgid "Could not initialise talloc context.\n" -msgstr "" - -#: ../utils/net_ads.c:948 -msgid "Could not initialise unjoin context.\n" -msgstr "" - -#: ../utils/net_ads.c:968 -#, c-format -msgid "Failed to leave domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:975 -#, c-format -msgid "Deleted account for '%s' in realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:982 -#, c-format -msgid "Disabled account for '%s' in realm '%s'\n" -msgstr "" - -#. Based on what we requseted, we shouldn't get here, but if -#. we did, it means the secrets were removed, and therefore -#. we have left the domain -#: ../utils/net_ads.c:991 -#, c-format -msgid "Machine '%s' Left domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1035 -msgid "" -"Usage:\n" -"net ads testjoin\n" -" Test if the existing join is ok\n" -msgstr "" - -#: ../utils/net_ads.c:1044 -#, c-format -msgid "Join to domain is not valid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1049 -#, c-format -msgid "Join is OK\n" -msgstr "" - -#: ../utils/net_ads.c:1060 -msgid "Host is not configured as a member server.\n" -msgstr "" - -#: ../utils/net_ads.c:1065 -#, c-format -msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" -msgstr "" - -#: ../utils/net_ads.c:1072 -#, c-format -msgid "realm must be set in in %s for ADS join to succeed.\n" -msgstr "" - -#: ../utils/net_ads.c:1105 -#, c-format -msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" -msgstr "" - -#: ../utils/net_ads.c:1212 -msgid "" -"net ads join [options]\n" -"Valid options:\n" -msgstr "" - -#: ../utils/net_ads.c:1214 -msgid "" -" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" -" The deault UPN is in the form host/netbiosname@REALM.\n" -msgstr "" - -#: ../utils/net_ads.c:1216 -msgid "" -" createcomputer=OU Precreate the computer account in a specific OU.\n" -" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" -" E.g. \"createcomputer=Computers/Servers/Unix\"\n" -" NB: A backslash '\\' is used as escape at multiple levels and may\n" -" need to be doubled or even quadrupled. It is not used as a separator.\n" -msgstr "" - -#: ../utils/net_ads.c:1221 -msgid " osName=string Set the operatingSystem attribute during the join.\n" -msgstr "" - -#: ../utils/net_ads.c:1222 -msgid "" -" osVer=string Set the operatingSystemVersion attribute during the join.\n" -" NB: osName and osVer must be specified together for either to take effect.\n" -" Also, the operatingSystemService attribute is also set when along with\n" -" the two other attributes.\n" -msgstr "" - -#: ../utils/net_ads.c:1254 -msgid "Invalid configuration. Exiting....\n" -msgstr "" - -#: ../utils/net_ads.c:1283 -msgid "Please supply a valid OU path.\n" -msgstr "" - -#: ../utils/net_ads.c:1290 -msgid "Please supply a operating system name.\n" -msgstr "" - -#: ../utils/net_ads.c:1297 -msgid "Please supply a valid operating system version.\n" -msgstr "" - -#: ../utils/net_ads.c:1308 -msgid "Please supply a valid domain name\n" -msgstr "" - -#: ../utils/net_ads.c:1339 -#, c-format -msgid "" -"The workgroup in %s does not match the short\n" -"domain name obtained from the server.\n" -"Using the name [%s] from the server.\n" -"You should set \"workgroup = %s\" in %s.\n" -msgstr "" - -#: ../utils/net_ads.c:1347 -#, c-format -msgid "Using short domain name -- %s\n" -msgstr "" - -#: ../utils/net_ads.c:1350 -#, c-format -msgid "Joined '%s' to realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1353 -#, c-format -msgid "Joined '%s' to domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1377 ../utils/net_ads.c:1433 -msgid "DNS update failed!\n" -msgstr "" - -#. issue an overall failure message at the end. -#: ../utils/net_ads.c:1391 ../utils/net_dom.c:198 -#, c-format -msgid "Failed to join domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1414 -msgid "" -"Usage:\n" -"net ads dns register\n" -" Register hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1421 -msgid "Could not initialise talloc context\n" -msgstr "" - -#: ../utils/net_ads.c:1439 -msgid "Successfully registered hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1447 -msgid "DNS update support not enabled at compile time!\n" -msgstr "" - -#: ../utils/net_ads.c:1466 -msgid "" -"Usage:\n" -"net ads dns gethostbyname \n" -" Look up hostname from the AD\n" -" server\tName server to use\n" -" name\tName to look up\n" -msgstr "" - -#: ../utils/net_ads.c:1476 -#, c-format -msgid "do_gethostbyname returned %d\n" -msgstr "" - -#: ../utils/net_ads.c:1488 -msgid "Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1489 -msgid "" -"net ads dns register\n" -" Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1496 -msgid "Look up host" -msgstr "" - -#: ../utils/net_ads.c:1497 -msgid "" -"net ads dns gethostbyname\n" -" Look up host" -msgstr "" - -#: ../utils/net_ads.c:1512 -msgid "" -"\n" -"net ads printer search \n" -"\tsearch for a printer in the directory\n" -"\n" -"net ads printer info \n" -"\tlookup info in directory for printer on server\n" -"\t(note: printer defaults to \"*\", server defaults to local)\n" -"\n" -"net ads printer publish \n" -"\tpublish printer in directory\n" -"\t(note: printer name is required)\n" -"\n" -"net ads printer remove \n" -"\tremove printer from directory\n" -"\t(note: printer name is required)\n" -msgstr "" - -#: ../utils/net_ads.c:1536 -msgid "" -"Usage:\n" -"net ads printer search\n" -" List printers in the AD\n" -msgstr "" - -#: ../utils/net_ads.c:1549 -#, c-format -msgid "ads_find_printer: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1556 -msgid "No results found\n" -msgstr "" - -#: ../utils/net_ads.c:1576 -msgid "" -"Usage:\n" -"net ads printer info [printername [servername]]\n" -" Display printer info from AD\n" -" printername\tPrinter name or wildcard\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1603 -#, c-format -msgid "Server '%s' not found: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1611 ../utils/net_ads.c:1794 -#, c-format -msgid "Printer '%s' not found\n" -msgstr "" - -#: ../utils/net_ads.c:1640 -msgid "" -"Usage:\n" -"net ads printer publish [servername]\n" -" Publish printer in AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1675 -#, c-format -msgid "Unable to open a connnection to %s to obtain data for %s\n" -msgstr "" - -#: ../utils/net_ads.c:1688 -#, c-format -msgid "Could not find machine account for server %s\n" -msgstr "" - -#: ../utils/net_ads.c:1704 ../utils/net_ads.c:1713 -msgid "Internal error, out of memory!" -msgstr "" - -#: ../utils/net_ads.c:1724 -#, c-format -msgid "Unable to open a connnection to the spoolss pipe on %s\n" -msgstr "" - -#: ../utils/net_ads.c:1766 -msgid "" -"Usage:\n" -"net ads printer remove [servername]\n" -" Remove a printer from the AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1787 -#, c-format -msgid "ads_find_printer_on_server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1806 -#, c-format -msgid "ads_del_dn: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1822 -msgid "Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1823 -msgid "" -"net ads printer search\n" -" Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1830 -msgid "Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1831 -msgid "" -"net ads printer info\n" -" Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1838 -msgid "Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1839 -msgid "" -"net ads printer publish\n" -" Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1846 -#, fuzzy -msgid "Delete a printer" -msgstr "Usuń Drukarkę" - -#: ../utils/net_ads.c:1847 -msgid "" -"net ads printer remove\n" -" Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1869 -msgid "" -"Usage:\n" -"net ads password \n" -" Change password for user\n" -" username\tName of user to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1877 -msgid "You must supply an administrator username/password\n" -msgstr "" - -#: ../utils/net_ads.c:1883 -msgid "ERROR: You must say which username to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1915 -msgid "Didn't find the kerberos server!\n" -msgstr "" - -#: ../utils/net_ads.c:1923 -#, c-format -msgid "Enter new password for %s:" -msgstr "" - -#: ../utils/net_ads.c:1933 ../utils/net_ads.c:1982 -#, fuzzy, c-format -msgid "Password change failed: %s\n" -msgstr "Zarządzanie Hasłami" - -#: ../utils/net_ads.c:1938 -#, fuzzy, c-format -msgid "Password change for %s completed.\n" -msgstr "zmiana hasła w trybie demo odrzucona\n" - -#: ../utils/net_ads.c:1952 -msgid "" -"Usage:\n" -"net ads changetrustpw\n" -" Change the machine account's trust password\n" -msgstr "" - -#: ../utils/net_ads.c:1977 -#, c-format -msgid "Changing password for principal: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1988 -#, c-format -msgid "Password change for principal %s succeeded.\n" -msgstr "" - -#: ../utils/net_ads.c:1991 -msgid "Attempting to update system keytab with new password.\n" -msgstr "" - -#: ../utils/net_ads.c:1993 -msgid "Failed to update system keytab.\n" -msgstr "" - -#: ../utils/net_ads.c:2009 -msgid "" -"\n" -"net ads search \n" -"\n" -"Perform a raw LDAP search on a ADS server and dump the results.\n" -"The expression is a standard LDAP search expression, and the\n" -"attributes are a list of LDAP fields to show in the results.\n" -"\n" -"Example: net ads search '(objectCategory=group)' sAMAccountName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2046 ../utils/net_ads.c:2107 ../utils/net_ads.c:2171 ../utils/net_ads_gpo.c:250 -#, c-format -msgid "search failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2051 ../utils/net_ads.c:2176 ../utils/net_ads_gpo.c:256 -#, c-format -msgid "" -"Got %d replies\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2069 -msgid "" -"\n" -"net ads dn \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" -"\n" -"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2129 -msgid "" -"\n" -"net ads sid \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The SID is in string format, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads sid 'S-1-5-32' distinguishedName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2164 -msgid "could not convert sid\n" -msgstr "" - -#: ../utils/net_ads.c:2193 -msgid "" -"Usage:\n" -"net ads keytab flush\n" -" Delete the whole keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2214 -msgid "" -"Usage:\n" -"net ads keytab add [principal ...]\n" -" Add principals to local keytab\n" -" principal\tKerberos principal to add to keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2222 -msgid "Processing principals to add...\n" -msgstr "" - -#: ../utils/net_ads.c:2239 -msgid "" -"Usage:\n" -"net ads keytab create\n" -" Create new default keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2258 -msgid "" -"Usage:\n" -"net ads keytab list [keytab]\n" -" List a local keytab\n" -" keytab\tKeytab to list\n" -msgstr "" - -#: ../utils/net_ads.c:2280 -msgid "Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2281 -msgid "" -"net ads keytab add\n" -" Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2288 -#, fuzzy -msgid "Create a fresh keytab" -msgstr "Utwórz Współudział" - -#: ../utils/net_ads.c:2289 -msgid "" -"net ads keytab create\n" -" Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2296 -msgid "Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2297 -msgid "" -"net ads keytab flush\n" -" Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2304 -msgid "List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2305 -msgid "" -"net ads keytab list\n" -" List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2312 -msgid "" -"\n" -"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" -msgstr "" - -#: ../utils/net_ads.c:2324 -msgid "" -"Usage:\n" -"net ads kerberos renew\n" -" Renew TGT from existing credential cache\n" -msgstr "" - -#: ../utils/net_ads.c:2332 -#, c-format -msgid "failed to renew kerberos ticket: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2347 -msgid "" -"Usage:\n" -"net ads kerberos pac\n" -" Dump the Kerberos PAC\n" -msgstr "" - -#: ../utils/net_ads.c:2372 -#, c-format -msgid "failed to query kerberos PAC: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2381 -#, c-format -msgid "The Pac: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2397 -msgid "" -"Usage:\n" -"net ads kerberos kinit\n" -" Get Ticket Granting Ticket (TGT) for the user\n" -msgstr "" - -#: ../utils/net_ads.c:2421 -#, c-format -msgid "failed to kinit password: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2435 -msgid "Retrieve Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2436 -msgid "" -"net ads kerberos kinit\n" -" Receive Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2443 -msgid "Renew Ticket Granting Ticket from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2444 -msgid "" -"net ads kerberos renew\n" -" Renew Ticket Granting Ticket (TGT) from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2452 -msgid "Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2453 -msgid "" -"net ads kerberos pac\n" -" Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2469 -msgid "Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2470 -msgid "" -"net ads info\n" -" Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2477 -msgid "Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2478 -msgid "" -"net ads join\n" -" Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2485 -msgid "Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2486 -msgid "" -"net ads testjoin\n" -" Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2493 -msgid "Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2494 -msgid "" -"net ads leave\n" -" Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2501 -msgid "Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2502 -msgid "" -"net ads status\n" -" Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2509 -msgid "List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2510 -msgid "" -"net ads user\n" -" List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2517 -msgid "List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2518 -msgid "" -"net ads group\n" -" List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2525 -msgid "Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2526 -msgid "" -"net ads dns\n" -" Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2533 -#, fuzzy -msgid "Change user passwords" -msgstr "Zmień Hasło" - -#: ../utils/net_ads.c:2534 -msgid "" -"net ads password\n" -" Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2541 -#, fuzzy -msgid "Change trust account password" -msgstr "Zmień Hasło" - -#: ../utils/net_ads.c:2542 -msgid "" -"net ads changetrustpw\n" -" Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2549 -msgid "List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2550 -msgid "" -"net ads printer\n" -" List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2557 -msgid "Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2558 -msgid "" -"net ads search\n" -" Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2565 -msgid "Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2566 -msgid "" -"net ads dn\n" -" Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2573 -msgid "Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2574 -msgid "" -"net ads sid\n" -" Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2581 -msgid "Display workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2582 -msgid "" -"net ads workgroup\n" -" Display the workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2589 -msgid "Perfom CLDAP query on DC" -msgstr "" - -#: ../utils/net_ads.c:2590 -msgid "" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookups" -msgstr "" - -#: ../utils/net_ads.c:2597 -msgid "Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2598 -msgid "" -"net ads keytab\n" -" Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2605 -msgid "Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2606 -msgid "" -"net ads gpo\n" -" Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2613 -msgid "Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2614 -msgid "" -"net ads kerberos\n" -" Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2627 -msgid "ADS support not compiled in\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:40 -msgid "" -"Usage:\n" -"net ads gpo refresh \n" -" Lists all GPOs assigned to an account and downloads them\n" -" username\tUser to refresh GPOs for\n" -" machinename\tMachine to refresh GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:56 -#, c-format -msgid "failed to connect AD server: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:62 -#, c-format -msgid "failed to find samaccount for %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:70 -#, c-format -msgid "" -"\n" -"%s: '%s' has dn: '%s'\n" -"\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "machine" -msgstr " Zdalna Maszyna" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "user" -msgstr "Użytkownik" - -#: ../utils/net_ads_gpo.c:74 -msgid "* fetching token " -msgstr "" - -#: ../utils/net_ads_gpo.c:82 ../utils/net_ads_gpo.c:90 ../utils/net_ads_gpo.c:102 ../utils/net_ads_gpo.c:113 ../utils/net_ads_gpo.c:158 -#, c-format -msgid "failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:85 ../utils/net_ads_gpo.c:94 ../utils/net_ads_gpo.c:105 ../utils/net_ads_gpo.c:118 ../utils/net_ads_gpo.c:163 -msgid "finished\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:87 -msgid "* fetching GPO List " -msgstr "" - -#: ../utils/net_ads_gpo.c:96 -msgid "* Refreshing Group Policy Data " -msgstr "" - -#: ../utils/net_ads_gpo.c:107 -msgid "* storing GPO list to registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:122 -msgid "* dumping GPO list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:151 -msgid "* re-reading GPO list from registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:167 -msgid "* dumping GPO list from registry\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:226 -msgid "" -"Usage:\n" -"net ads gpo listall\n" -" List all GPOs on the DC\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:270 -#, fuzzy, c-format -msgid "ads_parse_gpo failed: %s\n" -msgstr "Zarządzanie Hasłami" - -#: ../utils/net_ads_gpo.c:300 -msgid "" -"Usage:\n" -"net ads gpo list \n" -" Lists all GPOs for machine/user\n" -" username\tUser to list GPOs for\n" -" machinename\tMachine to list GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:327 -#, c-format -msgid "%s: '%s' has dn: '%s'\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:451 -msgid "" -"Usage:\n" -"net ads gpo linkget \n" -" Lists gPLink of a containter\n" -" container\tContainer to get link for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:470 -#, c-format -msgid "get link for %s failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:492 -msgid "" -"Usage:\n" -"net ads gpo linkadd [options]\n" -" Link a container to a GPO\n" -" linkdn\tContainer to link to a GPO\n" -" gpodn\tGPO to link container to\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:497 -msgid "" -"note: DNs must be provided properly escaped.\n" -"See RFC 4514 for details\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:518 -#, c-format -msgid "link add failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:579 -msgid "" -"Usage:\n" -"net ads gpo getgpo \n" -" List speciefied GPO\n" -" gpo\t\tGPO to list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:603 -#, c-format -msgid "get gpo for [%s] failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:634 -msgid "List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:635 -msgid "" -"net ads gpo getgpo\n" -" List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:642 -msgid "Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:643 -msgid "" -"net ads gpo linkadd\n" -" Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:660 -msgid "Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:661 -msgid "" -"net ads gpo linkget\n" -" Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:668 -msgid "Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:669 -msgid "" -"net ads gpo list\n" -" Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:676 -msgid "Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:677 -msgid "" -"net ads gpo listall\n" -" Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:684 -msgid "Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_ads_gpo.c:686 -msgid "" -"net ads gpo refresh\n" -" Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_afs.c:25 -msgid "" -" net afs key filename\n" -"\tImports a OpenAFS KeyFile into our secrets.tdb\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:27 -msgid "" -" net afs impersonate \n" -"\tCreates a token for user@cell\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:38 -msgid "usage: 'net afs key cell'\n" -msgstr "" - -#: ../utils/net_afs.c:43 -msgid "Could not open secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:48 -#, c-format -msgid "Could not open %s\n" -msgstr "" - -#: ../utils/net_afs.c:53 -msgid "Could not read keyfile\n" -msgstr "" - -#: ../utils/net_afs.c:58 -msgid "Could not write keyfile to secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:71 -#, c-format -msgid "Usage: net afs impersonate \n" -msgstr "" - -#: ../utils/net_afs.c:78 -#, c-format -msgid "Could not create token\n" -msgstr "" - -#: ../utils/net_afs.c:83 -#, c-format -msgid "Could not set token into kernel\n" -msgstr "" - -#: ../utils/net_afs.c:87 -#, c-format -msgid "Success: %s@%s\n" -msgstr "" - -#: ../utils/net_afs.c:98 -msgid "Import an OpenAFS keyfile" -msgstr "" - -#: ../utils/net_afs.c:99 -msgid "" -"net afs key \n" -" Import kefile from ." -msgstr "" - -#: ../utils/net_afs.c:106 -msgid "Get a user token" -msgstr "" - -#: ../utils/net_afs.c:107 -msgid "" -"net afs impersonate \n" -" Create token for user@cell" -msgstr "" - -#: ../utils/net_cache.c:74 -#, c-format -msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" -msgstr "" - -#: ../utils/net_cache.c:75 -msgid "(expired)" -msgstr "" - -#: ../utils/net_cache.c:84 -#, c-format -msgid "Couldn't delete entry! key = %s\n" -msgstr "" - -#: ../utils/net_cache.c:158 -msgid "" -"\n" -"Usage:\n" -"net cache add \n" -msgstr "" - -#: ../utils/net_cache.c:170 -msgid "Invalid timeout argument.\n" -msgstr "" - -#: ../utils/net_cache.c:175 -msgid "New cache entry stored successfully.\n" -msgstr "" - -#: ../utils/net_cache.c:179 -msgid "Entry couldn't be added. Perhaps there's already such a key.\n" -msgstr "" - -#: ../utils/net_cache.c:195 -msgid "" -"\n" -"Usage: net cache del \n" -msgstr "" - -#: ../utils/net_cache.c:200 -msgid "Entry deleted.\n" -msgstr "" - -#: ../utils/net_cache.c:204 -msgid "Couldn't delete specified entry\n" -msgstr "" - -#: ../utils/net_cache.c:223 -msgid "" -"\n" -"Usage: net cache get \n" -msgstr "" - -#: ../utils/net_cache.c:233 -msgid "Failed to find entry\n" -msgstr "" - -#: ../utils/net_cache.c:250 -msgid "Usage: net cache search \n" -msgstr "" - -#: ../utils/net_cache.c:272 -msgid "" -"Usage:\n" -"net cache list\n" -" List all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:293 ../utils/net_cache.c:306 -msgid "" -"Usage:\n" -"net cache flush\n" -" Delete all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:331 -msgid "Add new cache entry" -msgstr "" - -#: ../utils/net_cache.c:332 -msgid "" -"net cache add \n" -" Add new cache entry.\n" -" key string\tKey string to add cache data under.\n" -" data string\tData to store under given key.\n" -" timeout\tTimeout for cache data." -msgstr "" - -#: ../utils/net_cache.c:342 -msgid "Delete existing cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:343 -msgid "" -"net cache del \n" -" Delete existing cache entry by key.\n" -" key string\tKey string to delete." -msgstr "" - -#: ../utils/net_cache.c:351 -msgid "Get cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:352 -msgid "" -"net cache get \n" -" Get cache entry by key.\n" -" key string\tKey string to look up cache entry for." -msgstr "" - -#: ../utils/net_cache.c:361 -msgid "Search entry by pattern" -msgstr "" - -#: ../utils/net_cache.c:362 -msgid "" -"net cache search \n" -" Search entry by pattern.\n" -" pattern\tPattern to search for in cache." -msgstr "" - -#: ../utils/net_cache.c:370 -msgid "List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:371 -msgid "" -"net cache list\n" -" List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:378 -#, fuzzy -msgid "Delete all cache entries" -msgstr "Usuń Drukarkę" - -#: ../utils/net_cache.c:379 -msgid "" -"net cache flush\n" -" Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:386 -msgid "Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_cache.c:387 -msgid "" -"net cache stabilize\n" -" Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_conf.c:42 -msgid "USAGE: net conf list\n" -msgstr "" - -#: ../utils/net_conf.c:49 -msgid "" -"USAGE: net conf import [--test|-T] []\n" -"\t[--test|-T] testmode - do not act, just print what would be done\n" -"\t only import service , ignore the rest\n" -msgstr "" - -#: ../utils/net_conf.c:61 -msgid "USAGE: net conf listshares\n" -msgstr "" - -#: ../utils/net_conf.c:68 -msgid "USAGE: net conf drop\n" -msgstr "" - -#: ../utils/net_conf.c:75 -msgid "USAGE: net conf showshare \n" -msgstr "" - -#: ../utils/net_conf.c:82 -msgid "" -"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" -"\t the new share name.\n" -"\t the path on the filesystem to export.\n" -"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" -"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" -"\t optional comment for the new share.\n" -msgstr "" - -#: ../utils/net_conf.c:97 -msgid "USAGE: net conf delshare \n" -msgstr "" - -#: ../utils/net_conf.c:104 -msgid "USAGE: net conf setparm

\n" -msgstr "" - -#: ../utils/net_conf.c:111 -msgid "USAGE: net conf getparm
\n" -msgstr "" - -#: ../utils/net_conf.c:118 -msgid "USAGE: net conf delparm
\n" -msgstr "" - -#: ../utils/net_conf.c:125 -msgid "USAGE: net conf getincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:132 -msgid "USAGE: net conf setincludes
[]*\n" -msgstr "" - -#: ../utils/net_conf.c:139 -msgid "USAGE: net conf delincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:251 -#, c-format -msgid "Error getting config: %s\n" -msgstr "" - -#: ../utils/net_conf.c:305 ../utils/net_conf.c:318 ../utils/net_conf.c:614 ../utils/net_conf.c:742 ../utils/net_conf.c:780 ../utils/net_conf.c:786 ../utils/net_conf.c:860 ../utils/net_conf.c:866 ../utils/net_conf.c:916 ../utils/net_conf.c:970 -#: ../utils/net_conf.c:1010 ../utils/net_conf.c:1050 -msgid "error: out of memory!\n" -msgstr "" - -#: ../utils/net_conf.c:324 -#, c-format -msgid "error loading file '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:330 -msgid "" -"\n" -"TEST MODE - would import the following configuration:\n" -"\n" -msgstr "" - -#: ../utils/net_conf.c:346 ../utils/net_conf.c:382 ../utils/net_conf.c:407 ../utils/net_conf.c:793 -#, c-format -msgid "error starting transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:400 ../utils/net_conf.c:416 ../utils/net_conf.c:817 -#, c-format -msgid "error committing transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:427 ../utils/net_conf.c:828 -#, c-format -msgid "error cancelling transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:484 -#, c-format -msgid "Error deleting configuration: %s\n" -msgstr "" - -#: ../utils/net_conf.c:521 -#, c-format -msgid "error getting share parameters: %s\n" -msgstr "" - -#: ../utils/net_conf.c:630 -#, c-format -msgid "ERROR: share name %s contains invalid characters (any of %s)\n" -msgstr "" - -#: ../utils/net_conf.c:638 -msgid "ERROR: 'global' is not a valid share name.\n" -msgstr "" - -#: ../utils/net_conf.c:643 -#, c-format -msgid "ERROR: share %s already exists.\n" -msgstr "" - -#: ../utils/net_conf.c:652 -#, c-format -msgid "Error: path '%s' is not an absolute path.\n" -msgstr "" - -#: ../utils/net_conf.c:659 -#, c-format -msgid "" -"ERROR: cannot stat path '%s' to ensure this is a directory.\n" -"Error was '%s'.\n" -msgstr "" - -#: ../utils/net_conf.c:668 -#, c-format -msgid "ERROR: path '%s' is not a directory.\n" -msgstr "" - -#: ../utils/net_conf.c:679 -#, c-format -msgid "Error creating share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:690 ../utils/net_conf.c:699 ../utils/net_conf.c:707 ../utils/net_conf.c:715 -#, c-format -msgid "Error setting parameter %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:748 -#, c-format -msgid "Error deleting share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:801 -#, c-format -msgid "Error creating share '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:810 -#, c-format -msgid "Error setting value '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:874 ../utils/net_conf.c:930 -#, c-format -msgid "Error: given service '%s' does not exist.\n" -msgstr "" - -#: ../utils/net_conf.c:879 ../utils/net_conf.c:935 -#, c-format -msgid "Error: given parameter '%s' is not set.\n" -msgstr "" - -#: ../utils/net_conf.c:883 -#, c-format -msgid "Error getting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:939 -#, c-format -msgid "Error deleting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:977 -#, c-format -msgid "error getting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1023 -#, c-format -msgid "error setting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1056 -#, c-format -msgid "error deleting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1136 ../utils/net_help.c:36 -msgid "Usage:\n" -msgstr "" - -#: ../utils/net_conf.c:1160 -msgid "Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1162 -msgid "" -"net conf list\n" -" Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1171 -msgid "Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1173 -msgid "" -"net conf import\n" -" Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1181 -msgid "List the share names." -msgstr "" - -#: ../utils/net_conf.c:1182 -msgid "" -"net conf listshares\n" -" List the share names." -msgstr "" - -#: ../utils/net_conf.c:1189 -msgid "Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1190 -msgid "" -"net conf drop\n" -" Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1197 -msgid "Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1198 -msgid "" -"net conf showshare\n" -" Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1205 -#, fuzzy -msgid "Create a new share." -msgstr "Utwórz Współudział" - -#: ../utils/net_conf.c:1206 -msgid "" -"net conf addshare\n" -" Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1213 -#, fuzzy -msgid "Delete a share." -msgstr "Usuń Współudział" - -#: ../utils/net_conf.c:1214 -msgid "" -"net conf delshare\n" -" Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1221 -#, fuzzy -msgid "Store a parameter." -msgstr "Parametry Współudziału" - -#: ../utils/net_conf.c:1222 -msgid "" -"net conf setparm\n" -" Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1229 -msgid "Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1230 -msgid "" -"net conf getparm\n" -" Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1237 -#, fuzzy -msgid "Delete a parameter." -msgstr "Usuń Drukarkę" - -#: ../utils/net_conf.c:1238 -msgid "" -"net conf delparm\n" -" Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1245 -msgid "Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1246 -msgid "" -"net conf getincludes\n" -" Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1253 -msgid "Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1254 -msgid "" -"net conf setincludes\n" -" Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1261 -msgid "Delete includes from a share definition." -msgstr "" - -#: ../utils/net_conf.c:1262 -msgid "" -"net conf setincludes\n" -" Delete includes from a share definition." -msgstr "" - -#: ../utils/net_dom.c:25 -msgid "" -"usage: net dom join \n" -" Join a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:28 -msgid "" -"usage: net dom unjoin \n" -" Unjoin a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:31 -msgid "" -"usage: net dom renamecomputer \n" -" Rename joined computer\n" -msgstr "" - -#: ../utils/net_dom.c:91 -#, c-format -msgid "Failed to unjoin domain: %s\n" -msgstr "" - -#: ../utils/net_dom.c:97 ../utils/net_dom.c:204 -msgid "Shutting down due to a domain membership change" -msgstr "" - -#: ../utils/net_dom.c:290 -#, c-format -msgid "Failed to rename machine: " -msgstr "" - -#: ../utils/net_dom.c:292 -#, c-format -msgid "Computer is not joined to a Domain\n" -msgstr "" - -#: ../utils/net_dom.c:301 -msgid "Shutting down due to a computer rename" -msgstr "" - -#: ../utils/net_dom.c:338 -#, fuzzy -msgid "Join a remote machine" -msgstr " Zdalna Maszyna" - -#: ../utils/net_dom.c:339 -msgid "" -"net dom join \n" -" Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:347 -#, fuzzy -msgid "Unjoin a remote machine" -msgstr " Zdalna Maszyna" - -#: ../utils/net_dom.c:348 -msgid "" -"net dom unjoin \n" -" Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:356 -msgid "Rename a computer that is joined to a domain" -msgstr "" - -#: ../utils/net_dom.c:357 -msgid "" -"net dom renamecomputer \n" -" Rename joined computer" -msgstr "" - -#: ../utils/net_eventlog.c:46 -msgid "usage: net eventlog dump \n" -msgstr "" - -#: ../utils/net_eventlog.c:52 ../utils/net_eventlog.c:108 -#, c-format -msgid "failed to load evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:59 ../utils/net_eventlog.c:129 -#, fuzzy, c-format -msgid "evt pull failed: %s\n" -msgstr "Zarządzanie Hasłami" - -#: ../utils/net_eventlog.c:102 -msgid "usage: net eventlog import \n" -msgstr "" - -#: ../utils/net_eventlog.c:116 -#, fuzzy, c-format -msgid "evt header pull failed: %s\n" -msgstr "Zarządzanie Hasłami" - -#: ../utils/net_eventlog.c:122 -msgid "input file is wrapped, cannot proceed\n" -msgstr "" - -#: ../utils/net_eventlog.c:138 ../utils/net_eventlog.c:203 -#, c-format -msgid "can't open the eventlog TDB (%s)\n" -msgstr "" - -#: ../utils/net_eventlog.c:158 -#, c-format -msgid "can't write to the eventlog: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:164 -#, c-format -msgid "wrote %d entries to tdb\n" -msgstr "" - -#: ../utils/net_eventlog.c:197 -msgid "usage: net eventlog export \n" -msgstr "" - -#: ../utils/net_eventlog.c:214 -#, c-format -msgid "failed to save evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:243 -msgid "Dump eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:244 -msgid "" -"net eventlog dump\n" -" Dump win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:251 -#, fuzzy -msgid "Import eventlog" -msgstr "Ważna Informacja:" - -#: ../utils/net_eventlog.c:252 -msgid "" -"net eventlog import\n" -" Import win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:259 -msgid "Export eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:260 -msgid "" -"net eventlog export\n" -" Export win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_file.c:27 -msgid "" -"net [] file [misc. options] [targets]\n" -"\tlists all open files on file server\n" -msgstr "" - -#: ../utils/net_file.c:29 -msgid "" -"net [] file USER [misc. options] [targets]\n" -"\tlists all files opened by username on file server\n" -msgstr "" - -#: ../utils/net_file.c:32 -msgid "" -"net [] file CLOSE [misc. options] [targets]\n" -"\tcloses specified file on target server\n" -msgstr "" - -#: ../utils/net_file.c:34 -msgid "" -"net [rap] file INFO [misc. options] [targets]\n" -"\tdisplays information about the specified open file\n" -msgstr "" - -#: ../utils/net_group.c:27 -msgid "" -"net [] group [misc. options] [targets]\n" -"\tList user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:29 -msgid "" -"net rpc group LIST [global|local|builtin]* [misc. options]\n" -"\tList specific user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:31 -msgid "" -"net [] group DELETE [misc. options] [targets]\n" -"\tDelete specified group\n" -msgstr "" - -#: ../utils/net_group.c:34 -msgid "" -"\n" -"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" -"\tCreate specified group\n" -msgstr "" - -#: ../utils/net_group.c:37 -msgid "" -"\n" -"net rpc group MEMBERS \n" -"\tList Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:38 -msgid "" -"\n" -"net rpc group ADDMEM \n" -"\tAdd Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:40 -msgid "" -"\n" -"net rpc group DELMEM \n" -"\tDelete Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:44 -msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" -msgstr "" - -#: ../utils/net_group.c:46 -msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" -msgstr "" - -#: ../utils/net_group.c:48 -msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" -msgstr "" - -#: ../utils/net_groupmap.c:38 -#, c-format -msgid "NT Group %s doesn't exist in mapping DB\n" -msgstr "" - -#: ../utils/net_groupmap.c:46 -#, c-format -msgid "converting sid %s from a string failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:65 -#, c-format -msgid "\tSID : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:66 -#, c-format -msgid "\tUnix gid : %u\n" -msgstr "" - -#: ../utils/net_groupmap.c:67 -#, c-format -msgid "\tUnix group: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:68 -#, c-format -msgid "\tGroup type: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:70 -#, c-format -msgid "\tComment : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:84 -msgid "" -"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" -" verbose\tPrint verbose list\n" -" ntgroup\tNT group to list\n" -" sid\tSID of group to list" -msgstr "" - -#: ../utils/net_groupmap.c:91 ../utils/net_groupmap.c:271 ../utils/net_groupmap.c:356 ../utils/net_groupmap.c:412 ../utils/net_groupmap.c:495 ../utils/net_groupmap.c:522 -#, fuzzy, c-format -msgid "" -"Usage:\n" -"%s\n" -msgstr " Nazwa Użytkownika" - -#: ../utils/net_groupmap.c:106 ../utils/net_groupmap.c:213 ../utils/net_groupmap.c:220 ../utils/net_groupmap.c:365 ../utils/net_groupmap.c:372 ../utils/net_groupmap.c:504 -msgid "must supply a name\n" -msgstr "" - -#: ../utils/net_groupmap.c:113 ../utils/net_groupmap.c:227 ../utils/net_groupmap.c:511 -msgid "must supply a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:118 ../utils/net_groupmap.c:265 ../utils/net_groupmap.c:406 ../utils/net_groupmap.c:516 -#, fuzzy, c-format -msgid "Bad option: %s\n" -msgstr "Bazowe Opcje" - -#: ../utils/net_groupmap.c:139 -msgid "Failure to local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:181 -msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" -msgstr "" - -#: ../utils/net_groupmap.c:195 -#, fuzzy, c-format -msgid "" -"Usage\n" -"%s\n" -msgstr " Nazwa Użytkownika" - -#: ../utils/net_groupmap.c:205 -#, c-format -msgid "RID must be greater than %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:235 ../utils/net_groupmap.c:380 -msgid "must supply a comment string\n" -msgstr "" - -#: ../utils/net_groupmap.c:259 -#, c-format -msgid "unknown group type %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:276 -#, c-format -msgid "Can't lookup UNIX group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:282 -#, c-format -msgid "Unix group %s already mapped to SID %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:289 -msgid "No rid or sid specified, choosing a RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:292 -msgid "Could not get new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:297 -#, c-format -msgid "Got RID %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:328 -#, c-format -msgid "adding entry for group %s failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:332 -#, c-format -msgid "Successfully added group %s to the mapping db as a %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:349 -msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" -msgstr "" - -#: ../utils/net_groupmap.c:388 -msgid "must supply a group name\n" -msgstr "" - -#: ../utils/net_groupmap.c:434 -msgid "Failed to find local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:443 -msgid "Can't map to an unknown group type.\n" -msgstr "" - -#: ../utils/net_groupmap.c:449 -msgid "You can only change between domain and local groups.\n" -msgstr "" - -#: ../utils/net_groupmap.c:466 -#, c-format -msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" -msgstr "" - -#: ../utils/net_groupmap.c:476 -msgid "Could not update group database\n" -msgstr "" - -#: ../utils/net_groupmap.c:480 -#, c-format -msgid "Updated mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:491 -msgid "net groupmap delete {ntgroup=|sid=}" -msgstr "" - -#: ../utils/net_groupmap.c:532 -#, c-format -msgid "Unable to resolve group %s to a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:539 -#, c-format -msgid "Failed to remove group %s from the mapping db!\n" -msgstr "" - -#: ../utils/net_groupmap.c:544 -#, c-format -msgid "Sucessfully removed %s from the mapping db\n" -msgstr "" - -#: ../utils/net_groupmap.c:557 -msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" -msgstr "" - -#: ../utils/net_groupmap.c:563 -msgid "Can only specify -L or -D, not both\n" -msgstr "" - -#: ../utils/net_groupmap.c:573 -#, c-format -msgid "Could not find unix group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:594 -#, c-format -msgid "Could not find group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:605 -msgid "Could not allocate new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:622 -#, c-format -msgid "Could not add mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:633 -#, c-format -msgid "Can't change type of the BUILTIN group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:660 -#, c-format -msgid "Could not update group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:674 -msgid "" -"Usage:\n" -"net groupmap cleanup\n" -" Delete all group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:682 -msgid "Could not list group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:689 -#, c-format -msgid "Group %s is not mapped\n" -msgstr "" - -#: ../utils/net_groupmap.c:692 -#, c-format -msgid "Deleting mapping for NT Group %s, sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:712 -msgid "Usage: net groupmap addmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:717 -#, c-format -msgid "Could not add sid %s to alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:733 -msgid "Usage: net groupmap delmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:738 -#, c-format -msgid "Could not delete sid %s from alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:755 -msgid "Usage: net groupmap listmem alias-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:764 -#, c-format -msgid "Could not list members for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:791 -#, c-format -msgid "Could not list memberships for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:814 -msgid "Usage: net groupmap memberof sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:820 ../utils/net_idmap.c:345 -msgid "talloc_init failed\n" -msgstr "" - -#: ../utils/net_groupmap.c:827 -msgid "Could not get domain sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:850 -msgid "Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:851 -msgid "" -"net groupmap add\n" -" Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:858 -msgid "Update a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:859 -msgid "" -"net groupmap modify\n" -" Modify an existing group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:866 -msgid "Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:867 -msgid "" -"net groupmap delete\n" -" Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:874 -msgid "Set group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:875 -msgid "" -"net groupmap set\n" -" Set a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:882 -msgid "Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:883 -msgid "" -"net groupmap cleanup\n" -" Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:890 -msgid "Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:891 -msgid "" -"net groupmap addmem\n" -" Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:898 -msgid "Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:899 -msgid "" -"net groupmap delmem\n" -" Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:906 -msgid "List foreign group members" -msgstr "" - -#: ../utils/net_groupmap.c:907 -msgid "" -"net groupmap listmem\n" -" List foreign alias members" -msgstr "" - -#: ../utils/net_groupmap.c:914 -msgid "List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:915 -msgid "" -"net groupmap memberships\n" -" List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:922 -msgid "List current group map" -msgstr "" - -#: ../utils/net_groupmap.c:923 -msgid "" -"net groupmap list\n" -" List current group map" -msgstr "" - -#: ../utils/net_help.c:39 -#, c-format -msgid "net %s usage:\n" -msgstr "" - -#: ../utils/net_help_common.c:25 ../utils/net_join.c:28 -msgid "Valid methods: (auto-detected if not specified)\n" -msgstr "" - -#: ../utils/net_help_common.c:26 ../utils/net_join.c:29 -msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" -msgstr "" - -#: ../utils/net_help_common.c:27 ../utils/net_join.c:30 -msgid "\trpc\t\t\t\tDCE-RPC\n" -msgstr "" - -#: ../utils/net_help_common.c:28 -msgid "\trap\t\t\t\tRAP (older systems)\n" -msgstr "" - -#: ../utils/net_help_common.c:35 -msgid "Valid targets: choose one (none defaults to localhost)\n" -msgstr "" - -#: ../utils/net_help_common.c:36 -msgid "\t-S or --server=\t\tserver name\n" -msgstr "" - -#: ../utils/net_help_common.c:37 -msgid "\t-I or --ipaddress=\taddress of target server\n" -msgstr "" - -#: ../utils/net_help_common.c:38 -msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" -msgstr "" - -#: ../utils/net_help_common.c:41 -#, fuzzy -msgid "Valid miscellaneous options are:\n" -msgstr "Pozostałe Opcje" - -#. misc options -#: ../utils/net_help_common.c:42 -msgid "\t-p or --port=\t\tconnection port on target\n" -msgstr "" - -#: ../utils/net_help_common.c:43 -msgid "\t-W or --myworkgroup=\tclient workgroup\n" -msgstr "" - -#: ../utils/net_help_common.c:44 -msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" -msgstr "" - -#: ../utils/net_help_common.c:45 -msgid "\t-n or --myname=\t\tclient name\n" -msgstr "" - -#: ../utils/net_help_common.c:46 -msgid "\t-U or --user=\t\tuser name\n" -msgstr "" - -#: ../utils/net_help_common.c:47 -msgid "\t-s or --configfile=\tpathname of smb.conf file\n" -msgstr "" - -#: ../utils/net_help_common.c:48 -msgid "\t-l or --long\t\t\tDisplay full information\n" -msgstr "" - -#: ../utils/net_help_common.c:49 -msgid "\t-V or --version\t\t\tPrint samba version information\n" -msgstr "" - -#: ../utils/net_help_common.c:50 -msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" -msgstr "" - -#: ../utils/net_help_common.c:52 -msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" -msgstr "" - -#: ../utils/net_help_common.c:54 -msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" -msgstr "" - -#: ../utils/net_idmap.c:25 -msgid "Out of memory!\n" -msgstr "" - -#: ../utils/net_idmap.c:39 -#, c-format -msgid "USER HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:44 -#, c-format -msgid "GROUP HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:63 -msgid "" -"Usage:\n" -"net idmap dump \n" -" Dump current ID mapping.\n" -" inputfile\tTDB file to read mappings from.\n" -msgstr "" - -#: ../utils/net_idmap.c:73 -#, c-format -msgid "Could not open idmap: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:94 -msgid "" -"Usage:\n" -"net idmap restore [inputfile]\n" -" Restore ID mappings from file\n" -" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" -msgstr "" - -#: ../utils/net_idmap.c:104 -msgid "To use net idmap Winbindd must be running.\n" -msgstr "" - -#: ../utils/net_idmap.c:142 -#, c-format -msgid "Could not set USER HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:151 -#, c-format -msgid "Could not set GROUP HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:156 -#, c-format -msgid "ignoring invalid line [%s]\n" -msgstr "" - -#: ../utils/net_idmap.c:163 -#, c-format -msgid "ignoring invalid sid [%s]: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:175 -#, c-format -msgid "Could not set mapping of %s %lu to sid %s: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:196 ../utils/net_idmap.c:202 -msgid "Not Implemented yet\n" -msgstr "" - -#: ../utils/net_idmap.c:240 -msgid "" -"Usage:\n" -"net idmap secret {|alloc} \n" -" Set the secret for the specified domain (or alloc module)\n" -" DOMAIN\tDomain to set secret for.\n" -" alloc\tSet secret for the alloc module\n" -" secret\tNew secret to set.\n" -msgstr "" - -#: ../utils/net_idmap.c:271 -msgid "The only currently supported backend is LDAP\n" -msgstr "" - -#: ../utils/net_idmap.c:281 -#, c-format -msgid "Missing ldap_user_dn option for domain %s\n" -msgstr "" - -#: ../utils/net_idmap.c:292 -msgid "Missing ldap_user_dn option for alloc backend\n" -msgstr "" - -#: ../utils/net_idmap.c:302 -msgid "Failed to store secret\n" -msgstr "" - -#: ../utils/net_idmap.c:307 -msgid "Secret stored\n" -msgstr "" - -#: ../utils/net_idmap.c:313 -msgid "" -"net idmap dump \n" -" Dump current id mapping\n" -msgstr "" - -#: ../utils/net_idmap.c:316 -msgid "" -"net idmap restore\n" -" Restore entries from stdin\n" -msgstr "" - -#. Deliberately *not* document net idmap delete -#: ../utils/net_idmap.c:321 -msgid "" -"net idmap secret |alloc \n" -" Set the secret for the specified DOMAIN (or the alloc module)\n" -msgstr "" - -#: ../utils/net_idmap.c:339 -msgid "usage: net idmap aclmapset \n" -msgstr "" - -#: ../utils/net_idmap.c:351 -#, fuzzy, c-format -msgid "db_open failed: %s\n" -msgstr "Zarządzanie Hasłami" - -#: ../utils/net_idmap.c:356 ../utils/net_idmap.c:361 -#, c-format -msgid "%s is not a valid sid\n" -msgstr "" - -#: ../utils/net_idmap.c:367 -msgid "talloc_strdup failed\n" -msgstr "" - -#: ../utils/net_idmap.c:373 -msgid "could not fetch db record\n" -msgstr "" - -#: ../utils/net_idmap.c:381 -#, c-format -msgid "could not store record: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:402 -msgid "Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:403 -msgid "" -"net idmap dump\n" -" Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:410 -msgid "Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:411 -msgid "" -"net idmap restore\n" -" Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:418 ../utils/net_idmap.c:426 -msgid "Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:419 -msgid "" -"net idmap setmap\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:427 -msgid "" -"net idmap delete\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:434 -msgid "Set secret for specified domain" -msgstr "" - -#: ../utils/net_idmap.c:435 -msgid "" -"net idmap secret {|alloc} \n" -" Set secret for specified domain or alloc module" -msgstr "" - -#: ../utils/net_idmap.c:442 -msgid "Set acl map" -msgstr "" - -#: ../utils/net_idmap.c:443 -msgid "" -"net idmap aclmapset\n" -" Set acl map" -msgstr "" - -#: ../utils/net_join.c:26 -msgid "" -"\n" -"net [] join [misc. options]\n" -"\tjoins this server to a domain\n" -msgstr "" - -#: ../utils/net_join.c:47 -msgid "ADS join did not work, falling back to RPC...\n" -msgstr "" - -#: ../utils/net_lookup.c:25 -msgid "" -" net lookup [host] HOSTNAME[#]\n" -"\tgives IP for a hostname\n" -"\n" -" net lookup ldap [domain]\n" -"\tgives IP of domain's ldap server\n" -"\n" -" net lookup kdc [realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup pdc [domain|realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup dc [domain]\n" -"\tgives IP of domains Domain Controllers\n" -"\n" -" net lookup master [domain|wg]\n" -"\tgive IP of master browser\n" -"\n" -" net lookup name [name]\n" -"\tLookup name's sid and type\n" -"\n" -" net lookup sid [sid]\n" -"\tGive sid's name and type\n" -"\n" -" net lookup dsgetdcname [name] [flags] [sitename]\n" -"\n" -msgstr "" - -#: ../utils/net_lookup.c:112 -msgid "net_lookup_ldap: talloc_init() failed!\n" -msgstr "" - -#: ../utils/net_lookup.c:325 -msgid "usage: net lookup name \n" -msgstr "" - -#: ../utils/net_lookup.c:331 ../utils/net_lookup.c:358 -#, c-format -msgid "Could not lookup name %s\n" -msgstr "" - -#: ../utils/net_lookup.c:347 -msgid "usage: net lookup sid \n" -msgstr "" - -#: ../utils/net_lookup.c:352 -#, c-format -msgid "Could not convert %s to SID\n" -msgstr "" - -#: ../utils/net_lookup.c:378 -msgid "usage: net lookup dsgetdcname \n" -msgstr "" - -#: ../utils/net_lookup.c:404 -#, c-format -msgid "failed with: %s\n" -msgstr "" - -#: ../utils/net_lookup.c:437 -msgid "" -"\n" -"Usage: \n" -msgstr "" - -#: ../utils/net_lua.c:60 -msgid "connect: Expected IP-Address" -msgstr "" - -#: ../utils/net_lua.c:65 -msgid "connect: Expected port" -msgstr "" - -#: ../utils/net_lua.c:84 -#, fuzzy, c-format -msgid "connect failed: %s" -msgstr "Zarządzanie Hasłami" - -#: ../utils/net_lua.c:132 -#, c-format -msgid "socket domain %s unknown" -msgstr "" - -#: ../utils/net_lua.c:144 -#, c-format -msgid "socket type %s unknown" -msgstr "" - -#: ../utils/net_lua.c:155 -#, fuzzy, c-format -msgid "socket() failed: %s" -msgstr "Zarządzanie Hasłami" - -#: ../utils/net_lua.c:278 -msgid "evt_reference_thread failed\n" -msgstr "" - -#: ../utils/net_lua.c:287 -msgid "event_add_timed failed" -msgstr "" - -#: ../utils/net_lua.c:300 -msgid "event_once called from non-base thread" -msgstr "" - -#: ../utils/net_lua.c:323 -msgid "event_context_init failed" -msgstr "" - -#: ../utils/net_lua.c:353 -msgid "lua_newstate failed\n" -msgstr "" - -#: ../utils/net_lua.c:371 -msgid "luaL_dofile returned an error\n" -msgstr "" - -#: ../utils/net_lua.c:376 -msgid "luaL_dostring returned an error\n" -msgstr "" diff --git a/source3/po/ru.msg b/source3/po/ru.msg index 4de02a6636..d859406ccb 100644 --- a/source3/po/ru.msg +++ b/source3/po/ru.msg @@ -18,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: swat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-30 12:18+0200\n" +"POT-Creation-Date: 2007-06-04 18:15+0200\n" "PO-Revision-Date: 2007-06-27 22:00+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" @@ -28,4014 +28,579 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ../web/swat.c:153 +#: ../web/swat.c:139 #, c-format msgid "ERROR: Can't open %s" msgstr "ОШИБКА: Не удалось открыть %s" -#: ../web/swat.c:241 +#: ../web/swat.c:223 msgid "Help" msgstr "Справка" -#: ../web/swat.c:247 ../web/swat.c:272 ../web/swat.c:293 ../web/swat.c:302 ../web/swat.c:311 ../web/swat.c:317 ../web/swat.c:329 ../web/swat.c:343 +#: ../web/swat.c:229 ../web/swat.c:254 ../web/swat.c:275 ../web/swat.c:285 ../web/swat.c:294 ../web/swat.c:303 ../web/swat.c:309 ../web/swat.c:315 ../web/swat.c:328 msgid "Set Default" msgstr "Установить по умолчанию" -#: ../web/swat.c:465 +#: ../web/swat.c:450 #, c-format msgid "failed to open %s for writing" msgstr "не удалось открыть %s для записи" -#: ../web/swat.c:488 +#: ../web/swat.c:473 #, c-format msgid "Can't reload %s" msgstr "Невозможно перезагрузить %s" -#: ../web/swat.c:561 +#: ../web/swat.c:543 #, c-format msgid "Logged in as %s" msgstr "Осуществлён вход под именем %s" -#: ../web/swat.c:565 +#: ../web/swat.c:547 msgid "Home" msgstr "Главная" -#: ../web/swat.c:567 +#: ../web/swat.c:549 msgid "Globals" msgstr "Глобальные" -#: ../web/swat.c:568 +#: ../web/swat.c:550 msgid "Shares" msgstr "Ресурсы" -#: ../web/swat.c:569 +#: ../web/swat.c:551 msgid "Printers" msgstr "Принтеры" -#: ../web/swat.c:570 +#: ../web/swat.c:552 msgid "Wizard" msgstr "Помощник" -#: ../web/swat.c:574 +#: ../web/swat.c:556 msgid "Status" msgstr "Состояние" -#: ../web/swat.c:575 +#: ../web/swat.c:557 msgid "View Config" msgstr "Настройки" -#: ../web/swat.c:577 +#: ../web/swat.c:559 msgid "Password Management" msgstr "Пароли" -#: ../web/swat.c:587 +#: ../web/swat.c:569 msgid "Current View Is" msgstr "Текущий вид" -#: ../web/swat.c:588 ../web/swat.c:591 +#: ../web/swat.c:570 ../web/swat.c:573 msgid "Basic" msgstr "Простой" -#: ../web/swat.c:589 ../web/swat.c:592 +#: ../web/swat.c:571 ../web/swat.c:574 msgid "Advanced" msgstr "Сложный" -#: ../web/swat.c:590 +#: ../web/swat.c:572 msgid "Change View To" msgstr "Сменить вид на" -#: ../web/swat.c:619 +#: ../web/swat.c:601 msgid "Current Config" msgstr "Текущий файл конфигурации" -#: ../web/swat.c:623 +#: ../web/swat.c:605 msgid "Normal View" msgstr "Обычный вид" -#: ../web/swat.c:625 +#: ../web/swat.c:607 msgid "Full View" msgstr "Полный вид" #. Here we first set and commit all the parameters that were selected #. in the previous screen. -#: ../web/swat.c:644 +#: ../web/swat.c:626 msgid "Wizard Parameter Edit Page" msgstr "Страница редактирования параметров помощника" -#: ../web/swat.c:673 +#: ../web/swat.c:655 msgid "Note: smb.conf file has been read and rewritten" msgstr "Замечание: файл smb.conf был прочитан и перезаписан" #. Here we go ... -#: ../web/swat.c:779 +#: ../web/swat.c:763 msgid "Samba Configuration Wizard" msgstr "Помощник настройки Samba" -#: ../web/swat.c:783 +#: ../web/swat.c:767 msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." -msgstr "По кнопке \"Перезаписать файл smb.conf\" в файл smb.conf записываются все значения по умолчанию с комментариями." +msgstr "" +"По кнопке \"Перезаписать файл smb.conf\" в файл smb.conf записываются все " +"значения по умолчанию с комментариями." -#: ../web/swat.c:784 +#: ../web/swat.c:768 msgid "The same will happen if you press the commit button." msgstr "То же самое произойдёт при нажатии кнопки сохранения." -#: ../web/swat.c:787 +#: ../web/swat.c:771 msgid "Rewrite smb.conf file" msgstr "Перезаписать файл smb.conf" -#: ../web/swat.c:788 +#: ../web/swat.c:772 msgid "Commit" msgstr "Сохранить" -#: ../web/swat.c:789 +#: ../web/swat.c:773 msgid "Edit Parameter Values" msgstr "Редактировать значения параметров" -#: ../web/swat.c:795 +#: ../web/swat.c:779 msgid "Server Type" msgstr "Тип сервера" -#: ../web/swat.c:796 +#: ../web/swat.c:780 msgid "Stand Alone" msgstr "Независимый" -#: ../web/swat.c:797 +#: ../web/swat.c:781 msgid "Domain Member" msgstr "Член домена" -#: ../web/swat.c:798 +#: ../web/swat.c:782 msgid "Domain Controller" msgstr "Контроллер домена" -#: ../web/swat.c:801 +#: ../web/swat.c:785 msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "Необычный тип в smb.conf - Выберите новый режим" -#: ../web/swat.c:803 +#: ../web/swat.c:787 msgid "Configure WINS As" msgstr "Настроить WINS как" -#: ../web/swat.c:804 +#: ../web/swat.c:788 msgid "Not Used" msgstr "Не использовать" -#: ../web/swat.c:805 +#: ../web/swat.c:789 msgid "Server for client use" msgstr "Сервер для клиентов" -#: ../web/swat.c:806 +#: ../web/swat.c:790 msgid "Client of another WINS server" msgstr "Клиент другого сервера WINS" -#: ../web/swat.c:808 +#: ../web/swat.c:792 msgid "Remote WINS Server" msgstr "Удалённый сервер WINS" -#: ../web/swat.c:819 +#: ../web/swat.c:803 msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "Ошибка: в smb.conf установлены одновременно режим сервера WINS и поддержка WINS" -#: ../web/swat.c:820 +#: ../web/swat.c:804 msgid "Please Select desired WINS mode above." msgstr "Выберите желаемый режим WINS." -#: ../web/swat.c:822 +#: ../web/swat.c:806 msgid "Expose Home Directories" msgstr "Сделать доступными домашние каталоги" -#: ../web/swat.c:837 +#: ../web/swat.c:821 msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." -msgstr "Выбор параметров выше приводит к автоматической настройке большего числа параметров, и помогает в сокращении времени развёртывания Samba." +msgstr "" +"Выбор параметров выше приводит к автоматической настройке большего числа " +"параметров, и помогает в сокращении времени развёртывания Samba." -#: ../web/swat.c:850 +#: ../web/swat.c:834 msgid "Global Parameters" msgstr "Глобальные параметры" -#: ../web/swat.c:878 ../web/swat.c:986 ../web/swat.c:1344 +#: ../web/swat.c:862 ../web/swat.c:966 ../web/swat.c:1318 msgid "Commit Changes" msgstr "Сохранить изменения" -#: ../web/swat.c:882 ../web/swat.c:989 ../web/swat.c:1346 +#: ../web/swat.c:866 ../web/swat.c:969 ../web/swat.c:1320 msgid "Reset Values" msgstr "Реинициализировать значения" -#: ../web/swat.c:908 +#: ../web/swat.c:891 msgid "Share Parameters" msgstr "Параметры общих ресурсов" -#: ../web/swat.c:955 +#: ../web/swat.c:934 msgid "Choose Share" msgstr "Выбрать ресурс" -#: ../web/swat.c:971 +#: ../web/swat.c:951 msgid "Delete Share" msgstr "Удалить ресурс" -#: ../web/swat.c:978 +#: ../web/swat.c:958 msgid "Create Share" msgstr "Создать ресурс" -#: ../web/swat.c:1014 +#: ../web/swat.c:994 msgid "password change in demo mode rejected" msgstr "смена пароля в демо-режиме не работает" -#: ../web/swat.c:1028 +#: ../web/swat.c:1007 msgid "Can't setup password database vectors." msgstr "Не удалось настроить векторы базы данных паролей." -#: ../web/swat.c:1056 +#: ../web/swat.c:1033 msgid " Must specify \"User Name\" " msgstr " Должно быть указано \"Имя пользователя\" " -#: ../web/swat.c:1072 +#: ../web/swat.c:1049 msgid " Must specify \"Old Password\" " msgstr " Должен быть указан \"Старый пароль\" " -#: ../web/swat.c:1078 +#: ../web/swat.c:1055 msgid " Must specify \"Remote Machine\" " msgstr " Должна быть указана \"Удалённая машина\" " -#: ../web/swat.c:1085 +#: ../web/swat.c:1062 msgid " Must specify \"New, and Re-typed Passwords\" " msgstr " Должен быть указан \"Новый пароль, введённый дважды\" " -#: ../web/swat.c:1091 +#: ../web/swat.c:1068 msgid " Re-typed password didn't match new password " msgstr " Повторно набранный новый пароль не совпадает с новым паролем " -#: ../web/swat.c:1124 +#: ../web/swat.c:1101 #, c-format msgid " The passwd for '%s' has been changed." msgstr " Был изменён пароль для '%s'." -#: ../web/swat.c:1127 +#: ../web/swat.c:1104 #, c-format msgid " The passwd for '%s' has NOT been changed." msgstr " Пароль для '%s' НЕ был изменён." -#: ../web/swat.c:1152 +#: ../web/swat.c:1129 msgid "Server Password Management" msgstr "Управление паролями сервера" #. #. * Create all the dialog boxes for data collection #. -#: ../web/swat.c:1161 ../web/swat.c:1208 +#: ../web/swat.c:1138 ../web/swat.c:1185 msgid "User Name" msgstr "Имя пользователя" -#: ../web/swat.c:1164 ../web/swat.c:1210 +#: ../web/swat.c:1141 ../web/swat.c:1187 msgid "Old Password" msgstr "Старый пароль" -#: ../web/swat.c:1167 ../web/swat.c:1212 +#: ../web/swat.c:1144 ../web/swat.c:1189 msgid "New Password" msgstr "Новый пароль" -#: ../web/swat.c:1169 ../web/swat.c:1214 +#: ../web/swat.c:1146 ../web/swat.c:1191 msgid "Re-type New Password" msgstr "Новый пароль ещё раз" -#: ../web/swat.c:1177 ../web/swat.c:1225 +#: ../web/swat.c:1154 ../web/swat.c:1202 msgid "Change Password" msgstr "Сменить пароль" -#: ../web/swat.c:1180 +#: ../web/swat.c:1157 msgid "Add New User" msgstr "Добавить нового пользователя" -#: ../web/swat.c:1182 +#: ../web/swat.c:1159 msgid "Delete User" msgstr "Удалить пользователя" -#: ../web/swat.c:1184 +#: ../web/swat.c:1161 msgid "Disable User" msgstr "Заблокировать пользователя" -#: ../web/swat.c:1186 +#: ../web/swat.c:1163 msgid "Enable User" msgstr "Разблокировать пользователя" -#: ../web/swat.c:1199 +#: ../web/swat.c:1176 msgid "Client/Server Password Management" msgstr "Управление паролями в режиме клиент/сервер" -#: ../web/swat.c:1216 +#: ../web/swat.c:1193 msgid "Remote Machine" msgstr "Удалённая машина" -#: ../web/swat.c:1255 +#: ../web/swat.c:1232 msgid "Printer Parameters" msgstr "Параметры принтера" -#: ../web/swat.c:1257 +#: ../web/swat.c:1234 msgid "Important Note:" msgstr "Важное замечание:" -#: ../web/swat.c:1258 +#: ../web/swat.c:1235 +#, c-format msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Имена принтеров, помеченные [*] в выпадающем списке принтеров, " -#: ../web/swat.c:1259 +#: ../web/swat.c:1236 +#, c-format msgid "are autoloaded printers from " msgstr "были автоматически загружены согласно параметру " -#: ../web/swat.c:1260 +#: ../web/swat.c:1237 msgid "Printcap Name" msgstr "Printcap Name" -#: ../web/swat.c:1261 +#: ../web/swat.c:1238 msgid "Attempting to delete these printers from SWAT will have no effect." msgstr ". Попытка удалить эти принтеры из SWAT ни к чему не приведёт." -#: ../web/swat.c:1310 +#: ../web/swat.c:1284 msgid "Choose Printer" msgstr "Выбрать принтер" -#: ../web/swat.c:1329 +#: ../web/swat.c:1303 msgid "Delete Printer" msgstr "Удалить принтер" -#: ../web/swat.c:1336 +#: ../web/swat.c:1310 msgid "Create Printer" msgstr "Создать принтер" -#: ../web/statuspage.c:151 +#: ../web/statuspage.c:139 msgid "RDWR " msgstr "RDWR " -#: ../web/statuspage.c:153 +#: ../web/statuspage.c:141 msgid "WRONLY " msgstr "WRONLY " -#: ../web/statuspage.c:155 +#: ../web/statuspage.c:143 msgid "RDONLY " msgstr "RDONLY " -#: ../web/statuspage.c:329 +#: ../web/statuspage.c:330 msgid "Server Status" msgstr "Состояние сервера" -#: ../web/statuspage.c:334 +#: ../web/statuspage.c:335 msgid "Auto Refresh" msgstr "Включить автообновление" -#: ../web/statuspage.c:335 ../web/statuspage.c:340 +#: ../web/statuspage.c:336 ../web/statuspage.c:341 msgid "Refresh Interval: " msgstr "Интервал автообновления: " -#: ../web/statuspage.c:339 +#: ../web/statuspage.c:340 msgid "Stop Refreshing" msgstr "Выключить автообновление" -#: ../web/statuspage.c:348 +#: ../web/statuspage.c:355 msgid "version:" msgstr "версия:" -#: ../web/statuspage.c:351 +#: ../web/statuspage.c:358 msgid "smbd:" msgstr "smbd:" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:358 ../web/statuspage.c:371 ../web/statuspage.c:385 msgid "running" msgstr "работает" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:358 ../web/statuspage.c:371 ../web/statuspage.c:385 msgid "not running" msgstr "не работает" -#: ../web/statuspage.c:355 +#: ../web/statuspage.c:362 msgid "Stop smbd" msgstr "Остановить smbd" -#: ../web/statuspage.c:357 +#: ../web/statuspage.c:364 msgid "Start smbd" msgstr "Запустить smbd" -#: ../web/statuspage.c:359 +#: ../web/statuspage.c:366 msgid "Restart smbd" msgstr "Перезапустить smbd" -#: ../web/statuspage.c:364 +#: ../web/statuspage.c:371 msgid "nmbd:" msgstr "nmbd:" -#: ../web/statuspage.c:368 +#: ../web/statuspage.c:375 msgid "Stop nmbd" msgstr "Остановить nmbd" -#: ../web/statuspage.c:370 +#: ../web/statuspage.c:377 msgid "Start nmbd" msgstr "Запустить nmbd" -#: ../web/statuspage.c:372 +#: ../web/statuspage.c:379 msgid "Restart nmbd" msgstr "Перезапустить nmbd" -#: ../web/statuspage.c:378 +#: ../web/statuspage.c:385 msgid "winbindd:" msgstr "winbindd:" -#: ../web/statuspage.c:382 +#: ../web/statuspage.c:389 msgid "Stop winbindd" msgstr "Остановить winbindd" -#: ../web/statuspage.c:384 +#: ../web/statuspage.c:391 msgid "Start winbindd" msgstr "Запустить winbindd" -#: ../web/statuspage.c:386 +#: ../web/statuspage.c:393 msgid "Restart winbindd" msgstr "Перезапустить winbindd" #. stop, restart all -#: ../web/statuspage.c:395 +#: ../web/statuspage.c:402 msgid "Stop All" msgstr "Остановить всё" -#: ../web/statuspage.c:396 +#: ../web/statuspage.c:403 msgid "Restart All" msgstr "Перезапустить всё" #. start all -#: ../web/statuspage.c:400 +#: ../web/statuspage.c:407 msgid "Start All" msgstr "Запустить всё" -#: ../web/statuspage.c:407 +#: ../web/statuspage.c:414 msgid "Active Connections" msgstr "Активные подключения" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:416 ../web/statuspage.c:429 ../web/statuspage.c:437 msgid "PID" msgstr "PID" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 +#: ../web/statuspage.c:416 ../web/statuspage.c:429 msgid "Client" msgstr "Клиент" -#: ../web/statuspage.c:409 +#: ../web/statuspage.c:416 msgid "IP address" msgstr "IP-адрес" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:416 ../web/statuspage.c:429 ../web/statuspage.c:437 msgid "Date" msgstr "Дата" -#: ../web/statuspage.c:411 +#: ../web/statuspage.c:418 msgid "Kill" msgstr "Отключить" -#: ../web/statuspage.c:419 +#: ../web/statuspage.c:426 msgid "Active Shares" msgstr "Активные ресурсы" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:429 msgid "Share" msgstr "Ресурс" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:429 msgid "User" msgstr "Пользователь" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:429 msgid "Group" msgstr "Группа" -#: ../web/statuspage.c:428 +#: ../web/statuspage.c:435 msgid "Open Files" msgstr "Открытые файлы" -#: ../web/statuspage.c:431 -#, fuzzy -msgid "UID" -msgstr "PID" - -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:437 msgid "Sharing" msgstr "Ресурс" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:437 msgid "R/W" msgstr "R/W" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:437 msgid "Oplock" msgstr "Oplock" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:437 msgid "File" msgstr "Файл" -#: ../web/statuspage.c:438 +#: ../web/statuspage.c:446 msgid "Show Client in col 1" msgstr "Показать клиента в колонке 1" -#: ../web/statuspage.c:439 +#: ../web/statuspage.c:447 msgid "Show PID in col 1" msgstr "Показать PID в колонке 1" -#: ../param/loadparm.c:907 +#: ../param/loadparm.c:836 msgid "Base Options" msgstr "Основные параметры" -#: ../param/loadparm.c:1047 +#: ../param/loadparm.c:855 msgid "Security Options" msgstr "Параметры безопасности" -#: ../param/loadparm.c:1800 +#: ../param/loadparm.c:945 msgid "Logging Options" msgstr "Параметры журнала" -#: ../param/loadparm.c:1929 +#: ../param/loadparm.c:962 msgid "Protocol Options" msgstr "Параметры протокола" -#: ../param/loadparm.c:2301 +#: ../param/loadparm.c:1008 msgid "Tuning Options" msgstr "Параметры детальной настройки" -#: ../param/loadparm.c:2538 +#: ../param/loadparm.c:1037 msgid "Printing Options" msgstr "Параметры печати" -#: ../param/loadparm.c:2858 +#: ../param/loadparm.c:1075 msgid "Filename Handling" msgstr "Обработка имён файлов" -#: ../param/loadparm.c:3088 +#: ../param/loadparm.c:1105 msgid "Domain Options" msgstr "Параметры домена" -#: ../param/loadparm.c:3100 +#: ../param/loadparm.c:1109 msgid "Logon Options" msgstr "Параметры входа" -#: ../param/loadparm.c:3273 +#: ../param/loadparm.c:1130 msgid "Browse Options" msgstr "Параметры обзора" -#: ../param/loadparm.c:3384 +#: ../param/loadparm.c:1144 msgid "WINS Options" msgstr "Параметры WINS" -#: ../param/loadparm.c:3432 +#: ../param/loadparm.c:1153 msgid "Locking Options" msgstr "Параметры блокировки" -#: ../param/loadparm.c:3552 +#: ../param/loadparm.c:1170 msgid "Ldap Options" msgstr "Параметры Ldap" -#: ../param/loadparm.c:3708 -msgid "EventLog Options" -msgstr "Параметры EventLog" - -#: ../param/loadparm.c:3720 +#: ../param/loadparm.c:1186 msgid "Miscellaneous Options" msgstr "Различные параметры" -#: ../param/loadparm.c:4301 -msgid "VFS module options" -msgstr "Параметры модуля VFS" +#: ../param/loadparm.c:1191 +msgid "EventLog Options" +msgstr "Параметры EventLog" -#: ../param/loadparm.c:4323 -#, fuzzy -msgid "MSDFS options" +#: ../param/loadparm.c:1258 +msgid "VFS module options" msgstr "Параметры модуля VFS" -#: ../param/loadparm.c:4353 +#: ../param/loadparm.c:1268 msgid "Winbind options" msgstr "Параметры Winbind" -#: ../utils/net.c:103 -msgid "Enter machine password: " -msgstr "" - -#: ../utils/net.c:107 -msgid "Unable to write the machine account password in the secrets database" -msgstr "" - -#: ../utils/net.c:111 -msgid "Modified trust account password in secrets database\n" -msgstr "" - -#: ../utils/net.c:115 -msgid "" -"Machine account password change requires the -f flag.\n" -"Do NOT use this function unless you know what it does!\n" -"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" -msgstr "" - -#: ../utils/net.c:150 ../utils/net.c:228 -#, c-format -msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" -msgstr "" - -#: ../utils/net.c:163 ../utils/net.c:251 -#, c-format -msgid "SID for domain %s is: %s\n" -msgstr "" - -#: ../utils/net.c:175 -msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:195 -msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:213 -msgid "usage: net getdomainsid\n" -msgstr "" - -#: ../utils/net.c:238 -msgid "Could not fetch local SID\n" -msgstr "" - -#: ../utils/net.c:242 -#, c-format -msgid "SID for local machine %s is: %s\n" -msgstr "" - -#: ../utils/net.c:246 -msgid "Could not fetch domain SID\n" -msgstr "" - -#: ../utils/net.c:263 -#, c-format -msgid "get_maxrid: Could not search %s\n" -msgstr "" - -#: ../utils/net.c:297 -msgid "usage: net maxrid\n" -msgstr "" - -#: ../utils/net.c:302 -msgid "can't get current maximum rid\n" -msgstr "" - -#: ../utils/net.c:306 -#, c-format -msgid "Currently used maximum rid: %d\n" -msgstr "" - -#: ../utils/net.c:317 -msgid "Run functions using RPC transport" -msgstr "" - -#: ../utils/net.c:318 -msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." -msgstr "" - -#: ../utils/net.c:325 -msgid "Run functions using RAP transport" -msgstr "" - -#: ../utils/net.c:326 -msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." -msgstr "" - -#: ../utils/net.c:333 -msgid "Run functions using ADS transport" -msgstr "" - -#: ../utils/net.c:334 -msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." -msgstr "" - -#: ../utils/net.c:343 -msgid "Functions on remote opened files" -msgstr "" - -#: ../utils/net.c:344 -msgid " Use 'net help file' to get more information about 'net file' commands." -msgstr "" - -#: ../utils/net.c:351 -msgid "Functions on shares" -msgstr "" - -#: ../utils/net.c:352 -msgid " Use 'net help share' to get more information about 'net share' commands." -msgstr "" - -#: ../utils/net.c:359 -msgid "Manage sessions" -msgstr "" - -#: ../utils/net.c:360 -msgid " Use 'net help session' to get more information about 'net session' commands." -msgstr "" - -#: ../utils/net.c:367 -msgid "List servers in workgroup" -msgstr "" - -#: ../utils/net.c:368 -msgid " Use 'net help server' to get more information about 'net server' commands." -msgstr "" - -#: ../utils/net.c:375 -msgid "List domains/workgroups on network" -msgstr "" - -#: ../utils/net.c:376 -msgid " Use 'net help domain' to get more information about 'net domain' commands." -msgstr "" - -#: ../utils/net.c:383 -msgid "Modify printer queue" -msgstr "" - -#: ../utils/net.c:384 -msgid " Use 'net help printq' to get more information about 'net printq' commands." -msgstr "" - -#: ../utils/net.c:391 -#, fuzzy -msgid "Manage users" -msgstr "Разблокировать пользователя" - -#: ../utils/net.c:392 -msgid " Use 'net help user' to get more information about 'net user' commands." -msgstr "" - -#: ../utils/net.c:399 -msgid "Manage groups" -msgstr "" - -#: ../utils/net.c:400 -msgid " Use 'net help group' to get more information about 'net group' commands." -msgstr "" - -#: ../utils/net.c:407 -msgid "Manage group mappings" -msgstr "" - -#: ../utils/net.c:408 -msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." -msgstr "" - -#: ../utils/net.c:415 -msgid "Functions on the SAM database" -msgstr "" - -#: ../utils/net.c:416 -msgid " Use 'net help sam' to get more information about 'net sam' commands." -msgstr "" - -#: ../utils/net.c:423 -msgid "Validate username and password" -msgstr "" - -#: ../utils/net.c:424 -msgid " Use 'net help validate' to get more information about 'net validate' commands." -msgstr "" - -#: ../utils/net.c:431 -msgid "Modify group memberships" -msgstr "" - -#: ../utils/net.c:432 -msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." -msgstr "" - -#: ../utils/net.c:438 -msgid "Execute remote command on a remote OS/2 server" -msgstr "" - -#: ../utils/net.c:439 -msgid " Use 'net help admin' to get more information about 'net admin' commands." -msgstr "" - -#: ../utils/net.c:445 -msgid "List/modify running services" -msgstr "" - -#: ../utils/net.c:446 -msgid " Use 'net help service' to get more information about 'net service' commands." -msgstr "" - -#: ../utils/net.c:453 -#, fuzzy -msgid "Change user password on target server" -msgstr "Не удалось настроить векторы базы данных паролей." - -#: ../utils/net.c:454 -msgid " Use 'net help password' to get more information about 'net password' commands." -msgstr "" - -#: ../utils/net.c:460 -#, fuzzy -msgid "Change the trust password" -msgstr "Сменить пароль" - -#: ../utils/net.c:461 -msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." -msgstr "" - -#: ../utils/net.c:467 -#, fuzzy -msgid "Change the secret password" -msgstr "Сменить пароль" - -#: ../utils/net.c:468 -msgid "" -" net [options] changesecretpw\n" -" Change the ADS domain member machine account password in secrets.tdb.\n" -" Do NOT use this function unless you know what it does.\n" -" Requires the -f flag to work." -msgstr "" - -#: ../utils/net.c:477 -msgid "Show/set time" -msgstr "" - -#: ../utils/net.c:478 -msgid " Use 'net help time' to get more information about 'net time' commands." -msgstr "" - -#: ../utils/net.c:484 -msgid "Look up host names/IP addresses" -msgstr "" - -#: ../utils/net.c:485 -msgid " Use 'net help lookup' to get more information about 'net lookup' commands." -msgstr "" - -#: ../utils/net.c:491 -msgid "Join a domain/AD" -msgstr "" - -#: ../utils/net.c:492 -msgid " Use 'net help join' to get more information about 'net join'." -msgstr "" - -#: ../utils/net.c:498 -msgid "Join/unjoin (remote) machines to/from a domain/AD" -msgstr "" - -#: ../utils/net.c:499 -msgid " Use 'net help dom' to get more information about 'net dom' commands." -msgstr "" - -#: ../utils/net.c:505 -msgid "Operate on the cache tdb file" -msgstr "" - -#: ../utils/net.c:506 -msgid " Use 'net help cache' to get more information about 'net cache' commands." -msgstr "" - -#: ../utils/net.c:512 -msgid "Get the SID for the local domain" -msgstr "" - -#: ../utils/net.c:513 -msgid " net getlocalsid" -msgstr "" - -#: ../utils/net.c:518 -msgid "Set the SID for the local domain" -msgstr "" - -#: ../utils/net.c:519 -msgid " net setlocalsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:524 -msgid "Set domain SID on member servers" -msgstr "" - -#: ../utils/net.c:525 -msgid " net setdomainsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:530 -msgid "Get domain SID on member servers" -msgstr "" - -#: ../utils/net.c:531 -msgid " net getdomainsid" -msgstr "" - -#: ../utils/net.c:536 -msgid "Display the maximul RID currently used" -msgstr "" - -#: ../utils/net.c:537 -msgid " net maxrid" -msgstr "" - -#: ../utils/net.c:542 -#, fuzzy -msgid "IDmap functions" -msgstr "Параметры домена" - -#: ../utils/net.c:543 -msgid " Use 'net help idmap to get more information about 'net idmap' commands." -msgstr "" - -#: ../utils/net.c:549 -#, fuzzy -msgid "Display server status" -msgstr "Состояние сервера" - -#: ../utils/net.c:550 -msgid " Use 'net help status' to get more information about 'net status' commands." -msgstr "" - -#: ../utils/net.c:556 -msgid "Manage user-modifiable shares" -msgstr "" - -#: ../utils/net.c:557 -msgid " Use 'net help usershare to get more information about 'net usershare' commands." -msgstr "" - -#: ../utils/net.c:563 -msgid "Display list of all users with SID" -msgstr "" - -#: ../utils/net.c:564 -msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." -msgstr "" - -#: ../utils/net.c:570 -msgid "Manage Samba registry based configuration" -msgstr "" - -#: ../utils/net.c:571 -msgid " Use 'net help conf' to get more information about 'net conf' commands." -msgstr "" - -#: ../utils/net.c:577 -msgid "Manage the Samba registry" -msgstr "" - -#: ../utils/net.c:578 -msgid " Use 'net help registry' to get more information about 'net registry' commands." -msgstr "" - -#: ../utils/net.c:584 -msgid "Open a lua interpreter" -msgstr "" - -#: ../utils/net.c:585 -msgid " Use 'net help lua' to get more information about 'net lua' commands." -msgstr "" - -#: ../utils/net.c:591 -msgid "Process Win32 *.evt eventlog files" -msgstr "" - -#: ../utils/net.c:592 -msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." -msgstr "" - -#: ../utils/net.c:600 -msgid "Manage AFS tokens" -msgstr "" - -#: ../utils/net.c:601 -msgid " Use 'net help afs' to get more information about 'net afs' commands." -msgstr "" - -#: ../utils/net.c:609 -msgid "Print usage information" -msgstr "" - -#: ../utils/net.c:610 -msgid " Use 'net help help' to list usage information for 'net' commands." -msgstr "" - -#: ../utils/net.c:639 -msgid "Encrypt SMB transport (UNIX extended servers only)" -msgstr "" - -#: ../utils/net.c:703 -msgid "" -"\n" -"Invalid ip address specified\n" -msgstr "" - -#: ../utils/net.c:718 -#, c-format -msgid "" -"\n" -"Invalid option %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:52 ../utils/net_ads.c:392 -msgid "CLDAP query failed!\n" -msgstr "" - -#: ../utils/net_ads.c:56 -#, fuzzy, c-format -msgid "" -"Information for Domain Controller: %s\n" -"\n" -msgstr "Контроллер домена" - -#: ../utils/net_ads.c:59 -msgid "Response Type: " -msgstr "" - -#: ../utils/net_ads.c:72 -#, c-format -msgid "GUID: %s\n" -msgstr "" - -#: ../utils/net_ads.c:74 -#, c-format -msgid "" -"Flags:\n" -"\tIs a PDC: %s\n" -"\tIs a GC of the forest: %s\n" -"\tIs an LDAP server: %s\n" -"\tSupports DS: %s\n" -"\tIs running a KDC: %s\n" -"\tIs running time services: %s\n" -"\tIs the closest DC: %s\n" -"\tIs writable: %s\n" -"\tHas a hardware clock: %s\n" -"\tIs a non-domain NC serviced by LDAP server: %s\n" -"\tIs NT6 DC that has some secrets: %s\n" -"\tIs NT6 DC that has all secrets: %s\n" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "yes" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "no" -msgstr "" - -#: ../utils/net_ads.c:101 -#, c-format -msgid "Forest:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:102 -#, c-format -msgid "Domain:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:103 -#, fuzzy, c-format -msgid "Domain Controller:\t%s\n" -msgstr "Контроллер домена" - -#: ../utils/net_ads.c:105 -#, c-format -msgid "Pre-Win2k Domain:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:106 -#, c-format -msgid "Pre-Win2k Hostname:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:108 -#, fuzzy, c-format -msgid "User name:\t%s\n" -msgstr "Имя пользователя" - -#: ../utils/net_ads.c:110 -#, fuzzy, c-format -msgid "Server Site Name :\t\t%s\n" -msgstr "Состояние сервера" - -#: ../utils/net_ads.c:111 -#, c-format -msgid "Client Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:113 -#, fuzzy, c-format -msgid "NT Version: %d\n" -msgstr "версия:" - -#: ../utils/net_ads.c:114 -#, c-format -msgid "LMNT Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:115 -#, c-format -msgid "LM20 Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:130 -msgid "" -"Usage:\n" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookup.\n" -msgstr "" - -#: ../utils/net_ads.c:137 ../utils/net_ads.c:381 -msgid "Didn't find the cldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:160 -msgid "" -"Usage:\n" -"net ads info\n" -" Display information about an Active Directory server.\n" -msgstr "" - -#: ../utils/net_ads.c:168 ../utils/net_ads.c:173 -msgid "Didn't find the ldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:182 -msgid "Failed to get server's current time!\n" -msgstr "" - -#: ../utils/net_ads.c:187 -#, c-format -msgid "LDAP server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:188 -#, c-format -msgid "LDAP server name: %s\n" -msgstr "" - -#: ../utils/net_ads.c:189 -#, c-format -msgid "Realm: %s\n" -msgstr "" - -#: ../utils/net_ads.c:190 -#, c-format -msgid "Bind Path: %s\n" -msgstr "" - -#: ../utils/net_ads.c:191 -#, c-format -msgid "LDAP port: %d\n" -msgstr "" - -#: ../utils/net_ads.c:192 -#, fuzzy, c-format -msgid "Server time: %s\n" -msgstr "Состояние сервера" - -#: ../utils/net_ads.c:195 -#, c-format -msgid "KDC server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:196 -#, c-format -msgid "Server time offset: %d\n" -msgstr "" - -#: ../utils/net_ads.c:374 -msgid "" -"Usage:\n" -"net ads workgroup\n" -" Print the workgroup name\n" -msgstr "" - -#: ../utils/net_ads.c:397 -#, c-format -msgid "Workgroup: %s\n" -msgstr "" - -#: ../utils/net_ads.c:458 -#, c-format -msgid "ads_user_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:463 -#, c-format -msgid "ads_user_add: User %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:477 -#, c-format -msgid "Could not add user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:484 ../utils/net_ads.c:497 -#, fuzzy, c-format -msgid "User %s added\n" -msgstr "Имя пользователя" - -#. password didn't set, delete account -#: ../utils/net_ads.c:503 -#, c-format -msgid "Could not add user %s. Error setting password %s\n" -msgstr "" - -#: ../utils/net_ads.c:551 -#, c-format -msgid "ads_user_info: failed to escape user %s\n" -msgstr "" - -#: ../utils/net_ads.c:569 -#, c-format -msgid "ads_search: %s\n" -msgstr "" - -#: ../utils/net_ads.c:575 -msgid "ads_pull_uint32 failed\n" -msgstr "" - -#: ../utils/net_ads.c:582 -#, c-format -msgid "ads_domain_sid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:642 -#, c-format -msgid "User %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:652 -#, c-format -msgid "User %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:656 -#, c-format -msgid "Error deleting user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:669 -#, fuzzy -msgid "Add an AD user" -msgstr "Добавить нового пользователя" - -#: ../utils/net_ads.c:670 -msgid "" -"net ads user add\n" -" Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:677 -msgid "Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:678 -msgid "" -"net ads user info\n" -" Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:685 -#, fuzzy -msgid "Delete an AD user" -msgstr "Удалить пользователя" - -#: ../utils/net_ads.c:686 -msgid "" -"net ads user delete\n" -" Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:699 -msgid "" -"Usage:\n" -"net ads user\n" -" List AD users\n" -msgstr "" - -#: ../utils/net_ads.c:711 -msgid "" -"\n" -"User name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:751 -#, c-format -msgid "ads_group_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:756 -#, c-format -msgid "ads_group_add: Group %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:769 -#, c-format -msgid "Group %s added\n" -msgstr "" - -#: ../utils/net_ads.c:772 -#, c-format -msgid "Could not add group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:801 -#, c-format -msgid "Group %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:811 -#, c-format -msgid "Group %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:815 -#, c-format -msgid "Error deleting group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:828 -msgid "Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:829 -msgid "" -"net ads group add\n" -" Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:836 -#, fuzzy -msgid "Delete an AD group" -msgstr "Удалить ресурс" - -#: ../utils/net_ads.c:837 -msgid "" -"net ads group delete\n" -" Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:850 -msgid "" -"Usage:\n" -"net ads group\n" -" List AD groups\n" -msgstr "" - -#: ../utils/net_ads.c:862 -msgid "" -"\n" -"Group name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:884 -msgid "" -"Usage:\n" -"net ads status\n" -" Display machine account details\n" -msgstr "" - -#: ../utils/net_ads.c:896 -#, c-format -msgid "ads_find_machine_acct: %s\n" -msgstr "" - -#: ../utils/net_ads.c:902 -#, c-format -msgid "No machine account for '%s' found\n" -msgstr "" - -#: ../utils/net_ads.c:926 -msgid "" -"Usage:\n" -"net ads leave\n" -" Leave an AD domain\n" -msgstr "" - -#: ../utils/net_ads.c:933 -msgid "No realm set, are we joined ?\n" -msgstr "" - -#: ../utils/net_ads.c:938 ../utils/net_ads.c:1260 -msgid "Could not initialise talloc context.\n" -msgstr "" - -#: ../utils/net_ads.c:948 -msgid "Could not initialise unjoin context.\n" -msgstr "" - -#: ../utils/net_ads.c:968 -#, c-format -msgid "Failed to leave domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:975 -#, c-format -msgid "Deleted account for '%s' in realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:982 -#, c-format -msgid "Disabled account for '%s' in realm '%s'\n" -msgstr "" - -#. Based on what we requseted, we shouldn't get here, but if -#. we did, it means the secrets were removed, and therefore -#. we have left the domain -#: ../utils/net_ads.c:991 -#, c-format -msgid "Machine '%s' Left domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1035 -msgid "" -"Usage:\n" -"net ads testjoin\n" -" Test if the existing join is ok\n" -msgstr "" - -#: ../utils/net_ads.c:1044 -#, c-format -msgid "Join to domain is not valid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1049 -#, c-format -msgid "Join is OK\n" -msgstr "" - -#: ../utils/net_ads.c:1060 -msgid "Host is not configured as a member server.\n" -msgstr "" - -#: ../utils/net_ads.c:1065 -#, c-format -msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" -msgstr "" - -#: ../utils/net_ads.c:1072 -#, c-format -msgid "realm must be set in in %s for ADS join to succeed.\n" -msgstr "" - -#: ../utils/net_ads.c:1105 -#, c-format -msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" -msgstr "" - -#: ../utils/net_ads.c:1212 -msgid "" -"net ads join [options]\n" -"Valid options:\n" -msgstr "" - -#: ../utils/net_ads.c:1214 -msgid "" -" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" -" The deault UPN is in the form host/netbiosname@REALM.\n" -msgstr "" - -#: ../utils/net_ads.c:1216 -msgid "" -" createcomputer=OU Precreate the computer account in a specific OU.\n" -" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" -" E.g. \"createcomputer=Computers/Servers/Unix\"\n" -" NB: A backslash '\\' is used as escape at multiple levels and may\n" -" need to be doubled or even quadrupled. It is not used as a separator.\n" -msgstr "" - -#: ../utils/net_ads.c:1221 -msgid " osName=string Set the operatingSystem attribute during the join.\n" -msgstr "" - -#: ../utils/net_ads.c:1222 -msgid "" -" osVer=string Set the operatingSystemVersion attribute during the join.\n" -" NB: osName and osVer must be specified together for either to take effect.\n" -" Also, the operatingSystemService attribute is also set when along with\n" -" the two other attributes.\n" -msgstr "" - -#: ../utils/net_ads.c:1254 -msgid "Invalid configuration. Exiting....\n" -msgstr "" - -#: ../utils/net_ads.c:1283 -msgid "Please supply a valid OU path.\n" -msgstr "" - -#: ../utils/net_ads.c:1290 -msgid "Please supply a operating system name.\n" -msgstr "" - -#: ../utils/net_ads.c:1297 -msgid "Please supply a valid operating system version.\n" -msgstr "" - -#: ../utils/net_ads.c:1308 -msgid "Please supply a valid domain name\n" -msgstr "" - -#: ../utils/net_ads.c:1339 -#, c-format -msgid "" -"The workgroup in %s does not match the short\n" -"domain name obtained from the server.\n" -"Using the name [%s] from the server.\n" -"You should set \"workgroup = %s\" in %s.\n" -msgstr "" - -#: ../utils/net_ads.c:1347 -#, c-format -msgid "Using short domain name -- %s\n" -msgstr "" - -#: ../utils/net_ads.c:1350 -#, c-format -msgid "Joined '%s' to realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1353 -#, c-format -msgid "Joined '%s' to domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1377 ../utils/net_ads.c:1433 -msgid "DNS update failed!\n" -msgstr "" - -#. issue an overall failure message at the end. -#: ../utils/net_ads.c:1391 ../utils/net_dom.c:198 -#, c-format -msgid "Failed to join domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1414 -msgid "" -"Usage:\n" -"net ads dns register\n" -" Register hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1421 -msgid "Could not initialise talloc context\n" -msgstr "" - -#: ../utils/net_ads.c:1439 -msgid "Successfully registered hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1447 -msgid "DNS update support not enabled at compile time!\n" -msgstr "" - -#: ../utils/net_ads.c:1466 -msgid "" -"Usage:\n" -"net ads dns gethostbyname \n" -" Look up hostname from the AD\n" -" server\tName server to use\n" -" name\tName to look up\n" -msgstr "" - -#: ../utils/net_ads.c:1476 -#, c-format -msgid "do_gethostbyname returned %d\n" -msgstr "" - -#: ../utils/net_ads.c:1488 -msgid "Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1489 -msgid "" -"net ads dns register\n" -" Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1496 -msgid "Look up host" -msgstr "" - -#: ../utils/net_ads.c:1497 -msgid "" -"net ads dns gethostbyname\n" -" Look up host" -msgstr "" - -#: ../utils/net_ads.c:1512 -msgid "" -"\n" -"net ads printer search \n" -"\tsearch for a printer in the directory\n" -"\n" -"net ads printer info \n" -"\tlookup info in directory for printer on server\n" -"\t(note: printer defaults to \"*\", server defaults to local)\n" -"\n" -"net ads printer publish \n" -"\tpublish printer in directory\n" -"\t(note: printer name is required)\n" -"\n" -"net ads printer remove \n" -"\tremove printer from directory\n" -"\t(note: printer name is required)\n" -msgstr "" - -#: ../utils/net_ads.c:1536 -msgid "" -"Usage:\n" -"net ads printer search\n" -" List printers in the AD\n" -msgstr "" - -#: ../utils/net_ads.c:1549 -#, c-format -msgid "ads_find_printer: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1556 -msgid "No results found\n" -msgstr "" - -#: ../utils/net_ads.c:1576 -msgid "" -"Usage:\n" -"net ads printer info [printername [servername]]\n" -" Display printer info from AD\n" -" printername\tPrinter name or wildcard\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1603 -#, c-format -msgid "Server '%s' not found: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1611 ../utils/net_ads.c:1794 -#, c-format -msgid "Printer '%s' not found\n" -msgstr "" - -#: ../utils/net_ads.c:1640 -msgid "" -"Usage:\n" -"net ads printer publish [servername]\n" -" Publish printer in AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1675 -#, c-format -msgid "Unable to open a connnection to %s to obtain data for %s\n" -msgstr "" - -#: ../utils/net_ads.c:1688 -#, c-format -msgid "Could not find machine account for server %s\n" -msgstr "" - -#: ../utils/net_ads.c:1704 ../utils/net_ads.c:1713 -msgid "Internal error, out of memory!" -msgstr "" - -#: ../utils/net_ads.c:1724 -#, c-format -msgid "Unable to open a connnection to the spoolss pipe on %s\n" -msgstr "" - -#: ../utils/net_ads.c:1766 -msgid "" -"Usage:\n" -"net ads printer remove [servername]\n" -" Remove a printer from the AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1787 -#, c-format -msgid "ads_find_printer_on_server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1806 -#, c-format -msgid "ads_del_dn: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1822 -msgid "Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1823 -msgid "" -"net ads printer search\n" -" Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1830 -msgid "Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1831 -msgid "" -"net ads printer info\n" -" Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1838 -msgid "Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1839 -msgid "" -"net ads printer publish\n" -" Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1846 -#, fuzzy -msgid "Delete a printer" -msgstr "Удалить принтер" - -#: ../utils/net_ads.c:1847 -msgid "" -"net ads printer remove\n" -" Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1869 -msgid "" -"Usage:\n" -"net ads password \n" -" Change password for user\n" -" username\tName of user to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1877 -msgid "You must supply an administrator username/password\n" -msgstr "" - -#: ../utils/net_ads.c:1883 -msgid "ERROR: You must say which username to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1915 -msgid "Didn't find the kerberos server!\n" -msgstr "" - -#: ../utils/net_ads.c:1923 -#, c-format -msgid "Enter new password for %s:" -msgstr "" - -#: ../utils/net_ads.c:1933 ../utils/net_ads.c:1982 -#, fuzzy, c-format -msgid "Password change failed: %s\n" -msgstr "Пароли" - -#: ../utils/net_ads.c:1938 -#, fuzzy, c-format -msgid "Password change for %s completed.\n" -msgstr "смена пароля в демо-режиме не работает" - -#: ../utils/net_ads.c:1952 -msgid "" -"Usage:\n" -"net ads changetrustpw\n" -" Change the machine account's trust password\n" -msgstr "" - -#: ../utils/net_ads.c:1977 -#, c-format -msgid "Changing password for principal: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1988 -#, c-format -msgid "Password change for principal %s succeeded.\n" -msgstr "" - -#: ../utils/net_ads.c:1991 -msgid "Attempting to update system keytab with new password.\n" -msgstr "" - -#: ../utils/net_ads.c:1993 -msgid "Failed to update system keytab.\n" -msgstr "" - -#: ../utils/net_ads.c:2009 -msgid "" -"\n" -"net ads search \n" -"\n" -"Perform a raw LDAP search on a ADS server and dump the results.\n" -"The expression is a standard LDAP search expression, and the\n" -"attributes are a list of LDAP fields to show in the results.\n" -"\n" -"Example: net ads search '(objectCategory=group)' sAMAccountName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2046 ../utils/net_ads.c:2107 ../utils/net_ads.c:2171 ../utils/net_ads_gpo.c:250 -#, c-format -msgid "search failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2051 ../utils/net_ads.c:2176 ../utils/net_ads_gpo.c:256 -#, c-format -msgid "" -"Got %d replies\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2069 -msgid "" -"\n" -"net ads dn \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" -"\n" -"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2129 -msgid "" -"\n" -"net ads sid \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The SID is in string format, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads sid 'S-1-5-32' distinguishedName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2164 -msgid "could not convert sid\n" -msgstr "" - -#: ../utils/net_ads.c:2193 -msgid "" -"Usage:\n" -"net ads keytab flush\n" -" Delete the whole keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2214 -msgid "" -"Usage:\n" -"net ads keytab add [principal ...]\n" -" Add principals to local keytab\n" -" principal\tKerberos principal to add to keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2222 -msgid "Processing principals to add...\n" -msgstr "" - -#: ../utils/net_ads.c:2239 -msgid "" -"Usage:\n" -"net ads keytab create\n" -" Create new default keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2258 -msgid "" -"Usage:\n" -"net ads keytab list [keytab]\n" -" List a local keytab\n" -" keytab\tKeytab to list\n" -msgstr "" - -#: ../utils/net_ads.c:2280 -msgid "Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2281 -msgid "" -"net ads keytab add\n" -" Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2288 -#, fuzzy -msgid "Create a fresh keytab" -msgstr "Создать ресурс" - -#: ../utils/net_ads.c:2289 -msgid "" -"net ads keytab create\n" -" Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2296 -msgid "Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2297 -msgid "" -"net ads keytab flush\n" -" Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2304 -msgid "List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2305 -msgid "" -"net ads keytab list\n" -" List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2312 -msgid "" -"\n" -"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" -msgstr "" - -#: ../utils/net_ads.c:2324 -msgid "" -"Usage:\n" -"net ads kerberos renew\n" -" Renew TGT from existing credential cache\n" -msgstr "" - -#: ../utils/net_ads.c:2332 -#, c-format -msgid "failed to renew kerberos ticket: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2347 -msgid "" -"Usage:\n" -"net ads kerberos pac\n" -" Dump the Kerberos PAC\n" -msgstr "" - -#: ../utils/net_ads.c:2372 -#, c-format -msgid "failed to query kerberos PAC: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2381 -#, c-format -msgid "The Pac: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2397 -msgid "" -"Usage:\n" -"net ads kerberos kinit\n" -" Get Ticket Granting Ticket (TGT) for the user\n" -msgstr "" - -#: ../utils/net_ads.c:2421 -#, c-format -msgid "failed to kinit password: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2435 -msgid "Retrieve Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2436 -msgid "" -"net ads kerberos kinit\n" -" Receive Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2443 -msgid "Renew Ticket Granting Ticket from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2444 -msgid "" -"net ads kerberos renew\n" -" Renew Ticket Granting Ticket (TGT) from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2452 -msgid "Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2453 -msgid "" -"net ads kerberos pac\n" -" Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2469 -msgid "Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2470 -msgid "" -"net ads info\n" -" Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2477 -msgid "Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2478 -msgid "" -"net ads join\n" -" Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2485 -msgid "Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2486 -msgid "" -"net ads testjoin\n" -" Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2493 -msgid "Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2494 -msgid "" -"net ads leave\n" -" Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2501 -msgid "Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2502 -msgid "" -"net ads status\n" -" Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2509 -msgid "List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2510 -msgid "" -"net ads user\n" -" List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2517 -msgid "List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2518 -msgid "" -"net ads group\n" -" List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2525 -msgid "Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2526 -msgid "" -"net ads dns\n" -" Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2533 -#, fuzzy -msgid "Change user passwords" -msgstr "Сменить пароль" - -#: ../utils/net_ads.c:2534 -msgid "" -"net ads password\n" -" Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2541 -#, fuzzy -msgid "Change trust account password" -msgstr "Сменить пароль" - -#: ../utils/net_ads.c:2542 -msgid "" -"net ads changetrustpw\n" -" Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2549 -msgid "List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2550 -msgid "" -"net ads printer\n" -" List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2557 -msgid "Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2558 -msgid "" -"net ads search\n" -" Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2565 -msgid "Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2566 -msgid "" -"net ads dn\n" -" Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2573 -msgid "Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2574 -msgid "" -"net ads sid\n" -" Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2581 -msgid "Display workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2582 -msgid "" -"net ads workgroup\n" -" Display the workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2589 -msgid "Perfom CLDAP query on DC" -msgstr "" - -#: ../utils/net_ads.c:2590 -msgid "" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookups" -msgstr "" - -#: ../utils/net_ads.c:2597 -msgid "Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2598 -msgid "" -"net ads keytab\n" -" Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2605 -msgid "Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2606 -msgid "" -"net ads gpo\n" -" Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2613 -msgid "Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2614 -msgid "" -"net ads kerberos\n" -" Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2627 -msgid "ADS support not compiled in\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:40 -msgid "" -"Usage:\n" -"net ads gpo refresh \n" -" Lists all GPOs assigned to an account and downloads them\n" -" username\tUser to refresh GPOs for\n" -" machinename\tMachine to refresh GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:56 -#, c-format -msgid "failed to connect AD server: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:62 -#, c-format -msgid "failed to find samaccount for %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:70 -#, c-format -msgid "" -"\n" -"%s: '%s' has dn: '%s'\n" -"\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "machine" -msgstr "Удалённая машина" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "user" -msgstr "Пользователь" - -#: ../utils/net_ads_gpo.c:74 -msgid "* fetching token " -msgstr "" - -#: ../utils/net_ads_gpo.c:82 ../utils/net_ads_gpo.c:90 ../utils/net_ads_gpo.c:102 ../utils/net_ads_gpo.c:113 ../utils/net_ads_gpo.c:158 -#, c-format -msgid "failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:85 ../utils/net_ads_gpo.c:94 ../utils/net_ads_gpo.c:105 ../utils/net_ads_gpo.c:118 ../utils/net_ads_gpo.c:163 -msgid "finished\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:87 -msgid "* fetching GPO List " -msgstr "" - -#: ../utils/net_ads_gpo.c:96 -msgid "* Refreshing Group Policy Data " -msgstr "" - -#: ../utils/net_ads_gpo.c:107 -msgid "* storing GPO list to registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:122 -msgid "* dumping GPO list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:151 -msgid "* re-reading GPO list from registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:167 -msgid "* dumping GPO list from registry\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:226 -msgid "" -"Usage:\n" -"net ads gpo listall\n" -" List all GPOs on the DC\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:270 -#, fuzzy, c-format -msgid "ads_parse_gpo failed: %s\n" -msgstr "Пароли" - -#: ../utils/net_ads_gpo.c:300 -msgid "" -"Usage:\n" -"net ads gpo list \n" -" Lists all GPOs for machine/user\n" -" username\tUser to list GPOs for\n" -" machinename\tMachine to list GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:327 -#, c-format -msgid "%s: '%s' has dn: '%s'\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:451 -msgid "" -"Usage:\n" -"net ads gpo linkget \n" -" Lists gPLink of a containter\n" -" container\tContainer to get link for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:470 -#, c-format -msgid "get link for %s failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:492 -msgid "" -"Usage:\n" -"net ads gpo linkadd [options]\n" -" Link a container to a GPO\n" -" linkdn\tContainer to link to a GPO\n" -" gpodn\tGPO to link container to\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:497 -msgid "" -"note: DNs must be provided properly escaped.\n" -"See RFC 4514 for details\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:518 -#, c-format -msgid "link add failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:579 -msgid "" -"Usage:\n" -"net ads gpo getgpo \n" -" List speciefied GPO\n" -" gpo\t\tGPO to list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:603 -#, c-format -msgid "get gpo for [%s] failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:634 -msgid "List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:635 -msgid "" -"net ads gpo getgpo\n" -" List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:642 -msgid "Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:643 -msgid "" -"net ads gpo linkadd\n" -" Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:660 -msgid "Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:661 -msgid "" -"net ads gpo linkget\n" -" Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:668 -msgid "Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:669 -msgid "" -"net ads gpo list\n" -" Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:676 -msgid "Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:677 -msgid "" -"net ads gpo listall\n" -" Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:684 -msgid "Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_ads_gpo.c:686 -msgid "" -"net ads gpo refresh\n" -" Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_afs.c:25 -msgid "" -" net afs key filename\n" -"\tImports a OpenAFS KeyFile into our secrets.tdb\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:27 -msgid "" -" net afs impersonate \n" -"\tCreates a token for user@cell\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:38 -msgid "usage: 'net afs key cell'\n" -msgstr "" - -#: ../utils/net_afs.c:43 -msgid "Could not open secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:48 -#, c-format -msgid "Could not open %s\n" -msgstr "" - -#: ../utils/net_afs.c:53 -msgid "Could not read keyfile\n" -msgstr "" - -#: ../utils/net_afs.c:58 -msgid "Could not write keyfile to secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:71 -#, c-format -msgid "Usage: net afs impersonate \n" -msgstr "" - -#: ../utils/net_afs.c:78 -#, c-format -msgid "Could not create token\n" -msgstr "" - -#: ../utils/net_afs.c:83 -#, c-format -msgid "Could not set token into kernel\n" -msgstr "" - -#: ../utils/net_afs.c:87 -#, c-format -msgid "Success: %s@%s\n" -msgstr "" - -#: ../utils/net_afs.c:98 -msgid "Import an OpenAFS keyfile" -msgstr "" - -#: ../utils/net_afs.c:99 -msgid "" -"net afs key \n" -" Import kefile from ." -msgstr "" - -#: ../utils/net_afs.c:106 -msgid "Get a user token" -msgstr "" - -#: ../utils/net_afs.c:107 -msgid "" -"net afs impersonate \n" -" Create token for user@cell" -msgstr "" - -#: ../utils/net_cache.c:74 -#, c-format -msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" -msgstr "" - -#: ../utils/net_cache.c:75 -msgid "(expired)" -msgstr "" - -#: ../utils/net_cache.c:84 -#, c-format -msgid "Couldn't delete entry! key = %s\n" -msgstr "" - -#: ../utils/net_cache.c:158 -msgid "" -"\n" -"Usage:\n" -"net cache add \n" -msgstr "" - -#: ../utils/net_cache.c:170 -msgid "Invalid timeout argument.\n" -msgstr "" - -#: ../utils/net_cache.c:175 -msgid "New cache entry stored successfully.\n" -msgstr "" - -#: ../utils/net_cache.c:179 -msgid "Entry couldn't be added. Perhaps there's already such a key.\n" -msgstr "" - -#: ../utils/net_cache.c:195 -msgid "" -"\n" -"Usage: net cache del \n" -msgstr "" - -#: ../utils/net_cache.c:200 -msgid "Entry deleted.\n" -msgstr "" - -#: ../utils/net_cache.c:204 -msgid "Couldn't delete specified entry\n" -msgstr "" - -#: ../utils/net_cache.c:223 -msgid "" -"\n" -"Usage: net cache get \n" -msgstr "" - -#: ../utils/net_cache.c:233 -msgid "Failed to find entry\n" -msgstr "" - -#: ../utils/net_cache.c:250 -msgid "Usage: net cache search \n" -msgstr "" - -#: ../utils/net_cache.c:272 -msgid "" -"Usage:\n" -"net cache list\n" -" List all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:293 ../utils/net_cache.c:306 -msgid "" -"Usage:\n" -"net cache flush\n" -" Delete all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:331 -msgid "Add new cache entry" -msgstr "" - -#: ../utils/net_cache.c:332 -msgid "" -"net cache add \n" -" Add new cache entry.\n" -" key string\tKey string to add cache data under.\n" -" data string\tData to store under given key.\n" -" timeout\tTimeout for cache data." -msgstr "" - -#: ../utils/net_cache.c:342 -msgid "Delete existing cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:343 -msgid "" -"net cache del \n" -" Delete existing cache entry by key.\n" -" key string\tKey string to delete." -msgstr "" - -#: ../utils/net_cache.c:351 -msgid "Get cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:352 -msgid "" -"net cache get \n" -" Get cache entry by key.\n" -" key string\tKey string to look up cache entry for." -msgstr "" - -#: ../utils/net_cache.c:361 -msgid "Search entry by pattern" -msgstr "" - -#: ../utils/net_cache.c:362 -msgid "" -"net cache search \n" -" Search entry by pattern.\n" -" pattern\tPattern to search for in cache." -msgstr "" - -#: ../utils/net_cache.c:370 -msgid "List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:371 -msgid "" -"net cache list\n" -" List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:378 -#, fuzzy -msgid "Delete all cache entries" -msgstr "Удалить принтер" - -#: ../utils/net_cache.c:379 -msgid "" -"net cache flush\n" -" Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:386 -msgid "Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_cache.c:387 -msgid "" -"net cache stabilize\n" -" Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_conf.c:42 -msgid "USAGE: net conf list\n" -msgstr "" - -#: ../utils/net_conf.c:49 -msgid "" -"USAGE: net conf import [--test|-T] []\n" -"\t[--test|-T] testmode - do not act, just print what would be done\n" -"\t only import service , ignore the rest\n" -msgstr "" - -#: ../utils/net_conf.c:61 -msgid "USAGE: net conf listshares\n" -msgstr "" - -#: ../utils/net_conf.c:68 -msgid "USAGE: net conf drop\n" -msgstr "" - -#: ../utils/net_conf.c:75 -msgid "USAGE: net conf showshare \n" -msgstr "" - -#: ../utils/net_conf.c:82 -msgid "" -"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" -"\t the new share name.\n" -"\t the path on the filesystem to export.\n" -"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" -"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" -"\t optional comment for the new share.\n" -msgstr "" - -#: ../utils/net_conf.c:97 -msgid "USAGE: net conf delshare \n" -msgstr "" - -#: ../utils/net_conf.c:104 -msgid "USAGE: net conf setparm
\n" -msgstr "" - -#: ../utils/net_conf.c:111 -msgid "USAGE: net conf getparm
\n" -msgstr "" - -#: ../utils/net_conf.c:118 -msgid "USAGE: net conf delparm
\n" -msgstr "" - -#: ../utils/net_conf.c:125 -msgid "USAGE: net conf getincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:132 -msgid "USAGE: net conf setincludes
[]*\n" -msgstr "" - -#: ../utils/net_conf.c:139 -msgid "USAGE: net conf delincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:251 -#, c-format -msgid "Error getting config: %s\n" -msgstr "" - -#: ../utils/net_conf.c:305 ../utils/net_conf.c:318 ../utils/net_conf.c:614 ../utils/net_conf.c:742 ../utils/net_conf.c:780 ../utils/net_conf.c:786 ../utils/net_conf.c:860 ../utils/net_conf.c:866 ../utils/net_conf.c:916 ../utils/net_conf.c:970 -#: ../utils/net_conf.c:1010 ../utils/net_conf.c:1050 -msgid "error: out of memory!\n" -msgstr "" - -#: ../utils/net_conf.c:324 -#, c-format -msgid "error loading file '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:330 -msgid "" -"\n" -"TEST MODE - would import the following configuration:\n" -"\n" -msgstr "" - -#: ../utils/net_conf.c:346 ../utils/net_conf.c:382 ../utils/net_conf.c:407 ../utils/net_conf.c:793 -#, c-format -msgid "error starting transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:400 ../utils/net_conf.c:416 ../utils/net_conf.c:817 -#, c-format -msgid "error committing transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:427 ../utils/net_conf.c:828 -#, c-format -msgid "error cancelling transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:484 -#, c-format -msgid "Error deleting configuration: %s\n" -msgstr "" - -#: ../utils/net_conf.c:521 -#, c-format -msgid "error getting share parameters: %s\n" -msgstr "" - -#: ../utils/net_conf.c:630 -#, c-format -msgid "ERROR: share name %s contains invalid characters (any of %s)\n" -msgstr "" - -#: ../utils/net_conf.c:638 -msgid "ERROR: 'global' is not a valid share name.\n" -msgstr "" - -#: ../utils/net_conf.c:643 -#, c-format -msgid "ERROR: share %s already exists.\n" -msgstr "" - -#: ../utils/net_conf.c:652 -#, c-format -msgid "Error: path '%s' is not an absolute path.\n" -msgstr "" - -#: ../utils/net_conf.c:659 -#, c-format -msgid "" -"ERROR: cannot stat path '%s' to ensure this is a directory.\n" -"Error was '%s'.\n" -msgstr "" - -#: ../utils/net_conf.c:668 -#, c-format -msgid "ERROR: path '%s' is not a directory.\n" -msgstr "" - -#: ../utils/net_conf.c:679 -#, c-format -msgid "Error creating share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:690 ../utils/net_conf.c:699 ../utils/net_conf.c:707 ../utils/net_conf.c:715 -#, c-format -msgid "Error setting parameter %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:748 -#, c-format -msgid "Error deleting share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:801 -#, c-format -msgid "Error creating share '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:810 -#, c-format -msgid "Error setting value '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:874 ../utils/net_conf.c:930 -#, c-format -msgid "Error: given service '%s' does not exist.\n" -msgstr "" - -#: ../utils/net_conf.c:879 ../utils/net_conf.c:935 -#, c-format -msgid "Error: given parameter '%s' is not set.\n" -msgstr "" - -#: ../utils/net_conf.c:883 -#, c-format -msgid "Error getting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:939 -#, c-format -msgid "Error deleting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:977 -#, c-format -msgid "error getting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1023 -#, c-format -msgid "error setting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1056 -#, c-format -msgid "error deleting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1136 ../utils/net_help.c:36 -msgid "Usage:\n" -msgstr "" - -#: ../utils/net_conf.c:1160 -msgid "Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1162 -msgid "" -"net conf list\n" -" Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1171 -msgid "Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1173 -msgid "" -"net conf import\n" -" Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1181 -msgid "List the share names." -msgstr "" - -#: ../utils/net_conf.c:1182 -msgid "" -"net conf listshares\n" -" List the share names." -msgstr "" - -#: ../utils/net_conf.c:1189 -msgid "Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1190 -msgid "" -"net conf drop\n" -" Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1197 -msgid "Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1198 -msgid "" -"net conf showshare\n" -" Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1205 -#, fuzzy -msgid "Create a new share." -msgstr "Создать ресурс" - -#: ../utils/net_conf.c:1206 -msgid "" -"net conf addshare\n" -" Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1213 -#, fuzzy -msgid "Delete a share." -msgstr "Удалить ресурс" - -#: ../utils/net_conf.c:1214 -msgid "" -"net conf delshare\n" -" Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1221 -#, fuzzy -msgid "Store a parameter." -msgstr "Параметры общих ресурсов" - -#: ../utils/net_conf.c:1222 -msgid "" -"net conf setparm\n" -" Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1229 -msgid "Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1230 -msgid "" -"net conf getparm\n" -" Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1237 -#, fuzzy -msgid "Delete a parameter." -msgstr "Удалить принтер" - -#: ../utils/net_conf.c:1238 -msgid "" -"net conf delparm\n" -" Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1245 -msgid "Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1246 -msgid "" -"net conf getincludes\n" -" Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1253 -msgid "Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1254 -msgid "" -"net conf setincludes\n" -" Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1261 -msgid "Delete includes from a share definition." -msgstr "" - -#: ../utils/net_conf.c:1262 -msgid "" -"net conf setincludes\n" -" Delete includes from a share definition." -msgstr "" - -#: ../utils/net_dom.c:25 -msgid "" -"usage: net dom join \n" -" Join a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:28 -msgid "" -"usage: net dom unjoin \n" -" Unjoin a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:31 -msgid "" -"usage: net dom renamecomputer \n" -" Rename joined computer\n" -msgstr "" - -#: ../utils/net_dom.c:91 -#, c-format -msgid "Failed to unjoin domain: %s\n" -msgstr "" - -#: ../utils/net_dom.c:97 ../utils/net_dom.c:204 -msgid "Shutting down due to a domain membership change" -msgstr "" - -#: ../utils/net_dom.c:290 -#, c-format -msgid "Failed to rename machine: " -msgstr "" - -#: ../utils/net_dom.c:292 -#, c-format -msgid "Computer is not joined to a Domain\n" -msgstr "" - -#: ../utils/net_dom.c:301 -msgid "Shutting down due to a computer rename" -msgstr "" - -#: ../utils/net_dom.c:338 -#, fuzzy -msgid "Join a remote machine" -msgstr "Удалённая машина" - -#: ../utils/net_dom.c:339 -msgid "" -"net dom join \n" -" Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:347 -#, fuzzy -msgid "Unjoin a remote machine" -msgstr "Удалённая машина" - -#: ../utils/net_dom.c:348 -msgid "" -"net dom unjoin \n" -" Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:356 -msgid "Rename a computer that is joined to a domain" -msgstr "" - -#: ../utils/net_dom.c:357 -msgid "" -"net dom renamecomputer \n" -" Rename joined computer" -msgstr "" - -#: ../utils/net_eventlog.c:46 -msgid "usage: net eventlog dump \n" -msgstr "" - -#: ../utils/net_eventlog.c:52 ../utils/net_eventlog.c:108 -#, c-format -msgid "failed to load evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:59 ../utils/net_eventlog.c:129 -#, fuzzy, c-format -msgid "evt pull failed: %s\n" -msgstr "Пароли" - -#: ../utils/net_eventlog.c:102 -msgid "usage: net eventlog import \n" -msgstr "" - -#: ../utils/net_eventlog.c:116 -#, fuzzy, c-format -msgid "evt header pull failed: %s\n" -msgstr "Пароли" - -#: ../utils/net_eventlog.c:122 -msgid "input file is wrapped, cannot proceed\n" -msgstr "" - -#: ../utils/net_eventlog.c:138 ../utils/net_eventlog.c:203 -#, c-format -msgid "can't open the eventlog TDB (%s)\n" -msgstr "" - -#: ../utils/net_eventlog.c:158 -#, c-format -msgid "can't write to the eventlog: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:164 -#, c-format -msgid "wrote %d entries to tdb\n" -msgstr "" - -#: ../utils/net_eventlog.c:197 -msgid "usage: net eventlog export \n" -msgstr "" - -#: ../utils/net_eventlog.c:214 -#, c-format -msgid "failed to save evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:243 -msgid "Dump eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:244 -msgid "" -"net eventlog dump\n" -" Dump win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:251 -#, fuzzy -msgid "Import eventlog" -msgstr "Важное замечание:" - -#: ../utils/net_eventlog.c:252 -msgid "" -"net eventlog import\n" -" Import win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:259 -msgid "Export eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:260 -msgid "" -"net eventlog export\n" -" Export win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_file.c:27 -msgid "" -"net [] file [misc. options] [targets]\n" -"\tlists all open files on file server\n" -msgstr "" - -#: ../utils/net_file.c:29 -msgid "" -"net [] file USER [misc. options] [targets]\n" -"\tlists all files opened by username on file server\n" -msgstr "" - -#: ../utils/net_file.c:32 -msgid "" -"net [] file CLOSE [misc. options] [targets]\n" -"\tcloses specified file on target server\n" -msgstr "" - -#: ../utils/net_file.c:34 -msgid "" -"net [rap] file INFO [misc. options] [targets]\n" -"\tdisplays information about the specified open file\n" -msgstr "" - -#: ../utils/net_group.c:27 -msgid "" -"net [] group [misc. options] [targets]\n" -"\tList user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:29 -msgid "" -"net rpc group LIST [global|local|builtin]* [misc. options]\n" -"\tList specific user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:31 -msgid "" -"net [] group DELETE [misc. options] [targets]\n" -"\tDelete specified group\n" -msgstr "" - -#: ../utils/net_group.c:34 -msgid "" -"\n" -"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" -"\tCreate specified group\n" -msgstr "" - -#: ../utils/net_group.c:37 -msgid "" -"\n" -"net rpc group MEMBERS \n" -"\tList Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:38 -msgid "" -"\n" -"net rpc group ADDMEM \n" -"\tAdd Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:40 -msgid "" -"\n" -"net rpc group DELMEM \n" -"\tDelete Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:44 -msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" -msgstr "" - -#: ../utils/net_group.c:46 -msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" -msgstr "" - -#: ../utils/net_group.c:48 -msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" -msgstr "" - -#: ../utils/net_groupmap.c:38 -#, c-format -msgid "NT Group %s doesn't exist in mapping DB\n" -msgstr "" - -#: ../utils/net_groupmap.c:46 -#, c-format -msgid "converting sid %s from a string failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:65 -#, c-format -msgid "\tSID : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:66 -#, c-format -msgid "\tUnix gid : %u\n" -msgstr "" - -#: ../utils/net_groupmap.c:67 -#, c-format -msgid "\tUnix group: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:68 -#, c-format -msgid "\tGroup type: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:70 -#, c-format -msgid "\tComment : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:84 -msgid "" -"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" -" verbose\tPrint verbose list\n" -" ntgroup\tNT group to list\n" -" sid\tSID of group to list" -msgstr "" - -#: ../utils/net_groupmap.c:91 ../utils/net_groupmap.c:271 ../utils/net_groupmap.c:356 ../utils/net_groupmap.c:412 ../utils/net_groupmap.c:495 ../utils/net_groupmap.c:522 -#, fuzzy, c-format -msgid "" -"Usage:\n" -"%s\n" -msgstr "Имя пользователя" - -#: ../utils/net_groupmap.c:106 ../utils/net_groupmap.c:213 ../utils/net_groupmap.c:220 ../utils/net_groupmap.c:365 ../utils/net_groupmap.c:372 ../utils/net_groupmap.c:504 -msgid "must supply a name\n" -msgstr "" - -#: ../utils/net_groupmap.c:113 ../utils/net_groupmap.c:227 ../utils/net_groupmap.c:511 -msgid "must supply a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:118 ../utils/net_groupmap.c:265 ../utils/net_groupmap.c:406 ../utils/net_groupmap.c:516 -#, fuzzy, c-format -msgid "Bad option: %s\n" -msgstr "Основные параметры" - -#: ../utils/net_groupmap.c:139 -msgid "Failure to local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:181 -msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" -msgstr "" - -#: ../utils/net_groupmap.c:195 -#, fuzzy, c-format -msgid "" -"Usage\n" -"%s\n" -msgstr "Имя пользователя" - -#: ../utils/net_groupmap.c:205 -#, c-format -msgid "RID must be greater than %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:235 ../utils/net_groupmap.c:380 -msgid "must supply a comment string\n" -msgstr "" - -#: ../utils/net_groupmap.c:259 -#, c-format -msgid "unknown group type %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:276 -#, c-format -msgid "Can't lookup UNIX group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:282 -#, c-format -msgid "Unix group %s already mapped to SID %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:289 -msgid "No rid or sid specified, choosing a RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:292 -msgid "Could not get new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:297 -#, c-format -msgid "Got RID %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:328 -#, c-format -msgid "adding entry for group %s failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:332 -#, c-format -msgid "Successfully added group %s to the mapping db as a %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:349 -msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" -msgstr "" - -#: ../utils/net_groupmap.c:388 -msgid "must supply a group name\n" -msgstr "" - -#: ../utils/net_groupmap.c:434 -msgid "Failed to find local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:443 -msgid "Can't map to an unknown group type.\n" -msgstr "" - -#: ../utils/net_groupmap.c:449 -msgid "You can only change between domain and local groups.\n" -msgstr "" - -#: ../utils/net_groupmap.c:466 -#, c-format -msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" -msgstr "" - -#: ../utils/net_groupmap.c:476 -msgid "Could not update group database\n" -msgstr "" - -#: ../utils/net_groupmap.c:480 -#, c-format -msgid "Updated mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:491 -msgid "net groupmap delete {ntgroup=|sid=}" -msgstr "" - -#: ../utils/net_groupmap.c:532 -#, c-format -msgid "Unable to resolve group %s to a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:539 -#, c-format -msgid "Failed to remove group %s from the mapping db!\n" -msgstr "" - -#: ../utils/net_groupmap.c:544 -#, c-format -msgid "Sucessfully removed %s from the mapping db\n" -msgstr "" - -#: ../utils/net_groupmap.c:557 -msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" -msgstr "" - -#: ../utils/net_groupmap.c:563 -msgid "Can only specify -L or -D, not both\n" -msgstr "" - -#: ../utils/net_groupmap.c:573 -#, c-format -msgid "Could not find unix group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:594 -#, c-format -msgid "Could not find group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:605 -msgid "Could not allocate new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:622 -#, c-format -msgid "Could not add mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:633 -#, c-format -msgid "Can't change type of the BUILTIN group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:660 -#, c-format -msgid "Could not update group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:674 -msgid "" -"Usage:\n" -"net groupmap cleanup\n" -" Delete all group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:682 -msgid "Could not list group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:689 -#, c-format -msgid "Group %s is not mapped\n" -msgstr "" - -#: ../utils/net_groupmap.c:692 -#, c-format -msgid "Deleting mapping for NT Group %s, sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:712 -msgid "Usage: net groupmap addmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:717 -#, c-format -msgid "Could not add sid %s to alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:733 -msgid "Usage: net groupmap delmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:738 -#, c-format -msgid "Could not delete sid %s from alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:755 -msgid "Usage: net groupmap listmem alias-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:764 -#, c-format -msgid "Could not list members for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:791 -#, c-format -msgid "Could not list memberships for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:814 -msgid "Usage: net groupmap memberof sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:820 ../utils/net_idmap.c:345 -msgid "talloc_init failed\n" -msgstr "" - -#: ../utils/net_groupmap.c:827 -msgid "Could not get domain sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:850 -msgid "Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:851 -msgid "" -"net groupmap add\n" -" Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:858 -msgid "Update a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:859 -msgid "" -"net groupmap modify\n" -" Modify an existing group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:866 -msgid "Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:867 -msgid "" -"net groupmap delete\n" -" Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:874 -msgid "Set group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:875 -msgid "" -"net groupmap set\n" -" Set a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:882 -msgid "Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:883 -msgid "" -"net groupmap cleanup\n" -" Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:890 -msgid "Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:891 -msgid "" -"net groupmap addmem\n" -" Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:898 -msgid "Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:899 -msgid "" -"net groupmap delmem\n" -" Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:906 -msgid "List foreign group members" -msgstr "" - -#: ../utils/net_groupmap.c:907 -msgid "" -"net groupmap listmem\n" -" List foreign alias members" -msgstr "" - -#: ../utils/net_groupmap.c:914 -msgid "List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:915 -msgid "" -"net groupmap memberships\n" -" List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:922 -msgid "List current group map" -msgstr "" - -#: ../utils/net_groupmap.c:923 -msgid "" -"net groupmap list\n" -" List current group map" -msgstr "" - -#: ../utils/net_help.c:39 -#, c-format -msgid "net %s usage:\n" -msgstr "" - -#: ../utils/net_help_common.c:25 ../utils/net_join.c:28 -msgid "Valid methods: (auto-detected if not specified)\n" -msgstr "" - -#: ../utils/net_help_common.c:26 ../utils/net_join.c:29 -msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" -msgstr "" - -#: ../utils/net_help_common.c:27 ../utils/net_join.c:30 -msgid "\trpc\t\t\t\tDCE-RPC\n" -msgstr "" - -#: ../utils/net_help_common.c:28 -msgid "\trap\t\t\t\tRAP (older systems)\n" -msgstr "" - -#: ../utils/net_help_common.c:35 -msgid "Valid targets: choose one (none defaults to localhost)\n" -msgstr "" - -#: ../utils/net_help_common.c:36 -msgid "\t-S or --server=\t\tserver name\n" -msgstr "" - -#: ../utils/net_help_common.c:37 -msgid "\t-I or --ipaddress=\taddress of target server\n" -msgstr "" - -#: ../utils/net_help_common.c:38 -msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" -msgstr "" - -#: ../utils/net_help_common.c:41 -#, fuzzy -msgid "Valid miscellaneous options are:\n" -msgstr "Различные параметры" - -#. misc options -#: ../utils/net_help_common.c:42 -msgid "\t-p or --port=\t\tconnection port on target\n" -msgstr "" - -#: ../utils/net_help_common.c:43 -msgid "\t-W or --myworkgroup=\tclient workgroup\n" -msgstr "" - -#: ../utils/net_help_common.c:44 -msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" -msgstr "" - -#: ../utils/net_help_common.c:45 -msgid "\t-n or --myname=\t\tclient name\n" -msgstr "" - -#: ../utils/net_help_common.c:46 -msgid "\t-U or --user=\t\tuser name\n" -msgstr "" - -#: ../utils/net_help_common.c:47 -msgid "\t-s or --configfile=\tpathname of smb.conf file\n" -msgstr "" - -#: ../utils/net_help_common.c:48 -msgid "\t-l or --long\t\t\tDisplay full information\n" -msgstr "" - -#: ../utils/net_help_common.c:49 -msgid "\t-V or --version\t\t\tPrint samba version information\n" -msgstr "" - -#: ../utils/net_help_common.c:50 -msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" -msgstr "" - -#: ../utils/net_help_common.c:52 -msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" -msgstr "" - -#: ../utils/net_help_common.c:54 -msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" -msgstr "" - -#: ../utils/net_idmap.c:25 -msgid "Out of memory!\n" -msgstr "" - -#: ../utils/net_idmap.c:39 -#, c-format -msgid "USER HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:44 -#, c-format -msgid "GROUP HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:63 -msgid "" -"Usage:\n" -"net idmap dump \n" -" Dump current ID mapping.\n" -" inputfile\tTDB file to read mappings from.\n" -msgstr "" - -#: ../utils/net_idmap.c:73 -#, c-format -msgid "Could not open idmap: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:94 -msgid "" -"Usage:\n" -"net idmap restore [inputfile]\n" -" Restore ID mappings from file\n" -" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" -msgstr "" - -#: ../utils/net_idmap.c:104 -msgid "To use net idmap Winbindd must be running.\n" -msgstr "" - -#: ../utils/net_idmap.c:142 -#, c-format -msgid "Could not set USER HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:151 -#, c-format -msgid "Could not set GROUP HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:156 -#, c-format -msgid "ignoring invalid line [%s]\n" -msgstr "" - -#: ../utils/net_idmap.c:163 -#, c-format -msgid "ignoring invalid sid [%s]: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:175 -#, c-format -msgid "Could not set mapping of %s %lu to sid %s: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:196 ../utils/net_idmap.c:202 -msgid "Not Implemented yet\n" -msgstr "" - -#: ../utils/net_idmap.c:240 -msgid "" -"Usage:\n" -"net idmap secret {|alloc} \n" -" Set the secret for the specified domain (or alloc module)\n" -" DOMAIN\tDomain to set secret for.\n" -" alloc\tSet secret for the alloc module\n" -" secret\tNew secret to set.\n" -msgstr "" - -#: ../utils/net_idmap.c:271 -msgid "The only currently supported backend is LDAP\n" -msgstr "" - -#: ../utils/net_idmap.c:281 -#, c-format -msgid "Missing ldap_user_dn option for domain %s\n" -msgstr "" - -#: ../utils/net_idmap.c:292 -msgid "Missing ldap_user_dn option for alloc backend\n" -msgstr "" - -#: ../utils/net_idmap.c:302 -msgid "Failed to store secret\n" -msgstr "" - -#: ../utils/net_idmap.c:307 -msgid "Secret stored\n" -msgstr "" - -#: ../utils/net_idmap.c:313 -msgid "" -"net idmap dump \n" -" Dump current id mapping\n" -msgstr "" - -#: ../utils/net_idmap.c:316 -msgid "" -"net idmap restore\n" -" Restore entries from stdin\n" -msgstr "" - -#. Deliberately *not* document net idmap delete -#: ../utils/net_idmap.c:321 -msgid "" -"net idmap secret |alloc \n" -" Set the secret for the specified DOMAIN (or the alloc module)\n" -msgstr "" - -#: ../utils/net_idmap.c:339 -msgid "usage: net idmap aclmapset \n" -msgstr "" - -#: ../utils/net_idmap.c:351 -#, fuzzy, c-format -msgid "db_open failed: %s\n" -msgstr "Пароли" - -#: ../utils/net_idmap.c:356 ../utils/net_idmap.c:361 -#, c-format -msgid "%s is not a valid sid\n" -msgstr "" - -#: ../utils/net_idmap.c:367 -msgid "talloc_strdup failed\n" -msgstr "" - -#: ../utils/net_idmap.c:373 -msgid "could not fetch db record\n" -msgstr "" - -#: ../utils/net_idmap.c:381 -#, c-format -msgid "could not store record: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:402 -msgid "Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:403 -msgid "" -"net idmap dump\n" -" Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:410 -msgid "Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:411 -msgid "" -"net idmap restore\n" -" Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:418 ../utils/net_idmap.c:426 -msgid "Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:419 -msgid "" -"net idmap setmap\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:427 -msgid "" -"net idmap delete\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:434 -msgid "Set secret for specified domain" -msgstr "" - -#: ../utils/net_idmap.c:435 -msgid "" -"net idmap secret {|alloc} \n" -" Set secret for specified domain or alloc module" -msgstr "" - -#: ../utils/net_idmap.c:442 -msgid "Set acl map" -msgstr "" - -#: ../utils/net_idmap.c:443 -msgid "" -"net idmap aclmapset\n" -" Set acl map" -msgstr "" - -#: ../utils/net_join.c:26 -msgid "" -"\n" -"net [] join [misc. options]\n" -"\tjoins this server to a domain\n" -msgstr "" - -#: ../utils/net_join.c:47 -msgid "ADS join did not work, falling back to RPC...\n" -msgstr "" - -#: ../utils/net_lookup.c:25 -msgid "" -" net lookup [host] HOSTNAME[#]\n" -"\tgives IP for a hostname\n" -"\n" -" net lookup ldap [domain]\n" -"\tgives IP of domain's ldap server\n" -"\n" -" net lookup kdc [realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup pdc [domain|realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup dc [domain]\n" -"\tgives IP of domains Domain Controllers\n" -"\n" -" net lookup master [domain|wg]\n" -"\tgive IP of master browser\n" -"\n" -" net lookup name [name]\n" -"\tLookup name's sid and type\n" -"\n" -" net lookup sid [sid]\n" -"\tGive sid's name and type\n" -"\n" -" net lookup dsgetdcname [name] [flags] [sitename]\n" -"\n" -msgstr "" - -#: ../utils/net_lookup.c:112 -msgid "net_lookup_ldap: talloc_init() failed!\n" -msgstr "" - -#: ../utils/net_lookup.c:325 -msgid "usage: net lookup name \n" -msgstr "" - -#: ../utils/net_lookup.c:331 ../utils/net_lookup.c:358 -#, c-format -msgid "Could not lookup name %s\n" -msgstr "" - -#: ../utils/net_lookup.c:347 -msgid "usage: net lookup sid \n" -msgstr "" - -#: ../utils/net_lookup.c:352 -#, c-format -msgid "Could not convert %s to SID\n" -msgstr "" - -#: ../utils/net_lookup.c:378 -msgid "usage: net lookup dsgetdcname \n" -msgstr "" - -#: ../utils/net_lookup.c:404 -#, c-format -msgid "failed with: %s\n" -msgstr "" - -#: ../utils/net_lookup.c:437 -msgid "" -"\n" -"Usage: \n" -msgstr "" - -#: ../utils/net_lua.c:60 -msgid "connect: Expected IP-Address" -msgstr "" - -#: ../utils/net_lua.c:65 -msgid "connect: Expected port" -msgstr "" - -#: ../utils/net_lua.c:84 -#, fuzzy, c-format -msgid "connect failed: %s" -msgstr "Пароли" - -#: ../utils/net_lua.c:132 -#, c-format -msgid "socket domain %s unknown" -msgstr "" - -#: ../utils/net_lua.c:144 -#, c-format -msgid "socket type %s unknown" -msgstr "" - -#: ../utils/net_lua.c:155 -#, fuzzy, c-format -msgid "socket() failed: %s" -msgstr "Пароли" - -#: ../utils/net_lua.c:278 -msgid "evt_reference_thread failed\n" -msgstr "" - -#: ../utils/net_lua.c:287 -msgid "event_add_timed failed" -msgstr "" - -#: ../utils/net_lua.c:300 -msgid "event_once called from non-base thread" -msgstr "" - -#: ../utils/net_lua.c:323 -msgid "event_context_init failed" -msgstr "" - -#: ../utils/net_lua.c:353 -msgid "lua_newstate failed\n" -msgstr "" - -#: ../utils/net_lua.c:371 -msgid "luaL_dofile returned an error\n" -msgstr "" - -#: ../utils/net_lua.c:376 -msgid "luaL_dostring returned an error\n" -msgstr "" diff --git a/source3/po/tr.msg b/source3/po/tr.msg index 44a3e00045..03b489d033 100644 --- a/source3/po/tr.msg +++ b/source3/po/tr.msg @@ -17,8 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: i18n_swat \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-30 12:18+0200\n" +"POT-Creation-Date: 2003-10-06 05:30+0900\n" "PO-Revision-Date: 2001-09-20 22:51EEST\n" "Last-Translator: Deniz Akkus Kanca \n" "Language-Team: Turkish \n" @@ -27,4014 +26,568 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 0.9.1\n" -#: ../web/swat.c:153 +#: ../web/swat.c:117 #, c-format msgid "ERROR: Can't open %s" msgstr "" -#: ../web/swat.c:241 +#: ../web/swat.c:200 msgid "Help" msgstr "Yardım" -#: ../web/swat.c:247 ../web/swat.c:272 ../web/swat.c:293 ../web/swat.c:302 ../web/swat.c:311 ../web/swat.c:317 ../web/swat.c:329 ../web/swat.c:343 +#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286 msgid "Set Default" msgstr "Öntanımlıya Ayarla" -#: ../web/swat.c:465 +#: ../web/swat.c:408 #, c-format msgid "failed to open %s for writing" msgstr "" -#: ../web/swat.c:488 +#: ../web/swat.c:431 #, c-format msgid "Can't reload %s" msgstr "" -#: ../web/swat.c:561 +#: ../web/swat.c:501 #, c-format msgid "Logged in as %s" msgstr "%s kimliği ile oturum açılmış" -#: ../web/swat.c:565 +#: ../web/swat.c:505 msgid "Home" msgstr "Ev" -#: ../web/swat.c:567 +#: ../web/swat.c:507 msgid "Globals" msgstr "Evrenseller" -#: ../web/swat.c:568 +#: ../web/swat.c:508 msgid "Shares" msgstr "Paylaşımlar" -#: ../web/swat.c:569 +#: ../web/swat.c:509 msgid "Printers" msgstr "Yazıcılar" -#: ../web/swat.c:570 +#: ../web/swat.c:510 msgid "Wizard" msgstr "" -#: ../web/swat.c:574 +#: ../web/swat.c:513 msgid "Status" msgstr "Durum" -#: ../web/swat.c:575 +#: ../web/swat.c:514 msgid "View Config" msgstr "Ayarlara Gözat" -#: ../web/swat.c:577 +#: ../web/swat.c:516 msgid "Password Management" msgstr "Şifre Yönetimi" -#: ../web/swat.c:587 +#: ../web/swat.c:526 msgid "Current View Is" msgstr "Şimdiki Ayarlar" -#: ../web/swat.c:588 ../web/swat.c:591 +#: ../web/swat.c:527 ../web/swat.c:530 msgid "Basic" msgstr "Temel Görünüm" -#: ../web/swat.c:589 ../web/swat.c:592 +#: ../web/swat.c:528 ../web/swat.c:531 msgid "Advanced" msgstr "Gelişmiş Görünüm" -#: ../web/swat.c:590 +#: ../web/swat.c:529 msgid "Change View To" msgstr "Şifre Değiştir" -#: ../web/swat.c:619 +#: ../web/swat.c:554 msgid "Current Config" msgstr "Şimdiki Ayarlar" -#: ../web/swat.c:623 +#: ../web/swat.c:558 msgid "Normal View" msgstr "Normal Görünüm" -#: ../web/swat.c:625 +#: ../web/swat.c:560 msgid "Full View" msgstr "Tam Görünüm" #. Here we first set and commit all the parameters that were selected #. in the previous screen. -#: ../web/swat.c:644 +#: ../web/swat.c:579 msgid "Wizard Parameter Edit Page" msgstr "" -#: ../web/swat.c:673 +#: ../web/swat.c:608 msgid "Note: smb.conf file has been read and rewritten" msgstr "" #. Here we go ... -#: ../web/swat.c:779 +#: ../web/swat.c:716 msgid "Samba Configuration Wizard" msgstr "" -#: ../web/swat.c:783 +#: ../web/swat.c:720 msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments." msgstr "" -#: ../web/swat.c:784 +#: ../web/swat.c:721 msgid "The same will happen if you press the commit button." msgstr "" -#: ../web/swat.c:787 +#: ../web/swat.c:724 msgid "Rewrite smb.conf file" msgstr "" -#: ../web/swat.c:788 +#: ../web/swat.c:725 msgid "Commit" msgstr "açıklama" -#: ../web/swat.c:789 +#: ../web/swat.c:726 msgid "Edit Parameter Values" msgstr "Yazıcı Bilgileri" -#: ../web/swat.c:795 +#: ../web/swat.c:732 msgid "Server Type" msgstr "" -#: ../web/swat.c:796 +#: ../web/swat.c:733 msgid "Stand Alone" msgstr "Nmbd'yi çalıştır" -#: ../web/swat.c:797 +#: ../web/swat.c:734 msgid "Domain Member" msgstr "alan sunucusu" -#: ../web/swat.c:798 +#: ../web/swat.c:735 msgid "Domain Controller" msgstr "alan sunucusu" -#: ../web/swat.c:801 +#: ../web/swat.c:738 msgid "Unusual Type in smb.conf - Please Select New Mode" msgstr "" -#: ../web/swat.c:803 +#: ../web/swat.c:740 msgid "Configure WINS As" msgstr "" -#: ../web/swat.c:804 +#: ../web/swat.c:741 msgid "Not Used" msgstr "dont descend" -#: ../web/swat.c:805 +#: ../web/swat.c:742 msgid "Server for client use" msgstr "" -#: ../web/swat.c:806 +#: ../web/swat.c:743 msgid "Client of another WINS server" msgstr "" -#: ../web/swat.c:808 +#: ../web/swat.c:745 msgid "Remote WINS Server" msgstr "" -#: ../web/swat.c:819 +#: ../web/swat.c:756 msgid "Error: WINS Server Mode and WINS Support both set in smb.conf" msgstr "" -#: ../web/swat.c:820 +#: ../web/swat.c:757 msgid "Please Select desired WINS mode above." msgstr "" -#: ../web/swat.c:822 +#: ../web/swat.c:759 msgid "Expose Home Directories" msgstr "" -#: ../web/swat.c:837 +#: ../web/swat.c:774 msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment." msgstr "" -#: ../web/swat.c:850 +#: ../web/swat.c:787 msgid "Global Parameters" msgstr "Genel Değişkenler" -#: ../web/swat.c:878 ../web/swat.c:986 ../web/swat.c:1344 +#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265 msgid "Commit Changes" msgstr "Değişiklikleri Kaydet" -#: ../web/swat.c:882 ../web/swat.c:989 ../web/swat.c:1346 +#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267 msgid "Reset Values" msgstr "Değerleri İlk Haline Getir" -#: ../web/swat.c:908 +#: ../web/swat.c:844 msgid "Share Parameters" msgstr "Paylaşım Parametreleri" -#: ../web/swat.c:955 +#: ../web/swat.c:887 msgid "Choose Share" msgstr "Paylaşım Seçin" -#: ../web/swat.c:971 +#: ../web/swat.c:901 msgid "Delete Share" msgstr "Paylaşım Kaldır" -#: ../web/swat.c:978 +#: ../web/swat.c:908 msgid "Create Share" msgstr "Paylaşım Oluştur" -#: ../web/swat.c:1014 +#: ../web/swat.c:944 msgid "password change in demo mode rejected" msgstr "demo kipinde şifre değişikliği kabul edilmedi\n" -#: ../web/swat.c:1028 +#: ../web/swat.c:957 msgid "Can't setup password database vectors." msgstr "" -#: ../web/swat.c:1056 +#: ../web/swat.c:983 msgid " Must specify \"User Name\" " msgstr " \"Kullanıcı Adı\" belirtilmeli \n" -#: ../web/swat.c:1072 +#: ../web/swat.c:999 msgid " Must specify \"Old Password\" " msgstr " \"Eski Şifre\" belirtilmeli \n" -#: ../web/swat.c:1078 +#: ../web/swat.c:1005 msgid " Must specify \"Remote Machine\" " msgstr " \"Uzak Makina\" belirtilmeli \n" -#: ../web/swat.c:1085 +#: ../web/swat.c:1012 msgid " Must specify \"New, and Re-typed Passwords\" " msgstr " \"Yeni ve Tekrar Girilmiş Şifreler\" belirtilmeli \n" -#: ../web/swat.c:1091 +#: ../web/swat.c:1018 msgid " Re-typed password didn't match new password " msgstr " Tekrar girilen şifre yeni şifre ile eşleşmedi\n" -#: ../web/swat.c:1124 +#: ../web/swat.c:1048 #, c-format msgid " The passwd for '%s' has been changed." msgstr " '%s' için şifre değiştirildi." -#: ../web/swat.c:1127 +#: ../web/swat.c:1051 #, c-format msgid " The passwd for '%s' has NOT been changed." msgstr " '%s' için şifre DEĞİŞTİRİLMEDİ." -#: ../web/swat.c:1152 +#: ../web/swat.c:1076 msgid "Server Password Management" msgstr "Sunucu Şifre Yönetimi" #. #. * Create all the dialog boxes for data collection #. -#: ../web/swat.c:1161 ../web/swat.c:1208 +#: ../web/swat.c:1085 ../web/swat.c:1132 msgid "User Name" msgstr " Kullanıcı Adı" -#: ../web/swat.c:1164 ../web/swat.c:1210 +#: ../web/swat.c:1088 ../web/swat.c:1134 msgid "Old Password" msgstr " Eski Şifre" -#: ../web/swat.c:1167 ../web/swat.c:1212 +#: ../web/swat.c:1091 ../web/swat.c:1136 msgid "New Password" msgstr " Yeni Şifre" -#: ../web/swat.c:1169 ../web/swat.c:1214 +#: ../web/swat.c:1093 ../web/swat.c:1138 msgid "Re-type New Password" msgstr " Yeni Şifre Tekrarı" -#: ../web/swat.c:1177 ../web/swat.c:1225 +#: ../web/swat.c:1101 ../web/swat.c:1149 msgid "Change Password" msgstr "Şifre Değiştir" -#: ../web/swat.c:1180 +#: ../web/swat.c:1104 msgid "Add New User" msgstr "Kull. Ekle" -#: ../web/swat.c:1182 +#: ../web/swat.c:1106 msgid "Delete User" msgstr "Kull. Sil" -#: ../web/swat.c:1184 +#: ../web/swat.c:1108 msgid "Disable User" msgstr "Kull. Etkisizleştir" -#: ../web/swat.c:1186 +#: ../web/swat.c:1110 msgid "Enable User" msgstr "Kull. Etkinleştir" -#: ../web/swat.c:1199 +#: ../web/swat.c:1123 msgid "Client/Server Password Management" msgstr "İstemci/Sunucu Şifre Yönetimi" -#: ../web/swat.c:1216 +#: ../web/swat.c:1140 msgid "Remote Machine" msgstr " Uzak Makina" -#: ../web/swat.c:1255 +#: ../web/swat.c:1179 msgid "Printer Parameters" msgstr "Yazıcı Bilgileri" -#: ../web/swat.c:1257 +#: ../web/swat.c:1181 msgid "Important Note:" msgstr "Önemli Not:" -#: ../web/swat.c:1258 +#: ../web/swat.c:1182 msgid "Printer names marked with [*] in the Choose Printer drop-down box " msgstr "Yazıcı Seç kutusunda [*] ile işaretlenmiş yazıcı isimleri " -#: ../web/swat.c:1259 +#: ../web/swat.c:1183 msgid "are autoloaded printers from " msgstr "otomatik yüklenen yazıcılar " -#: ../web/swat.c:1260 +#: ../web/swat.c:1184 msgid "Printcap Name" msgstr "Printcap Adı" -#: ../web/swat.c:1261 +#: ../web/swat.c:1185 msgid "Attempting to delete these printers from SWAT will have no effect." msgstr "Bu yazıcıları SWAT'dan silmek etkisiz olacaktır.\n" -#: ../web/swat.c:1310 +#: ../web/swat.c:1231 msgid "Choose Printer" msgstr "Yazıcı Seç" -#: ../web/swat.c:1329 +#: ../web/swat.c:1250 msgid "Delete Printer" msgstr "Yazıcı Sil" -#: ../web/swat.c:1336 +#: ../web/swat.c:1257 msgid "Create Printer" msgstr "Yazıcı Oluştur" -#: ../web/statuspage.c:151 -msgid "RDWR " -msgstr "O/Y " +#: ../web/statuspage.c:123 +msgid "RDONLY " +msgstr "SALTOKUNUR " -#: ../web/statuspage.c:153 +#: ../web/statuspage.c:124 msgid "WRONLY " msgstr "SALTYAZILIR " -#: ../web/statuspage.c:155 -msgid "RDONLY " -msgstr "SALTOKUNUR " +#: ../web/statuspage.c:125 +msgid "RDWR " +msgstr "O/Y " -#: ../web/statuspage.c:329 +#: ../web/statuspage.c:309 msgid "Server Status" msgstr "Sunucu Durumu" -#: ../web/statuspage.c:334 +#: ../web/statuspage.c:314 msgid "Auto Refresh" msgstr "Oto Tazele" -#: ../web/statuspage.c:335 ../web/statuspage.c:340 +#: ../web/statuspage.c:315 ../web/statuspage.c:320 msgid "Refresh Interval: " msgstr "Tazeleme Aralığı: " -#: ../web/statuspage.c:339 +#: ../web/statuspage.c:319 msgid "Stop Refreshing" msgstr "Tazelemeyi Durdur" -#: ../web/statuspage.c:348 +#: ../web/statuspage.c:334 msgid "version:" msgstr "sürüm:" -#: ../web/statuspage.c:351 +#: ../web/statuspage.c:337 msgid "smbd:" msgstr "smbd:" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "running" msgstr "çalışıyor" -#: ../web/statuspage.c:351 ../web/statuspage.c:364 ../web/statuspage.c:378 +#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364 msgid "not running" msgstr "çalışmıyor" -#: ../web/statuspage.c:355 +#: ../web/statuspage.c:341 msgid "Stop smbd" msgstr "Smbd'yi durdur" -#: ../web/statuspage.c:357 +#: ../web/statuspage.c:343 msgid "Start smbd" msgstr "Smbd'yi çalıştır" -#: ../web/statuspage.c:359 +#: ../web/statuspage.c:345 msgid "Restart smbd" msgstr "Smbd'yi yeniden çalıştır" -#: ../web/statuspage.c:364 +#: ../web/statuspage.c:350 msgid "nmbd:" msgstr "nmbd:" -#: ../web/statuspage.c:368 +#: ../web/statuspage.c:354 msgid "Stop nmbd" msgstr "Nmbd'yi durdur" -#: ../web/statuspage.c:370 +#: ../web/statuspage.c:356 msgid "Start nmbd" msgstr "Nmbd'yi çalıştır" -#: ../web/statuspage.c:372 +#: ../web/statuspage.c:358 msgid "Restart nmbd" msgstr "Nmbd'yi yeniden çalıştır" -#: ../web/statuspage.c:378 +#: ../web/statuspage.c:364 msgid "winbindd:" msgstr "winbind uid" -#: ../web/statuspage.c:382 +#: ../web/statuspage.c:368 msgid "Stop winbindd" msgstr "Nmbd'yi durdur" -#: ../web/statuspage.c:384 +#: ../web/statuspage.c:370 msgid "Start winbindd" msgstr "Nmbd'yi çalıştır" -#: ../web/statuspage.c:386 +#: ../web/statuspage.c:372 msgid "Restart winbindd" msgstr "Nmbd'yi yeniden çalıştır" #. stop, restart all -#: ../web/statuspage.c:395 +#: ../web/statuspage.c:381 msgid "Stop All" msgstr "" -#: ../web/statuspage.c:396 +#: ../web/statuspage.c:382 msgid "Restart All" msgstr "Nmbd'yi yeniden çalıştır" #. start all -#: ../web/statuspage.c:400 +#: ../web/statuspage.c:386 msgid "Start All" msgstr "Nmbd'yi çalıştır" -#: ../web/statuspage.c:407 +#: ../web/statuspage.c:393 msgid "Active Connections" msgstr "Aktif Bağlantılar" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "PID" msgstr "PID" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 msgid "Client" msgstr "İstemci" -#: ../web/statuspage.c:409 +#: ../web/statuspage.c:395 msgid "IP address" msgstr "IP numarası" -#: ../web/statuspage.c:409 ../web/statuspage.c:422 ../web/statuspage.c:431 +#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416 msgid "Date" msgstr "Tarih" -#: ../web/statuspage.c:411 +#: ../web/statuspage.c:397 msgid "Kill" msgstr "Kapat" -#: ../web/statuspage.c:419 +#: ../web/statuspage.c:405 msgid "Active Shares" msgstr "Aktif Paylaşımlar" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Share" msgstr "Paylaşım" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "User" msgstr "Kullanıcı" -#: ../web/statuspage.c:422 +#: ../web/statuspage.c:408 msgid "Group" msgstr "Grup" -#: ../web/statuspage.c:428 +#: ../web/statuspage.c:414 msgid "Open Files" msgstr "Açık Dosyalar" -#: ../web/statuspage.c:431 -#, fuzzy -msgid "UID" -msgstr "PID" - -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Sharing" msgstr "Paylaşılıyor" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "R/W" msgstr "O/Y" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "Oplock" msgstr "Oplock" -#: ../web/statuspage.c:431 +#: ../web/statuspage.c:416 msgid "File" msgstr "Dosya" -#: ../web/statuspage.c:438 +#: ../web/statuspage.c:425 msgid "Show Client in col 1" msgstr "" -#: ../web/statuspage.c:439 +#: ../web/statuspage.c:426 msgid "Show PID in col 1" msgstr "" -#: ../param/loadparm.c:907 +#: ../param/loadparm.c:755 msgid "Base Options" msgstr "Temel Seçenekler" -#: ../param/loadparm.c:1047 +#: ../param/loadparm.c:775 msgid "Security Options" msgstr "Güvenlik Seçenekleri" -#: ../param/loadparm.c:1800 +#: ../param/loadparm.c:859 msgid "Logging Options" msgstr "Günlük Kaydı Seçenekleri" -#: ../param/loadparm.c:1929 +#: ../param/loadparm.c:874 msgid "Protocol Options" msgstr "Protokol Seçenekleri" -#: ../param/loadparm.c:2301 +#: ../param/loadparm.c:911 msgid "Tuning Options" msgstr "Ayar Seçenekleri" -#: ../param/loadparm.c:2538 +#: ../param/loadparm.c:940 msgid "Printing Options" msgstr "Yazdırma Seçenekleri" -#: ../param/loadparm.c:2858 +#: ../param/loadparm.c:970 msgid "Filename Handling" msgstr "Dosyaadı İşlenmesi" -#: ../param/loadparm.c:3088 +#: ../param/loadparm.c:996 msgid "Domain Options" msgstr "Alan Seçenekleri" -#: ../param/loadparm.c:3100 +#: ../param/loadparm.c:1000 msgid "Logon Options" msgstr "Sistem Giriş Seçenekleri" -#: ../param/loadparm.c:3273 +#: ../param/loadparm.c:1019 msgid "Browse Options" msgstr "Gözatma Seçenekleri" -#: ../param/loadparm.c:3384 +#: ../param/loadparm.c:1033 msgid "WINS Options" msgstr "WINS Seçenekleri" -#: ../param/loadparm.c:3432 +#: ../param/loadparm.c:1043 msgid "Locking Options" msgstr "Kilitleme Seçenekleri" -#: ../param/loadparm.c:3552 +#: ../param/loadparm.c:1061 msgid "Ldap Options" msgstr "Ldap Seçenekleri" -#: ../param/loadparm.c:3708 -#, fuzzy -msgid "EventLog Options" -msgstr "Sistem Giriş Seçenekleri" - -#: ../param/loadparm.c:3720 +#: ../param/loadparm.c:1078 msgid "Miscellaneous Options" msgstr "Diğer Seçenekler" -#: ../param/loadparm.c:4301 +#: ../param/loadparm.c:1138 msgid "VFS module options" msgstr "VFS Seçenekleri" -#: ../param/loadparm.c:4323 -#, fuzzy -msgid "MSDFS options" -msgstr "VFS Seçenekleri" - -#: ../param/loadparm.c:4353 +#: ../param/loadparm.c:1148 msgid "Winbind options" msgstr "Winbind seçenekleri" - -#: ../utils/net.c:103 -msgid "Enter machine password: " -msgstr "" - -#: ../utils/net.c:107 -msgid "Unable to write the machine account password in the secrets database" -msgstr "" - -#: ../utils/net.c:111 -msgid "Modified trust account password in secrets database\n" -msgstr "" - -#: ../utils/net.c:115 -msgid "" -"Machine account password change requires the -f flag.\n" -"Do NOT use this function unless you know what it does!\n" -"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" -msgstr "" - -#: ../utils/net.c:150 ../utils/net.c:228 -#, c-format -msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" -msgstr "" - -#: ../utils/net.c:163 ../utils/net.c:251 -#, c-format -msgid "SID for domain %s is: %s\n" -msgstr "" - -#: ../utils/net.c:175 -msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:195 -msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" -msgstr "" - -#: ../utils/net.c:213 -msgid "usage: net getdomainsid\n" -msgstr "" - -#: ../utils/net.c:238 -msgid "Could not fetch local SID\n" -msgstr "" - -#: ../utils/net.c:242 -#, c-format -msgid "SID for local machine %s is: %s\n" -msgstr "" - -#: ../utils/net.c:246 -msgid "Could not fetch domain SID\n" -msgstr "" - -#: ../utils/net.c:263 -#, c-format -msgid "get_maxrid: Could not search %s\n" -msgstr "" - -#: ../utils/net.c:297 -msgid "usage: net maxrid\n" -msgstr "" - -#: ../utils/net.c:302 -msgid "can't get current maximum rid\n" -msgstr "" - -#: ../utils/net.c:306 -#, c-format -msgid "Currently used maximum rid: %d\n" -msgstr "" - -#: ../utils/net.c:317 -msgid "Run functions using RPC transport" -msgstr "" - -#: ../utils/net.c:318 -msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." -msgstr "" - -#: ../utils/net.c:325 -msgid "Run functions using RAP transport" -msgstr "" - -#: ../utils/net.c:326 -msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." -msgstr "" - -#: ../utils/net.c:333 -msgid "Run functions using ADS transport" -msgstr "" - -#: ../utils/net.c:334 -msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." -msgstr "" - -#: ../utils/net.c:343 -msgid "Functions on remote opened files" -msgstr "" - -#: ../utils/net.c:344 -msgid " Use 'net help file' to get more information about 'net file' commands." -msgstr "" - -#: ../utils/net.c:351 -msgid "Functions on shares" -msgstr "" - -#: ../utils/net.c:352 -msgid " Use 'net help share' to get more information about 'net share' commands." -msgstr "" - -#: ../utils/net.c:359 -msgid "Manage sessions" -msgstr "" - -#: ../utils/net.c:360 -msgid " Use 'net help session' to get more information about 'net session' commands." -msgstr "" - -#: ../utils/net.c:367 -msgid "List servers in workgroup" -msgstr "" - -#: ../utils/net.c:368 -msgid " Use 'net help server' to get more information about 'net server' commands." -msgstr "" - -#: ../utils/net.c:375 -msgid "List domains/workgroups on network" -msgstr "" - -#: ../utils/net.c:376 -msgid " Use 'net help domain' to get more information about 'net domain' commands." -msgstr "" - -#: ../utils/net.c:383 -msgid "Modify printer queue" -msgstr "" - -#: ../utils/net.c:384 -msgid " Use 'net help printq' to get more information about 'net printq' commands." -msgstr "" - -#: ../utils/net.c:391 -#, fuzzy -msgid "Manage users" -msgstr "Kull. Etkinleştir" - -#: ../utils/net.c:392 -msgid " Use 'net help user' to get more information about 'net user' commands." -msgstr "" - -#: ../utils/net.c:399 -msgid "Manage groups" -msgstr "" - -#: ../utils/net.c:400 -msgid " Use 'net help group' to get more information about 'net group' commands." -msgstr "" - -#: ../utils/net.c:407 -msgid "Manage group mappings" -msgstr "" - -#: ../utils/net.c:408 -msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." -msgstr "" - -#: ../utils/net.c:415 -msgid "Functions on the SAM database" -msgstr "" - -#: ../utils/net.c:416 -msgid " Use 'net help sam' to get more information about 'net sam' commands." -msgstr "" - -#: ../utils/net.c:423 -msgid "Validate username and password" -msgstr "" - -#: ../utils/net.c:424 -msgid " Use 'net help validate' to get more information about 'net validate' commands." -msgstr "" - -#: ../utils/net.c:431 -msgid "Modify group memberships" -msgstr "" - -#: ../utils/net.c:432 -msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." -msgstr "" - -#: ../utils/net.c:438 -msgid "Execute remote command on a remote OS/2 server" -msgstr "" - -#: ../utils/net.c:439 -msgid " Use 'net help admin' to get more information about 'net admin' commands." -msgstr "" - -#: ../utils/net.c:445 -msgid "List/modify running services" -msgstr "" - -#: ../utils/net.c:446 -msgid " Use 'net help service' to get more information about 'net service' commands." -msgstr "" - -#: ../utils/net.c:453 -msgid "Change user password on target server" -msgstr "" - -#: ../utils/net.c:454 -msgid " Use 'net help password' to get more information about 'net password' commands." -msgstr "" - -#: ../utils/net.c:460 -#, fuzzy -msgid "Change the trust password" -msgstr "Şifre Değiştir" - -#: ../utils/net.c:461 -msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." -msgstr "" - -#: ../utils/net.c:467 -#, fuzzy -msgid "Change the secret password" -msgstr "Şifre Değiştir" - -#: ../utils/net.c:468 -msgid "" -" net [options] changesecretpw\n" -" Change the ADS domain member machine account password in secrets.tdb.\n" -" Do NOT use this function unless you know what it does.\n" -" Requires the -f flag to work." -msgstr "" - -#: ../utils/net.c:477 -msgid "Show/set time" -msgstr "" - -#: ../utils/net.c:478 -msgid " Use 'net help time' to get more information about 'net time' commands." -msgstr "" - -#: ../utils/net.c:484 -msgid "Look up host names/IP addresses" -msgstr "" - -#: ../utils/net.c:485 -msgid " Use 'net help lookup' to get more information about 'net lookup' commands." -msgstr "" - -#: ../utils/net.c:491 -msgid "Join a domain/AD" -msgstr "" - -#: ../utils/net.c:492 -msgid " Use 'net help join' to get more information about 'net join'." -msgstr "" - -#: ../utils/net.c:498 -msgid "Join/unjoin (remote) machines to/from a domain/AD" -msgstr "" - -#: ../utils/net.c:499 -msgid " Use 'net help dom' to get more information about 'net dom' commands." -msgstr "" - -#: ../utils/net.c:505 -msgid "Operate on the cache tdb file" -msgstr "" - -#: ../utils/net.c:506 -msgid " Use 'net help cache' to get more information about 'net cache' commands." -msgstr "" - -#: ../utils/net.c:512 -msgid "Get the SID for the local domain" -msgstr "" - -#: ../utils/net.c:513 -msgid " net getlocalsid" -msgstr "" - -#: ../utils/net.c:518 -msgid "Set the SID for the local domain" -msgstr "" - -#: ../utils/net.c:519 -msgid " net setlocalsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:524 -msgid "Set domain SID on member servers" -msgstr "" - -#: ../utils/net.c:525 -msgid " net setdomainsid S-1-5-21-x-y-z" -msgstr "" - -#: ../utils/net.c:530 -msgid "Get domain SID on member servers" -msgstr "" - -#: ../utils/net.c:531 -msgid " net getdomainsid" -msgstr "" - -#: ../utils/net.c:536 -msgid "Display the maximul RID currently used" -msgstr "" - -#: ../utils/net.c:537 -msgid " net maxrid" -msgstr "" - -#: ../utils/net.c:542 -#, fuzzy -msgid "IDmap functions" -msgstr "Alan Seçenekleri" - -#: ../utils/net.c:543 -msgid " Use 'net help idmap to get more information about 'net idmap' commands." -msgstr "" - -#: ../utils/net.c:549 -#, fuzzy -msgid "Display server status" -msgstr "Sunucu Durumu" - -#: ../utils/net.c:550 -msgid " Use 'net help status' to get more information about 'net status' commands." -msgstr "" - -#: ../utils/net.c:556 -msgid "Manage user-modifiable shares" -msgstr "" - -#: ../utils/net.c:557 -msgid " Use 'net help usershare to get more information about 'net usershare' commands." -msgstr "" - -#: ../utils/net.c:563 -msgid "Display list of all users with SID" -msgstr "" - -#: ../utils/net.c:564 -msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." -msgstr "" - -#: ../utils/net.c:570 -msgid "Manage Samba registry based configuration" -msgstr "" - -#: ../utils/net.c:571 -msgid " Use 'net help conf' to get more information about 'net conf' commands." -msgstr "" - -#: ../utils/net.c:577 -msgid "Manage the Samba registry" -msgstr "" - -#: ../utils/net.c:578 -msgid " Use 'net help registry' to get more information about 'net registry' commands." -msgstr "" - -#: ../utils/net.c:584 -msgid "Open a lua interpreter" -msgstr "" - -#: ../utils/net.c:585 -msgid " Use 'net help lua' to get more information about 'net lua' commands." -msgstr "" - -#: ../utils/net.c:591 -msgid "Process Win32 *.evt eventlog files" -msgstr "" - -#: ../utils/net.c:592 -msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." -msgstr "" - -#: ../utils/net.c:600 -msgid "Manage AFS tokens" -msgstr "" - -#: ../utils/net.c:601 -msgid " Use 'net help afs' to get more information about 'net afs' commands." -msgstr "" - -#: ../utils/net.c:609 -msgid "Print usage information" -msgstr "" - -#: ../utils/net.c:610 -msgid " Use 'net help help' to list usage information for 'net' commands." -msgstr "" - -#: ../utils/net.c:639 -msgid "Encrypt SMB transport (UNIX extended servers only)" -msgstr "" - -#: ../utils/net.c:703 -msgid "" -"\n" -"Invalid ip address specified\n" -msgstr "" - -#: ../utils/net.c:718 -#, c-format -msgid "" -"\n" -"Invalid option %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:52 ../utils/net_ads.c:392 -msgid "CLDAP query failed!\n" -msgstr "" - -#: ../utils/net_ads.c:56 -#, fuzzy, c-format -msgid "" -"Information for Domain Controller: %s\n" -"\n" -msgstr "alan sunucusu" - -#: ../utils/net_ads.c:59 -msgid "Response Type: " -msgstr "" - -#: ../utils/net_ads.c:72 -#, c-format -msgid "GUID: %s\n" -msgstr "" - -#: ../utils/net_ads.c:74 -#, c-format -msgid "" -"Flags:\n" -"\tIs a PDC: %s\n" -"\tIs a GC of the forest: %s\n" -"\tIs an LDAP server: %s\n" -"\tSupports DS: %s\n" -"\tIs running a KDC: %s\n" -"\tIs running time services: %s\n" -"\tIs the closest DC: %s\n" -"\tIs writable: %s\n" -"\tHas a hardware clock: %s\n" -"\tIs a non-domain NC serviced by LDAP server: %s\n" -"\tIs NT6 DC that has some secrets: %s\n" -"\tIs NT6 DC that has all secrets: %s\n" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "yes" -msgstr "" - -#: ../utils/net_ads.c:87 ../utils/net_ads.c:88 ../utils/net_ads.c:89 ../utils/net_ads.c:90 ../utils/net_ads.c:91 ../utils/net_ads.c:92 ../utils/net_ads.c:93 ../utils/net_ads.c:94 ../utils/net_ads.c:95 ../utils/net_ads.c:96 ../utils/net_ads.c:97 -#: ../utils/net_ads.c:98 -msgid "no" -msgstr "" - -#: ../utils/net_ads.c:101 -#, c-format -msgid "Forest:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:102 -#, c-format -msgid "Domain:\t\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:103 -#, fuzzy, c-format -msgid "Domain Controller:\t%s\n" -msgstr "alan sunucusu" - -#: ../utils/net_ads.c:105 -#, c-format -msgid "Pre-Win2k Domain:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:106 -#, c-format -msgid "Pre-Win2k Hostname:\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:108 -#, fuzzy, c-format -msgid "User name:\t%s\n" -msgstr " Kullanıcı Adı" - -#: ../utils/net_ads.c:110 -#, fuzzy, c-format -msgid "Server Site Name :\t\t%s\n" -msgstr "Sunucu Durumu" - -#: ../utils/net_ads.c:111 -#, c-format -msgid "Client Site Name :\t\t%s\n" -msgstr "" - -#: ../utils/net_ads.c:113 -#, fuzzy, c-format -msgid "NT Version: %d\n" -msgstr "sürüm:" - -#: ../utils/net_ads.c:114 -#, c-format -msgid "LMNT Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:115 -#, c-format -msgid "LM20 Token: %.2x\n" -msgstr "" - -#: ../utils/net_ads.c:130 -msgid "" -"Usage:\n" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookup.\n" -msgstr "" - -#: ../utils/net_ads.c:137 ../utils/net_ads.c:381 -msgid "Didn't find the cldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:160 -msgid "" -"Usage:\n" -"net ads info\n" -" Display information about an Active Directory server.\n" -msgstr "" - -#: ../utils/net_ads.c:168 ../utils/net_ads.c:173 -msgid "Didn't find the ldap server!\n" -msgstr "" - -#: ../utils/net_ads.c:182 -msgid "Failed to get server's current time!\n" -msgstr "" - -#: ../utils/net_ads.c:187 -#, c-format -msgid "LDAP server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:188 -#, c-format -msgid "LDAP server name: %s\n" -msgstr "" - -#: ../utils/net_ads.c:189 -#, c-format -msgid "Realm: %s\n" -msgstr "" - -#: ../utils/net_ads.c:190 -#, c-format -msgid "Bind Path: %s\n" -msgstr "" - -#: ../utils/net_ads.c:191 -#, c-format -msgid "LDAP port: %d\n" -msgstr "" - -#: ../utils/net_ads.c:192 -#, fuzzy, c-format -msgid "Server time: %s\n" -msgstr "Sunucu Durumu" - -#: ../utils/net_ads.c:195 -#, c-format -msgid "KDC server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:196 -#, c-format -msgid "Server time offset: %d\n" -msgstr "" - -#: ../utils/net_ads.c:374 -msgid "" -"Usage:\n" -"net ads workgroup\n" -" Print the workgroup name\n" -msgstr "" - -#: ../utils/net_ads.c:397 -#, c-format -msgid "Workgroup: %s\n" -msgstr "" - -#: ../utils/net_ads.c:458 -#, c-format -msgid "ads_user_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:463 -#, c-format -msgid "ads_user_add: User %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:477 -#, c-format -msgid "Could not add user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:484 ../utils/net_ads.c:497 -#, fuzzy, c-format -msgid "User %s added\n" -msgstr " Kullanıcı Adı" - -#. password didn't set, delete account -#: ../utils/net_ads.c:503 -#, c-format -msgid "Could not add user %s. Error setting password %s\n" -msgstr "" - -#: ../utils/net_ads.c:551 -#, c-format -msgid "ads_user_info: failed to escape user %s\n" -msgstr "" - -#: ../utils/net_ads.c:569 -#, c-format -msgid "ads_search: %s\n" -msgstr "" - -#: ../utils/net_ads.c:575 -msgid "ads_pull_uint32 failed\n" -msgstr "" - -#: ../utils/net_ads.c:582 -#, c-format -msgid "ads_domain_sid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:642 -#, c-format -msgid "User %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:652 -#, c-format -msgid "User %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:656 -#, c-format -msgid "Error deleting user %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:669 -#, fuzzy -msgid "Add an AD user" -msgstr "Kull. Ekle" - -#: ../utils/net_ads.c:670 -msgid "" -"net ads user add\n" -" Add an AD user" -msgstr "" - -#: ../utils/net_ads.c:677 -msgid "Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:678 -msgid "" -"net ads user info\n" -" Display information about an AD user" -msgstr "" - -#: ../utils/net_ads.c:685 -#, fuzzy -msgid "Delete an AD user" -msgstr "Kull. Sil" - -#: ../utils/net_ads.c:686 -msgid "" -"net ads user delete\n" -" Delete an AD user" -msgstr "" - -#: ../utils/net_ads.c:699 -msgid "" -"Usage:\n" -"net ads user\n" -" List AD users\n" -msgstr "" - -#: ../utils/net_ads.c:711 -msgid "" -"\n" -"User name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:751 -#, c-format -msgid "ads_group_add: %s\n" -msgstr "" - -#: ../utils/net_ads.c:756 -#, c-format -msgid "ads_group_add: Group %s already exists\n" -msgstr "" - -#: ../utils/net_ads.c:769 -#, c-format -msgid "Group %s added\n" -msgstr "" - -#: ../utils/net_ads.c:772 -#, c-format -msgid "Could not add group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:801 -#, c-format -msgid "Group %s does not exist.\n" -msgstr "" - -#: ../utils/net_ads.c:811 -#, c-format -msgid "Group %s deleted\n" -msgstr "" - -#: ../utils/net_ads.c:815 -#, c-format -msgid "Error deleting group %s: %s\n" -msgstr "" - -#: ../utils/net_ads.c:828 -msgid "Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:829 -msgid "" -"net ads group add\n" -" Add an AD group" -msgstr "" - -#: ../utils/net_ads.c:836 -#, fuzzy -msgid "Delete an AD group" -msgstr "Paylaşım Kaldır" - -#: ../utils/net_ads.c:837 -msgid "" -"net ads group delete\n" -" Delete an AD group" -msgstr "" - -#: ../utils/net_ads.c:850 -msgid "" -"Usage:\n" -"net ads group\n" -" List AD groups\n" -msgstr "" - -#: ../utils/net_ads.c:862 -msgid "" -"\n" -"Group name Comment\n" -"-----------------------------\n" -msgstr "" - -#: ../utils/net_ads.c:884 -msgid "" -"Usage:\n" -"net ads status\n" -" Display machine account details\n" -msgstr "" - -#: ../utils/net_ads.c:896 -#, c-format -msgid "ads_find_machine_acct: %s\n" -msgstr "" - -#: ../utils/net_ads.c:902 -#, c-format -msgid "No machine account for '%s' found\n" -msgstr "" - -#: ../utils/net_ads.c:926 -msgid "" -"Usage:\n" -"net ads leave\n" -" Leave an AD domain\n" -msgstr "" - -#: ../utils/net_ads.c:933 -msgid "No realm set, are we joined ?\n" -msgstr "" - -#: ../utils/net_ads.c:938 ../utils/net_ads.c:1260 -msgid "Could not initialise talloc context.\n" -msgstr "" - -#: ../utils/net_ads.c:948 -msgid "Could not initialise unjoin context.\n" -msgstr "" - -#: ../utils/net_ads.c:968 -#, c-format -msgid "Failed to leave domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:975 -#, c-format -msgid "Deleted account for '%s' in realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:982 -#, c-format -msgid "Disabled account for '%s' in realm '%s'\n" -msgstr "" - -#. Based on what we requseted, we shouldn't get here, but if -#. we did, it means the secrets were removed, and therefore -#. we have left the domain -#: ../utils/net_ads.c:991 -#, c-format -msgid "Machine '%s' Left domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1035 -msgid "" -"Usage:\n" -"net ads testjoin\n" -" Test if the existing join is ok\n" -msgstr "" - -#: ../utils/net_ads.c:1044 -#, c-format -msgid "Join to domain is not valid: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1049 -#, c-format -msgid "Join is OK\n" -msgstr "" - -#: ../utils/net_ads.c:1060 -msgid "Host is not configured as a member server.\n" -msgstr "" - -#: ../utils/net_ads.c:1065 -#, c-format -msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" -msgstr "" - -#: ../utils/net_ads.c:1072 -#, c-format -msgid "realm must be set in in %s for ADS join to succeed.\n" -msgstr "" - -#: ../utils/net_ads.c:1105 -#, c-format -msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" -msgstr "" - -#: ../utils/net_ads.c:1212 -msgid "" -"net ads join [options]\n" -"Valid options:\n" -msgstr "" - -#: ../utils/net_ads.c:1214 -msgid "" -" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" -" The deault UPN is in the form host/netbiosname@REALM.\n" -msgstr "" - -#: ../utils/net_ads.c:1216 -msgid "" -" createcomputer=OU Precreate the computer account in a specific OU.\n" -" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" -" E.g. \"createcomputer=Computers/Servers/Unix\"\n" -" NB: A backslash '\\' is used as escape at multiple levels and may\n" -" need to be doubled or even quadrupled. It is not used as a separator.\n" -msgstr "" - -#: ../utils/net_ads.c:1221 -msgid " osName=string Set the operatingSystem attribute during the join.\n" -msgstr "" - -#: ../utils/net_ads.c:1222 -msgid "" -" osVer=string Set the operatingSystemVersion attribute during the join.\n" -" NB: osName and osVer must be specified together for either to take effect.\n" -" Also, the operatingSystemService attribute is also set when along with\n" -" the two other attributes.\n" -msgstr "" - -#: ../utils/net_ads.c:1254 -msgid "Invalid configuration. Exiting....\n" -msgstr "" - -#: ../utils/net_ads.c:1283 -msgid "Please supply a valid OU path.\n" -msgstr "" - -#: ../utils/net_ads.c:1290 -msgid "Please supply a operating system name.\n" -msgstr "" - -#: ../utils/net_ads.c:1297 -msgid "Please supply a valid operating system version.\n" -msgstr "" - -#: ../utils/net_ads.c:1308 -msgid "Please supply a valid domain name\n" -msgstr "" - -#: ../utils/net_ads.c:1339 -#, c-format -msgid "" -"The workgroup in %s does not match the short\n" -"domain name obtained from the server.\n" -"Using the name [%s] from the server.\n" -"You should set \"workgroup = %s\" in %s.\n" -msgstr "" - -#: ../utils/net_ads.c:1347 -#, c-format -msgid "Using short domain name -- %s\n" -msgstr "" - -#: ../utils/net_ads.c:1350 -#, c-format -msgid "Joined '%s' to realm '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1353 -#, c-format -msgid "Joined '%s' to domain '%s'\n" -msgstr "" - -#: ../utils/net_ads.c:1377 ../utils/net_ads.c:1433 -msgid "DNS update failed!\n" -msgstr "" - -#. issue an overall failure message at the end. -#: ../utils/net_ads.c:1391 ../utils/net_dom.c:198 -#, c-format -msgid "Failed to join domain: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1414 -msgid "" -"Usage:\n" -"net ads dns register\n" -" Register hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1421 -msgid "Could not initialise talloc context\n" -msgstr "" - -#: ../utils/net_ads.c:1439 -msgid "Successfully registered hostname with DNS\n" -msgstr "" - -#: ../utils/net_ads.c:1447 -msgid "DNS update support not enabled at compile time!\n" -msgstr "" - -#: ../utils/net_ads.c:1466 -msgid "" -"Usage:\n" -"net ads dns gethostbyname \n" -" Look up hostname from the AD\n" -" server\tName server to use\n" -" name\tName to look up\n" -msgstr "" - -#: ../utils/net_ads.c:1476 -#, c-format -msgid "do_gethostbyname returned %d\n" -msgstr "" - -#: ../utils/net_ads.c:1488 -msgid "Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1489 -msgid "" -"net ads dns register\n" -" Add host dns entry to AD" -msgstr "" - -#: ../utils/net_ads.c:1496 -msgid "Look up host" -msgstr "" - -#: ../utils/net_ads.c:1497 -msgid "" -"net ads dns gethostbyname\n" -" Look up host" -msgstr "" - -#: ../utils/net_ads.c:1512 -msgid "" -"\n" -"net ads printer search \n" -"\tsearch for a printer in the directory\n" -"\n" -"net ads printer info \n" -"\tlookup info in directory for printer on server\n" -"\t(note: printer defaults to \"*\", server defaults to local)\n" -"\n" -"net ads printer publish \n" -"\tpublish printer in directory\n" -"\t(note: printer name is required)\n" -"\n" -"net ads printer remove \n" -"\tremove printer from directory\n" -"\t(note: printer name is required)\n" -msgstr "" - -#: ../utils/net_ads.c:1536 -msgid "" -"Usage:\n" -"net ads printer search\n" -" List printers in the AD\n" -msgstr "" - -#: ../utils/net_ads.c:1549 -#, c-format -msgid "ads_find_printer: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1556 -msgid "No results found\n" -msgstr "" - -#: ../utils/net_ads.c:1576 -msgid "" -"Usage:\n" -"net ads printer info [printername [servername]]\n" -" Display printer info from AD\n" -" printername\tPrinter name or wildcard\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1603 -#, c-format -msgid "Server '%s' not found: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1611 ../utils/net_ads.c:1794 -#, c-format -msgid "Printer '%s' not found\n" -msgstr "" - -#: ../utils/net_ads.c:1640 -msgid "" -"Usage:\n" -"net ads printer publish [servername]\n" -" Publish printer in AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1675 -#, c-format -msgid "Unable to open a connnection to %s to obtain data for %s\n" -msgstr "" - -#: ../utils/net_ads.c:1688 -#, c-format -msgid "Could not find machine account for server %s\n" -msgstr "" - -#: ../utils/net_ads.c:1704 ../utils/net_ads.c:1713 -msgid "Internal error, out of memory!" -msgstr "" - -#: ../utils/net_ads.c:1724 -#, c-format -msgid "Unable to open a connnection to the spoolss pipe on %s\n" -msgstr "" - -#: ../utils/net_ads.c:1766 -msgid "" -"Usage:\n" -"net ads printer remove [servername]\n" -" Remove a printer from the AD\n" -" printername\tName of the printer\n" -" servername\tName of the print server\n" -msgstr "" - -#: ../utils/net_ads.c:1787 -#, c-format -msgid "ads_find_printer_on_server: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1806 -#, c-format -msgid "ads_del_dn: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1822 -msgid "Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1823 -msgid "" -"net ads printer search\n" -" Search for a printer" -msgstr "" - -#: ../utils/net_ads.c:1830 -msgid "Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1831 -msgid "" -"net ads printer info\n" -" Display printer information" -msgstr "" - -#: ../utils/net_ads.c:1838 -msgid "Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1839 -msgid "" -"net ads printer publish\n" -" Publish a printer" -msgstr "" - -#: ../utils/net_ads.c:1846 -#, fuzzy -msgid "Delete a printer" -msgstr "Yazıcı Sil" - -#: ../utils/net_ads.c:1847 -msgid "" -"net ads printer remove\n" -" Delete a printer" -msgstr "" - -#: ../utils/net_ads.c:1869 -msgid "" -"Usage:\n" -"net ads password \n" -" Change password for user\n" -" username\tName of user to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1877 -msgid "You must supply an administrator username/password\n" -msgstr "" - -#: ../utils/net_ads.c:1883 -msgid "ERROR: You must say which username to change password for\n" -msgstr "" - -#: ../utils/net_ads.c:1915 -msgid "Didn't find the kerberos server!\n" -msgstr "" - -#: ../utils/net_ads.c:1923 -#, c-format -msgid "Enter new password for %s:" -msgstr "" - -#: ../utils/net_ads.c:1933 ../utils/net_ads.c:1982 -#, fuzzy, c-format -msgid "Password change failed: %s\n" -msgstr "Şifre Yönetimi" - -#: ../utils/net_ads.c:1938 -#, fuzzy, c-format -msgid "Password change for %s completed.\n" -msgstr "demo kipinde şifre değişikliği kabul edilmedi\n" - -#: ../utils/net_ads.c:1952 -msgid "" -"Usage:\n" -"net ads changetrustpw\n" -" Change the machine account's trust password\n" -msgstr "" - -#: ../utils/net_ads.c:1977 -#, c-format -msgid "Changing password for principal: %s\n" -msgstr "" - -#: ../utils/net_ads.c:1988 -#, c-format -msgid "Password change for principal %s succeeded.\n" -msgstr "" - -#: ../utils/net_ads.c:1991 -msgid "Attempting to update system keytab with new password.\n" -msgstr "" - -#: ../utils/net_ads.c:1993 -msgid "Failed to update system keytab.\n" -msgstr "" - -#: ../utils/net_ads.c:2009 -msgid "" -"\n" -"net ads search \n" -"\n" -"Perform a raw LDAP search on a ADS server and dump the results.\n" -"The expression is a standard LDAP search expression, and the\n" -"attributes are a list of LDAP fields to show in the results.\n" -"\n" -"Example: net ads search '(objectCategory=group)' sAMAccountName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2046 ../utils/net_ads.c:2107 ../utils/net_ads.c:2171 ../utils/net_ads_gpo.c:250 -#, c-format -msgid "search failed: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2051 ../utils/net_ads.c:2176 ../utils/net_ads_gpo.c:256 -#, c-format -msgid "" -"Got %d replies\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2069 -msgid "" -"\n" -"net ads dn \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" -"\n" -"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2129 -msgid "" -"\n" -"net ads sid \n" -"\n" -"perform a raw LDAP search on a ADS server and dump the results\n" -"The SID is in string format, and the attributes are a list of LDAP fields \n" -"to show in the results\n" -"\n" -"Example: net ads sid 'S-1-5-32' distinguishedName\n" -"\n" -msgstr "" - -#: ../utils/net_ads.c:2164 -msgid "could not convert sid\n" -msgstr "" - -#: ../utils/net_ads.c:2193 -msgid "" -"Usage:\n" -"net ads keytab flush\n" -" Delete the whole keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2214 -msgid "" -"Usage:\n" -"net ads keytab add [principal ...]\n" -" Add principals to local keytab\n" -" principal\tKerberos principal to add to keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2222 -msgid "Processing principals to add...\n" -msgstr "" - -#: ../utils/net_ads.c:2239 -msgid "" -"Usage:\n" -"net ads keytab create\n" -" Create new default keytab\n" -msgstr "" - -#: ../utils/net_ads.c:2258 -msgid "" -"Usage:\n" -"net ads keytab list [keytab]\n" -" List a local keytab\n" -" keytab\tKeytab to list\n" -msgstr "" - -#: ../utils/net_ads.c:2280 -msgid "Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2281 -msgid "" -"net ads keytab add\n" -" Add a service principal" -msgstr "" - -#: ../utils/net_ads.c:2288 -#, fuzzy -msgid "Create a fresh keytab" -msgstr "Paylaşım Oluştur" - -#: ../utils/net_ads.c:2289 -msgid "" -"net ads keytab create\n" -" Create a fresh keytab" -msgstr "" - -#: ../utils/net_ads.c:2296 -msgid "Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2297 -msgid "" -"net ads keytab flush\n" -" Remove all keytab entries" -msgstr "" - -#: ../utils/net_ads.c:2304 -msgid "List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2305 -msgid "" -"net ads keytab list\n" -" List a keytab" -msgstr "" - -#: ../utils/net_ads.c:2312 -msgid "" -"\n" -"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" -msgstr "" - -#: ../utils/net_ads.c:2324 -msgid "" -"Usage:\n" -"net ads kerberos renew\n" -" Renew TGT from existing credential cache\n" -msgstr "" - -#: ../utils/net_ads.c:2332 -#, c-format -msgid "failed to renew kerberos ticket: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2347 -msgid "" -"Usage:\n" -"net ads kerberos pac\n" -" Dump the Kerberos PAC\n" -msgstr "" - -#: ../utils/net_ads.c:2372 -#, c-format -msgid "failed to query kerberos PAC: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2381 -#, c-format -msgid "The Pac: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2397 -msgid "" -"Usage:\n" -"net ads kerberos kinit\n" -" Get Ticket Granting Ticket (TGT) for the user\n" -msgstr "" - -#: ../utils/net_ads.c:2421 -#, c-format -msgid "failed to kinit password: %s\n" -msgstr "" - -#: ../utils/net_ads.c:2435 -msgid "Retrieve Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2436 -msgid "" -"net ads kerberos kinit\n" -" Receive Ticket Granting Ticket (TGT)" -msgstr "" - -#: ../utils/net_ads.c:2443 -msgid "Renew Ticket Granting Ticket from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2444 -msgid "" -"net ads kerberos renew\n" -" Renew Ticket Granting Ticket (TGT) from credential cache" -msgstr "" - -#: ../utils/net_ads.c:2452 -msgid "Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2453 -msgid "" -"net ads kerberos pac\n" -" Dump Kerberos PAC" -msgstr "" - -#: ../utils/net_ads.c:2469 -msgid "Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2470 -msgid "" -"net ads info\n" -" Display details on remote ADS server" -msgstr "" - -#: ../utils/net_ads.c:2477 -msgid "Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2478 -msgid "" -"net ads join\n" -" Join the local machine to ADS realm" -msgstr "" - -#: ../utils/net_ads.c:2485 -msgid "Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2486 -msgid "" -"net ads testjoin\n" -" Validate machine account" -msgstr "" - -#: ../utils/net_ads.c:2493 -msgid "Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2494 -msgid "" -"net ads leave\n" -" Remove the local machine from ADS" -msgstr "" - -#: ../utils/net_ads.c:2501 -msgid "Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2502 -msgid "" -"net ads status\n" -" Display machine account details" -msgstr "" - -#: ../utils/net_ads.c:2509 -msgid "List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2510 -msgid "" -"net ads user\n" -" List/modify users" -msgstr "" - -#: ../utils/net_ads.c:2517 -msgid "List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2518 -msgid "" -"net ads group\n" -" List/modify groups" -msgstr "" - -#: ../utils/net_ads.c:2525 -msgid "Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2526 -msgid "" -"net ads dns\n" -" Issue dynamic DNS update" -msgstr "" - -#: ../utils/net_ads.c:2533 -#, fuzzy -msgid "Change user passwords" -msgstr "Şifre Değiştir" - -#: ../utils/net_ads.c:2534 -msgid "" -"net ads password\n" -" Change user passwords" -msgstr "" - -#: ../utils/net_ads.c:2541 -#, fuzzy -msgid "Change trust account password" -msgstr "Şifre Değiştir" - -#: ../utils/net_ads.c:2542 -msgid "" -"net ads changetrustpw\n" -" Change trust account password" -msgstr "" - -#: ../utils/net_ads.c:2549 -msgid "List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2550 -msgid "" -"net ads printer\n" -" List/modify printer entries" -msgstr "" - -#: ../utils/net_ads.c:2557 -msgid "Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2558 -msgid "" -"net ads search\n" -" Issue LDAP search using filter" -msgstr "" - -#: ../utils/net_ads.c:2565 -msgid "Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2566 -msgid "" -"net ads dn\n" -" Issue LDAP search by DN" -msgstr "" - -#: ../utils/net_ads.c:2573 -msgid "Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2574 -msgid "" -"net ads sid\n" -" Issue LDAP search by SID" -msgstr "" - -#: ../utils/net_ads.c:2581 -msgid "Display workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2582 -msgid "" -"net ads workgroup\n" -" Display the workgroup name" -msgstr "" - -#: ../utils/net_ads.c:2589 -msgid "Perfom CLDAP query on DC" -msgstr "" - -#: ../utils/net_ads.c:2590 -msgid "" -"net ads lookup\n" -" Find the ADS DC using CLDAP lookups" -msgstr "" - -#: ../utils/net_ads.c:2597 -msgid "Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2598 -msgid "" -"net ads keytab\n" -" Manage local keytab file" -msgstr "" - -#: ../utils/net_ads.c:2605 -msgid "Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2606 -msgid "" -"net ads gpo\n" -" Manage group policy objects" -msgstr "" - -#: ../utils/net_ads.c:2613 -msgid "Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2614 -msgid "" -"net ads kerberos\n" -" Manage kerberos keytab" -msgstr "" - -#: ../utils/net_ads.c:2627 -msgid "ADS support not compiled in\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:40 -msgid "" -"Usage:\n" -"net ads gpo refresh \n" -" Lists all GPOs assigned to an account and downloads them\n" -" username\tUser to refresh GPOs for\n" -" machinename\tMachine to refresh GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:56 -#, c-format -msgid "failed to connect AD server: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:62 -#, c-format -msgid "failed to find samaccount for %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:70 -#, c-format -msgid "" -"\n" -"%s: '%s' has dn: '%s'\n" -"\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "machine" -msgstr " Uzak Makina" - -#: ../utils/net_ads_gpo.c:71 ../utils/net_ads_gpo.c:328 -#, fuzzy -msgid "user" -msgstr "Kullanıcı" - -#: ../utils/net_ads_gpo.c:74 -msgid "* fetching token " -msgstr "" - -#: ../utils/net_ads_gpo.c:82 ../utils/net_ads_gpo.c:90 ../utils/net_ads_gpo.c:102 ../utils/net_ads_gpo.c:113 ../utils/net_ads_gpo.c:158 -#, c-format -msgid "failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:85 ../utils/net_ads_gpo.c:94 ../utils/net_ads_gpo.c:105 ../utils/net_ads_gpo.c:118 ../utils/net_ads_gpo.c:163 -msgid "finished\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:87 -msgid "* fetching GPO List " -msgstr "" - -#: ../utils/net_ads_gpo.c:96 -msgid "* Refreshing Group Policy Data " -msgstr "" - -#: ../utils/net_ads_gpo.c:107 -msgid "* storing GPO list to registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:122 -msgid "* dumping GPO list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:151 -msgid "* re-reading GPO list from registry " -msgstr "" - -#: ../utils/net_ads_gpo.c:167 -msgid "* dumping GPO list from registry\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:226 -msgid "" -"Usage:\n" -"net ads gpo listall\n" -" List all GPOs on the DC\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:270 -#, fuzzy, c-format -msgid "ads_parse_gpo failed: %s\n" -msgstr "Şifre Yönetimi" - -#: ../utils/net_ads_gpo.c:300 -msgid "" -"Usage:\n" -"net ads gpo list \n" -" Lists all GPOs for machine/user\n" -" username\tUser to list GPOs for\n" -" machinename\tMachine to list GPOs for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:327 -#, c-format -msgid "%s: '%s' has dn: '%s'\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:451 -msgid "" -"Usage:\n" -"net ads gpo linkget \n" -" Lists gPLink of a containter\n" -" container\tContainer to get link for\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:470 -#, c-format -msgid "get link for %s failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:492 -msgid "" -"Usage:\n" -"net ads gpo linkadd [options]\n" -" Link a container to a GPO\n" -" linkdn\tContainer to link to a GPO\n" -" gpodn\tGPO to link container to\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:497 -msgid "" -"note: DNs must be provided properly escaped.\n" -"See RFC 4514 for details\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:518 -#, c-format -msgid "link add failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:579 -msgid "" -"Usage:\n" -"net ads gpo getgpo \n" -" List speciefied GPO\n" -" gpo\t\tGPO to list\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:603 -#, c-format -msgid "get gpo for [%s] failed: %s\n" -msgstr "" - -#: ../utils/net_ads_gpo.c:634 -msgid "List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:635 -msgid "" -"net ads gpo getgpo\n" -" List specified GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:642 -msgid "Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:643 -msgid "" -"net ads gpo linkadd\n" -" Link a container to a GPO" -msgstr "" - -#: ../utils/net_ads_gpo.c:660 -msgid "Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:661 -msgid "" -"net ads gpo linkget\n" -" Lists gPLink of containter" -msgstr "" - -#: ../utils/net_ads_gpo.c:668 -msgid "Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:669 -msgid "" -"net ads gpo list\n" -" Lists all GPOs for machine/user" -msgstr "" - -#: ../utils/net_ads_gpo.c:676 -msgid "Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:677 -msgid "" -"net ads gpo listall\n" -" Lists all GPOs on a DC" -msgstr "" - -#: ../utils/net_ads_gpo.c:684 -msgid "Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_ads_gpo.c:686 -msgid "" -"net ads gpo refresh\n" -" Lists all GPOs assigned to an account and downloads them" -msgstr "" - -#: ../utils/net_afs.c:25 -msgid "" -" net afs key filename\n" -"\tImports a OpenAFS KeyFile into our secrets.tdb\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:27 -msgid "" -" net afs impersonate \n" -"\tCreates a token for user@cell\n" -"\n" -msgstr "" - -#: ../utils/net_afs.c:38 -msgid "usage: 'net afs key cell'\n" -msgstr "" - -#: ../utils/net_afs.c:43 -msgid "Could not open secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:48 -#, c-format -msgid "Could not open %s\n" -msgstr "" - -#: ../utils/net_afs.c:53 -msgid "Could not read keyfile\n" -msgstr "" - -#: ../utils/net_afs.c:58 -msgid "Could not write keyfile to secrets.tdb\n" -msgstr "" - -#: ../utils/net_afs.c:71 -#, c-format -msgid "Usage: net afs impersonate \n" -msgstr "" - -#: ../utils/net_afs.c:78 -#, c-format -msgid "Could not create token\n" -msgstr "" - -#: ../utils/net_afs.c:83 -#, c-format -msgid "Could not set token into kernel\n" -msgstr "" - -#: ../utils/net_afs.c:87 -#, c-format -msgid "Success: %s@%s\n" -msgstr "" - -#: ../utils/net_afs.c:98 -msgid "Import an OpenAFS keyfile" -msgstr "" - -#: ../utils/net_afs.c:99 -msgid "" -"net afs key \n" -" Import kefile from ." -msgstr "" - -#: ../utils/net_afs.c:106 -msgid "Get a user token" -msgstr "" - -#: ../utils/net_afs.c:107 -msgid "" -"net afs impersonate \n" -" Create token for user@cell" -msgstr "" - -#: ../utils/net_cache.c:74 -#, c-format -msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" -msgstr "" - -#: ../utils/net_cache.c:75 -msgid "(expired)" -msgstr "" - -#: ../utils/net_cache.c:84 -#, c-format -msgid "Couldn't delete entry! key = %s\n" -msgstr "" - -#: ../utils/net_cache.c:158 -msgid "" -"\n" -"Usage:\n" -"net cache add \n" -msgstr "" - -#: ../utils/net_cache.c:170 -msgid "Invalid timeout argument.\n" -msgstr "" - -#: ../utils/net_cache.c:175 -msgid "New cache entry stored successfully.\n" -msgstr "" - -#: ../utils/net_cache.c:179 -msgid "Entry couldn't be added. Perhaps there's already such a key.\n" -msgstr "" - -#: ../utils/net_cache.c:195 -msgid "" -"\n" -"Usage: net cache del \n" -msgstr "" - -#: ../utils/net_cache.c:200 -msgid "Entry deleted.\n" -msgstr "" - -#: ../utils/net_cache.c:204 -msgid "Couldn't delete specified entry\n" -msgstr "" - -#: ../utils/net_cache.c:223 -msgid "" -"\n" -"Usage: net cache get \n" -msgstr "" - -#: ../utils/net_cache.c:233 -msgid "Failed to find entry\n" -msgstr "" - -#: ../utils/net_cache.c:250 -msgid "Usage: net cache search \n" -msgstr "" - -#: ../utils/net_cache.c:272 -msgid "" -"Usage:\n" -"net cache list\n" -" List all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:293 ../utils/net_cache.c:306 -msgid "" -"Usage:\n" -"net cache flush\n" -" Delete all cache entries.\n" -msgstr "" - -#: ../utils/net_cache.c:331 -msgid "Add new cache entry" -msgstr "" - -#: ../utils/net_cache.c:332 -msgid "" -"net cache add \n" -" Add new cache entry.\n" -" key string\tKey string to add cache data under.\n" -" data string\tData to store under given key.\n" -" timeout\tTimeout for cache data." -msgstr "" - -#: ../utils/net_cache.c:342 -msgid "Delete existing cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:343 -msgid "" -"net cache del \n" -" Delete existing cache entry by key.\n" -" key string\tKey string to delete." -msgstr "" - -#: ../utils/net_cache.c:351 -msgid "Get cache entry by key" -msgstr "" - -#: ../utils/net_cache.c:352 -msgid "" -"net cache get \n" -" Get cache entry by key.\n" -" key string\tKey string to look up cache entry for." -msgstr "" - -#: ../utils/net_cache.c:361 -msgid "Search entry by pattern" -msgstr "" - -#: ../utils/net_cache.c:362 -msgid "" -"net cache search \n" -" Search entry by pattern.\n" -" pattern\tPattern to search for in cache." -msgstr "" - -#: ../utils/net_cache.c:370 -msgid "List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:371 -msgid "" -"net cache list\n" -" List all cache entries" -msgstr "" - -#: ../utils/net_cache.c:378 -#, fuzzy -msgid "Delete all cache entries" -msgstr "Yazıcı Sil" - -#: ../utils/net_cache.c:379 -msgid "" -"net cache flush\n" -" Delete all cache entries" -msgstr "" - -#: ../utils/net_cache.c:386 -msgid "Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_cache.c:387 -msgid "" -"net cache stabilize\n" -" Move transient cache content to stable storage" -msgstr "" - -#: ../utils/net_conf.c:42 -msgid "USAGE: net conf list\n" -msgstr "" - -#: ../utils/net_conf.c:49 -msgid "" -"USAGE: net conf import [--test|-T] []\n" -"\t[--test|-T] testmode - do not act, just print what would be done\n" -"\t only import service , ignore the rest\n" -msgstr "" - -#: ../utils/net_conf.c:61 -msgid "USAGE: net conf listshares\n" -msgstr "" - -#: ../utils/net_conf.c:68 -msgid "USAGE: net conf drop\n" -msgstr "" - -#: ../utils/net_conf.c:75 -msgid "USAGE: net conf showshare \n" -msgstr "" - -#: ../utils/net_conf.c:82 -msgid "" -"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" -"\t the new share name.\n" -"\t the path on the filesystem to export.\n" -"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" -"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" -"\t optional comment for the new share.\n" -msgstr "" - -#: ../utils/net_conf.c:97 -msgid "USAGE: net conf delshare \n" -msgstr "" - -#: ../utils/net_conf.c:104 -msgid "USAGE: net conf setparm
\n" -msgstr "" - -#: ../utils/net_conf.c:111 -msgid "USAGE: net conf getparm
\n" -msgstr "" - -#: ../utils/net_conf.c:118 -msgid "USAGE: net conf delparm
\n" -msgstr "" - -#: ../utils/net_conf.c:125 -msgid "USAGE: net conf getincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:132 -msgid "USAGE: net conf setincludes
[]*\n" -msgstr "" - -#: ../utils/net_conf.c:139 -msgid "USAGE: net conf delincludes
\n" -msgstr "" - -#: ../utils/net_conf.c:251 -#, c-format -msgid "Error getting config: %s\n" -msgstr "" - -#: ../utils/net_conf.c:305 ../utils/net_conf.c:318 ../utils/net_conf.c:614 ../utils/net_conf.c:742 ../utils/net_conf.c:780 ../utils/net_conf.c:786 ../utils/net_conf.c:860 ../utils/net_conf.c:866 ../utils/net_conf.c:916 ../utils/net_conf.c:970 -#: ../utils/net_conf.c:1010 ../utils/net_conf.c:1050 -msgid "error: out of memory!\n" -msgstr "" - -#: ../utils/net_conf.c:324 -#, c-format -msgid "error loading file '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:330 -msgid "" -"\n" -"TEST MODE - would import the following configuration:\n" -"\n" -msgstr "" - -#: ../utils/net_conf.c:346 ../utils/net_conf.c:382 ../utils/net_conf.c:407 ../utils/net_conf.c:793 -#, c-format -msgid "error starting transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:400 ../utils/net_conf.c:416 ../utils/net_conf.c:817 -#, c-format -msgid "error committing transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:427 ../utils/net_conf.c:828 -#, c-format -msgid "error cancelling transaction: %s\n" -msgstr "" - -#: ../utils/net_conf.c:484 -#, c-format -msgid "Error deleting configuration: %s\n" -msgstr "" - -#: ../utils/net_conf.c:521 -#, c-format -msgid "error getting share parameters: %s\n" -msgstr "" - -#: ../utils/net_conf.c:630 -#, c-format -msgid "ERROR: share name %s contains invalid characters (any of %s)\n" -msgstr "" - -#: ../utils/net_conf.c:638 -msgid "ERROR: 'global' is not a valid share name.\n" -msgstr "" - -#: ../utils/net_conf.c:643 -#, c-format -msgid "ERROR: share %s already exists.\n" -msgstr "" - -#: ../utils/net_conf.c:652 -#, c-format -msgid "Error: path '%s' is not an absolute path.\n" -msgstr "" - -#: ../utils/net_conf.c:659 -#, c-format -msgid "" -"ERROR: cannot stat path '%s' to ensure this is a directory.\n" -"Error was '%s'.\n" -msgstr "" - -#: ../utils/net_conf.c:668 -#, c-format -msgid "ERROR: path '%s' is not a directory.\n" -msgstr "" - -#: ../utils/net_conf.c:679 -#, c-format -msgid "Error creating share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:690 ../utils/net_conf.c:699 ../utils/net_conf.c:707 ../utils/net_conf.c:715 -#, c-format -msgid "Error setting parameter %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:748 -#, c-format -msgid "Error deleting share %s: %s\n" -msgstr "" - -#: ../utils/net_conf.c:801 -#, c-format -msgid "Error creating share '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:810 -#, c-format -msgid "Error setting value '%s': %s\n" -msgstr "" - -#: ../utils/net_conf.c:874 ../utils/net_conf.c:930 -#, c-format -msgid "Error: given service '%s' does not exist.\n" -msgstr "" - -#: ../utils/net_conf.c:879 ../utils/net_conf.c:935 -#, c-format -msgid "Error: given parameter '%s' is not set.\n" -msgstr "" - -#: ../utils/net_conf.c:883 -#, c-format -msgid "Error getting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:939 -#, c-format -msgid "Error deleting value '%s': %s.\n" -msgstr "" - -#: ../utils/net_conf.c:977 -#, c-format -msgid "error getting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1023 -#, c-format -msgid "error setting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1056 -#, c-format -msgid "error deleting includes: %s\n" -msgstr "" - -#: ../utils/net_conf.c:1136 ../utils/net_help.c:36 -msgid "Usage:\n" -msgstr "" - -#: ../utils/net_conf.c:1160 -msgid "Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1162 -msgid "" -"net conf list\n" -" Dump the complete configuration in smb.conf like format." -msgstr "" - -#: ../utils/net_conf.c:1171 -msgid "Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1173 -msgid "" -"net conf import\n" -" Import configuration from file in smb.conf format." -msgstr "" - -#: ../utils/net_conf.c:1181 -msgid "List the share names." -msgstr "" - -#: ../utils/net_conf.c:1182 -msgid "" -"net conf listshares\n" -" List the share names." -msgstr "" - -#: ../utils/net_conf.c:1189 -msgid "Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1190 -msgid "" -"net conf drop\n" -" Delete the complete configuration." -msgstr "" - -#: ../utils/net_conf.c:1197 -msgid "Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1198 -msgid "" -"net conf showshare\n" -" Show the definition of a share." -msgstr "" - -#: ../utils/net_conf.c:1205 -#, fuzzy -msgid "Create a new share." -msgstr "Paylaşım Oluştur" - -#: ../utils/net_conf.c:1206 -msgid "" -"net conf addshare\n" -" Create a new share." -msgstr "" - -#: ../utils/net_conf.c:1213 -#, fuzzy -msgid "Delete a share." -msgstr "Paylaşım Kaldır" - -#: ../utils/net_conf.c:1214 -msgid "" -"net conf delshare\n" -" Delete a share." -msgstr "" - -#: ../utils/net_conf.c:1221 -#, fuzzy -msgid "Store a parameter." -msgstr "Paylaşım Parametreleri" - -#: ../utils/net_conf.c:1222 -msgid "" -"net conf setparm\n" -" Store a parameter." -msgstr "" - -#: ../utils/net_conf.c:1229 -msgid "Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1230 -msgid "" -"net conf getparm\n" -" Retrieve the value of a parameter." -msgstr "" - -#: ../utils/net_conf.c:1237 -#, fuzzy -msgid "Delete a parameter." -msgstr "Yazıcı Sil" - -#: ../utils/net_conf.c:1238 -msgid "" -"net conf delparm\n" -" Delete a parameter." -msgstr "" - -#: ../utils/net_conf.c:1245 -msgid "Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1246 -msgid "" -"net conf getincludes\n" -" Show the includes of a share definition." -msgstr "" - -#: ../utils/net_conf.c:1253 -msgid "Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1254 -msgid "" -"net conf setincludes\n" -" Set includes for a share." -msgstr "" - -#: ../utils/net_conf.c:1261 -msgid "Delete includes from a share definition." -msgstr "" - -#: ../utils/net_conf.c:1262 -msgid "" -"net conf setincludes\n" -" Delete includes from a share definition." -msgstr "" - -#: ../utils/net_dom.c:25 -msgid "" -"usage: net dom join \n" -" Join a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:28 -msgid "" -"usage: net dom unjoin \n" -" Unjoin a remote machine\n" -msgstr "" - -#: ../utils/net_dom.c:31 -msgid "" -"usage: net dom renamecomputer \n" -" Rename joined computer\n" -msgstr "" - -#: ../utils/net_dom.c:91 -#, c-format -msgid "Failed to unjoin domain: %s\n" -msgstr "" - -#: ../utils/net_dom.c:97 ../utils/net_dom.c:204 -msgid "Shutting down due to a domain membership change" -msgstr "" - -#: ../utils/net_dom.c:290 -#, c-format -msgid "Failed to rename machine: " -msgstr "" - -#: ../utils/net_dom.c:292 -#, c-format -msgid "Computer is not joined to a Domain\n" -msgstr "" - -#: ../utils/net_dom.c:301 -msgid "Shutting down due to a computer rename" -msgstr "" - -#: ../utils/net_dom.c:338 -#, fuzzy -msgid "Join a remote machine" -msgstr " Uzak Makina" - -#: ../utils/net_dom.c:339 -msgid "" -"net dom join \n" -" Join a remote machine" -msgstr "" - -#: ../utils/net_dom.c:347 -#, fuzzy -msgid "Unjoin a remote machine" -msgstr " Uzak Makina" - -#: ../utils/net_dom.c:348 -msgid "" -"net dom unjoin \n" -" Unjoin a remote machine" -msgstr "" - -#: ../utils/net_dom.c:356 -msgid "Rename a computer that is joined to a domain" -msgstr "" - -#: ../utils/net_dom.c:357 -msgid "" -"net dom renamecomputer \n" -" Rename joined computer" -msgstr "" - -#: ../utils/net_eventlog.c:46 -msgid "usage: net eventlog dump \n" -msgstr "" - -#: ../utils/net_eventlog.c:52 ../utils/net_eventlog.c:108 -#, c-format -msgid "failed to load evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:59 ../utils/net_eventlog.c:129 -#, fuzzy, c-format -msgid "evt pull failed: %s\n" -msgstr "Şifre Yönetimi" - -#: ../utils/net_eventlog.c:102 -msgid "usage: net eventlog import \n" -msgstr "" - -#: ../utils/net_eventlog.c:116 -#, fuzzy, c-format -msgid "evt header pull failed: %s\n" -msgstr "Şifre Yönetimi" - -#: ../utils/net_eventlog.c:122 -msgid "input file is wrapped, cannot proceed\n" -msgstr "" - -#: ../utils/net_eventlog.c:138 ../utils/net_eventlog.c:203 -#, c-format -msgid "can't open the eventlog TDB (%s)\n" -msgstr "" - -#: ../utils/net_eventlog.c:158 -#, c-format -msgid "can't write to the eventlog: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:164 -#, c-format -msgid "wrote %d entries to tdb\n" -msgstr "" - -#: ../utils/net_eventlog.c:197 -msgid "usage: net eventlog export \n" -msgstr "" - -#: ../utils/net_eventlog.c:214 -#, c-format -msgid "failed to save evt file: %s\n" -msgstr "" - -#: ../utils/net_eventlog.c:243 -msgid "Dump eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:244 -msgid "" -"net eventlog dump\n" -" Dump win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:251 -#, fuzzy -msgid "Import eventlog" -msgstr "Önemli Not:" - -#: ../utils/net_eventlog.c:252 -msgid "" -"net eventlog import\n" -" Import win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_eventlog.c:259 -msgid "Export eventlog" -msgstr "" - -#: ../utils/net_eventlog.c:260 -msgid "" -"net eventlog export\n" -" Export win32 *.evt eventlog file" -msgstr "" - -#: ../utils/net_file.c:27 -msgid "" -"net [] file [misc. options] [targets]\n" -"\tlists all open files on file server\n" -msgstr "" - -#: ../utils/net_file.c:29 -msgid "" -"net [] file USER [misc. options] [targets]\n" -"\tlists all files opened by username on file server\n" -msgstr "" - -#: ../utils/net_file.c:32 -msgid "" -"net [] file CLOSE [misc. options] [targets]\n" -"\tcloses specified file on target server\n" -msgstr "" - -#: ../utils/net_file.c:34 -msgid "" -"net [rap] file INFO [misc. options] [targets]\n" -"\tdisplays information about the specified open file\n" -msgstr "" - -#: ../utils/net_group.c:27 -msgid "" -"net [] group [misc. options] [targets]\n" -"\tList user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:29 -msgid "" -"net rpc group LIST [global|local|builtin]* [misc. options]\n" -"\tList specific user groups\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:31 -msgid "" -"net [] group DELETE [misc. options] [targets]\n" -"\tDelete specified group\n" -msgstr "" - -#: ../utils/net_group.c:34 -msgid "" -"\n" -"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" -"\tCreate specified group\n" -msgstr "" - -#: ../utils/net_group.c:37 -msgid "" -"\n" -"net rpc group MEMBERS \n" -"\tList Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:38 -msgid "" -"\n" -"net rpc group ADDMEM \n" -"\tAdd Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:40 -msgid "" -"\n" -"net rpc group DELMEM \n" -"\tDelete Group Members\n" -"\n" -msgstr "" - -#: ../utils/net_group.c:44 -msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" -msgstr "" - -#: ../utils/net_group.c:46 -msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" -msgstr "" - -#: ../utils/net_group.c:48 -msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" -msgstr "" - -#: ../utils/net_groupmap.c:38 -#, c-format -msgid "NT Group %s doesn't exist in mapping DB\n" -msgstr "" - -#: ../utils/net_groupmap.c:46 -#, c-format -msgid "converting sid %s from a string failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:65 -#, c-format -msgid "\tSID : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:66 -#, c-format -msgid "\tUnix gid : %u\n" -msgstr "" - -#: ../utils/net_groupmap.c:67 -#, c-format -msgid "\tUnix group: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:68 -#, c-format -msgid "\tGroup type: %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:70 -#, c-format -msgid "\tComment : %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:84 -msgid "" -"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" -" verbose\tPrint verbose list\n" -" ntgroup\tNT group to list\n" -" sid\tSID of group to list" -msgstr "" - -#: ../utils/net_groupmap.c:91 ../utils/net_groupmap.c:271 ../utils/net_groupmap.c:356 ../utils/net_groupmap.c:412 ../utils/net_groupmap.c:495 ../utils/net_groupmap.c:522 -#, fuzzy, c-format -msgid "" -"Usage:\n" -"%s\n" -msgstr " Kullanıcı Adı" - -#: ../utils/net_groupmap.c:106 ../utils/net_groupmap.c:213 ../utils/net_groupmap.c:220 ../utils/net_groupmap.c:365 ../utils/net_groupmap.c:372 ../utils/net_groupmap.c:504 -msgid "must supply a name\n" -msgstr "" - -#: ../utils/net_groupmap.c:113 ../utils/net_groupmap.c:227 ../utils/net_groupmap.c:511 -msgid "must supply a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:118 ../utils/net_groupmap.c:265 ../utils/net_groupmap.c:406 ../utils/net_groupmap.c:516 -#, fuzzy, c-format -msgid "Bad option: %s\n" -msgstr "Temel Seçenekler" - -#: ../utils/net_groupmap.c:139 -msgid "Failure to local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:181 -msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" -msgstr "" - -#: ../utils/net_groupmap.c:195 -#, fuzzy, c-format -msgid "" -"Usage\n" -"%s\n" -msgstr " Kullanıcı Adı" - -#: ../utils/net_groupmap.c:205 -#, c-format -msgid "RID must be greater than %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:235 ../utils/net_groupmap.c:380 -msgid "must supply a comment string\n" -msgstr "" - -#: ../utils/net_groupmap.c:259 -#, c-format -msgid "unknown group type %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:276 -#, c-format -msgid "Can't lookup UNIX group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:282 -#, c-format -msgid "Unix group %s already mapped to SID %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:289 -msgid "No rid or sid specified, choosing a RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:292 -msgid "Could not get new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:297 -#, c-format -msgid "Got RID %d\n" -msgstr "" - -#: ../utils/net_groupmap.c:328 -#, c-format -msgid "adding entry for group %s failed!\n" -msgstr "" - -#: ../utils/net_groupmap.c:332 -#, c-format -msgid "Successfully added group %s to the mapping db as a %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:349 -msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" -msgstr "" - -#: ../utils/net_groupmap.c:388 -msgid "must supply a group name\n" -msgstr "" - -#: ../utils/net_groupmap.c:434 -msgid "Failed to find local group SID in the database\n" -msgstr "" - -#: ../utils/net_groupmap.c:443 -msgid "Can't map to an unknown group type.\n" -msgstr "" - -#: ../utils/net_groupmap.c:449 -msgid "You can only change between domain and local groups.\n" -msgstr "" - -#: ../utils/net_groupmap.c:466 -#, c-format -msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" -msgstr "" - -#: ../utils/net_groupmap.c:476 -msgid "Could not update group database\n" -msgstr "" - -#: ../utils/net_groupmap.c:480 -#, c-format -msgid "Updated mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:491 -msgid "net groupmap delete {ntgroup=|sid=}" -msgstr "" - -#: ../utils/net_groupmap.c:532 -#, c-format -msgid "Unable to resolve group %s to a SID\n" -msgstr "" - -#: ../utils/net_groupmap.c:539 -#, c-format -msgid "Failed to remove group %s from the mapping db!\n" -msgstr "" - -#: ../utils/net_groupmap.c:544 -#, c-format -msgid "Sucessfully removed %s from the mapping db\n" -msgstr "" - -#: ../utils/net_groupmap.c:557 -msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" -msgstr "" - -#: ../utils/net_groupmap.c:563 -msgid "Can only specify -L or -D, not both\n" -msgstr "" - -#: ../utils/net_groupmap.c:573 -#, c-format -msgid "Could not find unix group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:594 -#, c-format -msgid "Could not find group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:605 -msgid "Could not allocate new RID\n" -msgstr "" - -#: ../utils/net_groupmap.c:622 -#, c-format -msgid "Could not add mapping entry for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:633 -#, c-format -msgid "Can't change type of the BUILTIN group %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:660 -#, c-format -msgid "Could not update group mapping for %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:674 -msgid "" -"Usage:\n" -"net groupmap cleanup\n" -" Delete all group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:682 -msgid "Could not list group mappings\n" -msgstr "" - -#: ../utils/net_groupmap.c:689 -#, c-format -msgid "Group %s is not mapped\n" -msgstr "" - -#: ../utils/net_groupmap.c:692 -#, c-format -msgid "Deleting mapping for NT Group %s, sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:712 -msgid "Usage: net groupmap addmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:717 -#, c-format -msgid "Could not add sid %s to alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:733 -msgid "Usage: net groupmap delmem alias-sid member-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:738 -#, c-format -msgid "Could not delete sid %s from alias %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:755 -msgid "Usage: net groupmap listmem alias-sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:764 -#, c-format -msgid "Could not list members for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:791 -#, c-format -msgid "Could not list memberships for sid %s\n" -msgstr "" - -#: ../utils/net_groupmap.c:814 -msgid "Usage: net groupmap memberof sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:820 ../utils/net_idmap.c:345 -msgid "talloc_init failed\n" -msgstr "" - -#: ../utils/net_groupmap.c:827 -msgid "Could not get domain sid\n" -msgstr "" - -#: ../utils/net_groupmap.c:850 -msgid "Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:851 -msgid "" -"net groupmap add\n" -" Create a new group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:858 -msgid "Update a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:859 -msgid "" -"net groupmap modify\n" -" Modify an existing group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:866 -msgid "Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:867 -msgid "" -"net groupmap delete\n" -" Remove a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:874 -msgid "Set group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:875 -msgid "" -"net groupmap set\n" -" Set a group mapping" -msgstr "" - -#: ../utils/net_groupmap.c:882 -msgid "Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:883 -msgid "" -"net groupmap cleanup\n" -" Remove foreign group mapping entries" -msgstr "" - -#: ../utils/net_groupmap.c:890 -msgid "Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:891 -msgid "" -"net groupmap addmem\n" -" Add a foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:898 -msgid "Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:899 -msgid "" -"net groupmap delmem\n" -" Delete foreign alias member" -msgstr "" - -#: ../utils/net_groupmap.c:906 -msgid "List foreign group members" -msgstr "" - -#: ../utils/net_groupmap.c:907 -msgid "" -"net groupmap listmem\n" -" List foreign alias members" -msgstr "" - -#: ../utils/net_groupmap.c:914 -msgid "List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:915 -msgid "" -"net groupmap memberships\n" -" List foreign group memberships" -msgstr "" - -#: ../utils/net_groupmap.c:922 -msgid "List current group map" -msgstr "" - -#: ../utils/net_groupmap.c:923 -msgid "" -"net groupmap list\n" -" List current group map" -msgstr "" - -#: ../utils/net_help.c:39 -#, c-format -msgid "net %s usage:\n" -msgstr "" - -#: ../utils/net_help_common.c:25 ../utils/net_join.c:28 -msgid "Valid methods: (auto-detected if not specified)\n" -msgstr "" - -#: ../utils/net_help_common.c:26 ../utils/net_join.c:29 -msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" -msgstr "" - -#: ../utils/net_help_common.c:27 ../utils/net_join.c:30 -msgid "\trpc\t\t\t\tDCE-RPC\n" -msgstr "" - -#: ../utils/net_help_common.c:28 -msgid "\trap\t\t\t\tRAP (older systems)\n" -msgstr "" - -#: ../utils/net_help_common.c:35 -msgid "Valid targets: choose one (none defaults to localhost)\n" -msgstr "" - -#: ../utils/net_help_common.c:36 -msgid "\t-S or --server=\t\tserver name\n" -msgstr "" - -#: ../utils/net_help_common.c:37 -msgid "\t-I or --ipaddress=\taddress of target server\n" -msgstr "" - -#: ../utils/net_help_common.c:38 -msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" -msgstr "" - -#: ../utils/net_help_common.c:41 -#, fuzzy -msgid "Valid miscellaneous options are:\n" -msgstr "Diğer Seçenekler" - -#. misc options -#: ../utils/net_help_common.c:42 -msgid "\t-p or --port=\t\tconnection port on target\n" -msgstr "" - -#: ../utils/net_help_common.c:43 -msgid "\t-W or --myworkgroup=\tclient workgroup\n" -msgstr "" - -#: ../utils/net_help_common.c:44 -msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" -msgstr "" - -#: ../utils/net_help_common.c:45 -msgid "\t-n or --myname=\t\tclient name\n" -msgstr "" - -#: ../utils/net_help_common.c:46 -msgid "\t-U or --user=\t\tuser name\n" -msgstr "" - -#: ../utils/net_help_common.c:47 -msgid "\t-s or --configfile=\tpathname of smb.conf file\n" -msgstr "" - -#: ../utils/net_help_common.c:48 -msgid "\t-l or --long\t\t\tDisplay full information\n" -msgstr "" - -#: ../utils/net_help_common.c:49 -msgid "\t-V or --version\t\t\tPrint samba version information\n" -msgstr "" - -#: ../utils/net_help_common.c:50 -msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" -msgstr "" - -#: ../utils/net_help_common.c:52 -msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" -msgstr "" - -#: ../utils/net_help_common.c:54 -msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" -msgstr "" - -#: ../utils/net_idmap.c:25 -msgid "Out of memory!\n" -msgstr "" - -#: ../utils/net_idmap.c:39 -#, c-format -msgid "USER HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:44 -#, c-format -msgid "GROUP HWM %d\n" -msgstr "" - -#: ../utils/net_idmap.c:63 -msgid "" -"Usage:\n" -"net idmap dump \n" -" Dump current ID mapping.\n" -" inputfile\tTDB file to read mappings from.\n" -msgstr "" - -#: ../utils/net_idmap.c:73 -#, c-format -msgid "Could not open idmap: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:94 -msgid "" -"Usage:\n" -"net idmap restore [inputfile]\n" -" Restore ID mappings from file\n" -" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" -msgstr "" - -#: ../utils/net_idmap.c:104 -msgid "To use net idmap Winbindd must be running.\n" -msgstr "" - -#: ../utils/net_idmap.c:142 -#, c-format -msgid "Could not set USER HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:151 -#, c-format -msgid "Could not set GROUP HWM: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:156 -#, c-format -msgid "ignoring invalid line [%s]\n" -msgstr "" - -#: ../utils/net_idmap.c:163 -#, c-format -msgid "ignoring invalid sid [%s]: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:175 -#, c-format -msgid "Could not set mapping of %s %lu to sid %s: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:196 ../utils/net_idmap.c:202 -msgid "Not Implemented yet\n" -msgstr "" - -#: ../utils/net_idmap.c:240 -msgid "" -"Usage:\n" -"net idmap secret {|alloc} \n" -" Set the secret for the specified domain (or alloc module)\n" -" DOMAIN\tDomain to set secret for.\n" -" alloc\tSet secret for the alloc module\n" -" secret\tNew secret to set.\n" -msgstr "" - -#: ../utils/net_idmap.c:271 -msgid "The only currently supported backend is LDAP\n" -msgstr "" - -#: ../utils/net_idmap.c:281 -#, c-format -msgid "Missing ldap_user_dn option for domain %s\n" -msgstr "" - -#: ../utils/net_idmap.c:292 -msgid "Missing ldap_user_dn option for alloc backend\n" -msgstr "" - -#: ../utils/net_idmap.c:302 -msgid "Failed to store secret\n" -msgstr "" - -#: ../utils/net_idmap.c:307 -msgid "Secret stored\n" -msgstr "" - -#: ../utils/net_idmap.c:313 -msgid "" -"net idmap dump \n" -" Dump current id mapping\n" -msgstr "" - -#: ../utils/net_idmap.c:316 -msgid "" -"net idmap restore\n" -" Restore entries from stdin\n" -msgstr "" - -#. Deliberately *not* document net idmap delete -#: ../utils/net_idmap.c:321 -msgid "" -"net idmap secret |alloc \n" -" Set the secret for the specified DOMAIN (or the alloc module)\n" -msgstr "" - -#: ../utils/net_idmap.c:339 -msgid "usage: net idmap aclmapset \n" -msgstr "" - -#: ../utils/net_idmap.c:351 -#, fuzzy, c-format -msgid "db_open failed: %s\n" -msgstr "Şifre Yönetimi" - -#: ../utils/net_idmap.c:356 ../utils/net_idmap.c:361 -#, c-format -msgid "%s is not a valid sid\n" -msgstr "" - -#: ../utils/net_idmap.c:367 -msgid "talloc_strdup failed\n" -msgstr "" - -#: ../utils/net_idmap.c:373 -msgid "could not fetch db record\n" -msgstr "" - -#: ../utils/net_idmap.c:381 -#, c-format -msgid "could not store record: %s\n" -msgstr "" - -#: ../utils/net_idmap.c:402 -msgid "Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:403 -msgid "" -"net idmap dump\n" -" Dump the current ID mappings" -msgstr "" - -#: ../utils/net_idmap.c:410 -msgid "Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:411 -msgid "" -"net idmap restore\n" -" Restore entries from stdin" -msgstr "" - -#: ../utils/net_idmap.c:418 ../utils/net_idmap.c:426 -msgid "Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:419 -msgid "" -"net idmap setmap\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:427 -msgid "" -"net idmap delete\n" -" Not implemented yet" -msgstr "" - -#: ../utils/net_idmap.c:434 -msgid "Set secret for specified domain" -msgstr "" - -#: ../utils/net_idmap.c:435 -msgid "" -"net idmap secret {|alloc} \n" -" Set secret for specified domain or alloc module" -msgstr "" - -#: ../utils/net_idmap.c:442 -msgid "Set acl map" -msgstr "" - -#: ../utils/net_idmap.c:443 -msgid "" -"net idmap aclmapset\n" -" Set acl map" -msgstr "" - -#: ../utils/net_join.c:26 -msgid "" -"\n" -"net [] join [misc. options]\n" -"\tjoins this server to a domain\n" -msgstr "" - -#: ../utils/net_join.c:47 -msgid "ADS join did not work, falling back to RPC...\n" -msgstr "" - -#: ../utils/net_lookup.c:25 -msgid "" -" net lookup [host] HOSTNAME[#]\n" -"\tgives IP for a hostname\n" -"\n" -" net lookup ldap [domain]\n" -"\tgives IP of domain's ldap server\n" -"\n" -" net lookup kdc [realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup pdc [domain|realm]\n" -"\tgives IP of realm's kerberos KDC\n" -"\n" -" net lookup dc [domain]\n" -"\tgives IP of domains Domain Controllers\n" -"\n" -" net lookup master [domain|wg]\n" -"\tgive IP of master browser\n" -"\n" -" net lookup name [name]\n" -"\tLookup name's sid and type\n" -"\n" -" net lookup sid [sid]\n" -"\tGive sid's name and type\n" -"\n" -" net lookup dsgetdcname [name] [flags] [sitename]\n" -"\n" -msgstr "" - -#: ../utils/net_lookup.c:112 -msgid "net_lookup_ldap: talloc_init() failed!\n" -msgstr "" - -#: ../utils/net_lookup.c:325 -msgid "usage: net lookup name \n" -msgstr "" - -#: ../utils/net_lookup.c:331 ../utils/net_lookup.c:358 -#, c-format -msgid "Could not lookup name %s\n" -msgstr "" - -#: ../utils/net_lookup.c:347 -msgid "usage: net lookup sid \n" -msgstr "" - -#: ../utils/net_lookup.c:352 -#, c-format -msgid "Could not convert %s to SID\n" -msgstr "" - -#: ../utils/net_lookup.c:378 -msgid "usage: net lookup dsgetdcname \n" -msgstr "" - -#: ../utils/net_lookup.c:404 -#, c-format -msgid "failed with: %s\n" -msgstr "" - -#: ../utils/net_lookup.c:437 -msgid "" -"\n" -"Usage: \n" -msgstr "" - -#: ../utils/net_lua.c:60 -msgid "connect: Expected IP-Address" -msgstr "" - -#: ../utils/net_lua.c:65 -msgid "connect: Expected port" -msgstr "" - -#: ../utils/net_lua.c:84 -#, fuzzy, c-format -msgid "connect failed: %s" -msgstr "Şifre Yönetimi" - -#: ../utils/net_lua.c:132 -#, c-format -msgid "socket domain %s unknown" -msgstr "" - -#: ../utils/net_lua.c:144 -#, c-format -msgid "socket type %s unknown" -msgstr "" - -#: ../utils/net_lua.c:155 -#, fuzzy, c-format -msgid "socket() failed: %s" -msgstr "Şifre Yönetimi" - -#: ../utils/net_lua.c:278 -msgid "evt_reference_thread failed\n" -msgstr "" - -#: ../utils/net_lua.c:287 -msgid "event_add_timed failed" -msgstr "" - -#: ../utils/net_lua.c:300 -msgid "event_once called from non-base thread" -msgstr "" - -#: ../utils/net_lua.c:323 -msgid "event_context_init failed" -msgstr "" - -#: ../utils/net_lua.c:353 -msgid "lua_newstate failed\n" -msgstr "" - -#: ../utils/net_lua.c:371 -msgid "luaL_dofile returned an error\n" -msgstr "" - -#: ../utils/net_lua.c:376 -msgid "luaL_dostring returned an error\n" -msgstr "" -- cgit From db76b7aa04af168b4ab55f0b34960deb8501eb07 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Thu, 6 Aug 2009 20:52:58 +0200 Subject: s3 net: net i18n in it's own module --- source3/locale/net/de.po | 4822 +++++++++++++++++++++++++++++++++++++++++++++ source3/locale/net/genmsg | 58 + 2 files changed, 4880 insertions(+) create mode 100644 source3/locale/net/de.po create mode 100755 source3/locale/net/genmsg (limited to 'source3') diff --git a/source3/locale/net/de.po b/source3/locale/net/de.po new file mode 100644 index 0000000000..78b13534d7 --- /dev/null +++ b/source3/locale/net/de.po @@ -0,0 +1,4822 @@ +# net message translation (german). +# Copyright (C) 2009 Kai Blin +# This file is distributed under the same license as the samba package. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: @PACKAGE@\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-08-06 20:51+0200\n" +"PO-Revision-Date: 2009-08-06 20:45+0200\n" +"Last-Translator: Kai Blin \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../utils/net.c:103 +msgid "Enter machine password: " +msgstr "Bitte Maschinenpasswort eingeben: " + +#: ../../utils/net.c:107 +msgid "Unable to write the machine account password in the secrets database" +msgstr "" + +#: ../../utils/net.c:111 +msgid "Modified trust account password in secrets database\n" +msgstr "" + +#: ../../utils/net.c:115 +msgid "" +"Machine account password change requires the -f flag.\n" +"Do NOT use this function unless you know what it does!\n" +"This function will change the ADS Domain member machine account password in the secrets.tdb file!\n" +msgstr "" + +#: ../../utils/net.c:150 ../../utils/net.c:228 +#, c-format +msgid "Unable to open secrets.tdb. Can't fetch domain SID for name: %s\n" +msgstr "" + +#: ../../utils/net.c:163 ../../utils/net.c:251 +#, c-format +msgid "SID for domain %s is: %s\n" +msgstr "" + +#: ../../utils/net.c:175 +msgid "usage: net setlocalsid S-1-5-21-x-y-z\n" +msgstr "" + +#: ../../utils/net.c:195 +msgid "usage: net setdomainsid S-1-5-21-x-y-z\n" +msgstr "" + +#: ../../utils/net.c:213 +msgid "usage: net getdomainsid\n" +msgstr "" + +#: ../../utils/net.c:238 +msgid "Could not fetch local SID\n" +msgstr "" + +#: ../../utils/net.c:242 +#, c-format +msgid "SID for local machine %s is: %s\n" +msgstr "" + +#: ../../utils/net.c:246 +msgid "Could not fetch domain SID\n" +msgstr "" + +#: ../../utils/net.c:263 +#, c-format +msgid "get_maxrid: Could not search %s\n" +msgstr "" + +#: ../../utils/net.c:297 +msgid "usage: net maxrid\n" +msgstr "" + +#: ../../utils/net.c:302 +msgid "can't get current maximum rid\n" +msgstr "" + +#: ../../utils/net.c:306 +#, c-format +msgid "Currently used maximum rid: %d\n" +msgstr "" + +#: ../../utils/net.c:317 +msgid "Run functions using RPC transport" +msgstr "" + +#: ../../utils/net.c:318 +msgid " Use 'net help rpc' to get more extensive information about 'net rpc' commands." +msgstr "" + +#: ../../utils/net.c:325 +msgid "Run functions using RAP transport" +msgstr "" + +#: ../../utils/net.c:326 +msgid " Use 'net help rap' to get more extensive information about 'net rap' commands." +msgstr "" + +#: ../../utils/net.c:333 +msgid "Run functions using ADS transport" +msgstr "" + +#: ../../utils/net.c:334 +msgid " Use 'net help ads' to get more extensive information about 'net ads' commands." +msgstr "" + +#: ../../utils/net.c:343 +msgid "Functions on remote opened files" +msgstr "" + +#: ../../utils/net.c:344 +msgid " Use 'net help file' to get more information about 'net file' commands." +msgstr "" + +#: ../../utils/net.c:351 +msgid "Functions on shares" +msgstr "" + +#: ../../utils/net.c:352 +msgid " Use 'net help share' to get more information about 'net share' commands." +msgstr "" + +#: ../../utils/net.c:359 +msgid "Manage sessions" +msgstr "" + +#: ../../utils/net.c:360 +msgid " Use 'net help session' to get more information about 'net session' commands." +msgstr "" + +#: ../../utils/net.c:367 ../../utils/net_rap.c:1291 +msgid "List servers in workgroup" +msgstr "" + +#: ../../utils/net.c:368 +msgid " Use 'net help server' to get more information about 'net server' commands." +msgstr "" + +#: ../../utils/net.c:375 +msgid "List domains/workgroups on network" +msgstr "" + +#: ../../utils/net.c:376 +msgid " Use 'net help domain' to get more information about 'net domain' commands." +msgstr "" + +#: ../../utils/net.c:383 +msgid "Modify printer queue" +msgstr "" + +#: ../../utils/net.c:384 +msgid " Use 'net help printq' to get more information about 'net printq' commands." +msgstr "" + +#: ../../utils/net.c:391 +msgid "Manage users" +msgstr "" + +#: ../../utils/net.c:392 +msgid " Use 'net help user' to get more information about 'net user' commands." +msgstr "" + +#: ../../utils/net.c:399 +msgid "Manage groups" +msgstr "" + +#: ../../utils/net.c:400 +msgid " Use 'net help group' to get more information about 'net group' commands." +msgstr "" + +#: ../../utils/net.c:407 +msgid "Manage group mappings" +msgstr "" + +#: ../../utils/net.c:408 +msgid " Use 'net help groupmap' to get more information about 'net groupmap' commands." +msgstr "" + +#: ../../utils/net.c:415 +msgid "Functions on the SAM database" +msgstr "" + +#: ../../utils/net.c:416 +msgid " Use 'net help sam' to get more information about 'net sam' commands." +msgstr "" + +#: ../../utils/net.c:423 +msgid "Validate username and password" +msgstr "" + +#: ../../utils/net.c:424 +msgid " Use 'net help validate' to get more information about 'net validate' commands." +msgstr "" + +#: ../../utils/net.c:431 +msgid "Modify group memberships" +msgstr "" + +#: ../../utils/net.c:432 +msgid " Use 'net help groupmember' to get more information about 'net groupmember' commands." +msgstr "" + +#: ../../utils/net.c:438 +msgid "Execute remote command on a remote OS/2 server" +msgstr "" + +#: ../../utils/net.c:439 +msgid " Use 'net help admin' to get more information about 'net admin' commands." +msgstr "" + +#: ../../utils/net.c:445 +msgid "List/modify running services" +msgstr "" + +#: ../../utils/net.c:446 +msgid " Use 'net help service' to get more information about 'net service' commands." +msgstr "" + +#: ../../utils/net.c:453 +msgid "Change user password on target server" +msgstr "" + +#: ../../utils/net.c:454 +msgid " Use 'net help password' to get more information about 'net password' commands." +msgstr "" + +#: ../../utils/net.c:460 +msgid "Change the trust password" +msgstr "" + +#: ../../utils/net.c:461 +msgid " Use 'net help changetrustpw' to get more information about 'net changetrustpw'." +msgstr "" + +#: ../../utils/net.c:467 +msgid "Change the secret password" +msgstr "" + +#: ../../utils/net.c:468 +msgid "" +" net [options] changesecretpw\n" +" Change the ADS domain member machine account password in secrets.tdb.\n" +" Do NOT use this function unless you know what it does.\n" +" Requires the -f flag to work." +msgstr "" + +#: ../../utils/net.c:477 +msgid "Show/set time" +msgstr "" + +#: ../../utils/net.c:478 +msgid " Use 'net help time' to get more information about 'net time' commands." +msgstr "" + +#: ../../utils/net.c:484 +msgid "Look up host names/IP addresses" +msgstr "" + +#: ../../utils/net.c:485 +msgid " Use 'net help lookup' to get more information about 'net lookup' commands." +msgstr "" + +#: ../../utils/net.c:491 +msgid "Join a domain/AD" +msgstr "" + +#: ../../utils/net.c:492 +msgid " Use 'net help join' to get more information about 'net join'." +msgstr "" + +#: ../../utils/net.c:498 +msgid "Join/unjoin (remote) machines to/from a domain/AD" +msgstr "" + +#: ../../utils/net.c:499 +msgid " Use 'net help dom' to get more information about 'net dom' commands." +msgstr "" + +#: ../../utils/net.c:505 +msgid "Operate on the cache tdb file" +msgstr "" + +#: ../../utils/net.c:506 +msgid " Use 'net help cache' to get more information about 'net cache' commands." +msgstr "" + +#: ../../utils/net.c:512 +msgid "Get the SID for the local domain" +msgstr "" + +#: ../../utils/net.c:513 +msgid " net getlocalsid" +msgstr "" + +#: ../../utils/net.c:518 +msgid "Set the SID for the local domain" +msgstr "" + +#: ../../utils/net.c:519 +msgid " net setlocalsid S-1-5-21-x-y-z" +msgstr "" + +#: ../../utils/net.c:524 +msgid "Set domain SID on member servers" +msgstr "" + +#: ../../utils/net.c:525 +msgid " net setdomainsid S-1-5-21-x-y-z" +msgstr "" + +#: ../../utils/net.c:530 +msgid "Get domain SID on member servers" +msgstr "" + +#: ../../utils/net.c:531 +msgid " net getdomainsid" +msgstr "" + +#: ../../utils/net.c:536 +msgid "Display the maximul RID currently used" +msgstr "" + +#: ../../utils/net.c:537 +msgid " net maxrid" +msgstr "" + +#: ../../utils/net.c:542 +msgid "IDmap functions" +msgstr "" + +#: ../../utils/net.c:543 +msgid " Use 'net help idmap to get more information about 'net idmap' commands." +msgstr "" + +#: ../../utils/net.c:549 +msgid "Display server status" +msgstr "" + +#: ../../utils/net.c:550 +msgid " Use 'net help status' to get more information about 'net status' commands." +msgstr "" + +#: ../../utils/net.c:556 +msgid "Manage user-modifiable shares" +msgstr "" + +#: ../../utils/net.c:557 +msgid " Use 'net help usershare to get more information about 'net usershare' commands." +msgstr "" + +#: ../../utils/net.c:563 +msgid "Display list of all users with SID" +msgstr "" + +#: ../../utils/net.c:564 +msgid " Use 'net help usersidlist' to get more information about 'net usersidlist'." +msgstr "" + +#: ../../utils/net.c:570 +msgid "Manage Samba registry based configuration" +msgstr "" + +#: ../../utils/net.c:571 +msgid " Use 'net help conf' to get more information about 'net conf' commands." +msgstr "" + +#: ../../utils/net.c:577 +msgid "Manage the Samba registry" +msgstr "" + +#: ../../utils/net.c:578 +msgid " Use 'net help registry' to get more information about 'net registry' commands." +msgstr "" + +#: ../../utils/net.c:584 +msgid "Open a lua interpreter" +msgstr "" + +#: ../../utils/net.c:585 +msgid " Use 'net help lua' to get more information about 'net lua' commands." +msgstr "" + +#: ../../utils/net.c:591 +msgid "Process Win32 *.evt eventlog files" +msgstr "" + +#: ../../utils/net.c:592 +msgid " Use 'net help eventlog' to get more information about 'net eventlog' commands." +msgstr "" + +#: ../../utils/net.c:600 +msgid "Manage AFS tokens" +msgstr "" + +#: ../../utils/net.c:601 +msgid " Use 'net help afs' to get more information about 'net afs' commands." +msgstr "" + +#: ../../utils/net.c:609 +msgid "Print usage information" +msgstr "" + +#: ../../utils/net.c:610 +msgid " Use 'net help help' to list usage information for 'net' commands." +msgstr "" + +#: ../../utils/net.c:639 +msgid "Encrypt SMB transport (UNIX extended servers only)" +msgstr "" + +#: ../../utils/net.c:703 +msgid "" +"\n" +"Invalid ip address specified\n" +msgstr "" + +#: ../../utils/net.c:718 +#, c-format +msgid "" +"\n" +"Invalid option %s: %s\n" +msgstr "" +"\n" +"Ungültige Option %s: %s\n" + +#: ../../utils/net_ads.c:52 ../../utils/net_ads.c:392 +msgid "CLDAP query failed!\n" +msgstr "" + +#: ../../utils/net_ads.c:56 +#, c-format +msgid "" +"Information for Domain Controller: %s\n" +"\n" +msgstr "" + +#: ../../utils/net_ads.c:59 +msgid "Response Type: " +msgstr "" + +#: ../../utils/net_ads.c:72 +#, c-format +msgid "GUID: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:74 +#, c-format +msgid "" +"Flags:\n" +"\tIs a PDC: %s\n" +"\tIs a GC of the forest: %s\n" +"\tIs an LDAP server: %s\n" +"\tSupports DS: %s\n" +"\tIs running a KDC: %s\n" +"\tIs running time services: %s\n" +"\tIs the closest DC: %s\n" +"\tIs writable: %s\n" +"\tHas a hardware clock: %s\n" +"\tIs a non-domain NC serviced by LDAP server: %s\n" +"\tIs NT6 DC that has some secrets: %s\n" +"\tIs NT6 DC that has all secrets: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:87 ../../utils/net_ads.c:88 ../../utils/net_ads.c:89 ../../utils/net_ads.c:90 ../../utils/net_ads.c:91 ../../utils/net_ads.c:92 ../../utils/net_ads.c:93 ../../utils/net_ads.c:94 ../../utils/net_ads.c:95 ../../utils/net_ads.c:96 +#: ../../utils/net_ads.c:97 ../../utils/net_ads.c:98 ../../utils/net_rap.c:376 +msgid "yes" +msgstr "" + +#: ../../utils/net_ads.c:87 ../../utils/net_ads.c:88 ../../utils/net_ads.c:89 ../../utils/net_ads.c:90 ../../utils/net_ads.c:91 ../../utils/net_ads.c:92 ../../utils/net_ads.c:93 ../../utils/net_ads.c:94 ../../utils/net_ads.c:95 ../../utils/net_ads.c:96 +#: ../../utils/net_ads.c:97 ../../utils/net_ads.c:98 ../../utils/net_rap.c:376 +msgid "no" +msgstr "" + +#: ../../utils/net_ads.c:101 +#, c-format +msgid "Forest:\t\t\t%s\n" +msgstr "" + +#: ../../utils/net_ads.c:102 +#, c-format +msgid "Domain:\t\t\t%s\n" +msgstr "" + +#: ../../utils/net_ads.c:103 +#, c-format +msgid "Domain Controller:\t%s\n" +msgstr "" + +#: ../../utils/net_ads.c:105 +#, c-format +msgid "Pre-Win2k Domain:\t%s\n" +msgstr "" + +#: ../../utils/net_ads.c:106 +#, c-format +msgid "Pre-Win2k Hostname:\t%s\n" +msgstr "" + +#: ../../utils/net_ads.c:108 +#, c-format +msgid "User name:\t%s\n" +msgstr "" + +#: ../../utils/net_ads.c:110 +#, c-format +msgid "Server Site Name :\t\t%s\n" +msgstr "" + +#: ../../utils/net_ads.c:111 +#, c-format +msgid "Client Site Name :\t\t%s\n" +msgstr "" + +#: ../../utils/net_ads.c:113 +#, c-format +msgid "NT Version: %d\n" +msgstr "" + +#: ../../utils/net_ads.c:114 +#, c-format +msgid "LMNT Token: %.2x\n" +msgstr "" + +#: ../../utils/net_ads.c:115 +#, c-format +msgid "LM20 Token: %.2x\n" +msgstr "" + +#: ../../utils/net_ads.c:130 +msgid "" +"Usage:\n" +"net ads lookup\n" +" Find the ADS DC using CLDAP lookup.\n" +msgstr "" + +#: ../../utils/net_ads.c:137 ../../utils/net_ads.c:381 +msgid "Didn't find the cldap server!\n" +msgstr "" + +#: ../../utils/net_ads.c:160 +msgid "" +"Usage:\n" +"net ads info\n" +" Display information about an Active Directory server.\n" +msgstr "" + +#: ../../utils/net_ads.c:168 ../../utils/net_ads.c:173 +msgid "Didn't find the ldap server!\n" +msgstr "" + +#: ../../utils/net_ads.c:182 +msgid "Failed to get server's current time!\n" +msgstr "" + +#: ../../utils/net_ads.c:187 +#, c-format +msgid "LDAP server: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:188 +#, c-format +msgid "LDAP server name: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:189 +#, c-format +msgid "Realm: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:190 +#, c-format +msgid "Bind Path: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:191 +#, c-format +msgid "LDAP port: %d\n" +msgstr "" + +#: ../../utils/net_ads.c:192 +#, c-format +msgid "Server time: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:195 +#, c-format +msgid "KDC server: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:196 +#, c-format +msgid "Server time offset: %d\n" +msgstr "" + +#: ../../utils/net_ads.c:374 +msgid "" +"Usage:\n" +"net ads workgroup\n" +" Print the workgroup name\n" +msgstr "" + +#: ../../utils/net_ads.c:397 +#, c-format +msgid "Workgroup: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:458 +#, c-format +msgid "ads_user_add: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:463 +#, c-format +msgid "ads_user_add: User %s already exists\n" +msgstr "" + +#: ../../utils/net_ads.c:477 +#, c-format +msgid "Could not add user %s: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:484 ../../utils/net_ads.c:497 +#, c-format +msgid "User %s added\n" +msgstr "" + +#. password didn't set, delete account +#: ../../utils/net_ads.c:503 +#, c-format +msgid "Could not add user %s. Error setting password %s\n" +msgstr "" + +#: ../../utils/net_ads.c:551 +#, c-format +msgid "ads_user_info: failed to escape user %s\n" +msgstr "" + +#: ../../utils/net_ads.c:569 +#, c-format +msgid "ads_search: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:575 +msgid "ads_pull_uint32 failed\n" +msgstr "" + +#: ../../utils/net_ads.c:582 +#, c-format +msgid "ads_domain_sid: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:642 +#, c-format +msgid "User %s does not exist.\n" +msgstr "" + +#: ../../utils/net_ads.c:652 +#, c-format +msgid "User %s deleted\n" +msgstr "" + +#: ../../utils/net_ads.c:656 +#, c-format +msgid "Error deleting user %s: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:669 +msgid "Add an AD user" +msgstr "" + +#: ../../utils/net_ads.c:670 +msgid "" +"net ads user add\n" +" Add an AD user" +msgstr "" + +#: ../../utils/net_ads.c:677 +msgid "Display information about an AD user" +msgstr "" + +#: ../../utils/net_ads.c:678 +msgid "" +"net ads user info\n" +" Display information about an AD user" +msgstr "" + +#: ../../utils/net_ads.c:685 +msgid "Delete an AD user" +msgstr "" + +#: ../../utils/net_ads.c:686 +msgid "" +"net ads user delete\n" +" Delete an AD user" +msgstr "" + +#: ../../utils/net_ads.c:699 +msgid "" +"Usage:\n" +"net ads user\n" +" List AD users\n" +msgstr "" + +#: ../../utils/net_ads.c:711 ../../utils/net_rap.c:901 ../../utils/net_rpc.c:852 +msgid "" +"\n" +"User name Comment\n" +"-----------------------------\n" +msgstr "" + +#: ../../utils/net_ads.c:751 +#, c-format +msgid "ads_group_add: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:756 +#, c-format +msgid "ads_group_add: Group %s already exists\n" +msgstr "" + +#: ../../utils/net_ads.c:769 +#, c-format +msgid "Group %s added\n" +msgstr "" + +#: ../../utils/net_ads.c:772 +#, c-format +msgid "Could not add group %s: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:801 +#, c-format +msgid "Group %s does not exist.\n" +msgstr "" + +#: ../../utils/net_ads.c:811 +#, c-format +msgid "Group %s deleted\n" +msgstr "" + +#: ../../utils/net_ads.c:815 +#, c-format +msgid "Error deleting group %s: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:828 +msgid "Add an AD group" +msgstr "" + +#: ../../utils/net_ads.c:829 +msgid "" +"net ads group add\n" +" Add an AD group" +msgstr "" + +#: ../../utils/net_ads.c:836 +msgid "Delete an AD group" +msgstr "" + +#: ../../utils/net_ads.c:837 +msgid "" +"net ads group delete\n" +" Delete an AD group" +msgstr "" + +#: ../../utils/net_ads.c:850 +msgid "" +"Usage:\n" +"net ads group\n" +" List AD groups\n" +msgstr "" + +#: ../../utils/net_ads.c:862 ../../utils/net_rpc.c:2230 +msgid "" +"\n" +"Group name Comment\n" +"-----------------------------\n" +msgstr "" + +#: ../../utils/net_ads.c:884 +msgid "" +"Usage:\n" +"net ads status\n" +" Display machine account details\n" +msgstr "" + +#: ../../utils/net_ads.c:896 +#, c-format +msgid "ads_find_machine_acct: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:902 +#, c-format +msgid "No machine account for '%s' found\n" +msgstr "" + +#: ../../utils/net_ads.c:926 +msgid "" +"Usage:\n" +"net ads leave\n" +" Leave an AD domain\n" +msgstr "" + +#: ../../utils/net_ads.c:933 +msgid "No realm set, are we joined ?\n" +msgstr "" + +#: ../../utils/net_ads.c:938 ../../utils/net_ads.c:1260 +msgid "Could not initialise talloc context.\n" +msgstr "" + +#: ../../utils/net_ads.c:948 +msgid "Could not initialise unjoin context.\n" +msgstr "" + +#: ../../utils/net_ads.c:968 +#, c-format +msgid "Failed to leave domain: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:975 +#, c-format +msgid "Deleted account for '%s' in realm '%s'\n" +msgstr "" + +#: ../../utils/net_ads.c:982 +#, c-format +msgid "Disabled account for '%s' in realm '%s'\n" +msgstr "" + +#. Based on what we requseted, we shouldn't get here, but if +#. we did, it means the secrets were removed, and therefore +#. we have left the domain +#: ../../utils/net_ads.c:991 +#, c-format +msgid "Machine '%s' Left domain '%s'\n" +msgstr "" + +#: ../../utils/net_ads.c:1035 +msgid "" +"Usage:\n" +"net ads testjoin\n" +" Test if the existing join is ok\n" +msgstr "" + +#: ../../utils/net_ads.c:1044 +#, c-format +msgid "Join to domain is not valid: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1049 +#, c-format +msgid "Join is OK\n" +msgstr "" + +#: ../../utils/net_ads.c:1060 +msgid "Host is not configured as a member server.\n" +msgstr "" + +#: ../../utils/net_ads.c:1065 ../../utils/net_rpc.c:436 +#, c-format +msgid "Our netbios name can be at most 15 chars long, \"%s\" is %u chars long\n" +msgstr "" + +#: ../../utils/net_ads.c:1072 +#, c-format +msgid "realm must be set in in %s for ADS join to succeed.\n" +msgstr "" + +#: ../../utils/net_ads.c:1105 +#, c-format +msgid "No DNS domain configured for %s. Unable to perform DNS Update.\n" +msgstr "" + +#: ../../utils/net_ads.c:1212 +msgid "" +"net ads join [options]\n" +"Valid options:\n" +msgstr "" + +#: ../../utils/net_ads.c:1214 +msgid "" +" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" +" The deault UPN is in the form host/netbiosname@REALM.\n" +msgstr "" + +#: ../../utils/net_ads.c:1216 +msgid "" +" createcomputer=OU Precreate the computer account in a specific OU.\n" +" The OU string read from top to bottom without RDNs and delimited by a '/'.\n" +" E.g. \"createcomputer=Computers/Servers/Unix\"\n" +" NB: A backslash '\\' is used as escape at multiple levels and may\n" +" need to be doubled or even quadrupled. It is not used as a separator.\n" +msgstr "" + +#: ../../utils/net_ads.c:1221 +msgid " osName=string Set the operatingSystem attribute during the join.\n" +msgstr "" + +#: ../../utils/net_ads.c:1222 +msgid "" +" osVer=string Set the operatingSystemVersion attribute during the join.\n" +" NB: osName and osVer must be specified together for either to take effect.\n" +" Also, the operatingSystemService attribute is also set when along with\n" +" the two other attributes.\n" +msgstr "" + +#: ../../utils/net_ads.c:1254 +msgid "Invalid configuration. Exiting....\n" +msgstr "" + +#: ../../utils/net_ads.c:1283 +msgid "Please supply a valid OU path.\n" +msgstr "" + +#: ../../utils/net_ads.c:1290 +msgid "Please supply a operating system name.\n" +msgstr "" + +#: ../../utils/net_ads.c:1297 +msgid "Please supply a valid operating system version.\n" +msgstr "" + +#: ../../utils/net_ads.c:1308 +msgid "Please supply a valid domain name\n" +msgstr "" + +#: ../../utils/net_ads.c:1339 +#, c-format +msgid "" +"The workgroup in %s does not match the short\n" +"domain name obtained from the server.\n" +"Using the name [%s] from the server.\n" +"You should set \"workgroup = %s\" in %s.\n" +msgstr "" + +#: ../../utils/net_ads.c:1347 +#, c-format +msgid "Using short domain name -- %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1350 +#, c-format +msgid "Joined '%s' to realm '%s'\n" +msgstr "" + +#: ../../utils/net_ads.c:1353 +#, c-format +msgid "Joined '%s' to domain '%s'\n" +msgstr "" + +#: ../../utils/net_ads.c:1377 ../../utils/net_ads.c:1433 +msgid "DNS update failed!\n" +msgstr "" + +#. issue an overall failure message at the end. +#: ../../utils/net_ads.c:1391 ../../utils/net_dom.c:198 +#, c-format +msgid "Failed to join domain: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1414 +msgid "" +"Usage:\n" +"net ads dns register\n" +" Register hostname with DNS\n" +msgstr "" + +#: ../../utils/net_ads.c:1421 +msgid "Could not initialise talloc context\n" +msgstr "" + +#: ../../utils/net_ads.c:1439 +msgid "Successfully registered hostname with DNS\n" +msgstr "" + +#: ../../utils/net_ads.c:1447 +msgid "DNS update support not enabled at compile time!\n" +msgstr "" + +#: ../../utils/net_ads.c:1466 +msgid "" +"Usage:\n" +"net ads dns gethostbyname \n" +" Look up hostname from the AD\n" +" server\tName server to use\n" +" name\tName to look up\n" +msgstr "" + +#: ../../utils/net_ads.c:1476 +#, c-format +msgid "do_gethostbyname returned %d\n" +msgstr "" + +#: ../../utils/net_ads.c:1488 +msgid "Add host dns entry to AD" +msgstr "" + +#: ../../utils/net_ads.c:1489 +msgid "" +"net ads dns register\n" +" Add host dns entry to AD" +msgstr "" + +#: ../../utils/net_ads.c:1496 +msgid "Look up host" +msgstr "" + +#: ../../utils/net_ads.c:1497 +msgid "" +"net ads dns gethostbyname\n" +" Look up host" +msgstr "" + +#: ../../utils/net_ads.c:1512 +msgid "" +"\n" +"net ads printer search \n" +"\tsearch for a printer in the directory\n" +"\n" +"net ads printer info \n" +"\tlookup info in directory for printer on server\n" +"\t(note: printer defaults to \"*\", server defaults to local)\n" +"\n" +"net ads printer publish \n" +"\tpublish printer in directory\n" +"\t(note: printer name is required)\n" +"\n" +"net ads printer remove \n" +"\tremove printer from directory\n" +"\t(note: printer name is required)\n" +msgstr "" + +#: ../../utils/net_ads.c:1536 +msgid "" +"Usage:\n" +"net ads printer search\n" +" List printers in the AD\n" +msgstr "" + +#: ../../utils/net_ads.c:1549 +#, c-format +msgid "ads_find_printer: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1556 +msgid "No results found\n" +msgstr "" + +#: ../../utils/net_ads.c:1576 +msgid "" +"Usage:\n" +"net ads printer info [printername [servername]]\n" +" Display printer info from AD\n" +" printername\tPrinter name or wildcard\n" +" servername\tName of the print server\n" +msgstr "" + +#: ../../utils/net_ads.c:1603 +#, c-format +msgid "Server '%s' not found: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1611 ../../utils/net_ads.c:1794 +#, c-format +msgid "Printer '%s' not found\n" +msgstr "" + +#: ../../utils/net_ads.c:1640 +msgid "" +"Usage:\n" +"net ads printer publish [servername]\n" +" Publish printer in AD\n" +" printername\tName of the printer\n" +" servername\tName of the print server\n" +msgstr "" + +#: ../../utils/net_ads.c:1675 +#, c-format +msgid "Unable to open a connnection to %s to obtain data for %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1688 +#, c-format +msgid "Could not find machine account for server %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1704 ../../utils/net_ads.c:1713 +msgid "Internal error, out of memory!" +msgstr "" + +#: ../../utils/net_ads.c:1724 +#, c-format +msgid "Unable to open a connnection to the spoolss pipe on %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1766 +msgid "" +"Usage:\n" +"net ads printer remove [servername]\n" +" Remove a printer from the AD\n" +" printername\tName of the printer\n" +" servername\tName of the print server\n" +msgstr "" + +#: ../../utils/net_ads.c:1787 +#, c-format +msgid "ads_find_printer_on_server: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1806 +#, c-format +msgid "ads_del_dn: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1822 +msgid "Search for a printer" +msgstr "" + +#: ../../utils/net_ads.c:1823 +msgid "" +"net ads printer search\n" +" Search for a printer" +msgstr "" + +#: ../../utils/net_ads.c:1830 +msgid "Display printer information" +msgstr "" + +#: ../../utils/net_ads.c:1831 +msgid "" +"net ads printer info\n" +" Display printer information" +msgstr "" + +#: ../../utils/net_ads.c:1838 +msgid "Publish a printer" +msgstr "" + +#: ../../utils/net_ads.c:1839 +msgid "" +"net ads printer publish\n" +" Publish a printer" +msgstr "" + +#: ../../utils/net_ads.c:1846 +msgid "Delete a printer" +msgstr "" + +#: ../../utils/net_ads.c:1847 +msgid "" +"net ads printer remove\n" +" Delete a printer" +msgstr "" + +#: ../../utils/net_ads.c:1869 +msgid "" +"Usage:\n" +"net ads password \n" +" Change password for user\n" +" username\tName of user to change password for\n" +msgstr "" + +#: ../../utils/net_ads.c:1877 +msgid "You must supply an administrator username/password\n" +msgstr "" + +#: ../../utils/net_ads.c:1883 +msgid "ERROR: You must say which username to change password for\n" +msgstr "" + +#: ../../utils/net_ads.c:1915 +msgid "Didn't find the kerberos server!\n" +msgstr "" + +#: ../../utils/net_ads.c:1923 ../../utils/net_rpc.c:756 +#, fuzzy, c-format +msgid "Enter new password for %s:" +msgstr "Bitte Maschinenpasswort eingeben: " + +#: ../../utils/net_ads.c:1933 ../../utils/net_ads.c:1982 +#, c-format +msgid "Password change failed: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1938 +#, c-format +msgid "Password change for %s completed.\n" +msgstr "" + +#: ../../utils/net_ads.c:1952 +msgid "" +"Usage:\n" +"net ads changetrustpw\n" +" Change the machine account's trust password\n" +msgstr "" + +#: ../../utils/net_ads.c:1977 +#, c-format +msgid "Changing password for principal: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:1988 +#, c-format +msgid "Password change for principal %s succeeded.\n" +msgstr "" + +#: ../../utils/net_ads.c:1991 +msgid "Attempting to update system keytab with new password.\n" +msgstr "" + +#: ../../utils/net_ads.c:1993 +msgid "Failed to update system keytab.\n" +msgstr "" + +#: ../../utils/net_ads.c:2009 +msgid "" +"\n" +"net ads search \n" +"\n" +"Perform a raw LDAP search on a ADS server and dump the results.\n" +"The expression is a standard LDAP search expression, and the\n" +"attributes are a list of LDAP fields to show in the results.\n" +"\n" +"Example: net ads search '(objectCategory=group)' sAMAccountName\n" +"\n" +msgstr "" + +#: ../../utils/net_ads.c:2046 ../../utils/net_ads.c:2107 ../../utils/net_ads.c:2171 ../../utils/net_ads_gpo.c:250 +#, c-format +msgid "search failed: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:2051 ../../utils/net_ads.c:2176 ../../utils/net_ads_gpo.c:256 +#, c-format +msgid "" +"Got %d replies\n" +"\n" +msgstr "" + +#: ../../utils/net_ads.c:2069 +msgid "" +"\n" +"net ads dn \n" +"\n" +"perform a raw LDAP search on a ADS server and dump the results\n" +"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n" +"to show in the results\n" +"\n" +"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n" +"\n" +"Note: the DN must be provided properly escaped. See RFC 4514 for details\n" +"\n" +msgstr "" + +#: ../../utils/net_ads.c:2129 +msgid "" +"\n" +"net ads sid \n" +"\n" +"perform a raw LDAP search on a ADS server and dump the results\n" +"The SID is in string format, and the attributes are a list of LDAP fields \n" +"to show in the results\n" +"\n" +"Example: net ads sid 'S-1-5-32' distinguishedName\n" +"\n" +msgstr "" + +#: ../../utils/net_ads.c:2164 +msgid "could not convert sid\n" +msgstr "" + +#: ../../utils/net_ads.c:2193 +msgid "" +"Usage:\n" +"net ads keytab flush\n" +" Delete the whole keytab\n" +msgstr "" + +#: ../../utils/net_ads.c:2214 +msgid "" +"Usage:\n" +"net ads keytab add [principal ...]\n" +" Add principals to local keytab\n" +" principal\tKerberos principal to add to keytab\n" +msgstr "" + +#: ../../utils/net_ads.c:2222 +msgid "Processing principals to add...\n" +msgstr "" + +#: ../../utils/net_ads.c:2239 +msgid "" +"Usage:\n" +"net ads keytab create\n" +" Create new default keytab\n" +msgstr "" + +#: ../../utils/net_ads.c:2258 +msgid "" +"Usage:\n" +"net ads keytab list [keytab]\n" +" List a local keytab\n" +" keytab\tKeytab to list\n" +msgstr "" + +#: ../../utils/net_ads.c:2280 +msgid "Add a service principal" +msgstr "" + +#: ../../utils/net_ads.c:2281 +msgid "" +"net ads keytab add\n" +" Add a service principal" +msgstr "" + +#: ../../utils/net_ads.c:2288 +msgid "Create a fresh keytab" +msgstr "" + +#: ../../utils/net_ads.c:2289 +msgid "" +"net ads keytab create\n" +" Create a fresh keytab" +msgstr "" + +#: ../../utils/net_ads.c:2296 +msgid "Remove all keytab entries" +msgstr "" + +#: ../../utils/net_ads.c:2297 +msgid "" +"net ads keytab flush\n" +" Remove all keytab entries" +msgstr "" + +#: ../../utils/net_ads.c:2304 +msgid "List a keytab" +msgstr "" + +#: ../../utils/net_ads.c:2305 +msgid "" +"net ads keytab list\n" +" List a keytab" +msgstr "" + +#: ../../utils/net_ads.c:2312 +msgid "" +"\n" +"Warning: \"kerberos method\" must be set to a keytab method to use keytab functions.\n" +msgstr "" + +#: ../../utils/net_ads.c:2324 +msgid "" +"Usage:\n" +"net ads kerberos renew\n" +" Renew TGT from existing credential cache\n" +msgstr "" + +#: ../../utils/net_ads.c:2332 +#, c-format +msgid "failed to renew kerberos ticket: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:2347 +msgid "" +"Usage:\n" +"net ads kerberos pac\n" +" Dump the Kerberos PAC\n" +msgstr "" + +#: ../../utils/net_ads.c:2372 +#, c-format +msgid "failed to query kerberos PAC: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:2381 +#, c-format +msgid "The Pac: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:2397 +msgid "" +"Usage:\n" +"net ads kerberos kinit\n" +" Get Ticket Granting Ticket (TGT) for the user\n" +msgstr "" + +#: ../../utils/net_ads.c:2421 +#, c-format +msgid "failed to kinit password: %s\n" +msgstr "" + +#: ../../utils/net_ads.c:2435 +msgid "Retrieve Ticket Granting Ticket (TGT)" +msgstr "" + +#: ../../utils/net_ads.c:2436 +msgid "" +"net ads kerberos kinit\n" +" Receive Ticket Granting Ticket (TGT)" +msgstr "" + +#: ../../utils/net_ads.c:2443 +msgid "Renew Ticket Granting Ticket from credential cache" +msgstr "" + +#: ../../utils/net_ads.c:2444 +msgid "" +"net ads kerberos renew\n" +" Renew Ticket Granting Ticket (TGT) from credential cache" +msgstr "" + +#: ../../utils/net_ads.c:2452 +msgid "Dump Kerberos PAC" +msgstr "" + +#: ../../utils/net_ads.c:2453 +msgid "" +"net ads kerberos pac\n" +" Dump Kerberos PAC" +msgstr "" + +#: ../../utils/net_ads.c:2469 +msgid "Display details on remote ADS server" +msgstr "" + +#: ../../utils/net_ads.c:2470 +msgid "" +"net ads info\n" +" Display details on remote ADS server" +msgstr "" + +#: ../../utils/net_ads.c:2477 +msgid "Join the local machine to ADS realm" +msgstr "" + +#: ../../utils/net_ads.c:2478 +msgid "" +"net ads join\n" +" Join the local machine to ADS realm" +msgstr "" + +#: ../../utils/net_ads.c:2485 +msgid "Validate machine account" +msgstr "" + +#: ../../utils/net_ads.c:2486 +msgid "" +"net ads testjoin\n" +" Validate machine account" +msgstr "" + +#: ../../utils/net_ads.c:2493 +msgid "Remove the local machine from ADS" +msgstr "" + +#: ../../utils/net_ads.c:2494 +msgid "" +"net ads leave\n" +" Remove the local machine from ADS" +msgstr "" + +#: ../../utils/net_ads.c:2501 +msgid "Display machine account details" +msgstr "" + +#: ../../utils/net_ads.c:2502 +msgid "" +"net ads status\n" +" Display machine account details" +msgstr "" + +#: ../../utils/net_ads.c:2509 +msgid "List/modify users" +msgstr "" + +#: ../../utils/net_ads.c:2510 +msgid "" +"net ads user\n" +" List/modify users" +msgstr "" + +#: ../../utils/net_ads.c:2517 +msgid "List/modify groups" +msgstr "" + +#: ../../utils/net_ads.c:2518 +msgid "" +"net ads group\n" +" List/modify groups" +msgstr "" + +#: ../../utils/net_ads.c:2525 +msgid "Issue dynamic DNS update" +msgstr "" + +#: ../../utils/net_ads.c:2526 +msgid "" +"net ads dns\n" +" Issue dynamic DNS update" +msgstr "" + +#: ../../utils/net_ads.c:2533 +msgid "Change user passwords" +msgstr "" + +#: ../../utils/net_ads.c:2534 +msgid "" +"net ads password\n" +" Change user passwords" +msgstr "" + +#: ../../utils/net_ads.c:2541 +#, fuzzy +msgid "Change trust account password" +msgstr "Bitte Maschinenpasswort eingeben: " + +#: ../../utils/net_ads.c:2542 +msgid "" +"net ads changetrustpw\n" +" Change trust account password" +msgstr "" + +#: ../../utils/net_ads.c:2549 +msgid "List/modify printer entries" +msgstr "" + +#: ../../utils/net_ads.c:2550 +msgid "" +"net ads printer\n" +" List/modify printer entries" +msgstr "" + +#: ../../utils/net_ads.c:2557 +msgid "Issue LDAP search using filter" +msgstr "" + +#: ../../utils/net_ads.c:2558 +msgid "" +"net ads search\n" +" Issue LDAP search using filter" +msgstr "" + +#: ../../utils/net_ads.c:2565 +msgid "Issue LDAP search by DN" +msgstr "" + +#: ../../utils/net_ads.c:2566 +msgid "" +"net ads dn\n" +" Issue LDAP search by DN" +msgstr "" + +#: ../../utils/net_ads.c:2573 +msgid "Issue LDAP search by SID" +msgstr "" + +#: ../../utils/net_ads.c:2574 +msgid "" +"net ads sid\n" +" Issue LDAP search by SID" +msgstr "" + +#: ../../utils/net_ads.c:2581 +msgid "Display workgroup name" +msgstr "" + +#: ../../utils/net_ads.c:2582 +msgid "" +"net ads workgroup\n" +" Display the workgroup name" +msgstr "" + +#: ../../utils/net_ads.c:2589 +msgid "Perfom CLDAP query on DC" +msgstr "" + +#: ../../utils/net_ads.c:2590 +msgid "" +"net ads lookup\n" +" Find the ADS DC using CLDAP lookups" +msgstr "" + +#: ../../utils/net_ads.c:2597 +msgid "Manage local keytab file" +msgstr "" + +#: ../../utils/net_ads.c:2598 +msgid "" +"net ads keytab\n" +" Manage local keytab file" +msgstr "" + +#: ../../utils/net_ads.c:2605 +msgid "Manage group policy objects" +msgstr "" + +#: ../../utils/net_ads.c:2606 +msgid "" +"net ads gpo\n" +" Manage group policy objects" +msgstr "" + +#: ../../utils/net_ads.c:2613 +msgid "Manage kerberos keytab" +msgstr "" + +#: ../../utils/net_ads.c:2614 +msgid "" +"net ads kerberos\n" +" Manage kerberos keytab" +msgstr "" + +#: ../../utils/net_ads.c:2627 +msgid "ADS support not compiled in\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:40 +msgid "" +"Usage:\n" +"net ads gpo refresh \n" +" Lists all GPOs assigned to an account and downloads them\n" +" username\tUser to refresh GPOs for\n" +" machinename\tMachine to refresh GPOs for\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:56 +#, c-format +msgid "failed to connect AD server: %s\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:62 +#, c-format +msgid "failed to find samaccount for %s\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:70 +#, c-format +msgid "" +"\n" +"%s: '%s' has dn: '%s'\n" +"\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:71 ../../utils/net_ads_gpo.c:328 +msgid "machine" +msgstr "" + +#: ../../utils/net_ads_gpo.c:71 ../../utils/net_ads_gpo.c:328 +msgid "user" +msgstr "" + +#: ../../utils/net_ads_gpo.c:74 +msgid "* fetching token " +msgstr "" + +#: ../../utils/net_ads_gpo.c:82 ../../utils/net_ads_gpo.c:90 ../../utils/net_ads_gpo.c:102 ../../utils/net_ads_gpo.c:113 ../../utils/net_ads_gpo.c:158 +#, c-format +msgid "failed: %s\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:85 ../../utils/net_ads_gpo.c:94 ../../utils/net_ads_gpo.c:105 ../../utils/net_ads_gpo.c:118 ../../utils/net_ads_gpo.c:163 +msgid "finished\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:87 +msgid "* fetching GPO List " +msgstr "" + +#: ../../utils/net_ads_gpo.c:96 +msgid "* Refreshing Group Policy Data " +msgstr "" + +#: ../../utils/net_ads_gpo.c:107 +msgid "* storing GPO list to registry " +msgstr "" + +#: ../../utils/net_ads_gpo.c:122 +msgid "* dumping GPO list\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:151 +msgid "* re-reading GPO list from registry " +msgstr "" + +#: ../../utils/net_ads_gpo.c:167 +msgid "* dumping GPO list from registry\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:226 +msgid "" +"Usage:\n" +"net ads gpo listall\n" +" List all GPOs on the DC\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:270 +#, c-format +msgid "ads_parse_gpo failed: %s\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:300 +msgid "" +"Usage:\n" +"net ads gpo list \n" +" Lists all GPOs for machine/user\n" +" username\tUser to list GPOs for\n" +" machinename\tMachine to list GPOs for\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:327 +#, c-format +msgid "%s: '%s' has dn: '%s'\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:451 +msgid "" +"Usage:\n" +"net ads gpo linkget \n" +" Lists gPLink of a containter\n" +" container\tContainer to get link for\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:470 +#, c-format +msgid "get link for %s failed: %s\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:492 +msgid "" +"Usage:\n" +"net ads gpo linkadd [options]\n" +" Link a container to a GPO\n" +" linkdn\tContainer to link to a GPO\n" +" gpodn\tGPO to link container to\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:497 +msgid "" +"note: DNs must be provided properly escaped.\n" +"See RFC 4514 for details\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:518 +#, c-format +msgid "link add failed: %s\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:579 +msgid "" +"Usage:\n" +"net ads gpo getgpo \n" +" List speciefied GPO\n" +" gpo\t\tGPO to list\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:603 +#, c-format +msgid "get gpo for [%s] failed: %s\n" +msgstr "" + +#: ../../utils/net_ads_gpo.c:634 +msgid "List specified GPO" +msgstr "" + +#: ../../utils/net_ads_gpo.c:635 +msgid "" +"net ads gpo getgpo\n" +" List specified GPO" +msgstr "" + +#: ../../utils/net_ads_gpo.c:642 +msgid "Link a container to a GPO" +msgstr "" + +#: ../../utils/net_ads_gpo.c:643 +msgid "" +"net ads gpo linkadd\n" +" Link a container to a GPO" +msgstr "" + +#: ../../utils/net_ads_gpo.c:660 +msgid "Lists gPLink of containter" +msgstr "" + +#: ../../utils/net_ads_gpo.c:661 +msgid "" +"net ads gpo linkget\n" +" Lists gPLink of containter" +msgstr "" + +#: ../../utils/net_ads_gpo.c:668 +msgid "Lists all GPOs for machine/user" +msgstr "" + +#: ../../utils/net_ads_gpo.c:669 +msgid "" +"net ads gpo list\n" +" Lists all GPOs for machine/user" +msgstr "" + +#: ../../utils/net_ads_gpo.c:676 +msgid "Lists all GPOs on a DC" +msgstr "" + +#: ../../utils/net_ads_gpo.c:677 +msgid "" +"net ads gpo listall\n" +" Lists all GPOs on a DC" +msgstr "" + +#: ../../utils/net_ads_gpo.c:684 +msgid "Lists all GPOs assigned to an account and downloads them" +msgstr "" + +#: ../../utils/net_ads_gpo.c:686 +msgid "" +"net ads gpo refresh\n" +" Lists all GPOs assigned to an account and downloads them" +msgstr "" + +#: ../../utils/net_afs.c:25 +msgid "" +" net afs key filename\n" +"\tImports a OpenAFS KeyFile into our secrets.tdb\n" +"\n" +msgstr "" + +#: ../../utils/net_afs.c:27 +msgid "" +" net afs impersonate \n" +"\tCreates a token for user@cell\n" +"\n" +msgstr "" + +#: ../../utils/net_afs.c:38 +msgid "usage: 'net afs key cell'\n" +msgstr "" + +#: ../../utils/net_afs.c:43 +msgid "Could not open secrets.tdb\n" +msgstr "" + +#: ../../utils/net_afs.c:48 +#, c-format +msgid "Could not open %s\n" +msgstr "" + +#: ../../utils/net_afs.c:53 +msgid "Could not read keyfile\n" +msgstr "" + +#: ../../utils/net_afs.c:58 +msgid "Could not write keyfile to secrets.tdb\n" +msgstr "" + +#: ../../utils/net_afs.c:71 +#, c-format +msgid "Usage: net afs impersonate \n" +msgstr "" + +#: ../../utils/net_afs.c:78 +#, c-format +msgid "Could not create token\n" +msgstr "" + +#: ../../utils/net_afs.c:83 +#, c-format +msgid "Could not set token into kernel\n" +msgstr "" + +#: ../../utils/net_afs.c:87 +#, c-format +msgid "Success: %s@%s\n" +msgstr "" + +#: ../../utils/net_afs.c:98 +msgid "Import an OpenAFS keyfile" +msgstr "" + +#: ../../utils/net_afs.c:99 +msgid "" +"net afs key \n" +" Import kefile from ." +msgstr "" + +#: ../../utils/net_afs.c:106 +msgid "Get a user token" +msgstr "" + +#: ../../utils/net_afs.c:107 +msgid "" +"net afs impersonate \n" +" Create token for user@cell" +msgstr "" + +#: ../../utils/net_cache.c:74 +#, c-format +msgid "Key: %s\t Timeout: %s\t Value: %s %s\n" +msgstr "" + +#: ../../utils/net_cache.c:75 +msgid "(expired)" +msgstr "" + +#: ../../utils/net_cache.c:84 +#, c-format +msgid "Couldn't delete entry! key = %s\n" +msgstr "" + +#: ../../utils/net_cache.c:158 +msgid "" +"\n" +"Usage:\n" +"net cache add \n" +msgstr "" + +#: ../../utils/net_cache.c:170 +msgid "Invalid timeout argument.\n" +msgstr "" + +#: ../../utils/net_cache.c:175 +msgid "New cache entry stored successfully.\n" +msgstr "" + +#: ../../utils/net_cache.c:179 +msgid "Entry couldn't be added. Perhaps there's already such a key.\n" +msgstr "" + +#: ../../utils/net_cache.c:195 +msgid "" +"\n" +"Usage: net cache del \n" +msgstr "" + +#: ../../utils/net_cache.c:200 +msgid "Entry deleted.\n" +msgstr "" + +#: ../../utils/net_cache.c:204 +msgid "Couldn't delete specified entry\n" +msgstr "" + +#: ../../utils/net_cache.c:223 +msgid "" +"\n" +"Usage: net cache get \n" +msgstr "" + +#: ../../utils/net_cache.c:233 +msgid "Failed to find entry\n" +msgstr "" + +#: ../../utils/net_cache.c:250 +msgid "Usage: net cache search \n" +msgstr "" + +#: ../../utils/net_cache.c:272 +msgid "" +"Usage:\n" +"net cache list\n" +" List all cache entries.\n" +msgstr "" + +#: ../../utils/net_cache.c:293 ../../utils/net_cache.c:306 +msgid "" +"Usage:\n" +"net cache flush\n" +" Delete all cache entries.\n" +msgstr "" + +#: ../../utils/net_cache.c:331 +msgid "Add new cache entry" +msgstr "" + +#: ../../utils/net_cache.c:332 +msgid "" +"net cache add \n" +" Add new cache entry.\n" +" key string\tKey string to add cache data under.\n" +" data string\tData to store under given key.\n" +" timeout\tTimeout for cache data." +msgstr "" + +#: ../../utils/net_cache.c:342 +msgid "Delete existing cache entry by key" +msgstr "" + +#: ../../utils/net_cache.c:343 +msgid "" +"net cache del \n" +" Delete existing cache entry by key.\n" +" key string\tKey string to delete." +msgstr "" + +#: ../../utils/net_cache.c:351 +msgid "Get cache entry by key" +msgstr "" + +#: ../../utils/net_cache.c:352 +msgid "" +"net cache get \n" +" Get cache entry by key.\n" +" key string\tKey string to look up cache entry for." +msgstr "" + +#: ../../utils/net_cache.c:361 +msgid "Search entry by pattern" +msgstr "" + +#: ../../utils/net_cache.c:362 +msgid "" +"net cache search \n" +" Search entry by pattern.\n" +" pattern\tPattern to search for in cache." +msgstr "" + +#: ../../utils/net_cache.c:370 +msgid "List all cache entries" +msgstr "" + +#: ../../utils/net_cache.c:371 +msgid "" +"net cache list\n" +" List all cache entries" +msgstr "" + +#: ../../utils/net_cache.c:378 +msgid "Delete all cache entries" +msgstr "" + +#: ../../utils/net_cache.c:379 +msgid "" +"net cache flush\n" +" Delete all cache entries" +msgstr "" + +#: ../../utils/net_cache.c:386 +msgid "Move transient cache content to stable storage" +msgstr "" + +#: ../../utils/net_cache.c:387 +msgid "" +"net cache stabilize\n" +" Move transient cache content to stable storage" +msgstr "" + +#: ../../utils/net_conf.c:42 +msgid "USAGE: net conf list\n" +msgstr "" + +#: ../../utils/net_conf.c:49 +msgid "" +"USAGE: net conf import [--test|-T] []\n" +"\t[--test|-T] testmode - do not act, just print what would be done\n" +"\t only import service , ignore the rest\n" +msgstr "" + +#: ../../utils/net_conf.c:61 +msgid "USAGE: net conf listshares\n" +msgstr "" + +#: ../../utils/net_conf.c:68 +msgid "USAGE: net conf drop\n" +msgstr "" + +#: ../../utils/net_conf.c:75 +msgid "USAGE: net conf showshare \n" +msgstr "" + +#: ../../utils/net_conf.c:82 +msgid "" +"USAGE: net conf addshare [writeable={y|N} [guest_ok={y|N} []]\n" +"\t the new share name.\n" +"\t the path on the filesystem to export.\n" +"\twriteable={y|N} set \"writeable to \"yes\" or \"no\" (default) on this share.\n" +"\tguest_ok={y|N} set \"guest ok\" to \"yes\" or \"no\" (default) on this share.\n" +"\t optional comment for the new share.\n" +msgstr "" + +#: ../../utils/net_conf.c:97 +msgid "USAGE: net conf delshare \n" +msgstr "" + +#: ../../utils/net_conf.c:104 +msgid "USAGE: net conf setparm
\n" +msgstr "" + +#: ../../utils/net_conf.c:111 +msgid "USAGE: net conf getparm
\n" +msgstr "" + +#: ../../utils/net_conf.c:118 +msgid "USAGE: net conf delparm
\n" +msgstr "" + +#: ../../utils/net_conf.c:125 +msgid "USAGE: net conf getincludes
\n" +msgstr "" + +#: ../../utils/net_conf.c:132 +msgid "USAGE: net conf setincludes
[]*\n" +msgstr "" + +#: ../../utils/net_conf.c:139 +msgid "USAGE: net conf delincludes
\n" +msgstr "" + +#: ../../utils/net_conf.c:251 +#, c-format +msgid "Error getting config: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:305 ../../utils/net_conf.c:318 ../../utils/net_conf.c:614 ../../utils/net_conf.c:742 ../../utils/net_conf.c:780 ../../utils/net_conf.c:786 ../../utils/net_conf.c:860 ../../utils/net_conf.c:866 ../../utils/net_conf.c:916 +#: ../../utils/net_conf.c:970 ../../utils/net_conf.c:1010 ../../utils/net_conf.c:1050 +msgid "error: out of memory!\n" +msgstr "" + +#: ../../utils/net_conf.c:324 +#, c-format +msgid "error loading file '%s': %s\n" +msgstr "" + +#: ../../utils/net_conf.c:330 +msgid "" +"\n" +"TEST MODE - would import the following configuration:\n" +"\n" +msgstr "" + +#: ../../utils/net_conf.c:346 ../../utils/net_conf.c:382 ../../utils/net_conf.c:407 ../../utils/net_conf.c:793 +#, c-format +msgid "error starting transaction: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:400 ../../utils/net_conf.c:416 ../../utils/net_conf.c:817 +#, c-format +msgid "error committing transaction: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:427 ../../utils/net_conf.c:828 +#, c-format +msgid "error cancelling transaction: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:484 +#, c-format +msgid "Error deleting configuration: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:521 +#, c-format +msgid "error getting share parameters: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:630 +#, c-format +msgid "ERROR: share name %s contains invalid characters (any of %s)\n" +msgstr "" + +#: ../../utils/net_conf.c:638 +msgid "ERROR: 'global' is not a valid share name.\n" +msgstr "" + +#: ../../utils/net_conf.c:643 +#, c-format +msgid "ERROR: share %s already exists.\n" +msgstr "" + +#: ../../utils/net_conf.c:652 +#, c-format +msgid "Error: path '%s' is not an absolute path.\n" +msgstr "" + +#: ../../utils/net_conf.c:659 +#, c-format +msgid "" +"ERROR: cannot stat path '%s' to ensure this is a directory.\n" +"Error was '%s'.\n" +msgstr "" + +#: ../../utils/net_conf.c:668 +#, c-format +msgid "ERROR: path '%s' is not a directory.\n" +msgstr "" + +#: ../../utils/net_conf.c:679 +#, c-format +msgid "Error creating share %s: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:690 ../../utils/net_conf.c:699 ../../utils/net_conf.c:707 ../../utils/net_conf.c:715 +#, c-format +msgid "Error setting parameter %s: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:748 +#, c-format +msgid "Error deleting share %s: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:801 +#, c-format +msgid "Error creating share '%s': %s\n" +msgstr "" + +#: ../../utils/net_conf.c:810 +#, c-format +msgid "Error setting value '%s': %s\n" +msgstr "" + +#: ../../utils/net_conf.c:874 ../../utils/net_conf.c:930 +#, c-format +msgid "Error: given service '%s' does not exist.\n" +msgstr "" + +#: ../../utils/net_conf.c:879 ../../utils/net_conf.c:935 +#, c-format +msgid "Error: given parameter '%s' is not set.\n" +msgstr "" + +#: ../../utils/net_conf.c:883 +#, c-format +msgid "Error getting value '%s': %s.\n" +msgstr "" + +#: ../../utils/net_conf.c:939 +#, c-format +msgid "Error deleting value '%s': %s.\n" +msgstr "" + +#: ../../utils/net_conf.c:977 +#, c-format +msgid "error getting includes: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:1023 +#, c-format +msgid "error setting includes: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:1056 +#, c-format +msgid "error deleting includes: %s\n" +msgstr "" + +#: ../../utils/net_conf.c:1136 ../../utils/net_help.c:36 ../../utils/net_rap.c:161 ../../utils/net_rap.c:302 ../../utils/net_rap.c:467 ../../utils/net_rap.c:750 ../../utils/net_rap.c:891 ../../utils/net_rap.c:1002 ../../utils/net_rap.c:1193 +#: ../../utils/net_rpc.c:960 +msgid "Usage:\n" +msgstr "" + +#: ../../utils/net_conf.c:1160 +msgid "Dump the complete configuration in smb.conf like format." +msgstr "" + +#: ../../utils/net_conf.c:1162 +msgid "" +"net conf list\n" +" Dump the complete configuration in smb.conf like format." +msgstr "" + +#: ../../utils/net_conf.c:1171 +msgid "Import configuration from file in smb.conf format." +msgstr "" + +#: ../../utils/net_conf.c:1173 +msgid "" +"net conf import\n" +" Import configuration from file in smb.conf format." +msgstr "" + +#: ../../utils/net_conf.c:1181 +msgid "List the share names." +msgstr "" + +#: ../../utils/net_conf.c:1182 +msgid "" +"net conf listshares\n" +" List the share names." +msgstr "" + +#: ../../utils/net_conf.c:1189 +msgid "Delete the complete configuration." +msgstr "" + +#: ../../utils/net_conf.c:1190 +msgid "" +"net conf drop\n" +" Delete the complete configuration." +msgstr "" + +#: ../../utils/net_conf.c:1197 +msgid "Show the definition of a share." +msgstr "" + +#: ../../utils/net_conf.c:1198 +msgid "" +"net conf showshare\n" +" Show the definition of a share." +msgstr "" + +#: ../../utils/net_conf.c:1205 +msgid "Create a new share." +msgstr "" + +#: ../../utils/net_conf.c:1206 +msgid "" +"net conf addshare\n" +" Create a new share." +msgstr "" + +#: ../../utils/net_conf.c:1213 +msgid "Delete a share." +msgstr "" + +#: ../../utils/net_conf.c:1214 +msgid "" +"net conf delshare\n" +" Delete a share." +msgstr "" + +#: ../../utils/net_conf.c:1221 +msgid "Store a parameter." +msgstr "" + +#: ../../utils/net_conf.c:1222 +msgid "" +"net conf setparm\n" +" Store a parameter." +msgstr "" + +#: ../../utils/net_conf.c:1229 +msgid "Retrieve the value of a parameter." +msgstr "" + +#: ../../utils/net_conf.c:1230 +msgid "" +"net conf getparm\n" +" Retrieve the value of a parameter." +msgstr "" + +#: ../../utils/net_conf.c:1237 +msgid "Delete a parameter." +msgstr "" + +#: ../../utils/net_conf.c:1238 +msgid "" +"net conf delparm\n" +" Delete a parameter." +msgstr "" + +#: ../../utils/net_conf.c:1245 +msgid "Show the includes of a share definition." +msgstr "" + +#: ../../utils/net_conf.c:1246 +msgid "" +"net conf getincludes\n" +" Show the includes of a share definition." +msgstr "" + +#: ../../utils/net_conf.c:1253 +msgid "Set includes for a share." +msgstr "" + +#: ../../utils/net_conf.c:1254 +msgid "" +"net conf setincludes\n" +" Set includes for a share." +msgstr "" + +#: ../../utils/net_conf.c:1261 +msgid "Delete includes from a share definition." +msgstr "" + +#: ../../utils/net_conf.c:1262 +msgid "" +"net conf setincludes\n" +" Delete includes from a share definition." +msgstr "" + +#: ../../utils/net_dom.c:25 +msgid "" +"usage: net dom join \n" +" Join a remote machine\n" +msgstr "" + +#: ../../utils/net_dom.c:28 +msgid "" +"usage: net dom unjoin \n" +" Unjoin a remote machine\n" +msgstr "" + +#: ../../utils/net_dom.c:31 +msgid "" +"usage: net dom renamecomputer \n" +" Rename joined computer\n" +msgstr "" + +#: ../../utils/net_dom.c:91 +#, c-format +msgid "Failed to unjoin domain: %s\n" +msgstr "" + +#: ../../utils/net_dom.c:97 ../../utils/net_dom.c:204 +msgid "Shutting down due to a domain membership change" +msgstr "" + +#: ../../utils/net_dom.c:290 +#, c-format +msgid "Failed to rename machine: " +msgstr "" + +#: ../../utils/net_dom.c:292 +#, c-format +msgid "Computer is not joined to a Domain\n" +msgstr "" + +#: ../../utils/net_dom.c:301 +msgid "Shutting down due to a computer rename" +msgstr "" + +#: ../../utils/net_dom.c:338 +msgid "Join a remote machine" +msgstr "" + +#: ../../utils/net_dom.c:339 +msgid "" +"net dom join \n" +" Join a remote machine" +msgstr "" + +#: ../../utils/net_dom.c:347 +msgid "Unjoin a remote machine" +msgstr "" + +#: ../../utils/net_dom.c:348 +msgid "" +"net dom unjoin \n" +" Unjoin a remote machine" +msgstr "" + +#: ../../utils/net_dom.c:356 +msgid "Rename a computer that is joined to a domain" +msgstr "" + +#: ../../utils/net_dom.c:357 +msgid "" +"net dom renamecomputer \n" +" Rename joined computer" +msgstr "" + +#: ../../utils/net_eventlog.c:46 +msgid "usage: net eventlog dump \n" +msgstr "" + +#: ../../utils/net_eventlog.c:52 ../../utils/net_eventlog.c:108 +#, c-format +msgid "failed to load evt file: %s\n" +msgstr "" + +#: ../../utils/net_eventlog.c:59 ../../utils/net_eventlog.c:129 +#, c-format +msgid "evt pull failed: %s\n" +msgstr "" + +#: ../../utils/net_eventlog.c:102 +msgid "usage: net eventlog import \n" +msgstr "" + +#: ../../utils/net_eventlog.c:116 +#, c-format +msgid "evt header pull failed: %s\n" +msgstr "" + +#: ../../utils/net_eventlog.c:122 +msgid "input file is wrapped, cannot proceed\n" +msgstr "" + +#: ../../utils/net_eventlog.c:138 ../../utils/net_eventlog.c:203 +#, c-format +msgid "can't open the eventlog TDB (%s)\n" +msgstr "" + +#: ../../utils/net_eventlog.c:158 +#, c-format +msgid "can't write to the eventlog: %s\n" +msgstr "" + +#: ../../utils/net_eventlog.c:164 +#, c-format +msgid "wrote %d entries to tdb\n" +msgstr "" + +#: ../../utils/net_eventlog.c:197 +msgid "usage: net eventlog export \n" +msgstr "" + +#: ../../utils/net_eventlog.c:214 +#, c-format +msgid "failed to save evt file: %s\n" +msgstr "" + +#: ../../utils/net_eventlog.c:243 +msgid "Dump eventlog" +msgstr "" + +#: ../../utils/net_eventlog.c:244 +msgid "" +"net eventlog dump\n" +" Dump win32 *.evt eventlog file" +msgstr "" + +#: ../../utils/net_eventlog.c:251 +msgid "Import eventlog" +msgstr "" + +#: ../../utils/net_eventlog.c:252 +msgid "" +"net eventlog import\n" +" Import win32 *.evt eventlog file" +msgstr "" + +#: ../../utils/net_eventlog.c:259 +msgid "Export eventlog" +msgstr "" + +#: ../../utils/net_eventlog.c:260 +msgid "" +"net eventlog export\n" +" Export win32 *.evt eventlog file" +msgstr "" + +#: ../../utils/net_file.c:27 +msgid "" +"net [] file [misc. options] [targets]\n" +"\tlists all open files on file server\n" +msgstr "" + +#: ../../utils/net_file.c:29 +msgid "" +"net [] file USER [misc. options] [targets]\n" +"\tlists all files opened by username on file server\n" +msgstr "" + +#: ../../utils/net_file.c:32 +msgid "" +"net [] file CLOSE [misc. options] [targets]\n" +"\tcloses specified file on target server\n" +msgstr "" + +#: ../../utils/net_file.c:34 +msgid "" +"net [rap] file INFO [misc. options] [targets]\n" +"\tdisplays information about the specified open file\n" +msgstr "" + +#: ../../utils/net_group.c:27 +msgid "" +"net [] group [misc. options] [targets]\n" +"\tList user groups\n" +"\n" +msgstr "" + +#: ../../utils/net_group.c:29 +msgid "" +"net rpc group LIST [global|local|builtin]* [misc. options]\n" +"\tList specific user groups\n" +"\n" +msgstr "" + +#: ../../utils/net_group.c:31 +msgid "" +"net [] group DELETE [misc. options] [targets]\n" +"\tDelete specified group\n" +msgstr "" + +#: ../../utils/net_group.c:34 +msgid "" +"\n" +"net [] group ADD [-C comment] [-c container] [misc. options] [targets]\n" +"\tCreate specified group\n" +msgstr "" + +#: ../../utils/net_group.c:37 +msgid "" +"\n" +"net rpc group MEMBERS \n" +"\tList Group Members\n" +"\n" +msgstr "" + +#: ../../utils/net_group.c:38 +msgid "" +"\n" +"net rpc group ADDMEM \n" +"\tAdd Group Members\n" +"\n" +msgstr "" + +#: ../../utils/net_group.c:40 +msgid "" +"\n" +"net rpc group DELMEM \n" +"\tDelete Group Members\n" +"\n" +msgstr "" + +#: ../../utils/net_group.c:44 +msgid "\t-C or --comment=\tdescriptive comment (for add only)\n" +msgstr "" + +#: ../../utils/net_group.c:46 +msgid "\t-c or --container=\tLDAP container, defaults to cn=Users (for add in ADS only)\n" +msgstr "" + +#: ../../utils/net_group.c:48 +msgid "\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n" +msgstr "" + +#: ../../utils/net_groupmap.c:38 +#, c-format +msgid "NT Group %s doesn't exist in mapping DB\n" +msgstr "" + +#: ../../utils/net_groupmap.c:46 +#, c-format +msgid "converting sid %s from a string failed!\n" +msgstr "" + +#: ../../utils/net_groupmap.c:65 +#, c-format +msgid "\tSID : %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:66 +#, c-format +msgid "\tUnix gid : %u\n" +msgstr "" + +#: ../../utils/net_groupmap.c:67 +#, c-format +msgid "\tUnix group: %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:68 +#, c-format +msgid "\tGroup type: %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:70 +#, c-format +msgid "\tComment : %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:84 +msgid "" +"net groupmap list [verbose] [ntgroup=NT group] [sid=SID]\n" +" verbose\tPrint verbose list\n" +" ntgroup\tNT group to list\n" +" sid\tSID of group to list" +msgstr "" + +#: ../../utils/net_groupmap.c:91 ../../utils/net_groupmap.c:271 ../../utils/net_groupmap.c:356 ../../utils/net_groupmap.c:412 ../../utils/net_groupmap.c:495 ../../utils/net_groupmap.c:522 +#, c-format +msgid "" +"Usage:\n" +"%s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:106 ../../utils/net_groupmap.c:213 ../../utils/net_groupmap.c:220 ../../utils/net_groupmap.c:365 ../../utils/net_groupmap.c:372 ../../utils/net_groupmap.c:504 +msgid "must supply a name\n" +msgstr "" + +#: ../../utils/net_groupmap.c:113 ../../utils/net_groupmap.c:227 ../../utils/net_groupmap.c:511 +msgid "must supply a SID\n" +msgstr "" + +#: ../../utils/net_groupmap.c:118 ../../utils/net_groupmap.c:265 ../../utils/net_groupmap.c:406 ../../utils/net_groupmap.c:516 +#, fuzzy, c-format +msgid "Bad option: %s\n" +msgstr "" +"\n" +"Ungültige Option %s: %s\n" + +#: ../../utils/net_groupmap.c:139 +msgid "Failure to local group SID in the database\n" +msgstr "" + +#: ../../utils/net_groupmap.c:181 +msgid "net groupmap add {rid=|sid=} unixgroup= [type=] [ntgroup=] [comment=]" +msgstr "" + +#: ../../utils/net_groupmap.c:195 +#, c-format +msgid "" +"Usage\n" +"%s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:205 +#, c-format +msgid "RID must be greater than %d\n" +msgstr "" + +#: ../../utils/net_groupmap.c:235 ../../utils/net_groupmap.c:380 +msgid "must supply a comment string\n" +msgstr "" + +#: ../../utils/net_groupmap.c:259 +#, c-format +msgid "unknown group type %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:276 +#, c-format +msgid "Can't lookup UNIX group %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:282 +#, c-format +msgid "Unix group %s already mapped to SID %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:289 +msgid "No rid or sid specified, choosing a RID\n" +msgstr "" + +#: ../../utils/net_groupmap.c:292 +msgid "Could not get new RID\n" +msgstr "" + +#: ../../utils/net_groupmap.c:297 +#, c-format +msgid "Got RID %d\n" +msgstr "" + +#: ../../utils/net_groupmap.c:328 +#, c-format +msgid "adding entry for group %s failed!\n" +msgstr "" + +#: ../../utils/net_groupmap.c:332 +#, c-format +msgid "Successfully added group %s to the mapping db as a %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:349 +msgid "net groupmap modify {ntgroup=|sid=} [comment=] [unixgroup=] [type=]" +msgstr "" + +#: ../../utils/net_groupmap.c:388 +msgid "must supply a group name\n" +msgstr "" + +#: ../../utils/net_groupmap.c:434 +msgid "Failed to find local group SID in the database\n" +msgstr "" + +#: ../../utils/net_groupmap.c:443 +msgid "Can't map to an unknown group type.\n" +msgstr "" + +#: ../../utils/net_groupmap.c:449 +msgid "You can only change between domain and local groups.\n" +msgstr "" + +#: ../../utils/net_groupmap.c:466 +#, c-format +msgid "Unable to lookup UNIX group %s. Make sure the group exists.\n" +msgstr "" + +#: ../../utils/net_groupmap.c:476 +msgid "Could not update group database\n" +msgstr "" + +#: ../../utils/net_groupmap.c:480 +#, c-format +msgid "Updated mapping entry for %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:491 +msgid "net groupmap delete {ntgroup=|sid=}" +msgstr "" + +#: ../../utils/net_groupmap.c:532 +#, c-format +msgid "Unable to resolve group %s to a SID\n" +msgstr "" + +#: ../../utils/net_groupmap.c:539 +#, c-format +msgid "Failed to remove group %s from the mapping db!\n" +msgstr "" + +#: ../../utils/net_groupmap.c:544 +#, c-format +msgid "Sucessfully removed %s from the mapping db\n" +msgstr "" + +#: ../../utils/net_groupmap.c:557 +msgid "Usage: net groupmap set \"NT Group\" [\"unix group\"] [-C \"comment\"] [-L] [-D]\n" +msgstr "" + +#: ../../utils/net_groupmap.c:563 +msgid "Can only specify -L or -D, not both\n" +msgstr "" + +#: ../../utils/net_groupmap.c:573 +#, c-format +msgid "Could not find unix group %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:594 +#, c-format +msgid "Could not find group mapping for %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:605 +msgid "Could not allocate new RID\n" +msgstr "" + +#: ../../utils/net_groupmap.c:622 +#, c-format +msgid "Could not add mapping entry for %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:633 +#, c-format +msgid "Can't change type of the BUILTIN group %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:660 +#, c-format +msgid "Could not update group mapping for %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:674 +msgid "" +"Usage:\n" +"net groupmap cleanup\n" +" Delete all group mappings\n" +msgstr "" + +#: ../../utils/net_groupmap.c:682 +msgid "Could not list group mappings\n" +msgstr "" + +#: ../../utils/net_groupmap.c:689 +#, c-format +msgid "Group %s is not mapped\n" +msgstr "" + +#: ../../utils/net_groupmap.c:692 +#, c-format +msgid "Deleting mapping for NT Group %s, sid %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:712 +msgid "Usage: net groupmap addmem alias-sid member-sid\n" +msgstr "" + +#: ../../utils/net_groupmap.c:717 +#, c-format +msgid "Could not add sid %s to alias %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:733 +msgid "Usage: net groupmap delmem alias-sid member-sid\n" +msgstr "" + +#: ../../utils/net_groupmap.c:738 +#, c-format +msgid "Could not delete sid %s from alias %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:755 +msgid "Usage: net groupmap listmem alias-sid\n" +msgstr "" + +#: ../../utils/net_groupmap.c:764 +#, c-format +msgid "Could not list members for sid %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:791 +#, c-format +msgid "Could not list memberships for sid %s\n" +msgstr "" + +#: ../../utils/net_groupmap.c:814 +msgid "Usage: net groupmap memberof sid\n" +msgstr "" + +#: ../../utils/net_groupmap.c:820 ../../utils/net_idmap.c:345 +msgid "talloc_init failed\n" +msgstr "" + +#: ../../utils/net_groupmap.c:827 +msgid "Could not get domain sid\n" +msgstr "" + +#: ../../utils/net_groupmap.c:850 +msgid "Create a new group mapping" +msgstr "" + +#: ../../utils/net_groupmap.c:851 +msgid "" +"net groupmap add\n" +" Create a new group mapping" +msgstr "" + +#: ../../utils/net_groupmap.c:858 +msgid "Update a group mapping" +msgstr "" + +#: ../../utils/net_groupmap.c:859 +msgid "" +"net groupmap modify\n" +" Modify an existing group mapping" +msgstr "" + +#: ../../utils/net_groupmap.c:866 +msgid "Remove a group mapping" +msgstr "" + +#: ../../utils/net_groupmap.c:867 +msgid "" +"net groupmap delete\n" +" Remove a group mapping" +msgstr "" + +#: ../../utils/net_groupmap.c:874 +msgid "Set group mapping" +msgstr "" + +#: ../../utils/net_groupmap.c:875 +msgid "" +"net groupmap set\n" +" Set a group mapping" +msgstr "" + +#: ../../utils/net_groupmap.c:882 +msgid "Remove foreign group mapping entries" +msgstr "" + +#: ../../utils/net_groupmap.c:883 +msgid "" +"net groupmap cleanup\n" +" Remove foreign group mapping entries" +msgstr "" + +#: ../../utils/net_groupmap.c:890 +msgid "Add a foreign alias member" +msgstr "" + +#: ../../utils/net_groupmap.c:891 +msgid "" +"net groupmap addmem\n" +" Add a foreign alias member" +msgstr "" + +#: ../../utils/net_groupmap.c:898 +msgid "Delete foreign alias member" +msgstr "" + +#: ../../utils/net_groupmap.c:899 +msgid "" +"net groupmap delmem\n" +" Delete foreign alias member" +msgstr "" + +#: ../../utils/net_groupmap.c:906 +msgid "List foreign group members" +msgstr "" + +#: ../../utils/net_groupmap.c:907 +msgid "" +"net groupmap listmem\n" +" List foreign alias members" +msgstr "" + +#: ../../utils/net_groupmap.c:914 +msgid "List foreign group memberships" +msgstr "" + +#: ../../utils/net_groupmap.c:915 +msgid "" +"net groupmap memberships\n" +" List foreign group memberships" +msgstr "" + +#: ../../utils/net_groupmap.c:922 +msgid "List current group map" +msgstr "" + +#: ../../utils/net_groupmap.c:923 +msgid "" +"net groupmap list\n" +" List current group map" +msgstr "" + +#: ../../utils/net_help.c:39 +#, c-format +msgid "net %s usage:\n" +msgstr "" + +#: ../../utils/net_help_common.c:25 ../../utils/net_join.c:28 +msgid "Valid methods: (auto-detected if not specified)\n" +msgstr "" + +#: ../../utils/net_help_common.c:26 ../../utils/net_join.c:29 +msgid "\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n" +msgstr "" + +#: ../../utils/net_help_common.c:27 ../../utils/net_join.c:30 +msgid "\trpc\t\t\t\tDCE-RPC\n" +msgstr "" + +#: ../../utils/net_help_common.c:28 +msgid "\trap\t\t\t\tRAP (older systems)\n" +msgstr "" + +#: ../../utils/net_help_common.c:35 +msgid "Valid targets: choose one (none defaults to localhost)\n" +msgstr "" + +#: ../../utils/net_help_common.c:36 +msgid "\t-S or --server=\t\tserver name\n" +msgstr "" + +#: ../../utils/net_help_common.c:37 +msgid "\t-I or --ipaddress=\taddress of target server\n" +msgstr "" + +#: ../../utils/net_help_common.c:38 +msgid "\t-w or --workgroup=\t\ttarget workgroup or domain\n" +msgstr "" + +#: ../../utils/net_help_common.c:41 +msgid "Valid miscellaneous options are:\n" +msgstr "" + +#. misc options +#: ../../utils/net_help_common.c:42 +msgid "\t-p or --port=\t\tconnection port on target\n" +msgstr "" + +#: ../../utils/net_help_common.c:43 +msgid "\t-W or --myworkgroup=\tclient workgroup\n" +msgstr "" + +#: ../../utils/net_help_common.c:44 +msgid "\t-d or --debuglevel=\tdebug level (0-10)\n" +msgstr "" + +#: ../../utils/net_help_common.c:45 +msgid "\t-n or --myname=\t\tclient name\n" +msgstr "" + +#: ../../utils/net_help_common.c:46 +msgid "\t-U or --user=\t\tuser name\n" +msgstr "" + +#: ../../utils/net_help_common.c:47 +msgid "\t-s or --configfile=\tpathname of smb.conf file\n" +msgstr "" + +#: ../../utils/net_help_common.c:48 +msgid "\t-l or --long\t\t\tDisplay full information\n" +msgstr "" + +#: ../../utils/net_help_common.c:49 +msgid "\t-V or --version\t\t\tPrint samba version information\n" +msgstr "" + +#: ../../utils/net_help_common.c:50 +msgid "\t-P or --machine-pass\t\tAuthenticate as machine account\n" +msgstr "" + +#: ../../utils/net_help_common.c:52 +msgid "\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n" +msgstr "" + +#: ../../utils/net_help_common.c:54 +msgid "\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n" +msgstr "" + +#: ../../utils/net_idmap.c:25 +msgid "Out of memory!\n" +msgstr "" + +#: ../../utils/net_idmap.c:39 +#, c-format +msgid "USER HWM %d\n" +msgstr "" + +#: ../../utils/net_idmap.c:44 +#, c-format +msgid "GROUP HWM %d\n" +msgstr "" + +#: ../../utils/net_idmap.c:63 +msgid "" +"Usage:\n" +"net idmap dump \n" +" Dump current ID mapping.\n" +" inputfile\tTDB file to read mappings from.\n" +msgstr "" + +#: ../../utils/net_idmap.c:73 +#, c-format +msgid "Could not open idmap: %s\n" +msgstr "" + +#: ../../utils/net_idmap.c:94 +msgid "" +"Usage:\n" +"net idmap restore [inputfile]\n" +" Restore ID mappings from file\n" +" inputfile\tFile to load ID mappings from. If not given, load data from stdin.\n" +msgstr "" + +#: ../../utils/net_idmap.c:104 +msgid "To use net idmap Winbindd must be running.\n" +msgstr "" + +#: ../../utils/net_idmap.c:142 +#, c-format +msgid "Could not set USER HWM: %s\n" +msgstr "" + +#: ../../utils/net_idmap.c:151 +#, c-format +msgid "Could not set GROUP HWM: %s\n" +msgstr "" + +#: ../../utils/net_idmap.c:156 +#, c-format +msgid "ignoring invalid line [%s]\n" +msgstr "" + +#: ../../utils/net_idmap.c:163 +#, fuzzy, c-format +msgid "ignoring invalid sid [%s]: %s\n" +msgstr "" +"\n" +"Ungültige Option %s: %s\n" + +#: ../../utils/net_idmap.c:175 +#, c-format +msgid "Could not set mapping of %s %lu to sid %s: %s\n" +msgstr "" + +#: ../../utils/net_idmap.c:196 ../../utils/net_idmap.c:202 +msgid "Not Implemented yet\n" +msgstr "" + +#: ../../utils/net_idmap.c:240 +msgid "" +"Usage:\n" +"net idmap secret {|alloc} \n" +" Set the secret for the specified domain (or alloc module)\n" +" DOMAIN\tDomain to set secret for.\n" +" alloc\tSet secret for the alloc module\n" +" secret\tNew secret to set.\n" +msgstr "" + +#: ../../utils/net_idmap.c:271 +msgid "The only currently supported backend is LDAP\n" +msgstr "" + +#: ../../utils/net_idmap.c:281 +#, c-format +msgid "Missing ldap_user_dn option for domain %s\n" +msgstr "" + +#: ../../utils/net_idmap.c:292 +msgid "Missing ldap_user_dn option for alloc backend\n" +msgstr "" + +#: ../../utils/net_idmap.c:302 +msgid "Failed to store secret\n" +msgstr "" + +#: ../../utils/net_idmap.c:307 +msgid "Secret stored\n" +msgstr "" + +#: ../../utils/net_idmap.c:313 +msgid "" +"net idmap dump \n" +" Dump current id mapping\n" +msgstr "" + +#: ../../utils/net_idmap.c:316 +msgid "" +"net idmap restore\n" +" Restore entries from stdin\n" +msgstr "" + +#. Deliberately *not* document net idmap delete +#: ../../utils/net_idmap.c:321 +msgid "" +"net idmap secret |alloc \n" +" Set the secret for the specified DOMAIN (or the alloc module)\n" +msgstr "" + +#: ../../utils/net_idmap.c:339 +msgid "usage: net idmap aclmapset \n" +msgstr "" + +#: ../../utils/net_idmap.c:351 +#, c-format +msgid "db_open failed: %s\n" +msgstr "" + +#: ../../utils/net_idmap.c:356 ../../utils/net_idmap.c:361 +#, c-format +msgid "%s is not a valid sid\n" +msgstr "" + +#: ../../utils/net_idmap.c:367 +msgid "talloc_strdup failed\n" +msgstr "" + +#: ../../utils/net_idmap.c:373 +msgid "could not fetch db record\n" +msgstr "" + +#: ../../utils/net_idmap.c:381 +#, c-format +msgid "could not store record: %s\n" +msgstr "" + +#: ../../utils/net_idmap.c:402 +msgid "Dump the current ID mappings" +msgstr "" + +#: ../../utils/net_idmap.c:403 +msgid "" +"net idmap dump\n" +" Dump the current ID mappings" +msgstr "" + +#: ../../utils/net_idmap.c:410 +msgid "Restore entries from stdin" +msgstr "" + +#: ../../utils/net_idmap.c:411 +msgid "" +"net idmap restore\n" +" Restore entries from stdin" +msgstr "" + +#: ../../utils/net_idmap.c:418 ../../utils/net_idmap.c:426 +msgid "Not implemented yet" +msgstr "" + +#: ../../utils/net_idmap.c:419 +msgid "" +"net idmap setmap\n" +" Not implemented yet" +msgstr "" + +#: ../../utils/net_idmap.c:427 +msgid "" +"net idmap delete\n" +" Not implemented yet" +msgstr "" + +#: ../../utils/net_idmap.c:434 +msgid "Set secret for specified domain" +msgstr "" + +#: ../../utils/net_idmap.c:435 +msgid "" +"net idmap secret {|alloc} \n" +" Set secret for specified domain or alloc module" +msgstr "" + +#: ../../utils/net_idmap.c:442 +msgid "Set acl map" +msgstr "" + +#: ../../utils/net_idmap.c:443 +msgid "" +"net idmap aclmapset\n" +" Set acl map" +msgstr "" + +#: ../../utils/net_join.c:26 +msgid "" +"\n" +"net [] join [misc. options]\n" +"\tjoins this server to a domain\n" +msgstr "" + +#: ../../utils/net_join.c:47 +msgid "ADS join did not work, falling back to RPC...\n" +msgstr "" + +#: ../../utils/net_lookup.c:25 +msgid "" +" net lookup [host] HOSTNAME[#]\n" +"\tgives IP for a hostname\n" +"\n" +" net lookup ldap [domain]\n" +"\tgives IP of domain's ldap server\n" +"\n" +" net lookup kdc [realm]\n" +"\tgives IP of realm's kerberos KDC\n" +"\n" +" net lookup pdc [domain|realm]\n" +"\tgives IP of realm's kerberos KDC\n" +"\n" +" net lookup dc [domain]\n" +"\tgives IP of domains Domain Controllers\n" +"\n" +" net lookup master [domain|wg]\n" +"\tgive IP of master browser\n" +"\n" +" net lookup name [name]\n" +"\tLookup name's sid and type\n" +"\n" +" net lookup sid [sid]\n" +"\tGive sid's name and type\n" +"\n" +" net lookup dsgetdcname [name] [flags] [sitename]\n" +"\n" +msgstr "" + +#: ../../utils/net_lookup.c:112 +msgid "net_lookup_ldap: talloc_init() failed!\n" +msgstr "" + +#: ../../utils/net_lookup.c:325 +msgid "usage: net lookup name \n" +msgstr "" + +#: ../../utils/net_lookup.c:331 ../../utils/net_lookup.c:358 +#, c-format +msgid "Could not lookup name %s\n" +msgstr "" + +#: ../../utils/net_lookup.c:347 +msgid "usage: net lookup sid \n" +msgstr "" + +#: ../../utils/net_lookup.c:352 +#, c-format +msgid "Could not convert %s to SID\n" +msgstr "" + +#: ../../utils/net_lookup.c:378 +msgid "usage: net lookup dsgetdcname \n" +msgstr "" + +#: ../../utils/net_lookup.c:404 +#, c-format +msgid "failed with: %s\n" +msgstr "" + +#: ../../utils/net_lookup.c:437 +msgid "" +"\n" +"Usage: \n" +msgstr "" + +#: ../../utils/net_lua.c:60 +msgid "connect: Expected IP-Address" +msgstr "" + +#: ../../utils/net_lua.c:65 +msgid "connect: Expected port" +msgstr "" + +#: ../../utils/net_lua.c:84 +#, c-format +msgid "connect failed: %s" +msgstr "" + +#: ../../utils/net_lua.c:132 +#, c-format +msgid "socket domain %s unknown" +msgstr "" + +#: ../../utils/net_lua.c:144 +#, c-format +msgid "socket type %s unknown" +msgstr "" + +#: ../../utils/net_lua.c:155 +#, c-format +msgid "socket() failed: %s" +msgstr "" + +#: ../../utils/net_lua.c:278 +msgid "evt_reference_thread failed\n" +msgstr "" + +#: ../../utils/net_lua.c:287 +msgid "event_add_timed failed" +msgstr "" + +#: ../../utils/net_lua.c:300 +msgid "event_once called from non-base thread" +msgstr "" + +#: ../../utils/net_lua.c:323 +msgid "event_context_init failed" +msgstr "" + +#: ../../utils/net_lua.c:353 +msgid "lua_newstate failed\n" +msgstr "" + +#: ../../utils/net_lua.c:371 +msgid "luaL_dofile returned an error\n" +msgstr "" + +#: ../../utils/net_lua.c:376 +msgid "luaL_dostring returned an error\n" +msgstr "" + +#: ../../utils/net_rap.c:39 +msgid "" +"\n" +"Not implemented\n" +msgstr "" + +#: ../../utils/net_rap.c:61 +#, c-format +msgid "" +"File ID %d\n" +"User name %s\n" +"Locks 0x%-4.2x\n" +"Path %s\n" +"Permissions 0x%x\n" +msgstr "" + +#. list open files +#: ../../utils/net_rap.c:114 +msgid "" +"\n" +"Enumerating open files on remote server:\n" +"\n" +"\n" +"FileId Opened by Perms Locks Path \n" +"------ --------- ----- ----- ---- \n" +msgstr "" + +#: ../../utils/net_rap.c:120 ../../utils/net_rap.c:180 +msgid "" +"\n" +"Operation not supported by server!\n" +"\n" +msgstr "" + +#: ../../utils/net_rap.c:133 +msgid "Close specified file on server" +msgstr "" + +#: ../../utils/net_rap.c:134 +msgid "" +"net rap file close\n" +" Close specified file on server" +msgstr "" + +#: ../../utils/net_rap.c:141 +msgid "List all files opened by username" +msgstr "" + +#: ../../utils/net_rap.c:142 +msgid "" +"net rap file user\n" +" List all files opened by username" +msgstr "" + +#: ../../utils/net_rap.c:149 +msgid "Display info about an opened file" +msgstr "" + +#: ../../utils/net_rap.c:150 +msgid "" +"net rap file info\n" +" Display info about an opened file" +msgstr "" + +#: ../../utils/net_rap.c:162 +msgid "" +"net rap file\n" +" List all open files on rempte server\n" +msgstr "" + +#. list open files +#: ../../utils/net_rap.c:174 +msgid "" +"\n" +"Enumerating open files on remote server:\n" +"\n" +"\n" +"FileId Opened by Perms Locks Path\n" +"------ --------- ----- ----- ----\n" +msgstr "" + +#: ../../utils/net_rap.c:243 +msgid "Server path not specified\n" +msgstr "" + +#: ../../utils/net_rap.c:273 ../../utils/net_rap.c:281 +msgid "Delete a share from server" +msgstr "" + +#: ../../utils/net_rap.c:274 +msgid "" +"net rap share delete\n" +" Delete a share from server" +msgstr "" + +#: ../../utils/net_rap.c:282 +msgid "" +"net rap share close\n" +" Delete a share from server\n" +" Alias for net rap share delete" +msgstr "" + +#: ../../utils/net_rap.c:290 +msgid "Add a share to server" +msgstr "" + +#: ../../utils/net_rap.c:291 +msgid "" +"net rap share add\n" +" Add a share to server" +msgstr "" + +#: ../../utils/net_rap.c:303 +msgid "" +"net rap share\n" +" List all shares on remote server\n" +msgstr "" + +#: ../../utils/net_rap.c:314 +msgid "" +"\n" +"Enumerating shared resources (exports) on remote server:\n" +"\n" +"\n" +"Share name Type Description\n" +"---------- ---- -----------\n" +msgstr "" + +#: ../../utils/net_rap.c:331 +msgid "" +"\n" +"net rap session [misc. options] [targets]\n" +"\tenumerates all active SMB/CIFS sessions on target server\n" +msgstr "" + +#: ../../utils/net_rap.c:334 +msgid "" +"\n" +"net rap session DELETE [misc. options] [targets] \n" +"\tor\n" +"net rap session CLOSE [misc. options] [targets]\n" +"\tDeletes (closes) a session from specified client to server\n" +msgstr "" + +#: ../../utils/net_rap.c:339 +msgid "" +"\n" +"net rap session INFO \n" +"\tEnumerates all open files in specified session\n" +msgstr "" + +#: ../../utils/net_rap.c:369 +#, c-format +msgid "" +"User name %-20.20s\n" +"Computer %-20.20s\n" +"Guest logon %-20.20s\n" +"Client Type %-40.40s\n" +"Sess time %2.2d:%2.2d:%2.2d\n" +"Idle time %2.2d:%2.2d:%2.2d\n" +msgstr "" + +#: ../../utils/net_rap.c:408 +msgid "" +"Share name Type # Opens\n" +"------------------------------------------------------------------------------\n" +msgstr "" + +#: ../../utils/net_rap.c:438 +msgid "Display information about session" +msgstr "" + +#: ../../utils/net_rap.c:439 +msgid "" +"net rap session info\n" +" Display information about session" +msgstr "" + +#: ../../utils/net_rap.c:446 ../../utils/net_rap.c:455 +msgid "Close specified session" +msgstr "" + +#: ../../utils/net_rap.c:447 +msgid "" +"net rap session delete\n" +" Close specified session\n" +" Alias for net rap session close" +msgstr "" + +#: ../../utils/net_rap.c:456 +msgid "" +"net rap session close\n" +" Close specified session" +msgstr "" + +#: ../../utils/net_rap.c:468 +msgid "" +"net rap session\n" +" List all open sessions on remote server\n" +msgstr "" + +#: ../../utils/net_rap.c:478 +msgid "" +"Computer User name Client Type Opens Idle time\n" +"------------------------------------------------------------------------------\n" +msgstr "" + +#: ../../utils/net_rap.c:506 +msgid "" +"Usage:\n" +"net rap server name\n" +" Get the name of the server\n" +msgstr "" + +#: ../../utils/net_rap.c:516 +msgid "cli_get_server_name failed\n" +msgstr "" + +#: ../../utils/net_rap.c:521 +#, c-format +msgid "Server name = %s\n" +msgstr "" + +#: ../../utils/net_rap.c:535 +msgid "" +"Usage:\n" +"net rap server domain\n" +" Enumerate servers in this domain/workgroup\n" +msgstr "" + +#: ../../utils/net_rap.c:544 +msgid "" +"\n" +"Enumerating servers in this domain or workgroup: \n" +"\n" +"\tServer name Server description\n" +"\t------------- ----------------------------\n" +msgstr "" + +#: ../../utils/net_rap.c:561 +msgid "Get the name of the server" +msgstr "" + +#: ../../utils/net_rap.c:562 +msgid "" +"net rap server name\n" +" Get the name of the server" +msgstr "" + +#: ../../utils/net_rap.c:569 +msgid "Get the servers in this domain/workgroup" +msgstr "" + +#: ../../utils/net_rap.c:570 +msgid "" +"net rap server domain\n" +" Get the servers in this domain/workgroup" +msgstr "" + +#: ../../utils/net_rap.c:584 +msgid "" +"net rap domain [misc. options] [target]\n" +"\tlists the domains or workgroups visible on the current network\n" +msgstr "" + +#: ../../utils/net_rap.c:602 +msgid "" +"\n" +"Enumerating domains:\n" +"\n" +"\tDomain name Server name of Browse Master\n" +"\t------------- ----------------------------\n" +msgstr "" + +#: ../../utils/net_rap.c:615 +msgid "" +"net rap printq [misc. options] [targets]\n" +"\tor\n" +"net rap printq info [] [misc. options] [targets]\n" +"\tlists the specified queue and jobs on the target server.\n" +"\tIf the queue name is not specified, all queues are listed.\n" +"\n" +msgstr "" + +#: ../../utils/net_rap.c:621 +msgid "" +"net rap printq delete [] [misc. options] [targets]\n" +"\tdeletes the specified job number on the target server, or the\n" +"\tprinter queue if no job number is specified\n" +msgstr "" + +#: ../../utils/net_rap.c:635 +#, c-format +msgid "%-17.17s Queue %5d jobs " +msgstr "" + +#: ../../utils/net_rap.c:640 +msgid "*Printer Active*\n" +msgstr "" + +#: ../../utils/net_rap.c:643 +msgid "*Printer Paused*\n" +msgstr "" + +#: ../../utils/net_rap.c:646 +msgid "*Printer error*\n" +msgstr "" + +#: ../../utils/net_rap.c:649 +msgid "*Delete Pending*\n" +msgstr "" + +#: ../../utils/net_rap.c:652 ../../utils/net_rap.c:678 +msgid "**UNKNOWN STATUS**\n" +msgstr "" + +#: ../../utils/net_rap.c:666 +msgid "Waiting\n" +msgstr "" + +#: ../../utils/net_rap.c:669 +msgid "Held in queue\n" +msgstr "" + +#: ../../utils/net_rap.c:672 +msgid "Spooling\n" +msgstr "" + +#: ../../utils/net_rap.c:675 +msgid "Printing\n" +msgstr "" + +#: ../../utils/net_rap.c:683 +#, c-format +msgid "" +"Print queues at \\\\%s\n" +"\n" +"Name Job # Size Status\n" +"\n" +"-------------------------------------------------------------------------------\n" +msgstr "" + +#: ../../utils/net_rap.c:731 +msgid "Display info about print queues and jobs" +msgstr "" + +#: ../../utils/net_rap.c:732 +msgid "" +"net rap printq info [queue]\n" +" Display info about print jobs in queue.\n" +" If queue is not specified, all queues are listed" +msgstr "" + +#: ../../utils/net_rap.c:741 +msgid "Delete print job(s)" +msgstr "" + +#: ../../utils/net_rap.c:742 +msgid "" +"net rap printq delete\n" +" Delete print job(s)" +msgstr "" + +#: ../../utils/net_rap.c:751 +msgid "" +"net rap printq\n" +" List the print queue\n" +msgstr "" + +#: ../../utils/net_rap.c:864 ../../utils/net_rpc.c:909 +msgid "Add specified user" +msgstr "" + +#: ../../utils/net_rap.c:865 +msgid "" +"net rap user add\n" +" Add specified user" +msgstr "" + +#: ../../utils/net_rap.c:872 +msgid "List domain groups of specified user" +msgstr "" + +#: ../../utils/net_rap.c:873 +msgid "" +"net rap user info\n" +" List domain groups of specified user" +msgstr "" + +#: ../../utils/net_rap.c:881 ../../utils/net_rpc.c:925 +msgid "Remove specified user" +msgstr "" + +#: ../../utils/net_rap.c:882 +msgid "" +"net rap user delete\n" +" Remove specified user" +msgstr "" + +#: ../../utils/net_rap.c:892 +msgid "" +"net rap user\n" +" List all users\n" +msgstr "" + +#: ../../utils/net_rap.c:915 +#, c-format +msgid "Net user returned: %d\n" +msgstr "" + +#: ../../utils/net_rap.c:983 +msgid "Add specified group" +msgstr "" + +#: ../../utils/net_rap.c:984 +msgid "" +"net rap group add\n" +" Add specified group" +msgstr "" + +#: ../../utils/net_rap.c:991 +msgid "Delete specified group" +msgstr "" + +#: ../../utils/net_rap.c:992 +msgid "" +"net rap group delete\n" +" Delete specified group" +msgstr "" + +#: ../../utils/net_rap.c:1003 +msgid "" +"net rap group\n" +" List all groups\n" +msgstr "" + +#: ../../utils/net_rap.c:1012 +msgid "" +"Group name Comment\n" +"-----------------------------\n" +msgstr "" + +#: ../../utils/net_rap.c:1029 +msgid "" +"net rap groupmember LIST [misc. options] [targets]\n" +"\t Enumerate users in a group\n" +"\n" +"net rap groupmember DELETE [misc. options] [targets]\n" +"\t Delete specified user from specified group\n" +"\n" +"net rap groupmember ADD [misc. options] [targets]\n" +"\t Add specified user to specified group\n" +msgstr "" + +#: ../../utils/net_rap.c:1096 +msgid "Add specified user to group" +msgstr "" + +#: ../../utils/net_rap.c:1097 +msgid "" +"net rap groupmember add\n" +" Add specified user to group" +msgstr "" + +#: ../../utils/net_rap.c:1104 +msgid "List users in group" +msgstr "" + +#: ../../utils/net_rap.c:1105 +msgid "" +"net rap groupmember list\n" +" List users in group" +msgstr "" + +#: ../../utils/net_rap.c:1112 +msgid "Remove user from group" +msgstr "" + +#: ../../utils/net_rap.c:1113 +msgid "" +"net rap groupmember delete\n" +" Remove user from group" +msgstr "" + +#: ../../utils/net_rap.c:1124 +msgid "" +"net rap validate [password]\n" +"\tValidate user and password to check whether they can access target server or domain\n" +msgstr "" + +#: ../../utils/net_rap.c:1139 +msgid "" +"net rap service [misc. options] [targets] \n" +"\tlists all running service daemons on target server\n" +msgstr "" + +#: ../../utils/net_rap.c:1141 +msgid "" +"\n" +"net rap service START [service startup arguments] [misc. options] [targets]\n" +"\tStart named service on remote server\n" +msgstr "" + +#: ../../utils/net_rap.c:1144 +msgid "" +"\n" +"net rap service STOP [misc. options] [targets]\n" +"\n" +"\tStop named service on remote server\n" +msgstr "" + +#: ../../utils/net_rap.c:1174 +msgid "Start service on remote server" +msgstr "" + +#: ../../utils/net_rap.c:1175 +msgid "" +"net rap service start\n" +" Start service on remote server" +msgstr "" + +#: ../../utils/net_rap.c:1182 +msgid "Stop named serve on remote server" +msgstr "" + +#: ../../utils/net_rap.c:1183 +msgid "" +"net rap service stop\n" +" Stop named serve on remote server" +msgstr "" + +#: ../../utils/net_rap.c:1194 +msgid "" +"net rap service\n" +" List services on remote server\n" +msgstr "" + +#: ../../utils/net_rap.c:1204 +msgid "" +"Service name Comment\n" +"-----------------------------\n" +msgstr "" + +#: ../../utils/net_rap.c:1219 +msgid "" +"net rap password [misc. options] [target]\n" +"\tchanges the password for the specified user at target\n" +msgstr "" + +#: ../../utils/net_rap.c:1246 +msgid "" +"net rap admin [cmd args [env]] [misc. options] [targets]\n" +"\texecutes a remote command on an os/2 target server\n" +msgstr "" + +#: ../../utils/net_rap.c:1267 +msgid "List open files" +msgstr "" + +#: ../../utils/net_rap.c:1268 +msgid "" +"net rap file\n" +" List open files" +msgstr "" + +#: ../../utils/net_rap.c:1275 +msgid "List shares exported by server" +msgstr "" + +#: ../../utils/net_rap.c:1276 +msgid "" +"net rap share\n" +" List shares exported by server" +msgstr "" + +#: ../../utils/net_rap.c:1283 +msgid "List open sessions" +msgstr "" + +#: ../../utils/net_rap.c:1284 +msgid "" +"net rap session\n" +" List open sessions" +msgstr "" + +#: ../../utils/net_rap.c:1292 +msgid "" +"net rap server\n" +" List servers in domain/workgroup" +msgstr "" + +#: ../../utils/net_rap.c:1299 +msgid "List domains in network" +msgstr "" + +#: ../../utils/net_rap.c:1300 +msgid "" +"net rap domain\n" +" List domains in network" +msgstr "" + +#: ../../utils/net_rap.c:1307 +msgid "List printer queues on server" +msgstr "" + +#: ../../utils/net_rap.c:1308 +msgid "" +"net rap printq\n" +" List printer queues on server" +msgstr "" + +#: ../../utils/net_rap.c:1315 +msgid "List users" +msgstr "" + +#: ../../utils/net_rap.c:1316 +msgid "" +"net rap user\n" +" List users" +msgstr "" + +#: ../../utils/net_rap.c:1323 +msgid "List user groups" +msgstr "" + +#: ../../utils/net_rap.c:1324 +msgid "" +"net rap group\n" +" List user groups" +msgstr "" + +#: ../../utils/net_rap.c:1331 +msgid "Check username/password" +msgstr "" + +#: ../../utils/net_rap.c:1332 +msgid "" +"net rap validate\n" +" Check username/password" +msgstr "" + +#: ../../utils/net_rap.c:1339 +msgid "List/modify group memberships" +msgstr "" + +#: ../../utils/net_rap.c:1340 +msgid "" +"net rap groupmember\n" +" List/modify group memberships" +msgstr "" + +#: ../../utils/net_rap.c:1347 +msgid "Execute commands on remote OS/2" +msgstr "" + +#: ../../utils/net_rap.c:1348 +msgid "" +"net rap admin\n" +" Execute commands on remote OS/2" +msgstr "" + +#: ../../utils/net_rap.c:1355 +msgid "Start/stop remote service" +msgstr "" + +#: ../../utils/net_rap.c:1356 +msgid "" +"net rap service\n" +" Start/stop remote service" +msgstr "" + +#: ../../utils/net_rap.c:1363 ../../utils/net_rpc.c:933 +msgid "Change user password" +msgstr "" + +#: ../../utils/net_rap.c:1364 +msgid "" +"net rap password\n" +" Change user password" +msgstr "" + +#: ../../utils/net_registry.c:94 ../../utils/net_registry.c:197 ../../utils/net_registry.c:250 +#, c-format +msgid "open_hive failed: %s\n" +msgstr "" + +#: ../../utils/net_registry.c:101 +#, c-format +msgid "reg_openkey failed: %s\n" +msgstr "" + +#: ../../utils/net_registry.c:133 +msgid "Usage: net registry enumerate \n" +msgstr "" + +#: ../../utils/net_registry.c:134 +msgid "Example: net registry enumerate 'HKLM\\Software\\Samba'\n" +msgstr "" + +#: ../../utils/net_registry.c:141 ../../utils/net_registry.c:286 ../../utils/net_registry.c:356 ../../utils/net_registry.c:390 ../../utils/net_registry.c:439 +#, c-format +msgid "open_key failed: %s\n" +msgstr "" + +#: ../../utils/net_registry.c:185 +msgid "Usage: net registry createkey \n" +msgstr "" + +#: ../../utils/net_registry.c:186 +msgid "Example: net registry createkey 'HKLM\\Software\\Samba\\smbconf.127.0.0.1'\n" +msgstr "" + +#: ../../utils/net_registry.c:191 ../../utils/net_registry.c:244 +msgid "error: zero length key name given\n" +msgstr "" + +#: ../../utils/net_registry.c:205 +#, c-format +msgid "reg_createkey failed: %s\n" +msgstr "" + +#: ../../utils/net_registry.c:211 +msgid "createkey did nothing -- huh?\n" +msgstr "" + +#: ../../utils/net_registry.c:214 +#, c-format +msgid "createkey created %s\n" +msgstr "" + +#: ../../utils/net_registry.c:217 +#, c-format +msgid "createkey opened existing %s\n" +msgstr "" + +#: ../../utils/net_registry.c:238 +msgid "Usage: net registry deletekey \n" +msgstr "" + +#: ../../utils/net_registry.c:239 +msgid "Example: net registry deletekey 'HKLM\\Software\\Samba\\smbconf.127.0.0.1'\n" +msgstr "" + +#: ../../utils/net_registry.c:257 ../../utils/net_registry.c:396 +#, c-format +msgid "reg_deletekey failed: %s\n" +msgstr "" + +#: ../../utils/net_registry.c:279 +msgid "usage: net rpc registry getvalue \n" +msgstr "" + +#: ../../utils/net_registry.c:292 +#, c-format +msgid "reg_queryvalue failed: %s\n" +msgstr "" + +#: ../../utils/net_registry.c:328 +msgid "usage: net rpc registry setvalue []+\n" +msgstr "" + +#: ../../utils/net_registry.c:334 +#, c-format +msgid "Too many args for type %s\n" +msgstr "" + +#: ../../utils/net_registry.c:350 +#, c-format +msgid "type \"%s\" not implemented\n" +msgstr "" + +#: ../../utils/net_registry.c:362 +#, c-format +msgid "reg_setvalue failed: %s\n" +msgstr "" + +#: ../../utils/net_registry.c:383 +msgid "usage: net rpc registry deletevalue \n" +msgstr "" + +#: ../../utils/net_registry.c:427 +msgid "Usage: net registry getsd \n" +msgstr "" + +#: ../../utils/net_registry.c:428 +msgid "Example: net registry getsd 'HKLM\\Software\\Samba'\n" +msgstr "" + +#: ../../utils/net_registry.c:445 +#, c-format +msgid "reg_getkeysecurity failed: %s\n" +msgstr "" + +#: ../../utils/net_registry.c:468 +msgid "Enumerate registry keys and values" +msgstr "" + +#: ../../utils/net_registry.c:469 +msgid "" +"net registry enumerate\n" +" Enumerate registry keys and values" +msgstr "" + +#: ../../utils/net_registry.c:476 +msgid "Create a new registry key" +msgstr "" + +#: ../../utils/net_registry.c:477 +msgid "" +"net registry createkey\n" +" Create a new registry key" +msgstr "" + +#: ../../utils/net_registry.c:484 +msgid "Delete a registry key" +msgstr "" + +#: ../../utils/net_registry.c:485 +msgid "" +"net registry deletekey\n" +" Delete a registry key" +msgstr "" + +#: ../../utils/net_registry.c:492 +msgid "Print a registry value" +msgstr "" + +#: ../../utils/net_registry.c:493 +msgid "" +"net registry getvalue\n" +" Print a registry value" +msgstr "" + +#: ../../utils/net_registry.c:500 +msgid "Print a registry value (raw format)" +msgstr "" + +#: ../../utils/net_registry.c:501 +msgid "" +"net registry getvalueraw\n" +" Print a registry value (raw format)" +msgstr "" + +#: ../../utils/net_registry.c:508 +msgid "Set a new registry value" +msgstr "" + +#: ../../utils/net_registry.c:509 +msgid "" +"net registry setvalue\n" +" Set a new registry value" +msgstr "" + +#: ../../utils/net_registry.c:516 +msgid "Delete a registry value" +msgstr "" + +#: ../../utils/net_registry.c:517 +msgid "" +"net registry deletevalue\n" +" Delete a registry value" +msgstr "" + +#: ../../utils/net_registry.c:524 +msgid "Get security descriptor" +msgstr "" + +#: ../../utils/net_registry.c:525 +msgid "" +"net registry getsd\n" +" Get security descriptor" +msgstr "" + +#: ../../utils/net_registry_util.c:28 +#, c-format +msgid "Keyname = %s\n" +msgstr "" + +#: ../../utils/net_registry_util.c:29 +#, c-format +msgid "Modtime = %s\n" +msgstr "" + +#: ../../utils/net_registry_util.c:32 +msgid "None" +msgstr "" + +#: ../../utils/net_registry_util.c:39 +#, c-format +msgid "Type = %s\n" +msgstr "" + +#: ../../utils/net_registry_util.c:45 ../../utils/net_registry_util.c:76 ../../utils/net_registry_util.c:82 +msgid "Value = " +msgstr "" + +#: ../../utils/net_registry_util.c:52 +msgid "Value = \"" +msgstr "" + +#: ../../utils/net_registry_util.c:64 +#, c-format +msgid "Value[%3.3d] = \"" +msgstr "" + +#: ../../utils/net_registry_util.c:78 +#, c-format +msgid "%d bytes\n" +msgstr "" + +#: ../../utils/net_registry_util.c:84 +msgid "\n" +msgstr "" + +#: ../../utils/net_registry_util.c:92 +#, c-format +msgid "Valuename = %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:66 +msgid "Could not initialise lsa pipe\n" +msgstr "" + +#: ../../utils/net_rpc.c:74 +#, c-format +msgid "open_policy failed: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:84 +#, c-format +msgid "lsaquery failed: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:257 +msgid "" +"Usage:\n" +"net rpc changetrustpw\n" +" Change the machine trust password\n" +msgstr "" + +#: ../../utils/net_rpc.c:341 +#, c-format +msgid "Joined domain %s.\n" +msgstr "" + +#: ../../utils/net_rpc.c:387 +msgid "" +"Usage:\n" +"net rpc oldjoin\n" +" Join a domain the old way\n" +msgstr "" + +#: ../../utils/net_rpc.c:396 +msgid "Failed to join domain\n" +msgstr "" + +#: ../../utils/net_rpc.c:417 +#, c-format +msgid "" +"Usage:\n" +"net rpc join -U [%%password] \n" +" Join a domain\n" +" username\tName of the admin user password\tPassword of the admin user, will prompt if not specified\n" +" type\tCan be one of the following:\n" +"\t\tMEMBER\tJoin as member server (default)\n" +"\t\tBDC\tJoin as BDC\n" +"\t\tPDC\tJoin as PDC\n" +msgstr "" + +#: ../../utils/net_rpc.c:431 +msgid "cannot join as standalone machine\n" +msgstr "" + +#: ../../utils/net_rpc.c:486 +#, c-format +msgid "Could not connect to SAM: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:498 +#, c-format +msgid "Could not open domain: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:508 +#, c-format +msgid "Domain Name: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:510 +#, c-format +msgid "Domain SID: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:511 +#, c-format +msgid "Sequence number: %llu\n" +msgstr "" + +#: ../../utils/net_rpc.c:513 +#, c-format +msgid "Num users: %u\n" +msgstr "" + +#: ../../utils/net_rpc.c:514 +#, c-format +msgid "Num domain groups: %u\n" +msgstr "" + +#: ../../utils/net_rpc.c:515 +#, c-format +msgid "Num local groups: %u\n" +msgstr "" + +#: ../../utils/net_rpc.c:532 +msgid "" +"Usage:\n" +"net rpc info\n" +" Display information about the domain\n" +msgstr "" + +#: ../../utils/net_rpc.c:571 +#, c-format +msgid "Storing SID %s for Domain %s in secrets.tdb\n" +msgstr "" + +#: ../../utils/net_rpc.c:592 +msgid "" +"Usage:\n" +"net rpc getsid\n" +" Fetch domain SID into local secrets.tdb\n" +msgstr "" + +#: ../../utils/net_rpc.c:649 +#, c-format +msgid "Failed to add user '%s' with error: %s.\n" +msgstr "" + +#: ../../utils/net_rpc.c:654 +#, c-format +msgid "Added user '%s'.\n" +msgstr "" + +#: ../../utils/net_rpc.c:687 +#, c-format +msgid "Failed to rename user from %s to %s - %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:691 +#, c-format +msgid "Renamed user from %s to %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:719 +#, c-format +msgid "Failed to delete user '%s' with: %s.\n" +msgstr "" + +#: ../../utils/net_rpc.c:724 +#, c-format +msgid "Deleted user '%s'.\n" +msgstr "" + +#: ../../utils/net_rpc.c:770 +#, c-format +msgid "Failed to set password for '%s' with error: %s.\n" +msgstr "" + +#: ../../utils/net_rpc.c:813 +#, c-format +msgid "Failed to get groups for '%s' with error: %s.\n" +msgstr "" + +#: ../../utils/net_rpc.c:910 +msgid "" +"net rpc user add\n" +" Add specified user" +msgstr "" + +#: ../../utils/net_rpc.c:917 +msgid "List domain groups of user" +msgstr "" + +#: ../../utils/net_rpc.c:918 +msgid "" +"net rpc user info\n" +" Lis domain groups of user" +msgstr "" + +#: ../../utils/net_rpc.c:926 +msgid "" +"net rpc user delete\n" +" Remove specified user" +msgstr "" + +#: ../../utils/net_rpc.c:934 +msgid "" +"net rpc user password\n" +" Change user password" +msgstr "" + +#: ../../utils/net_rpc.c:941 +msgid "Rename specified user" +msgstr "" + +#: ../../utils/net_rpc.c:942 +msgid "" +"net rpc user rename\n" +" Rename specified user" +msgstr "" + +#: ../../utils/net_rpc.c:961 +msgid "" +"net rpc user\n" +" List all users\n" +msgstr "" + +#: ../../utils/net_rpc.c:1011 +#, c-format +msgid "usage: %s \n" +msgstr "" + +#: ../../utils/net_rpc.c:1022 +#, c-format +msgid "Could not lookup %s: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:1028 +#, c-format +msgid "%s is a %s, not a user\n" +msgstr "" + +#: ../../utils/net_rpc.c:1035 +#, c-format +msgid "%s is not in our domain\n" +msgstr "" + +#: ../../utils/net_rpc.c:1092 +#, c-format +msgid "usage: %s show \n" +msgstr "" + +#: ../../utils/net_rpc.c:1104 +#, c-format +msgid "user rid: %d, group rid: %d\n" +msgstr "" + +#: ../../utils/net_rpc.c:1145 +#, c-format +msgid "usage: %s [new value|NULL]\n" +msgstr "" + +#: ../../utils/net_rpc.c:1168 +#, c-format +msgid "%s's %s: [%s]\n" +msgstr "" + +#: ../../utils/net_rpc.c:1190 +#, c-format +msgid "Set %s's %s from [%s] to [%s]\n" +msgstr "" + +#. TRANSATORS: The yes|no here are program keywords. Please do +#. not translate. +#: ../../utils/net_rpc.c:1236 +#, c-format +msgid "usage: %s [yes|no]\n" +msgstr "" + +#: ../../utils/net_rpc.c:1261 +#, c-format +msgid "%s's %s flag: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:1277 +#, c-format +msgid "Set %s's %s flag from [%s] to [%s]\n" +msgstr "" + +#: ../../utils/net_rpc.c:1303 +msgid "Show/Set a user's full name" +msgstr "" + +#: ../../utils/net_rpc.c:1306 +msgid "Show/Set a user's home directory" +msgstr "" + +#: ../../utils/net_rpc.c:1309 +msgid "Show/Set a user's home drive" +msgstr "" + +#: ../../utils/net_rpc.c:1312 +msgid "Show/Set a user's logon script" +msgstr "" + +#: ../../utils/net_rpc.c:1315 +msgid "Show/Set a user's profile path" +msgstr "" + +#: ../../utils/net_rpc.c:1318 +msgid "Show/Set a user's description" +msgstr "" + +#: ../../utils/net_rpc.c:1321 +msgid "Show/Set whether a user is disabled" +msgstr "" + +#: ../../utils/net_rpc.c:1324 +msgid "Show/Set whether a user locked out" +msgstr "" + +#: ../../utils/net_rpc.c:1327 +msgid "Show/Set whether a user does not need a password" +msgstr "" + +#: ../../utils/net_rpc.c:1330 +msgid "Show/Set whether a user's password does not expire" +msgstr "" + +#: ../../utils/net_rpc.c:1345 +msgid "List available users" +msgstr "" + +#: ../../utils/net_rpc.c:1348 +msgid "List the domain groups a user is member of" +msgstr "" + +#: ../../utils/net_rpc.c:1351 +msgid "Show info about a user" +msgstr "" + +#: ../../utils/net_rpc.c:1354 +msgid "Show/Modify a user's fields" +msgstr "" + +#: ../../utils/net_rpc.c:1425 +msgid "Request samr_Connect2 failed\n" +msgstr "" + +#: ../../utils/net_rpc.c:1436 +msgid "Request open_domain failed\n" +msgstr "" + +#: ../../utils/net_rpc.c:1449 +#, c-format +msgid "Lookup of '%s' failed\n" +msgstr "" + +#: ../../utils/net_rpc.c:1462 +msgid "Request open_group failed" +msgstr "" + +#: ../../utils/net_rpc.c:1474 +#, c-format +msgid "Unable to query group members of %s" +msgstr "" + +#: ../../utils/net_rpc.c:1481 +#, c-format +msgid "Domain Group %s (rid: %d) has %d members\n" +msgstr "" + +#: ../../utils/net_rpc.c:1496 +#, c-format +msgid "Unable to open group member %d\n" +msgstr "" + +#: ../../utils/net_rpc.c:1508 +#, c-format +msgid "Unable to lookup userinfo for group member %d\n" +msgstr "" + +#: ../../utils/net_rpc.c:1516 +#, c-format +msgid "Group is primary group of %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:1527 +msgid "Unable to delete group because some of it's members have it as primary group\n" +msgstr "" + +#: ../../utils/net_rpc.c:1538 +#, c-format +msgid "Remove group member %d..." +msgstr "" + +#: ../../utils/net_rpc.c:1546 +msgid "ok\n" +msgstr "" + +#: ../../utils/net_rpc.c:1549 +msgid "failed\n" +msgstr "" + +#: ../../utils/net_rpc.c:1567 +msgid "Request open_alias failed\n" +msgstr "" + +#: ../../utils/net_rpc.c:1575 +#, c-format +msgid "%s is of type %s. This command is only for deleting local or global groups\n" +msgstr "" + +#: ../../utils/net_rpc.c:1584 +#, c-format +msgid "Deleted %s '%s'\n" +msgstr "" + +#: ../../utils/net_rpc.c:1587 +#, c-format +msgid "Deleting of %s failed: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:1624 +#, c-format +msgid "Failed to add group '%s' with error: %s.\n" +msgstr "" + +#: ../../utils/net_rpc.c:1629 +#, c-format +msgid "Added group '%s'.\n" +msgstr "" + +#: ../../utils/net_rpc.c:1657 +#, c-format +msgid "Failed to add alias '%s' with error: %s.\n" +msgstr "" + +#: ../../utils/net_rpc.c:1662 +#, c-format +msgid "Added alias '%s'.\n" +msgstr "" + +#: ../../utils/net_rpc.c:1782 ../../utils/net_rpc.c:1832 ../../utils/net_rpc.c:1989 ../../utils/net_rpc.c:2036 +#, c-format +msgid "Could not lookup up group member %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:1892 +msgid "" +"Usage:\n" +"net rpc group addmem \n" +" Add a member to a group\n" +" group\tGroup to add member to\n" +" member\tMember to add to group\n" +msgstr "" + +#: ../../utils/net_rpc.c:1902 ../../utils/net_rpc.c:2104 +#, c-format +msgid "Could not lookup group name %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:1912 ../../utils/net_rpc.c:1923 +#, c-format +msgid "Could not add %s to %s: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:1929 +#, c-format +msgid "Can only add members to global or local groups which %s is not\n" +msgstr "" + +#: ../../utils/net_rpc.c:2094 +msgid "" +"Usage:\n" +"net rpc group delmem \n" +" Delete a member from a group\n" +" group\tGroup to delete member from\n" +" member\tMember to delete from group\n" +msgstr "" + +#: ../../utils/net_rpc.c:2114 ../../utils/net_rpc.c:2125 +#, c-format +msgid "Could not del %s from %s: %s\n" +msgstr "" + +#: ../../utils/net_rpc.c:2131 +#, c-format +msgid "Can only delete members from global or local groups which %s is not\n" +msgstr "" + +#: ../../utils/net_rpc.c:2178 +msgid "" +"Usage:\n" +"net rpc group list [global] [local] [builtin]\n" +" List groups on RPC server\n" +" global\tList global groups\n" +" local\tList local groups\n" +" builtin\tList builtin groups\n" +" If none of global, local or builtin is specified, all three options are considered set\n" +msgstr "" diff --git a/source3/locale/net/genmsg b/source3/locale/net/genmsg new file mode 100755 index 0000000000..467abfb5c2 --- /dev/null +++ b/source3/locale/net/genmsg @@ -0,0 +1,58 @@ +#!/bin/sh +# Copyright (C) 2003 TAKAHASHI Motonobu +# Copyright (C) 2009 Kai Blin +# +# 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 . +# +add_basedir_to_filelist() { + BASEDIR="$1" + shift; + FILELIST="$@" + FULL_LIST="" + for file in ${FILELIST}; do + FULL_LIST="${FULL_LIST} $BASEDIR/${file}" + done + echo ${FULL_LIST} +} + +FILES=`add_basedir_to_filelist ../../utils net.c net_ads.c net_ads_gpo.c \ + net_afs.c net_cache.c net_conf.c net_dom.c net_eventlog.c net_file.c \ + net_group.c net_groupmap.c net_help.c net_help_common.c net_idmap.c \ + net_join.c net_lookup.c net_lua.c net_rap.c net_registry.c \ + net_registry_util.c net_rpc.c` + +LANGS="af ar bg bn bs ca cs cy da de el en_GB en_US es et fi fr gl gu he hi hr + hu id it ja ka km ko lo lt mk mr nb nl pa pl pt_BR pt ro ru si sk sl sr + sv ta th tr uk vi wa xh zh_CN zh_TW zu" +XGETTEXT=xgettext +MSGMERGE=msgmerge + +WIDTH=256 + +${XGETTEXT} --default-domain="net" \ + --add-comments \ + --keyword=_ --keyword=N_ \ + --width=${WIDTH} \ + ${FILES} + +for lang in ${LANGS}; do + printf "%s " ${lang} + touch ${lang}.po + mv ${lang}.po ${lang}.po.old + ${MSGMERGE} --width=${WIDTH} ${lang}.po.old net.po -o ${lang}.po + rm -rf ${lang}.po.old +done + +rm -rf net.po + -- cgit From 88af0ec6e464a0b42f2b04c3c870c3e73ee1c6fd Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Fri, 7 Aug 2009 09:34:06 +0200 Subject: s3 net: i18n support for net rpc audit --- source3/locale/net/genmsg | 2 +- source3/utils/net_rpc_audit.c | 116 ++++++++++++++++++++++-------------------- 2 files changed, 61 insertions(+), 57 deletions(-) (limited to 'source3') diff --git a/source3/locale/net/genmsg b/source3/locale/net/genmsg index 467abfb5c2..2e0769ecea 100755 --- a/source3/locale/net/genmsg +++ b/source3/locale/net/genmsg @@ -30,7 +30,7 @@ FILES=`add_basedir_to_filelist ../../utils net.c net_ads.c net_ads_gpo.c \ net_afs.c net_cache.c net_conf.c net_dom.c net_eventlog.c net_file.c \ net_group.c net_groupmap.c net_help.c net_help_common.c net_idmap.c \ net_join.c net_lookup.c net_lua.c net_rap.c net_registry.c \ - net_registry_util.c net_rpc.c` + net_registry_util.c net_rpc.c net_rpc_audit.c` LANGS="af ar bg bn bs ca cs cy da de el en_GB en_US es et fi fr gl gu he hi hr hu id it ja ka km ko lo lt mk mr nb nl pa pl pt_BR pt ro ru si sk sl sr diff --git a/source3/utils/net_rpc_audit.c b/source3/utils/net_rpc_audit.c index 823fe06f1a..f0b440d3be 100644 --- a/source3/utils/net_rpc_audit.c +++ b/source3/utils/net_rpc_audit.c @@ -24,13 +24,13 @@ static int net_help_audit(struct net_context *c, int argc, const char **argv) { - d_printf("net rpc audit list View configured Auditing policies\n"); - d_printf("net rpc audit enable Enable Auditing\n"); - d_printf("net rpc audit disable Disable Auditing\n"); - d_printf("net rpc audit get View configured Auditing policy setting\n"); - d_printf("net rpc audit set Set Auditing policies\n\n"); - d_printf("\tcategory can be one of: SYSTEM, LOGON, OBJECT, PRIVILEGE, PROCESS, POLICY, SAM, DIRECTORY or ACCOUNT\n"); - d_printf("\tpolicy can be one of: SUCCESS, FAILURE, ALL or NONE\n\n"); + d_printf(_("net rpc audit list View configured Auditing policies\n")); + d_printf(_("net rpc audit enable Enable Auditing\n")); + d_printf(_("net rpc audit disable Disable Auditing\n")); + d_printf(_("net rpc audit get View configured Auditing policy setting\n")); + d_printf(_("net rpc audit set Set Auditing policies\n\n")); + d_printf(_("\tcategory can be one of: SYSTEM, LOGON, OBJECT, PRIVILEGE, PROCESS, POLICY, SAM, DIRECTORY or ACCOUNT\n")); + d_printf(_("\tpolicy can be one of: SUCCESS, FAILURE, ALL or NONE\n\n")); return -1; } @@ -44,10 +44,10 @@ static void print_auditing_category(const char *policy, const char *value) int pad_len, col_len = 30; if (policy == NULL) { - policy = "Unknown"; + policy = N_("Unknown"); } if (value == NULL) { - value = "Invalid"; + value = N_("Invalid"); } /* calculate padding space for d_printf to look nicer */ @@ -55,7 +55,7 @@ static void print_auditing_category(const char *policy, const char *value) padding[pad_len] = 0; do padding[--pad_len] = ' '; while (pad_len > 0); - d_printf("\t%s%s%s\n", policy, padding, value); + d_printf(_("\t%s%s%s\n"), policy, padding, value); } /******************************************************************** @@ -77,13 +77,13 @@ static NTSTATUS rpc_audit_get_internal(struct net_context *c, uint32_t audit_category; if (argc < 1 || argc > 2) { - d_printf("insufficient arguments\n"); + d_printf(_("insufficient arguments\n")); net_help_audit(c, argc, argv); return NT_STATUS_INVALID_PARAMETER; } if (!get_audit_category_from_param(argv[0], &audit_category)) { - d_printf("invalid auditing category: %s\n", argv[0]); + d_printf(_("invalid auditing category: %s\n"), argv[0]); return NT_STATUS_INVALID_PARAMETER; } @@ -119,7 +119,7 @@ static NTSTATUS rpc_audit_get_internal(struct net_context *c, done: if (!NT_STATUS_IS_OK(result)) { - d_printf("failed to get auditing policy: %s\n", + d_printf(_("failed to get auditing policy: %s\n"), nt_errstr(result)); } @@ -144,13 +144,13 @@ static NTSTATUS rpc_audit_set_internal(struct net_context *c, uint32_t audit_policy, audit_category; if (argc < 2 || argc > 3) { - d_printf("insufficient arguments\n"); + d_printf(_("insufficient arguments\n")); net_help_audit(c, argc, argv); return NT_STATUS_INVALID_PARAMETER; } if (!get_audit_category_from_param(argv[0], &audit_category)) { - d_printf("invalid auditing category: %s\n", argv[0]); + d_printf(_("invalid auditing category: %s\n"), argv[0]); return NT_STATUS_INVALID_PARAMETER; } @@ -165,7 +165,7 @@ static NTSTATUS rpc_audit_set_internal(struct net_context *c, } else if (strequal(argv[1], "None")) { audit_policy = LSA_AUDIT_POLICY_CLEAR; } else { - d_printf("invalid auditing policy: %s\n", argv[1]); + d_printf(_("invalid auditing policy: %s\n"), argv[1]); return NT_STATUS_INVALID_PARAMETER; } @@ -209,7 +209,8 @@ static NTSTATUS rpc_audit_set_internal(struct net_context *c, done: if (!NT_STATUS_IS_OK(result)) { - d_printf("failed to set audit policy: %s\n", nt_errstr(result)); + d_printf(_("failed to set audit policy: %s\n"), + nt_errstr(result)); } return result; @@ -257,8 +258,10 @@ static NTSTATUS rpc_audit_enable_internal_ext(struct rpc_pipe_client *pipe_hnd, done: if (!NT_STATUS_IS_OK(result)) { - d_printf("failed to %s audit policy: %s\n", - enable ? "enable":"disable", nt_errstr(result)); + d_printf(_("%s: %s\n"), + enable ? _("failed to enable audit policy"): + _("failed to disable audit policy"), + nt_errstr(result)); } return result; @@ -329,22 +332,23 @@ static NTSTATUS rpc_audit_list_internal(struct net_context *c, goto done; } - printf("Auditing:\t\t"); + printf(_("Auditing:\t\t")); switch (info->audit_events.auditing_mode) { case true: - printf("Enabled"); + printf(_("Enabled")); break; case false: - printf("Disabled"); + printf(_("Disabled")); break; default: - printf("unknown (%d)", info->audit_events.auditing_mode); + printf(_("unknown (%d)"), + info->audit_events.auditing_mode); break; } printf("\n"); - printf("Auditing categories:\t%d\n", info->audit_events.count); - printf("Auditing settings:\n"); + printf(_("Auditing categories:\t%d\n"), info->audit_events.count); + printf(_("Auditing settings:\n")); for (i=0; i < info->audit_events.count; i++) { const char *val = audit_policy_str(mem_ctx, info->audit_events.settings[i]); @@ -354,7 +358,7 @@ static NTSTATUS rpc_audit_list_internal(struct net_context *c, done: if (!NT_STATUS_IS_OK(result)) { - d_printf("failed to list auditing policies: %s\n", + d_printf(_("failed to list auditing policies: %s\n"), nt_errstr(result)); } @@ -367,9 +371,9 @@ static NTSTATUS rpc_audit_list_internal(struct net_context *c, static int rpc_audit_get(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc audit get\n" - " View configured audit setting\n"); + d_printf(_("Usage:\n" + "net rpc audit get\n" + " View configured audit setting\n")); return 0; } @@ -383,9 +387,9 @@ static int rpc_audit_get(struct net_context *c, int argc, const char **argv) static int rpc_audit_set(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc audit set\n" - " Set audit policies\n"); + d_printf(_("Usage:\n" + "net rpc audit set\n" + " Set audit policies\n")); return 0; } @@ -399,9 +403,9 @@ static int rpc_audit_set(struct net_context *c, int argc, const char **argv) static int rpc_audit_enable(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc audit enable\n" - " Enable auditing\n"); + d_printf(_("Usage:\n" + "net rpc audit enable\n" + " Enable auditing\n")); return 0; } @@ -415,9 +419,9 @@ static int rpc_audit_enable(struct net_context *c, int argc, const char **argv) static int rpc_audit_disable(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc audit disable\n" - " Disable auditing\n"); + d_printf(_("Usage:\n" + "net rpc audit disable\n" + " Disable auditing\n")); return 0; } @@ -431,9 +435,9 @@ static int rpc_audit_disable(struct net_context *c, int argc, const char **argv) static int rpc_audit_list(struct net_context *c, int argc, const char **argv) { if (c->display_usage) { - d_printf("Usage:\n" - "net rpc audit list\n" - " List auditing settings\n"); + d_printf(_("Usage:\n" + "net rpc audit list\n" + " List auditing settings\n")); return 0; } @@ -451,41 +455,41 @@ int net_rpc_audit(struct net_context *c, int argc, const char **argv) "get", rpc_audit_get, NET_TRANSPORT_RPC, - "View configured auditing settings", - "net rpc audit get\n" - " View configured auditing settings" + N_("View configured auditing settings"), + N_("net rpc audit get\n" + " View configured auditing settings") }, { "set", rpc_audit_set, NET_TRANSPORT_RPC, - "Set auditing policies", - "net rpc audit set\n" - " Set auditing policies" + N_("Set auditing policies"), + N_("net rpc audit set\n" + " Set auditing policies") }, { "enable", rpc_audit_enable, NET_TRANSPORT_RPC, - "Enable auditing", - "net rpc audit enable\n" - " Enable auditing" + N_("Enable auditing"), + N_("net rpc audit enable\n" + " Enable auditing") }, { "disable", rpc_audit_disable, NET_TRANSPORT_RPC, - "Disable auditing", - "net rpc audit disable\n" - " Disable auditing" + N_("Disable auditing"), + N_("net rpc audit disable\n" + " Disable auditing") }, { "list", rpc_audit_list, NET_TRANSPORT_RPC, - "List configured auditing settings", - "net rpc audit list\n" - " List configured auditing settings" + N_("List configured auditing settings"), + N_("net rpc audit list\n" + " List configured auditing settings") }, {NULL, NULL, 0, NULL, NULL} }; -- cgit From 5b50e506d010c0c3fc15c1ecaef7aa9e5383691c Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 6 Aug 2009 20:59:32 +0200 Subject: s3-wkssvcs: fix check for BUILTIN\Administrators membership in wkssvc_Netr{Join,Unjoin}Domain2. Guenther --- source3/rpc_server/srv_wkssvc_nt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source3') diff --git a/source3/rpc_server/srv_wkssvc_nt.c b/source3/rpc_server/srv_wkssvc_nt.c index acc1fb3b03..ab09e8632f 100644 --- a/source3/rpc_server/srv_wkssvc_nt.c +++ b/source3/rpc_server/srv_wkssvc_nt.c @@ -306,7 +306,7 @@ WERROR _wkssvc_NetrJoinDomain2(pipes_struct *p, 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)) { + !nt_token_check_sid(&global_sid_Builtin_Administrators, token)) { DEBUG(5,("_wkssvc_NetrJoinDomain2: account doesn't have " "sufficient privileges\n")); return WERR_ACCESS_DENIED; @@ -377,7 +377,7 @@ WERROR _wkssvc_NetrUnjoinDomain2(pipes_struct *p, 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)) { + !nt_token_check_sid(&global_sid_Builtin_Administrators, token)) { DEBUG(5,("_wkssvc_NetrUnjoinDomain2: account doesn't have " "sufficient privileges\n")); return WERR_ACCESS_DENIED; -- cgit From 8e419aab48ace1fe0d075e2a25935e650805a23c Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 6 Aug 2009 21:16:38 +0200 Subject: s3:smbd: don't ignore check_descend in get_dir_entry() metze --- source3/smbd/dir.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'source3') diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 642fb09362..7acd349b72 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -875,6 +875,7 @@ bool get_dir_entry(TALLOC_CTX *ctx, if ((strcmp(mask,"*.*") == 0) || mask_match_search(filename,mask,False) || mangle_mask_match(conn,filename,mask)) { + bool isdots = (ISDOT(dname) || ISDOTDOT(dname)); char mname[13]; struct smb_filename *smb_fname = NULL; NTSTATUS status; @@ -891,6 +892,11 @@ bool get_dir_entry(TALLOC_CTX *ctx, } } + if (check_descend && !isdots) { + TALLOC_FREE(filename); + continue; + } + if (needslash) { pathreal = talloc_asprintf(ctx, "%s/%s", -- cgit From 8300b255a5f88cc4ca23678595810d7caec50a00 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 7 Aug 2009 12:09:21 +0200 Subject: Fix some nonempty blank lines --- source3/lib/bitmap.c | 4 ++-- source3/lib/conn_tdb.c | 6 +++--- source3/lib/ctdbd_conn.c | 19 +++++++++---------- source3/lib/util_tdb.c | 14 +++++++------- source3/lib/winbind_util.c | 26 +++++++++++++------------- source3/lib/wins_srv.c | 4 ++-- 6 files changed, 36 insertions(+), 37 deletions(-) (limited to 'source3') diff --git a/source3/lib/bitmap.c b/source3/lib/bitmap.c index 5e623f474a..f753ffd534 100644 --- a/source3/lib/bitmap.c +++ b/source3/lib/bitmap.c @@ -32,7 +32,7 @@ struct bitmap *bitmap_allocate(int n) bm = SMB_MALLOC_P(struct bitmap); if (!bm) return NULL; - + bm->n = n; bm->b = SMB_MALLOC_ARRAY(uint32, (n+31)/32); if (!bm->b) { @@ -70,7 +70,7 @@ struct bitmap *bitmap_talloc(TALLOC_CTX *mem_ctx, int n) bm = TALLOC_P(mem_ctx, struct bitmap); if (!bm) return NULL; - + bm->n = n; bm->b = TALLOC_ARRAY(mem_ctx, uint32, (n+31)/32); if (!bm->b) { diff --git a/source3/lib/conn_tdb.c b/source3/lib/conn_tdb.c index 22d85c873d..fc35361cac 100644 --- a/source3/lib/conn_tdb.c +++ b/source3/lib/conn_tdb.c @@ -2,17 +2,17 @@ Unix SMB/CIFS implementation. Low-level connections.tdb access functions Copyright (C) Volker Lendecke 2007 - + 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 . */ diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c index 449e049ffa..0af420412b 100644 --- a/source3/lib/ctdbd_conn.c +++ b/source3/lib/ctdbd_conn.c @@ -3,17 +3,17 @@ Samba internal messaging functions Copyright (C) 2007 by Volker Lendecke Copyright (C) 2007 by Andrew Tridgell - + 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 . */ @@ -36,7 +36,7 @@ struct ctdbd_connection { uint64 rand_srvid; struct packet_context *pkt; struct fd_event *fde; - + void (*release_ip_handler)(const char *ip_addr, void *private_data); void *release_ip_priv; }; @@ -339,7 +339,7 @@ static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32 reqid, (long long unsigned)msg->srvid)); goto next_pkt; } - + if ((conn->release_ip_handler != NULL) && (msg->srvid == CTDB_SRVID_RELEASE_IP)) { /* must be dispatched immediately */ @@ -375,7 +375,7 @@ static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32 reqid, TALLOC_FREE(hdr); msg_state->msg_ctx = conn->msg_ctx; - + /* * We're waiting for a call reply, but an async message has * crossed. Defer dispatching to the toplevel event loop. @@ -391,7 +391,7 @@ static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32 reqid, TALLOC_FREE(hdr); goto next_pkt; } - + goto next_pkt; } @@ -541,7 +541,6 @@ static NTSTATUS ctdb_handle_message(uint8_t *buf, size_t length, TALLOC_FREE(buf); return NT_STATUS_OK; - } /* only messages to our pid or the broadcast are valid here */ @@ -895,7 +894,7 @@ NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32 db_id, NTSTATUS status; ZERO_STRUCT(req); - + req.hdr.length = offsetof(struct ctdb_req_call, data) + key.dsize; req.hdr.ctdb_magic = CTDB_MAGIC; req.hdr.ctdb_version = CTDB_VERSION; @@ -957,7 +956,7 @@ NTSTATUS ctdbd_fetch(struct ctdbd_connection *conn, uint32 db_id, NTSTATUS status; ZERO_STRUCT(req); - + req.hdr.length = offsetof(struct ctdb_req_call, data) + key.dsize; req.hdr.ctdb_magic = CTDB_MAGIC; req.hdr.ctdb_version = CTDB_VERSION; diff --git a/source3/lib/util_tdb.c b/source3/lib/util_tdb.c index 5b3d94dabe..1d210a1e57 100644 --- a/source3/lib/util_tdb.c +++ b/source3/lib/util_tdb.c @@ -4,17 +4,17 @@ Copyright (C) Andrew Tridgell 1992-1998 Copyright (C) Rafal Szczesniak 2002 Copyright (C) Michael Adam 2007 - + 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 . */ @@ -91,7 +91,7 @@ int tdb_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval, int timeout) { TDB_DATA key = string_term_tdb_data(keyval); - + return tdb_chainlock_with_timeout(tdb, key, timeout); } @@ -102,7 +102,7 @@ int tdb_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval, int tdb_read_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval, unsigned int timeout) { TDB_DATA key = string_term_tdb_data(keyval); - + return tdb_chainlock_with_timeout_internal(tdb, key, timeout, F_RDLCK); } @@ -113,7 +113,7 @@ int tdb_trans_store_bystring(TDB_CONTEXT *tdb, const char *keystr, TDB_DATA data, int flags) { TDB_DATA key = string_term_tdb_data(keystr); - + return tdb_trans_store(tdb, key, data, flags); } @@ -202,7 +202,7 @@ static size_t tdb_pack_va(uint8 *buf, int bufsize, const char *fmt, va_list ap) DEBUG(18,("tdb_pack_va(%s, %d) -> %d\n", fmt0, bufsize0, (int)PTR_DIFF(buf, buf0))); - + return PTR_DIFF(buf, buf0); } diff --git a/source3/lib/winbind_util.c b/source3/lib/winbind_util.c index df095b9e91..0c904ac569 100644 --- a/source3/lib/winbind_util.c +++ b/source3/lib/winbind_util.c @@ -3,17 +3,17 @@ Winbind Utility functions Copyright (C) Gerald (Jerry) Carter 2007 - + 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 . */ @@ -113,7 +113,7 @@ bool winbind_lookup_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid, wbcFreeMemory(domain_name); wbcFreeMemory(account_name); - + if ((domain && !*domain) || (name && !*name)) { DEBUG(0,("winbind_lookup_sid: talloc() failed!\n")); return false; @@ -200,7 +200,7 @@ wbcErr wb_is_trusted_domain(const char *domain) { wbcErr result; struct wbcDomainInfo *info = NULL; - + result = wbcDomainInfo(domain, &info); if (WBC_ERROR_IS_OK(result)) { @@ -224,15 +224,15 @@ bool winbind_lookup_rids(TALLOC_CTX *mem_ctx, struct wbcDomainSid dom_sid; wbcErr ret; int i; - + memcpy(&dom_sid, domain_sid, sizeof(struct wbcDomainSid)); - + ret = wbcLookupRids(&dom_sid, num_rids, rids, &dom_name, &namelist, &name_types); if (ret != WBC_ERR_SUCCESS) { return false; } - + *domain_name = talloc_strdup(mem_ctx, dom_name); *names = TALLOC_ARRAY(mem_ctx, const char*, num_rids); *types = TALLOC_ARRAY(mem_ctx, enum lsa_SidType, num_rids); @@ -245,7 +245,7 @@ bool winbind_lookup_rids(TALLOC_CTX *mem_ctx, wbcFreeMemory(CONST_DISCARD(char*, dom_name)); wbcFreeMemory(namelist); wbcFreeMemory(name_types); - + return true; } @@ -254,9 +254,9 @@ bool winbind_lookup_rids(TALLOC_CTX *mem_ctx, bool winbind_allocate_uid(uid_t *uid) { wbcErr ret; - + ret = wbcAllocateUid(uid); - + return (ret == WBC_ERR_SUCCESS); } @@ -265,9 +265,9 @@ bool winbind_allocate_uid(uid_t *uid) bool winbind_allocate_gid(gid_t *gid) { wbcErr ret; - + ret = wbcAllocateGid(gid); - + return (ret == WBC_ERR_SUCCESS); } diff --git a/source3/lib/wins_srv.c b/source3/lib/wins_srv.c index b2c0bf8b87..6676f02e94 100644 --- a/source3/lib/wins_srv.c +++ b/source3/lib/wins_srv.c @@ -227,7 +227,7 @@ char **wins_srv_tags(void) /* yes, this is O(n^2) but n is very small */ for (i=0;list[i];i++) { struct tagged_ip t_ip; - + parse_ip(&t_ip, list[i]); /* see if we already have it */ @@ -313,7 +313,7 @@ struct in_addr wins_srv_ip_tag(const char *tag, struct in_addr src_ip) return t_ip.ip; } } - + /* they're all dead - try the first one until they revive */ for (i=0; list[i]; i++) { parse_ip(&t_ip, list[i]); -- cgit From c54e6b19e395724eb84f6e7157073e8772bc8594 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 6 Aug 2009 13:22:33 +0200 Subject: s3:smbd: add a smbd_server_connection pointer to connection_struct This can be NULL for faked connection structs used in the rpc server or printing code. metze --- source3/include/proto.h | 6 ++---- source3/include/smb.h | 1 + source3/smbd/conn.c | 23 +++++++++++++++-------- source3/smbd/ipc.c | 3 +-- source3/smbd/reply.c | 5 ++--- source3/smbd/service.c | 33 ++++++++++++++++----------------- source3/smbd/smb2_tcon.c | 2 +- 7 files changed, 38 insertions(+), 35 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index ccd8746603..667e847485 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6145,8 +6145,7 @@ bool conn_close_all(struct smbd_server_connection *sconn); bool conn_idle_all(struct smbd_server_connection *sconn, time_t t); void conn_clear_vuid_caches(struct smbd_server_connection *sconn, uint16 vuid); void conn_free_internal(connection_struct *conn); -void conn_free(struct smbd_server_connection *sconn, - connection_struct *conn); +void conn_free(connection_struct *conn); void msg_force_tdis(struct messaging_context *msg, void *private_data, uint32_t msg_type, @@ -6984,8 +6983,7 @@ connection_struct *make_connection(struct smbd_server_connection *sconn, const char *service_in, DATA_BLOB password, const char *pdev, uint16 vuid, NTSTATUS *status); -void close_cnum(struct smbd_server_connection *sconn, - connection_struct *conn, uint16 vuid); +void close_cnum(connection_struct *conn, uint16 vuid); /* The following definitions come from smbd/session.c */ diff --git a/source3/include/smb.h b/source3/include/smb.h index e2d670fa04..c33c5363f3 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -546,6 +546,7 @@ struct share_iterator { typedef struct connection_struct { struct connection_struct *next, *prev; + struct smbd_server_connection *sconn; /* can be NULL */ unsigned cnum; /* an index passed over the wire */ struct share_params *params; bool force_user; diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c index af6e0919a4..9d1bbee8c9 100644 --- a/source3/smbd/conn.c +++ b/source3/smbd/conn.c @@ -101,6 +101,7 @@ connection_struct *conn_new(struct smbd_server_connection *sconn) TALLOC_FREE(conn); return NULL; } + conn->sconn = sconn; return conn; } @@ -154,6 +155,7 @@ find_again: TALLOC_FREE(conn); return NULL; } + conn->sconn = sconn; conn->cnum = i; conn->force_group_gid = (gid_t)-1; @@ -181,7 +183,7 @@ bool conn_close_all(struct smbd_server_connection *sconn) for (conn=sconn->smb1.tcons.Connections;conn;conn=next) { next=conn->next; set_current_service(conn, 0, True); - close_cnum(sconn, conn, conn->vuid); + close_cnum(conn, conn->vuid); ret = true; } return ret; @@ -294,19 +296,24 @@ void conn_free_internal(connection_struct *conn) Free a conn structure. ****************************************************************************/ -void conn_free(struct smbd_server_connection *sconn, connection_struct *conn) +void conn_free(connection_struct *conn) { - if (sconn->allow_smb2) { + if (conn->sconn == NULL) { + conn_free_internal(conn); + return; + } + + if (conn->sconn->allow_smb2) { conn_free_internal(conn); return; } - DLIST_REMOVE(sconn->smb1.tcons.Connections, conn); + DLIST_REMOVE(conn->sconn->smb1.tcons.Connections, conn); - bitmap_clear(sconn->smb1.tcons.bmap, conn->cnum); + bitmap_clear(conn->sconn->smb1.tcons.bmap, conn->cnum); - SMB_ASSERT(sconn->smb1.tcons.num_open > 0); - sconn->smb1.tcons.num_open--; + SMB_ASSERT(conn->sconn->smb1.tcons.num_open > 0); + conn->sconn->smb1.tcons.num_open--; conn_free_internal(conn); } @@ -340,7 +347,7 @@ void msg_force_tdis(struct messaging_context *msg, if (strequal(lp_servicename(SNUM(conn)), sharename)) { DEBUG(1,("Forcing close of share %s cnum=%d\n", sharename, conn->cnum)); - close_cnum(sconn, conn, (uint16)-1); + close_cnum(conn, (uint16)-1); } } } diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c index 96a411dd70..12d4922844 100644 --- a/source3/smbd/ipc.c +++ b/source3/smbd/ipc.c @@ -534,7 +534,6 @@ static void named_pipe(connection_struct *conn, uint16 vuid, static void handle_trans(connection_struct *conn, struct smb_request *req, struct trans_state *state) { - struct smbd_server_connection *sconn = smbd_server_conn; char *local_machine_name; int name_offset = 0; @@ -585,7 +584,7 @@ static void handle_trans(connection_struct *conn, struct smb_request *req, state->max_param_return); if (state->close_on_completion) { - close_cnum(sconn, conn,state->vuid); + close_cnum(conn,state->vuid); req->conn = NULL; } diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 77e122a90c..750915b1cb 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -703,7 +703,7 @@ void reply_tcon_and_X(struct smb_request *req) /* we might have to close an old one */ if ((tcon_flags & 0x1) && conn) { - close_cnum(sconn, conn,req->vuid); + close_cnum(conn,req->vuid); req->conn = NULL; conn = NULL; } @@ -4868,7 +4868,6 @@ void reply_unlock(struct smb_request *req) void reply_tdis(struct smb_request *req) { - struct smbd_server_connection *sconn = smbd_server_conn; connection_struct *conn = req->conn; START_PROFILE(SMBtdis); @@ -4881,7 +4880,7 @@ void reply_tdis(struct smb_request *req) conn->used = False; - close_cnum(sconn, conn,req->vuid); + close_cnum(conn,req->vuid); req->conn = NULL; reply_outbuf(req, 0, 0); diff --git a/source3/smbd/service.c b/source3/smbd/service.c index a043288bc9..c24b2264c1 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -673,7 +673,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, DEBUG(1, ("create_connection_server_info failed: %s\n", nt_errstr(status))); *pstatus = status; - conn_free(sconn, conn); + conn_free(conn); return NULL; } @@ -730,7 +730,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, fuser = talloc_string_sub(conn, lp_force_user(snum), "%S", lp_servicename(snum)); if (fuser == NULL) { - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_NO_MEMORY; return NULL; } @@ -739,7 +739,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, conn, fuser, conn->server_info->guest, &forced_serverinfo); if (!NT_STATUS_IS_OK(status)) { - conn_free(sconn, conn); + conn_free(conn); *pstatus = status; return NULL; } @@ -764,7 +764,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, &conn->server_info->utok.gid); if (!NT_STATUS_IS_OK(status)) { - conn_free(sconn, conn); + conn_free(conn); *pstatus = status; return NULL; } @@ -790,14 +790,14 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, pdb_get_domain(conn->server_info->sam_account), lp_pathname(snum)); if (!s) { - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_NO_MEMORY; return NULL; } if (!set_conn_connectpath(conn,s)) { TALLOC_FREE(s); - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_NO_MEMORY; return NULL; } @@ -829,7 +829,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, "denied due to security " "descriptor.\n", lp_servicename(snum))); - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_ACCESS_DENIED; return NULL; } else { @@ -842,7 +842,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, if (!smbd_vfs_init(conn)) { DEBUG(0, ("vfs_init failed for service %s\n", lp_servicename(snum))); - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_BAD_NETWORK_NAME; return NULL; } @@ -860,7 +860,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, "for service %s, path %s\n", lp_servicename(snum), conn->connectpath)); - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_BAD_NETWORK_NAME; return NULL; } @@ -884,7 +884,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, DEBUG(1, ("Max connections (%d) exceeded for %s\n", lp_max_connections(snum), lp_servicename(snum))); - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_INSUFFICIENT_RESOURCES; return NULL; } @@ -894,7 +894,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, */ if (!claim_connection(conn, lp_servicename(snum), 0)) { DEBUG(1, ("Could not store connections entry\n")); - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_INTERNAL_DB_ERROR; return NULL; } @@ -918,7 +918,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, DEBUG(1,("root preexec gave %d - failing " "connection\n", ret)); yield_connection(conn, lp_servicename(snum)); - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_ACCESS_DENIED; return NULL; } @@ -929,7 +929,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, /* No point continuing if they fail the basic checks */ DEBUG(0,("Can't become connected user!\n")); yield_connection(conn, lp_servicename(snum)); - conn_free(sconn, conn); + conn_free(conn); *pstatus = NT_STATUS_LOGON_FAILURE; return NULL; } @@ -1072,7 +1072,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, SMB_VFS_DISCONNECT(conn); } yield_connection(conn, lp_servicename(snum)); - conn_free(sconn, conn); + conn_free(conn); return NULL; } @@ -1219,8 +1219,7 @@ connection_struct *make_connection(struct smbd_server_connection *sconn, Close a cnum. ****************************************************************************/ -void close_cnum(struct smbd_server_connection *sconn, - connection_struct *conn, uint16 vuid) +void close_cnum(connection_struct *conn, uint16 vuid) { file_close_conn(conn); @@ -1274,5 +1273,5 @@ void close_cnum(struct smbd_server_connection *sconn, TALLOC_FREE(cmd); } - conn_free(sconn, conn); + conn_free(conn); } diff --git a/source3/smbd/smb2_tcon.c b/source3/smbd/smb2_tcon.c index 8c4b1f1b6f..090f9b7908 100644 --- a/source3/smbd/smb2_tcon.c +++ b/source3/smbd/smb2_tcon.c @@ -127,7 +127,7 @@ static int smbd_smb2_tcon_destructor(struct smbd_smb2_tcon *tcon) idr_remove(tcon->session->tcons.idtree, tcon->tid); DLIST_REMOVE(tcon->session->tcons.list, tcon); - conn_free(tcon->session->conn, tcon->compat_conn); + conn_free(tcon->compat_conn); tcon->compat_conn = NULL; tcon->tid = 0; -- cgit From 70afd419a602ff4067bf3c25cf25a5d4084b4164 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 7 Aug 2009 11:48:03 +0200 Subject: s3:smbd: conn_free_internal() can be static now metze --- source3/include/proto.h | 1 - source3/printing/nt_printing.c | 6 +++--- source3/rpc_server/srv_srvsvc_nt.c | 8 ++++---- source3/smbd/conn.c | 4 ++-- source3/smbd/msdfs.c | 22 +++++++++++----------- source3/smbd/posix_acls.c | 8 ++++---- 6 files changed, 24 insertions(+), 25 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index 667e847485..e4523a1625 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6144,7 +6144,6 @@ connection_struct *conn_new(struct smbd_server_connection *sconn); bool conn_close_all(struct smbd_server_connection *sconn); bool conn_idle_all(struct smbd_server_connection *sconn, time_t t); void conn_clear_vuid_caches(struct smbd_server_connection *sconn, uint16 vuid); -void conn_free_internal(connection_struct *conn); void conn_free(connection_struct *conn); void msg_force_tdis(struct messaging_context *msg, void *private_data, diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c index 26b8d9d81d..b2815c221d 100644 --- a/source3/printing/nt_printing.c +++ b/source3/printing/nt_printing.c @@ -1590,7 +1590,7 @@ static uint32 get_correct_cversion(struct pipes_struct *p, } if (conn != NULL) { vfs_ChDir(conn, oldcwd); - conn_free_internal(conn); + conn_free(conn); } if (cversion != -1) { *perr = WERR_OK; @@ -2072,7 +2072,7 @@ WERROR move_driver_to_download_area(struct pipes_struct *p, if (conn != NULL) { vfs_ChDir(conn, oldcwd); - conn_free_internal(conn); + conn_free(conn); } if (W_ERROR_EQUAL(*perr, WERR_OK)) { @@ -5267,7 +5267,7 @@ static bool delete_driver_files(struct pipes_struct *rpc_pipe, done: if (conn != NULL) { vfs_ChDir(conn, oldcwd); - conn_free_internal(conn); + conn_free(conn); } return ret; } diff --git a/source3/rpc_server/srv_srvsvc_nt.c b/source3/rpc_server/srv_srvsvc_nt.c index 15b2290805..01ffcd837a 100644 --- a/source3/rpc_server/srv_srvsvc_nt.c +++ b/source3/rpc_server/srv_srvsvc_nt.c @@ -2133,7 +2133,7 @@ WERROR _srvsvc_NetGetFileSecurity(pipes_struct *p, close_file(NULL, fsp, NORMAL_CLOSE); vfs_ChDir(conn, oldcwd); - conn_free_internal(conn); + conn_free(conn); werr = WERR_OK; goto done; @@ -2148,7 +2148,7 @@ error_exit: } if (conn) { - conn_free_internal(conn); + conn_free(conn); } done: @@ -2267,7 +2267,7 @@ WERROR _srvsvc_NetSetFileSecurity(pipes_struct *p, close_file(NULL, fsp, NORMAL_CLOSE); vfs_ChDir(conn, oldcwd); - conn_free_internal(conn); + conn_free(conn); werr = WERR_OK; goto done; @@ -2282,7 +2282,7 @@ error_exit: } if (conn) { - conn_free_internal(conn); + conn_free(conn); } done: diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c index 9d1bbee8c9..da67db978b 100644 --- a/source3/smbd/conn.c +++ b/source3/smbd/conn.c @@ -257,9 +257,9 @@ void conn_clear_vuid_caches(struct smbd_server_connection *sconn,uint16_t vuid) Free a conn structure - internal part. ****************************************************************************/ -void conn_free_internal(connection_struct *conn) +static void conn_free_internal(connection_struct *conn) { - vfs_handle_struct *handle = NULL, *thandle = NULL; + vfs_handle_struct *handle = NULL, *thandle = NULL; struct trans_state *state = NULL; /* Free vfs_connection_struct */ diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c index 22fb8c3ad6..767c8fe297 100644 --- a/source3/smbd/msdfs.c +++ b/source3/smbd/msdfs.c @@ -268,7 +268,7 @@ NTSTATUS create_conn_struct(TALLOC_CTX *ctx, if (!smbd_vfs_init(conn)) { NTSTATUS status = map_nt_error_from_unix(errno); DEBUG(0,("create_conn_struct: smbd_vfs_init failed.\n")); - conn_free_internal(conn); + conn_free(conn); return status; } @@ -284,7 +284,7 @@ NTSTATUS create_conn_struct(TALLOC_CTX *ctx, if (oldcwd == NULL) { NTSTATUS status = map_nt_error_from_unix(errno); DEBUG(3, ("vfs_GetWd failed: %s\n", strerror(errno))); - conn_free_internal(conn); + conn_free(conn); return status; } @@ -293,7 +293,7 @@ NTSTATUS create_conn_struct(TALLOC_CTX *ctx, DEBUG(3,("create_conn_struct: Can't ChDir to new conn path %s. " "Error was %s\n", conn->connectpath, strerror(errno) )); - conn_free_internal(conn); + conn_free(conn); return status; } @@ -939,7 +939,7 @@ NTSTATUS get_referred_path(TALLOC_CTX *ctx, DEBUG(3,("get_referred_path: No valid referrals for path %s\n", dfs_path)); vfs_ChDir(conn, oldpath); - conn_free_internal(conn); + conn_free(conn); TALLOC_FREE(pdp); return status; } @@ -951,13 +951,13 @@ NTSTATUS get_referred_path(TALLOC_CTX *ctx, DEBUG(3,("get_referred_path: failed to parse symlink " "target %s\n", targetpath )); vfs_ChDir(conn, oldpath); - conn_free_internal(conn); + conn_free(conn); TALLOC_FREE(pdp); return NT_STATUS_NOT_FOUND; } vfs_ChDir(conn, oldpath); - conn_free_internal(conn); + conn_free(conn); TALLOC_FREE(pdp); return NT_STATUS_OK; } @@ -1374,7 +1374,7 @@ static bool junction_to_local_path(const struct junction_map *jucn, jucn->volume_name); if (!*pp_path_out) { vfs_ChDir(*conn_out, *oldpath); - conn_free_internal(*conn_out); + conn_free(*conn_out); return False; } return True; @@ -1462,7 +1462,7 @@ bool create_msdfs_link(const struct junction_map *jucn) out: vfs_ChDir(conn, cwd); - conn_free_internal(conn); + conn_free(conn); return ret; } @@ -1493,7 +1493,7 @@ bool remove_msdfs_link(const struct junction_map *jucn) TALLOC_FREE(smb_fname); vfs_ChDir(conn, cwd); - conn_free_internal(conn); + conn_free(conn); return ret; } @@ -1554,7 +1554,7 @@ static int count_dfs_links(TALLOC_CTX *ctx, int snum) out: vfs_ChDir(conn, cwd); - conn_free_internal(conn); + conn_free(conn); return cnt; } @@ -1680,7 +1680,7 @@ out: } vfs_ChDir(conn, cwd); - conn_free_internal(conn); + conn_free(conn); return cnt; } diff --git a/source3/smbd/posix_acls.c b/source3/smbd/posix_acls.c index 8c5393871f..b61421dc8f 100644 --- a/source3/smbd/posix_acls.c +++ b/source3/smbd/posix_acls.c @@ -4616,7 +4616,7 @@ SEC_DESC *get_nt_acl_no_snum( TALLOC_CTX *ctx, const char *fname) if (!smbd_vfs_init(conn)) { DEBUG(0,("get_nt_acl_no_snum: Unable to create a fake connection struct!\n")); - conn_free_internal( conn ); + conn_free(conn); return NULL; } @@ -4631,21 +4631,21 @@ SEC_DESC *get_nt_acl_no_snum( TALLOC_CTX *ctx, const char *fname) status = create_synthetic_smb_fname(talloc_tos(), fname, NULL, NULL, &finfo.fsp_name); if (!NT_STATUS_IS_OK(status)) { - conn_free_internal( conn ); + conn_free(conn); return NULL; } if (!NT_STATUS_IS_OK(SMB_VFS_FGET_NT_ACL( &finfo, DACL_SECURITY_INFORMATION, &psd))) { DEBUG(0,("get_nt_acl_no_snum: get_nt_acl returned zero.\n")); TALLOC_FREE(finfo.fsp_name); - conn_free_internal( conn ); + conn_free(conn); return NULL; } ret_sd = dup_sec_desc( ctx, psd ); TALLOC_FREE(finfo.fsp_name); - conn_free_internal( conn ); + conn_free(conn); return ret_sd; } -- cgit From daa71c42369ca3586f6b5cf5c7c72cddcbcdf1ad Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 6 Aug 2009 20:53:13 +0200 Subject: s3:smbd: add generic smbd_dirptr_get_entry() metze --- source3/smbd/dir.c | 142 +++++++++++++++++++++++++++++++++++++++++++++++++ source3/smbd/globals.h | 21 ++++++++ 2 files changed, 163 insertions(+) (limited to 'source3') diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 7acd349b72..4c802ab893 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -825,6 +825,148 @@ static bool mangle_mask_match(connection_struct *conn, return mask_match_search(mname,mask,False); } +bool smbd_dirptr_get_entry(TALLOC_CTX *ctx, + struct dptr_struct *dirptr, + const char *mask, + uint32_t dirtype, + bool dont_descend, + bool ask_sharemode, + bool (*match_fn)(TALLOC_CTX *ctx, + void *private_data, + const char *dname, + const char *mask, + char **_fname), + bool (*mode_fn)(TALLOC_CTX *ctx, + void *private_data, + struct smb_filename *smb_fname, + uint32_t *_mode), + void *private_data, + char **_fname, + struct smb_filename **_smb_fname, + uint32_t *_mode, + long *_prev_offset) +{ + connection_struct *conn = dirptr->conn; + bool needslash; + + *_smb_fname = NULL; + *_mode = 0; + + needslash = ( dirptr->path[strlen(dirptr->path) -1] != '/'); + + while (true) { + long cur_offset; + long prev_offset; + SMB_STRUCT_STAT sbuf; + char *dname = NULL; + bool isdots; + char *fname = NULL; + char *pathreal = NULL; + struct smb_filename *smb_fname = NULL; + uint32_t mode = 0; + bool ok; + NTSTATUS status; + + cur_offset = dptr_TellDir(dirptr); + prev_offset = cur_offset; + dname = dptr_ReadDirName(ctx, dirptr, &cur_offset, &sbuf); + + DEBUG(6,("smbd_dirptr_get_entry: dirptr 0x%lx now at offset %ld\n", + (long)dirptr, cur_offset)); + + if (dname == NULL) { + return false; + } + + isdots = (ISDOT(dname) || ISDOTDOT(dname)); + if (dont_descend && !isdots) { + TALLOC_FREE(dname); + continue; + } + + /* + * fname may get mangled, dname is never mangled. + * Whenever we're accessing the filesystem we use + * pathreal which is composed from dname. + */ + + ok = match_fn(ctx, private_data, dname, mask, &fname); + if (!ok) { + TALLOC_FREE(dname); + continue; + } + + pathreal = talloc_asprintf(ctx, "%s%s%s", + dirptr->path, + needslash?"/":"", + dname); + if (!pathreal) { + TALLOC_FREE(dname); + TALLOC_FREE(fname); + return false; + } + + /* Create smb_fname with NULL stream_name. */ + status = create_synthetic_smb_fname(ctx, pathreal, + NULL, &sbuf, + &smb_fname); + TALLOC_FREE(pathreal); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(dname); + TALLOC_FREE(fname); + return false; + } + + ok = mode_fn(ctx, private_data, smb_fname, &mode); + if (!ok) { + TALLOC_FREE(dname); + TALLOC_FREE(fname); + TALLOC_FREE(smb_fname); + continue; + } + + if (!dir_check_ftype(conn, mode, dirtype)) { + DEBUG(5,("[%s] attribs 0x%x didn't match 0x%x\n", + fname, (unsigned int)mode, (unsigned int)dirtype)); + TALLOC_FREE(dname); + TALLOC_FREE(fname); + TALLOC_FREE(smb_fname); + continue; + } + + if (ask_sharemode) { + struct timespec write_time_ts; + struct file_id fileid; + + fileid = vfs_file_id_from_sbuf(conn, + &smb_fname->st); + get_file_infos(fileid, NULL, &write_time_ts); + if (!null_timespec(write_time_ts)) { + update_stat_ex_mtime(&smb_fname->st, + write_time_ts); + } + } + + DEBUG(3,("smbd_dirptr_get_entry mask=[%s] found %s " + "fname=%s (%s)\n", + mask, smb_fname_str_dbg(smb_fname), + dname, fname)); + + DirCacheAdd(dirptr->dir_hnd, dname, cur_offset); + + TALLOC_FREE(dname); + + *_fname = fname; + *_smb_fname = smb_fname; + *_mode = mode; + *_prev_offset = prev_offset; + + return true; + } + + return false; +} + /**************************************************************************** Get an 8.3 directory entry. ****************************************************************************/ diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 434204b60d..6a62cf6a21 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -218,6 +218,27 @@ NTSTATUS smbd_do_qfsinfo(connection_struct *conn, char **ppdata, int *ret_data_len); +bool smbd_dirptr_get_entry(TALLOC_CTX *ctx, + struct dptr_struct *dirptr, + const char *mask, + uint32_t dirtype, + bool dont_descend, + bool ask_sharemode, + bool (*match_fn)(TALLOC_CTX *ctx, + void *private_data, + const char *dname, + const char *mask, + char **_fname), + bool (*mode_fn)(TALLOC_CTX *ctx, + void *private_data, + struct smb_filename *smb_fname, + uint32_t *_mode), + void *private_data, + char **_fname, + struct smb_filename **_smb_fname, + uint32_t *_mode, + long *_prev_offset); + void smbd_server_connection_terminate_ex(struct smbd_server_connection *sconn, const char *reason, const char *location); -- cgit From 862c6aa19fbfe45f8daaf738d7edbb319a674ff2 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 7 Aug 2009 08:54:06 +0200 Subject: s3:smbd: let get_dir_entry() use smbd_dirptr_get_entry() metze --- source3/smbd/dir.c | 228 +++++++++++++++++++++-------------------------------- 1 file changed, 89 insertions(+), 139 deletions(-) (limited to 'source3') diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 4c802ab893..e2f8e69449 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -971,158 +971,108 @@ bool smbd_dirptr_get_entry(TALLOC_CTX *ctx, Get an 8.3 directory entry. ****************************************************************************/ -bool get_dir_entry(TALLOC_CTX *ctx, - connection_struct *conn, - const char *mask, - uint32 dirtype, - char **pp_fname_out, - SMB_OFF_T *size, - uint32 *mode, - struct timespec *date, - bool check_descend, - bool ask_sharemode) +static bool smbd_dirptr_8_3_match_fn(TALLOC_CTX *ctx, + void *private_data, + const char *dname, + const char *mask, + char **_fname) { - char *dname = NULL; - bool found = False; - SMB_STRUCT_STAT sbuf; - char *pathreal = NULL; - char *filename = NULL; - bool needslash; - - *pp_fname_out = NULL; - - needslash = ( conn->dirpath[strlen(conn->dirpath) -1] != '/'); - - if (!conn->dirptr) { - return(False); - } - - while (!found) { - long curoff = dptr_TellDir(conn->dirptr); - dname = dptr_ReadDirName(ctx, conn->dirptr, &curoff, &sbuf); - - DEBUG(6,("readdir on dirptr 0x%lx now at offset %ld\n", - (long)conn->dirptr,TellDir(conn->dirptr->dir_hnd))); - - if (dname == NULL) { - return(False); - } - - filename = dname; - - /* notice the special *.* handling. This appears to be the only difference - between the wildcard handling in this routine and in the trans2 routines. - see masktest for a demo - */ - if ((strcmp(mask,"*.*") == 0) || - mask_match_search(filename,mask,False) || - mangle_mask_match(conn,filename,mask)) { - bool isdots = (ISDOT(dname) || ISDOTDOT(dname)); - char mname[13]; - struct smb_filename *smb_fname = NULL; - NTSTATUS status; - - if (!mangle_is_8_3(filename, False, conn->params)) { - if (!name_to_8_3(filename,mname,False, - conn->params)) { - TALLOC_FREE(filename); - continue; - } - filename = talloc_strdup(ctx, mname); - if (!filename) { - return False; - } - } - - if (check_descend && !isdots) { - TALLOC_FREE(filename); - continue; - } - - if (needslash) { - pathreal = talloc_asprintf(ctx, - "%s/%s", - conn->dirpath, - dname); - } else { - pathreal = talloc_asprintf(ctx, - "%s%s", - conn->dirpath, - dname); - } - if (!pathreal) { - TALLOC_FREE(filename); - return False; - } - - /* Create smb_fname with NULL stream_name. */ - status = create_synthetic_smb_fname(ctx, pathreal, - NULL, &sbuf, - &smb_fname); - - TALLOC_FREE(pathreal); - if (!NT_STATUS_IS_OK(status)) { - TALLOC_FREE(filename); + connection_struct *conn = (connection_struct *)private_data; + + if ((strcmp(mask,"*.*") == 0) || + mask_match_search(dname, mask, false) || + mangle_mask_match(conn, dname, mask)) { + char mname[13]; + const char *fname; + + if (!mangle_is_8_3(dname, false, conn->params)) { + bool ok = name_to_8_3(dname, mname, false, + conn->params); + if (!ok) { return false; } + fname = mname; + } else { + fname = dname; + } - if (!VALID_STAT(smb_fname->st)) { - if ((SMB_VFS_STAT(conn, smb_fname)) != 0) { - DEBUG(5,("Couldn't stat 1 [%s]. Error " - "= %s\n", - smb_fname_str_dbg(smb_fname), - strerror(errno))); - TALLOC_FREE(smb_fname); - TALLOC_FREE(filename); - continue; - } - } - - *mode = dos_mode(conn, smb_fname); - - if (!dir_check_ftype(conn,*mode,dirtype)) { - DEBUG(5,("[%s] attribs 0x%x didn't match 0x%x\n",filename,(unsigned int)*mode,(unsigned int)dirtype)); - TALLOC_FREE(smb_fname); - TALLOC_FREE(filename); - continue; - } - - *size = smb_fname->st.st_ex_size; - *date = smb_fname->st.st_ex_mtime; + *_fname = talloc_strdup(ctx, fname); + if (*_fname == NULL) { + return false; + } - if (ask_sharemode) { - struct timespec write_time_ts; - struct file_id fileid; + return true; + } - fileid = vfs_file_id_from_sbuf(conn, - &smb_fname->st); - get_file_infos(fileid, NULL, &write_time_ts); - if (!null_timespec(write_time_ts)) { - *date = write_time_ts; - } - } + return false; +} - DEBUG(3,("get_dir_entry mask=[%s] found %s " - "fname=%s (%s)\n", - mask, - smb_fname_str_dbg(smb_fname), - dname, - filename)); +static bool smbd_dirptr_8_3_mode_fn(TALLOC_CTX *ctx, + void *private_data, + struct smb_filename *smb_fname, + uint32_t *_mode) +{ + connection_struct *conn = (connection_struct *)private_data; + + if (!VALID_STAT(smb_fname->st)) { + if ((SMB_VFS_STAT(conn, smb_fname)) != 0) { + DEBUG(5,("smbd_dirptr_8_3_mode_fn: " + "Couldn't stat [%s]. Error " + "= %s\n", + smb_fname_str_dbg(smb_fname), + strerror(errno))); + return false; + } + } - found = True; + *_mode = dos_mode(conn, smb_fname); + return true; +} - SMB_ASSERT(filename != NULL); - *pp_fname_out = filename; +bool get_dir_entry(TALLOC_CTX *ctx, + connection_struct *conn, + const char *mask, + uint32_t dirtype, + char **_fname, + SMB_OFF_T *_size, + uint32_t *_mode, + struct timespec *_date, + bool check_descend, + bool ask_sharemode) +{ + char *fname = NULL; + struct smb_filename *smb_fname = NULL; + uint32_t mode = 0; + long prev_offset; + bool ok; - DirCacheAdd(conn->dirptr->dir_hnd, dname, curoff); - TALLOC_FREE(smb_fname); - } + if (!conn->dirptr) { + return false; + } - if (!found) - TALLOC_FREE(filename); + ok = smbd_dirptr_get_entry(ctx, + conn->dirptr, + mask, + dirtype, + check_descend, + ask_sharemode, + smbd_dirptr_8_3_match_fn, + smbd_dirptr_8_3_mode_fn, + conn, + &fname, + &smb_fname, + &mode, + &prev_offset); + if (!ok) { + return false; } - return(found); + *_fname = talloc_move(ctx, &fname); + *_size = smb_fname->st.st_ex_size; + *_mode = mode; + *_date = smb_fname->st.st_ex_mtime; + TALLOC_FREE(smb_fname); + return true; } /******************************************************************* -- cgit From dfae090c5d0c238f2c620d77edc6bb6cf1bb027b Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 7 Aug 2009 08:55:35 +0200 Subject: s3:smbd: implement get_lanman2_dir_entry() on top of smbd_dirptr_get_entry() metze --- source3/smbd/trans2.c | 444 ++++++++++++++++++++++++-------------------------- 1 file changed, 215 insertions(+), 229 deletions(-) (limited to 'source3') diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 21c5062257..e48ffac150 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -1165,19 +1165,24 @@ static void call_trans2open(connection_struct *conn, Case can be significant or not. **********************************************************/ -static bool exact_match(connection_struct *conn, - const char *str, - const char *mask) +static bool exact_match(bool has_wild, + bool case_sensitive, + const char *str, + const char *mask) { - if (mask[0] == '.' && mask[1] == 0) - return False; - if (dptr_has_wild(conn->dirptr)) { - return False; + if (mask[0] == '.' && mask[1] == 0) { + return false; } - if (conn->case_sensitive) + + if (has_wild) { + return false; + } + + if (case_sensitive) { return strcmp(str,mask)==0; - else + } else { return StrCaseCmp(str,mask) == 0; + } } /**************************************************************************** @@ -1317,6 +1322,130 @@ static bool check_msdfs_link(connection_struct *conn, Get a level dependent lanman2 dir entry. ****************************************************************************/ +struct smbd_dirptr_lanman2_state { + connection_struct *conn; + uint32_t info_level; + bool check_mangled_names; + bool has_wild; + bool got_exact_match; +}; + +static bool smbd_dirptr_lanman2_match_fn(TALLOC_CTX *ctx, + void *private_data, + const char *dname, + const char *mask, + char **_fname) +{ + struct smbd_dirptr_lanman2_state *state = + (struct smbd_dirptr_lanman2_state *)private_data; + bool ok; + char mangled_name[13]; /* mangled 8.3 name. */ + bool got_match; + const char *fname; + + /* Mangle fname if it's an illegal name. */ + if (mangle_must_mangle(dname, state->conn->params)) { + ok = name_to_8_3(dname, mangled_name, + true, state->conn->params); + if (!ok) { + return false; + } + fname = mangled_name; + } else { + fname = dname; + } + + got_match = exact_match(state->has_wild, + state->conn->case_sensitive, + fname, mask); + state->got_exact_match = got_match; + if (!got_match) { + got_match = mask_match(fname, mask, + state->conn->case_sensitive); + } + + if(!got_match && state->check_mangled_names && + !mangle_is_8_3(fname, false, state->conn->params)) { + /* + * It turns out that NT matches wildcards against + * both long *and* short names. This may explain some + * of the wildcard wierdness from old DOS clients + * that some people have been seeing.... JRA. + */ + /* Force the mangling into 8.3. */ + ok = name_to_8_3(fname, mangled_name, + false, state->conn->params); + if (!ok) { + return false; + } + + got_match = exact_match(state->has_wild, + state->conn->case_sensitive, + mangled_name, mask); + state->got_exact_match = got_match; + if (!got_match) { + got_match = mask_match(mangled_name, mask, + state->conn->case_sensitive); + } + } + + if (!got_match) { + return false; + } + + *_fname = talloc_strdup(ctx, fname); + if (*_fname == NULL) { + return false; + } + + return true; +} + +static bool smbd_dirptr_lanman2_mode_fn(TALLOC_CTX *ctx, + void *private_data, + struct smb_filename *smb_fname, + uint32_t *_mode) +{ + struct smbd_dirptr_lanman2_state *state = + (struct smbd_dirptr_lanman2_state *)private_data; + bool ms_dfs_link = false; + uint32_t mode = 0; + + if (INFO_LEVEL_IS_UNIX(state->info_level)) { + if (SMB_VFS_LSTAT(state->conn, smb_fname) != 0) { + DEBUG(5,("smbd_dirptr_lanman2_mode_fn: " + "Couldn't lstat [%s] (%s)\n", + smb_fname_str_dbg(smb_fname), + strerror(errno))); + return false; + } + } else if (!VALID_STAT(smb_fname->st) && + SMB_VFS_STAT(state->conn, smb_fname) != 0) { + /* Needed to show the msdfs symlinks as + * directories */ + + ms_dfs_link = check_msdfs_link(state->conn, + smb_fname->base_name, + &smb_fname->st); + if (!ms_dfs_link) { + DEBUG(5,("smbd_dirptr_lanman2_mode_fn: " + "Couldn't stat [%s] (%s)\n", + smb_fname_str_dbg(smb_fname), + strerror(errno))); + return false; + } + } + + if (ms_dfs_link) { + mode = dos_mode_msdfs(state->conn, smb_fname); + } else { + mode = dos_mode(state->conn, smb_fname); + } + + *_mode = mode; + return true; +} + static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, connection_struct *conn, uint16 flags2, @@ -1335,12 +1464,7 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, int *last_entry_off, struct ea_list *name_list) { - char *dname; - bool found = False; - SMB_STRUCT_STAT sbuf; const char *mask = NULL; - char *pathreal = NULL; - char *fname = NULL; char *p, *q, *pdata = *ppdata; uint32 reskey=0; long prev_dirpos=0; @@ -1354,9 +1478,17 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, char *last_entry_ptr; bool was_8_3; uint32 nt_extmode; /* Used for NT connections instead of mode */ - bool needslash = ( conn->dirpath[strlen(conn->dirpath) -1] != '/'); - bool check_mangled_names = lp_manglednames(conn->params); - char mangled_name[13]; /* mangled 8.3 name. */ + char *fname = NULL; + struct smb_filename *smb_fname = NULL; + struct smbd_dirptr_lanman2_state state; + bool ok; + + ZERO_STRUCT(state); + state.conn = conn; + state.info_level = info_level; + state.check_mangled_names = lp_manglednames(conn->params); + state.has_wild = dptr_has_wild(conn->dirptr); + state.got_exact_match = false; *out_of_space = False; *got_exact_match = False; @@ -1366,13 +1498,13 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, ZERO_STRUCT(create_date_ts); if (!conn->dirptr) { - return(False); + return false; } p = strrchr_m(path_mask,'/'); if(p != NULL) { if(p[1] == '\0') { - mask = talloc_strdup(ctx,"*.*"); + mask = "*.*"; } else { mask = p+1; } @@ -1380,206 +1512,44 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, mask = path_mask; } - while (!found) { - bool got_match; - bool ms_dfs_link = False; - - /* Needed if we run out of space */ - long curr_dirpos = prev_dirpos = dptr_TellDir(conn->dirptr); - dname = dptr_ReadDirName(ctx,conn->dirptr,&curr_dirpos,&sbuf); - - /* - * Due to bugs in NT client redirectors we are not using - * resume keys any more - set them to zero. - * Check out the related comments in findfirst/findnext. - * JRA. - */ - - reskey = 0; - - DEBUG(8,("get_lanman2_dir_entry:readdir on dirptr 0x%lx now at offset %ld\n", - (long)conn->dirptr,curr_dirpos)); - - if (!dname) { - return(False); - } - - /* - * fname may get mangled, dname is never mangled. - * Whenever we're accessing the filesystem we use - * pathreal which is composed from dname. - */ - - pathreal = NULL; - fname = dname; - - /* Mangle fname if it's an illegal name. */ - if (mangle_must_mangle(dname,conn->params)) { - if (!name_to_8_3(dname,mangled_name,True,conn->params)) { - TALLOC_FREE(fname); - continue; /* Error - couldn't mangle. */ - } - fname = talloc_strdup(ctx, mangled_name); - if (!fname) { - return False; - } - } - - if(!(got_match = *got_exact_match = exact_match(conn, fname, mask))) { - got_match = mask_match(fname, mask, conn->case_sensitive); - } - - if(!got_match && check_mangled_names && - !mangle_is_8_3(fname, False, conn->params)) { - /* - * It turns out that NT matches wildcards against - * both long *and* short names. This may explain some - * of the wildcard wierdness from old DOS clients - * that some people have been seeing.... JRA. - */ - /* Force the mangling into 8.3. */ - if (!name_to_8_3( fname, mangled_name, False, conn->params)) { - TALLOC_FREE(fname); - continue; /* Error - couldn't mangle. */ - } - - if(!(got_match = *got_exact_match = exact_match(conn, mangled_name, mask))) { - got_match = mask_match(mangled_name, mask, conn->case_sensitive); - } - } - - if (got_match) { - bool isdots = (ISDOT(dname) || ISDOTDOT(dname)); - struct smb_filename *smb_fname = NULL; - NTSTATUS status; - - if (dont_descend && !isdots) { - TALLOC_FREE(fname); - continue; - } - - if (needslash) { - pathreal = NULL; - pathreal = talloc_asprintf(ctx, - "%s/%s", - conn->dirpath, - dname); - } else { - pathreal = talloc_asprintf(ctx, - "%s%s", - conn->dirpath, - dname); - } - - if (!pathreal) { - TALLOC_FREE(fname); - return False; - } - - /* A dirent from dptr_ReadDirName isn't a stream. */ - status = create_synthetic_smb_fname(ctx, pathreal, - NULL, &sbuf, - &smb_fname); - if (!NT_STATUS_IS_OK(status)) { - TALLOC_FREE(fname); - return false; - } - - if (INFO_LEVEL_IS_UNIX(info_level)) { - if (SMB_VFS_LSTAT(conn, smb_fname) != 0) { - DEBUG(5,("get_lanman2_dir_entry: " - "Couldn't lstat [%s] (%s)\n", - smb_fname_str_dbg(smb_fname), - strerror(errno))); - TALLOC_FREE(smb_fname); - TALLOC_FREE(pathreal); - TALLOC_FREE(fname); - continue; - } - } else if (!VALID_STAT(smb_fname->st) && - SMB_VFS_STAT(conn, smb_fname) != 0) { - /* Needed to show the msdfs symlinks as - * directories */ - - ms_dfs_link = - check_msdfs_link(conn, - smb_fname->base_name, - &smb_fname->st); - if (!ms_dfs_link) { - DEBUG(5,("get_lanman2_dir_entry: " - "Couldn't stat [%s] (%s)\n", - smb_fname_str_dbg(smb_fname), - strerror(errno))); - TALLOC_FREE(smb_fname); - TALLOC_FREE(pathreal); - TALLOC_FREE(fname); - continue; - } - } - - if (ms_dfs_link) { - mode = dos_mode_msdfs(conn, smb_fname); - } else { - mode = dos_mode(conn, smb_fname); - } - - if (!dir_check_ftype(conn,mode,dirtype)) { - DEBUG(5,("get_lanman2_dir_entry: [%s] attribs didn't match %x\n",fname,dirtype)); - TALLOC_FREE(smb_fname); - TALLOC_FREE(pathreal); - TALLOC_FREE(fname); - continue; - } - - if (!(mode & aDIR)) { - file_size = get_file_size_stat(&smb_fname->st); - } - allocation_size = - SMB_VFS_GET_ALLOC_SIZE(conn, NULL, &smb_fname->st); - - if (ask_sharemode) { - struct timespec write_time_ts; - struct file_id fileid; - - ZERO_STRUCT(write_time_ts); - fileid = vfs_file_id_from_sbuf(conn, - &smb_fname->st); - get_file_infos(fileid, NULL, &write_time_ts); - if (!null_timespec(write_time_ts)) { - update_stat_ex_mtime(&smb_fname->st, - write_time_ts); - } - } - - mdate_ts = smb_fname->st.st_ex_mtime; - adate_ts = smb_fname->st.st_ex_atime; - create_date_ts = smb_fname->st.st_ex_btime; - - if (lp_dos_filetime_resolution(SNUM(conn))) { - dos_filetime_timespec(&create_date_ts); - dos_filetime_timespec(&mdate_ts); - dos_filetime_timespec(&adate_ts); - } - - create_date = convert_timespec_to_time_t(create_date_ts); - mdate = convert_timespec_to_time_t(mdate_ts); - adate = convert_timespec_to_time_t(adate_ts); + ok = smbd_dirptr_get_entry(ctx, + conn->dirptr, + mask, + dirtype, + dont_descend, + ask_sharemode, + smbd_dirptr_lanman2_match_fn, + smbd_dirptr_lanman2_mode_fn, + &state, + &fname, + &smb_fname, + &mode, + &prev_dirpos); + if (!ok) { + return false; + } - DEBUG(5,("get_lanman2_dir_entry: found %s fname=%s\n", - smb_fname_str_dbg(smb_fname), fname)); + *got_exact_match = state.got_exact_match; - found = True; + if (!(mode & aDIR)) { + file_size = get_file_size_stat(&smb_fname->st); + } + allocation_size = SMB_VFS_GET_ALLOC_SIZE(conn, NULL, &smb_fname->st); - dptr_DirCacheAdd(conn->dirptr, dname, curr_dirpos); - sbuf = smb_fname->st; + mdate_ts = smb_fname->st.st_ex_mtime; + adate_ts = smb_fname->st.st_ex_atime; + create_date_ts = smb_fname->st.st_ex_btime; - TALLOC_FREE(smb_fname); - } - - if (!found) - TALLOC_FREE(fname); + if (lp_dos_filetime_resolution(SNUM(conn))) { + dos_filetime_timespec(&create_date_ts); + dos_filetime_timespec(&mdate_ts); + dos_filetime_timespec(&adate_ts); } + create_date = convert_timespec_to_time_t(create_date_ts); + mdate = convert_timespec_to_time_t(mdate_ts); + adate = convert_timespec_to_time_t(adate_ts); + p = pdata; last_entry_ptr = p; @@ -1635,7 +1605,8 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, SIVAL(p,16,(uint32)allocation_size); SSVAL(p,20,mode); { - unsigned int ea_size = estimate_ea_size(conn, NULL, pathreal); + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); SIVAL(p,22,ea_size); /* Extended attributes */ } p += 27; @@ -1668,6 +1639,8 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_EA_LIST\n")); if (!name_list) { + TALLOC_FREE(fname); + TALLOC_FREE(smb_fname); return False; } if(requires_resume_key) { @@ -1682,12 +1655,16 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, SSVAL(p,20,mode); p += 22; /* p now points to the EA area. */ - file_list = get_ea_list_from_file(ctx, conn, NULL, pathreal, &ea_len); + file_list = get_ea_list_from_file(ctx, conn, NULL, + smb_fname->base_name, + &ea_len); name_list = ea_list_union(name_list, file_list, &ea_len); /* We need to determine if this entry will fit in the space available. */ /* Max string size is 255 bytes. */ if (PTR_DIFF(p + 255 + ea_len,pdata) > space_remaining) { + TALLOC_FREE(fname); + TALLOC_FREE(smb_fname); /* Move the dirptr back to prev_dirpos */ dptr_SeekDir(conn->dirptr, prev_dirpos); *out_of_space = True; @@ -1734,7 +1711,8 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, SIVAL(p,0,nt_extmode); p += 4; q = p; p += 4; /* q is placeholder for name length. */ { - unsigned int ea_size = estimate_ea_size(conn, NULL, pathreal); + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); SIVAL(p,0,ea_size); /* Extended attributes */ p += 4; } @@ -1742,7 +1720,8 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, * IMPORTANT as not doing so will trigger * a Win2k client bug. JRA. */ - if (!was_8_3 && check_mangled_names) { + if (!was_8_3 && state.check_mangled_names) { + char mangled_name[13]; /* mangled 8.3 name. */ if (!name_to_8_3(fname,mangled_name,True, conn->params)) { /* Error - mangle failed ! */ @@ -1808,7 +1787,8 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, SIVAL(p,0,nt_extmode); p += 4; q = p; p += 4; /* q is placeholder for name length. */ { - unsigned int ea_size = estimate_ea_size(conn, NULL, pathreal); + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); SIVAL(p,0,ea_size); /* Extended attributes */ p +=4; } @@ -1857,13 +1837,14 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, SIVAL(p,0,nt_extmode); p += 4; q = p; p += 4; /* q is placeholder for name length. */ { - unsigned int ea_size = estimate_ea_size(conn, NULL, pathreal); + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); SIVAL(p,0,ea_size); /* Extended attributes */ p +=4; } SIVAL(p,0,0); p += 4; /* Unknown - reserved ? */ - SIVAL(p,0,sbuf.st_ex_ino); p += 4; /* FileIndexLow */ - SIVAL(p,0,sbuf.st_ex_dev); p += 4; /* FileIndexHigh */ + SIVAL(p,0,smb_fname->st.st_ex_ino); p += 4; /* FileIndexLow */ + SIVAL(p,0,smb_fname->st.st_ex_dev); p += 4; /* FileIndexHigh */ len = srvstr_push(base_data, flags2, p, fname, PTR_DIFF(end_data, p), STR_TERMINATE_ASCII); @@ -1890,7 +1871,8 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, SIVAL(p,0,nt_extmode); p += 4; q = p; p += 4; /* q is placeholder for name length */ { - unsigned int ea_size = estimate_ea_size(conn, NULL, pathreal); + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); SIVAL(p,0,ea_size); /* Extended attributes */ p +=4; } @@ -1898,7 +1880,8 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, * IMPORTANT as not doing so will trigger * a Win2k client bug. JRA. */ - if (!was_8_3 && check_mangled_names) { + if (!was_8_3 && state.check_mangled_names) { + char mangled_name[13]; /* mangled 8.3 name. */ if (!name_to_8_3(fname,mangled_name,True, conn->params)) { /* Error - mangle failed ! */ @@ -1918,8 +1901,8 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, } p += 26; SSVAL(p,0,0); p += 2; /* Reserved ? */ - SIVAL(p,0,sbuf.st_ex_ino); p += 4; /* FileIndexLow */ - SIVAL(p,0,sbuf.st_ex_dev); p += 4; /* FileIndexHigh */ + SIVAL(p,0,smb_fname->st.st_ex_ino); p += 4; /* FileIndexLow */ + SIVAL(p,0,smb_fname->st.st_ex_dev); p += 4; /* FileIndexHigh */ len = srvstr_push(base_data, flags2, p, fname, PTR_DIFF(end_data, p), STR_TERMINATE_ASCII); @@ -1944,14 +1927,14 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, if (info_level == SMB_FIND_FILE_UNIX) { DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_UNIX\n")); p = store_file_unix_basic(conn, p, - NULL, &sbuf); + NULL, &smb_fname->st); len = srvstr_push(base_data, flags2, p, fname, PTR_DIFF(end_data, p), STR_TERMINATE); } else { DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_UNIX_INFO2\n")); p = store_file_unix_basic_info2(conn, p, - NULL, &sbuf); + NULL, &smb_fname->st); nameptr = p; p += 4; len = srvstr_push(base_data, flags2, p, fname, @@ -1972,10 +1955,13 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, default: TALLOC_FREE(fname); - return(False); + TALLOC_FREE(smb_fname); + return false; } TALLOC_FREE(fname); + TALLOC_FREE(smb_fname); + if (PTR_DIFF(p,pdata) > space_remaining) { /* Move the dirptr back to prev_dirpos */ dptr_SeekDir(conn->dirptr, prev_dirpos); @@ -1989,7 +1975,7 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, /* Advance the data pointer to the next slot */ *ppdata = p; - return(found); + return true; } /**************************************************************************** -- cgit From c50a03e4e2c47b828f81f2e4dc214ec84d9cae63 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 7 Aug 2009 09:31:45 +0200 Subject: s3:smbd: remove dirptr and dirpath from connection_struct They're both only used in the context of a function, so we can make them stack variables. metze --- source3/include/proto.h | 2 +- source3/include/smb.h | 2 -- source3/smbd/conn.c | 2 -- source3/smbd/dir.c | 11 +++-------- source3/smbd/reply.c | 33 +++++++++++++++++++-------------- source3/smbd/service.c | 2 -- source3/smbd/trans2.c | 46 ++++++++++++++++++++++++---------------------- 7 files changed, 47 insertions(+), 51 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index e4523a1625..b00a08446a 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6208,7 +6208,7 @@ struct dptr_struct *dptr_fetch(char *buf,int *num); struct dptr_struct *dptr_fetch_lanman2(int dptr_num); bool dir_check_ftype(connection_struct *conn, uint32 mode, uint32 dirtype); bool get_dir_entry(TALLOC_CTX *ctx, - connection_struct *conn, + struct dptr_struct *dirptr, const char *mask, uint32 dirtype, char **pp_fname_out, diff --git a/source3/include/smb.h b/source3/include/smb.h index c33c5363f3..b53735d36d 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -551,12 +551,10 @@ typedef struct connection_struct { struct share_params *params; bool force_user; struct vuid_cache vuid_cache; - struct dptr_struct *dirptr; bool printer; bool ipc; bool read_only; /* Attributes for the current user of the share. */ bool admin_user; /* Attributes for the current user of the share. */ - char *dirpath; char *connectpath; char *origpath; diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c index da67db978b..959fcd7754 100644 --- a/source3/smbd/conn.c +++ b/source3/smbd/conn.c @@ -163,7 +163,6 @@ find_again: sconn->smb1.tcons.num_open++; - string_set(&conn->dirpath,""); string_set(&conn->connectpath,""); string_set(&conn->origpath,""); @@ -284,7 +283,6 @@ static void conn_free_internal(connection_struct *conn) free_namearray(conn->veto_oplock_list); free_namearray(conn->aio_write_behind_list); - string_free(&conn->dirpath); string_free(&conn->connectpath); string_free(&conn->origpath); diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index e2f8e69449..1c84decbde 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -407,8 +407,6 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, return map_nt_error_from_unix(errno); } - string_set(&conn->dirpath,path); - if (dirhandles_open >= MAX_OPEN_DIRECTORIES) { dptr_idleoldest(); } @@ -1030,7 +1028,7 @@ static bool smbd_dirptr_8_3_mode_fn(TALLOC_CTX *ctx, } bool get_dir_entry(TALLOC_CTX *ctx, - connection_struct *conn, + struct dptr_struct *dirptr, const char *mask, uint32_t dirtype, char **_fname, @@ -1040,18 +1038,15 @@ bool get_dir_entry(TALLOC_CTX *ctx, bool check_descend, bool ask_sharemode) { + connection_struct *conn = dirptr->conn; char *fname = NULL; struct smb_filename *smb_fname = NULL; uint32_t mode = 0; long prev_offset; bool ok; - if (!conn->dirptr) { - return false; - } - ok = smbd_dirptr_get_entry(ctx, - conn->dirptr, + dirptr, mask, dirtype, check_descend, diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 750915b1cb..f6028a3eef 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -1366,6 +1366,7 @@ void reply_search(struct smb_request *req) bool allow_long_path_components = (req->flags2 & FLAGS2_LONG_PATH_COMPONENTS) ? True : False; TALLOC_CTX *ctx = talloc_tos(); bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); + struct dptr_struct *dirptr = NULL; START_PROFILE(SMBsearch); @@ -1446,14 +1447,15 @@ void reply_search(struct smb_request *req) mask, mask_contains_wcard, dirtype, - &conn->dirptr); + &dirptr); if (!NT_STATUS_IS_OK(nt_status)) { reply_nterror(req, nt_status); goto out; } - dptr_num = dptr_dnum(conn->dirptr); + dptr_num = dptr_dnum(dirptr); } else { int status_dirtype; + const char *dirpath; memcpy(status,p,21); status_dirtype = CVAL(status,0) & 0x1F; @@ -1461,11 +1463,17 @@ void reply_search(struct smb_request *req) dirtype = status_dirtype; } - conn->dirptr = dptr_fetch(status+12,&dptr_num); - if (!conn->dirptr) { + dirptr = dptr_fetch(status+12,&dptr_num); + if (!dirptr) { goto SearchEmpty; } - string_set(&conn->dirpath,dptr_path(dptr_num)); + dirpath = dptr_path(dptr_num); + directory = talloc_strdup(ctx, dirpath); + if (!directory) { + reply_nterror(req, NT_STATUS_NO_MEMORY); + goto out; + } + mask = dptr_wcard(dptr_num); if (!mask) { goto SearchEmpty; @@ -1481,7 +1489,7 @@ void reply_search(struct smb_request *req) DEBUG(4,("dptr_num is %d\n",dptr_num)); /* Initialize per SMBsearch/SMBffirst/SMBfunique operation data */ - dptr_init_search_op(conn->dirptr); + dptr_init_search_op(dirptr); if ((dirtype&0x1F) == aVOLID) { char buf[DIR_STRUCT_SIZE]; @@ -1512,14 +1520,14 @@ void reply_search(struct smb_request *req) /DIR_STRUCT_SIZE)); DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n", - conn->dirpath,lp_dontdescend(SNUM(conn)))); - if (in_list(conn->dirpath, lp_dontdescend(SNUM(conn)),True)) { + directory,lp_dontdescend(SNUM(conn)))); + if (in_list(directory, lp_dontdescend(SNUM(conn)),True)) { check_descend = True; } for (i=numentries;(ioutbuf, smb_flg2, (SVAL(req->outbuf, smb_flg2) & (~FLAGS2_UNICODE_STRINGS))); - if (!directory) { - directory = dptr_path(dptr_num); - } - DEBUG(4,("%s mask=%s path=%s dtype=%d nument=%u of %u\n", smb_fn_name(req->cmd), mask, - directory ? directory : "./", + directory, dirtype, numentries, maxentries )); out: + TALLOC_FREE(directory); TALLOC_FREE(smb_fname); END_PROFILE(SMBsearch); return; diff --git a/source3/smbd/service.c b/source3/smbd/service.c index c24b2264c1..fc56105adf 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -692,7 +692,6 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, conn->printer = (strncmp(dev,"LPT",3) == 0); conn->ipc = ( (strncmp(dev,"IPC",3) == 0) || ( lp_enable_asu_support() && strequal(dev,"ADMIN$")) ); - conn->dirptr = NULL; /* Case options for the share. */ if (lp_casesensitive(snum) == Auto) { @@ -712,7 +711,6 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, conn->hide_list = NULL; conn->veto_oplock_list = NULL; conn->aio_write_behind_list = NULL; - string_set(&conn->dirpath,""); conn->read_only = lp_readonly(SNUM(conn)); conn->admin_user = False; diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index e48ffac150..3f93b3d571 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -1448,6 +1448,7 @@ static bool smbd_dirptr_lanman2_mode_fn(TALLOC_CTX *ctx, static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, connection_struct *conn, + struct dptr_struct *dirptr, uint16 flags2, const char *path_mask, uint32 dirtype, @@ -1487,7 +1488,7 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, state.conn = conn; state.info_level = info_level; state.check_mangled_names = lp_manglednames(conn->params); - state.has_wild = dptr_has_wild(conn->dirptr); + state.has_wild = dptr_has_wild(dirptr); state.got_exact_match = false; *out_of_space = False; @@ -1497,10 +1498,6 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, ZERO_STRUCT(adate_ts); ZERO_STRUCT(create_date_ts); - if (!conn->dirptr) { - return false; - } - p = strrchr_m(path_mask,'/'); if(p != NULL) { if(p[1] == '\0') { @@ -1513,7 +1510,7 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, } ok = smbd_dirptr_get_entry(ctx, - conn->dirptr, + dirptr, mask, dirtype, dont_descend, @@ -1666,7 +1663,7 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, TALLOC_FREE(fname); TALLOC_FREE(smb_fname); /* Move the dirptr back to prev_dirpos */ - dptr_SeekDir(conn->dirptr, prev_dirpos); + dptr_SeekDir(dirptr, prev_dirpos); *out_of_space = True; DEBUG(9,("get_lanman2_dir_entry: out of space\n")); return False; /* Not finished - just out of space */ @@ -1964,7 +1961,7 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, if (PTR_DIFF(p,pdata) > space_remaining) { /* Move the dirptr back to prev_dirpos */ - dptr_SeekDir(conn->dirptr, prev_dirpos); + dptr_SeekDir(dirptr, prev_dirpos); *out_of_space = True; DEBUG(9,("get_lanman2_dir_entry: out of space\n")); return False; /* Not finished - just out of space */ @@ -2020,6 +2017,7 @@ static void call_trans2findfirst(connection_struct *conn, NTSTATUS ntstatus = NT_STATUS_OK; bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); TALLOC_CTX *ctx = talloc_tos(); + struct dptr_struct *dirptr = NULL; if (total_params < 13) { reply_nterror(req, NT_STATUS_INVALID_PARAMETER); @@ -2177,24 +2175,25 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd mask, mask_contains_wcard, dirtype, - &conn->dirptr); + &dirptr); if (!NT_STATUS_IS_OK(ntstatus)) { reply_nterror(req, ntstatus); goto out; } - dptr_num = dptr_dnum(conn->dirptr); + dptr_num = dptr_dnum(dirptr); DEBUG(4,("dptr_num is %d, wcard = %s, attr = %d\n", dptr_num, mask, dirtype)); /* Initialize per TRANS2_FIND_FIRST operation data */ - dptr_init_search_op(conn->dirptr); + dptr_init_search_op(dirptr); /* We don't need to check for VOL here as this is returned by a different TRANS2 call. */ - DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n", conn->dirpath,lp_dontdescend(SNUM(conn)))); - if (in_list(conn->dirpath,lp_dontdescend(SNUM(conn)),conn->case_sensitive)) + DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n", + directory,lp_dontdescend(SNUM(conn)))); + if (in_list(directory,lp_dontdescend(SNUM(conn)),conn->case_sensitive)) dont_descend = True; p = pdata; @@ -2212,6 +2211,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd } else { finished = !get_lanman2_dir_entry(ctx, conn, + dirptr, req->flags2, mask,dirtype,info_level, requires_resume_key,dont_descend, @@ -2355,6 +2355,7 @@ static void call_trans2findnext(connection_struct *conn, NTSTATUS ntstatus = NT_STATUS_OK; bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); TALLOC_CTX *ctx = talloc_tos(); + struct dptr_struct *dirptr; if (total_params < 13) { reply_nterror(req, NT_STATUS_INVALID_PARAMETER); @@ -2476,12 +2477,12 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd params = *pparams; /* Check that the dptr is valid */ - if(!(conn->dirptr = dptr_fetch_lanman2(dptr_num))) { + if(!(dirptr = dptr_fetch_lanman2(dptr_num))) { reply_doserror(req, ERRDOS, ERRnofiles); return; } - string_set(&conn->dirpath,dptr_path(dptr_num)); + directory = dptr_path(dptr_num); /* Get the wildcard mask from the dptr */ if((p = dptr_wcard(dptr_num))== NULL) { @@ -2491,24 +2492,24 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd } mask = p; - directory = conn->dirpath; /* Get the attr mask from the dptr */ dirtype = dptr_attr(dptr_num); DEBUG(3,("dptr_num is %d, mask = %s, attr = %x, dirptr=(0x%lX,%ld)\n", dptr_num, mask, dirtype, - (long)conn->dirptr, - dptr_TellDir(conn->dirptr))); + (long)dirptr, + dptr_TellDir(dirptr))); /* Initialize per TRANS2_FIND_NEXT operation data */ - dptr_init_search_op(conn->dirptr); + dptr_init_search_op(dirptr); /* We don't need to check for VOL here as this is returned by a different TRANS2 call. */ - DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n",conn->dirpath,lp_dontdescend(SNUM(conn)))); - if (in_list(conn->dirpath,lp_dontdescend(SNUM(conn)),conn->case_sensitive)) + DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n", + directory,lp_dontdescend(SNUM(conn)))); + if (in_list(directory,lp_dontdescend(SNUM(conn)),conn->case_sensitive)) dont_descend = True; p = pdata; @@ -2550,7 +2551,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd * should already be at the correct place. */ - finished = !dptr_SearchDir(conn->dirptr, resume_name, ¤t_pos, &st); + finished = !dptr_SearchDir(dirptr, resume_name, ¤t_pos, &st); } /* end if resume_name && !continue_bit */ for (i=0;(i<(int)maxentries) && !finished && !out_of_space ;i++) { @@ -2564,6 +2565,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd } else { finished = !get_lanman2_dir_entry(ctx, conn, + dirptr, req->flags2, mask,dirtype,info_level, requires_resume_key,dont_descend, -- cgit From 59c3f5e3ca8885266fef65261ecae3f51ce78729 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 6 Aug 2009 12:15:51 +0200 Subject: s3:smbd: move dptr globals into struct smbd_server_connection metze --- source3/include/proto.h | 22 ++++--- source3/smbd/dir.c | 153 +++++++++++++++++++++++++++++++----------------- source3/smbd/globals.c | 4 -- source3/smbd/globals.h | 11 ++-- source3/smbd/process.c | 3 + source3/smbd/reply.c | 27 +++++---- source3/smbd/server.c | 2 - source3/smbd/trans2.c | 23 ++++---- 8 files changed, 148 insertions(+), 97 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index b00a08446a..e8bfe8efae 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6181,14 +6181,15 @@ bool make_dir_struct(TALLOC_CTX *ctx, uint32 mode, time_t date, bool uc); -void init_dptrs(void); -char *dptr_path(int key); -char *dptr_wcard(int key); -uint16 dptr_attr(int key); -void dptr_close(int *key); +bool init_dptrs(struct smbd_server_connection *sconn); +char *dptr_path(struct smbd_server_connection *sconn, int key); +char *dptr_wcard(struct smbd_server_connection *sconn, int key); +uint16 dptr_attr(struct smbd_server_connection *sconn, int key); +void dptr_close(struct smbd_server_connection *sconn, int *key); void dptr_closecnum(connection_struct *conn); void dptr_idlecnum(connection_struct *conn); -void dptr_closepath(char *path,uint16 spid); +void dptr_closepath(struct smbd_server_connection *sconn, + char *path,uint16 spid); NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, bool expect_close,uint16 spid, const char *wcard, bool wcard_has_wild, uint32 attr, struct dptr_struct **dptr_ret); int dptr_CloseDir(struct dptr_struct *dptr); @@ -6203,9 +6204,12 @@ char *dptr_ReadDirName(TALLOC_CTX *ctx, bool dptr_SearchDir(struct dptr_struct *dptr, const char *name, long *poffset, SMB_STRUCT_STAT *pst); void dptr_DirCacheAdd(struct dptr_struct *dptr, const char *name, long offset); void dptr_init_search_op(struct dptr_struct *dptr); -bool dptr_fill(char *buf1,unsigned int key); -struct dptr_struct *dptr_fetch(char *buf,int *num); -struct dptr_struct *dptr_fetch_lanman2(int dptr_num); +bool dptr_fill(struct smbd_server_connection *sconn, + char *buf1,unsigned int key); +struct dptr_struct *dptr_fetch(struct smbd_server_connection *sconn, + char *buf,int *num); +struct dptr_struct *dptr_fetch_lanman2(struct smbd_server_connection *sconn, + int dptr_num); bool dir_check_ftype(connection_struct *conn, uint32 mode, uint32 dirtype); bool get_dir_entry(TALLOC_CTX *ctx, struct dptr_struct *dirptr, diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 1c84decbde..73c4cbb3e7 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -115,15 +115,19 @@ bool make_dir_struct(TALLOC_CTX *ctx, Initialise the dir bitmap. ****************************************************************************/ -void init_dptrs(void) +bool init_dptrs(struct smbd_server_connection *sconn) { - if (dptr_bmap) - return; + if (sconn->smb1.searches.dptr_bmap) { + return true; + } - dptr_bmap = bitmap_allocate(MAX_DIRECTORY_HANDLES); + sconn->smb1.searches.dptr_bmap = bitmap_allocate(MAX_DIRECTORY_HANDLES); + + if (sconn->smb1.searches.dptr_bmap == NULL) { + return false; + } - if (!dptr_bmap) - exit_server("out of memory in init_dptrs"); + return true; } /**************************************************************************** @@ -142,14 +146,14 @@ static void dptr_idle(struct dptr_struct *dptr) Idle the oldest dptr. ****************************************************************************/ -static void dptr_idleoldest(void) +static void dptr_idleoldest(struct smbd_server_connection *sconn) { struct dptr_struct *dptr; /* * Go to the end of the list. */ - for(dptr = dirptrs; dptr && dptr->next; dptr = dptr->next) + for(dptr = sconn->smb1.searches.dirptrs; dptr && dptr->next; dptr = dptr->next) ; if(!dptr) { @@ -173,15 +177,16 @@ static void dptr_idleoldest(void) Get the struct dptr_struct for a dir index. ****************************************************************************/ -static struct dptr_struct *dptr_get(int key, bool forclose) +static struct dptr_struct *dptr_get(struct smbd_server_connection *sconn, + int key, bool forclose) { struct dptr_struct *dptr; - for(dptr = dirptrs; dptr; dptr = dptr->next) { + for(dptr = sconn->smb1.searches.dirptrs; dptr; dptr = dptr->next) { if(dptr->dnum == key) { if (!forclose && !dptr->dir_hnd) { - if (dirhandles_open >= MAX_OPEN_DIRECTORIES) - dptr_idleoldest(); + if (sconn->smb1.searches.dirhandles_open >= MAX_OPEN_DIRECTORIES) + dptr_idleoldest(sconn); DEBUG(4,("dptr_get: Reopening dptr key %d\n",key)); if (!(dptr->dir_hnd = OpenDir( NULL, dptr->conn, dptr->path, @@ -191,7 +196,7 @@ static struct dptr_struct *dptr_get(int key, bool forclose) return False; } } - DLIST_PROMOTE(dirptrs,dptr); + DLIST_PROMOTE(sconn->smb1.searches.dirptrs,dptr); return dptr; } } @@ -202,9 +207,9 @@ static struct dptr_struct *dptr_get(int key, bool forclose) Get the dir path for a dir index. ****************************************************************************/ -char *dptr_path(int key) +char *dptr_path(struct smbd_server_connection *sconn, int key) { - struct dptr_struct *dptr = dptr_get(key, False); + struct dptr_struct *dptr = dptr_get(sconn, key, false); if (dptr) return(dptr->path); return(NULL); @@ -214,9 +219,9 @@ char *dptr_path(int key) Get the dir wcard for a dir index. ****************************************************************************/ -char *dptr_wcard(int key) +char *dptr_wcard(struct smbd_server_connection *sconn, int key) { - struct dptr_struct *dptr = dptr_get(key, False); + struct dptr_struct *dptr = dptr_get(sconn, key, false); if (dptr) return(dptr->wcard); return(NULL); @@ -226,9 +231,9 @@ char *dptr_wcard(int key) Get the dir attrib for a dir index. ****************************************************************************/ -uint16 dptr_attr(int key) +uint16 dptr_attr(struct smbd_server_connection *sconn, int key) { - struct dptr_struct *dptr = dptr_get(key, False); + struct dptr_struct *dptr = dptr_get(sconn, key, false); if (dptr) return(dptr->attr); return(0); @@ -240,22 +245,29 @@ uint16 dptr_attr(int key) static void dptr_close_internal(struct dptr_struct *dptr) { + struct smbd_server_connection *sconn = dptr->conn->sconn; + DEBUG(4,("closing dptr key %d\n",dptr->dnum)); - DLIST_REMOVE(dirptrs, dptr); + if (sconn == NULL) { + goto done; + } + + DLIST_REMOVE(sconn->smb1.searches.dirptrs, dptr); /* * Free the dnum in the bitmap. Remember the dnum value is always * biased by one with respect to the bitmap. */ - if(bitmap_query( dptr_bmap, dptr->dnum - 1) != True) { + if(bitmap_query(sconn->smb1.searches.dptr_bmap, dptr->dnum - 1) != true) { DEBUG(0,("dptr_close_internal : Error - closing dnum = %d and bitmap not set !\n", dptr->dnum )); } - bitmap_clear(dptr_bmap, dptr->dnum - 1); + bitmap_clear(sconn->smb1.searches.dptr_bmap, dptr->dnum - 1); +done: TALLOC_FREE(dptr->dir_hnd); /* Lanman 2 specific code */ @@ -268,7 +280,7 @@ static void dptr_close_internal(struct dptr_struct *dptr) Close a dptr given a key. ****************************************************************************/ -void dptr_close(int *key) +void dptr_close(struct smbd_server_connection *sconn, int *key) { struct dptr_struct *dptr; @@ -278,7 +290,7 @@ void dptr_close(int *key) /* OS/2 seems to use -1 to indicate "close all directories" */ if (*key == -1) { struct dptr_struct *next; - for(dptr = dirptrs; dptr; dptr = next) { + for(dptr = sconn->smb1.searches.dirptrs; dptr; dptr = next) { next = dptr->next; dptr_close_internal(dptr); } @@ -286,7 +298,7 @@ void dptr_close(int *key) return; } - dptr = dptr_get(*key, True); + dptr = dptr_get(sconn, *key, true); if (!dptr) { DEBUG(0,("Invalid key %d given to dptr_close\n", *key)); @@ -305,10 +317,17 @@ void dptr_close(int *key) void dptr_closecnum(connection_struct *conn) { struct dptr_struct *dptr, *next; - for(dptr = dirptrs; dptr; dptr = next) { + struct smbd_server_connection *sconn = conn->sconn; + + if (sconn == NULL) { + return; + } + + for(dptr = sconn->smb1.searches.dirptrs; dptr; dptr = next) { next = dptr->next; - if (dptr->conn == conn) + if (dptr->conn == conn) { dptr_close_internal(dptr); + } } } @@ -319,9 +338,16 @@ void dptr_closecnum(connection_struct *conn) void dptr_idlecnum(connection_struct *conn) { struct dptr_struct *dptr; - for(dptr = dirptrs; dptr; dptr = dptr->next) { - if (dptr->conn == conn && dptr->dir_hnd) + struct smbd_server_connection *sconn = conn->sconn; + + if (sconn == NULL) { + return; + } + + for(dptr = sconn->smb1.searches.dirptrs; dptr; dptr = dptr->next) { + if (dptr->conn == conn && dptr->dir_hnd) { dptr_idle(dptr); + } } } @@ -329,10 +355,11 @@ void dptr_idlecnum(connection_struct *conn) Close a dptr that matches a given path, only if it matches the spid also. ****************************************************************************/ -void dptr_closepath(char *path,uint16 spid) +void dptr_closepath(struct smbd_server_connection *sconn, + char *path,uint16 spid) { struct dptr_struct *dptr, *next; - for(dptr = dirptrs; dptr; dptr = next) { + for(dptr = sconn->smb1.searches.dirptrs; dptr; dptr = next) { next = dptr->next; if (spid == dptr->spid && strequal(dptr->path,path)) dptr_close_internal(dptr); @@ -345,14 +372,15 @@ void dptr_closepath(char *path,uint16 spid) finished with that one. ****************************************************************************/ -static void dptr_close_oldest(bool old) +static void dptr_close_oldest(struct smbd_server_connection *sconn, + bool old) { struct dptr_struct *dptr; /* * Go to the end of the list. */ - for(dptr = dirptrs; dptr && dptr->next; dptr = dptr->next) + for(dptr = sconn->smb1.searches.dirptrs; dptr && dptr->next; dptr = dptr->next) ; if(!dptr) { @@ -387,12 +415,18 @@ static void dptr_close_oldest(bool old) NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, bool expect_close,uint16 spid, const char *wcard, bool wcard_has_wild, uint32 attr, struct dptr_struct **dptr_ret) { + struct smbd_server_connection *sconn = conn->sconn; struct dptr_struct *dptr = NULL; struct smb_Dir *dir_hnd; NTSTATUS status; DEBUG(5,("dptr_create dir=%s\n", path)); + if (sconn == NULL) { + DEBUG(0,("dptr_create: called with fake connection_struct\n")); + return NT_STATUS_INTERNAL_ERROR; + } + if (!wcard) { return NT_STATUS_INVALID_PARAMETER; } @@ -407,8 +441,8 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, return map_nt_error_from_unix(errno); } - if (dirhandles_open >= MAX_OPEN_DIRECTORIES) { - dptr_idleoldest(); + if (sconn->smb1.searches.dirhandles_open >= MAX_OPEN_DIRECTORIES) { + dptr_idleoldest(sconn); } dptr = SMB_MALLOC_P(struct dptr_struct); @@ -427,7 +461,7 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, * value we return will fit in the range 1-255. */ - dptr->dnum = bitmap_find(dptr_bmap, 0); + dptr->dnum = bitmap_find(sconn->smb1.searches.dptr_bmap, 0); if(dptr->dnum == -1 || dptr->dnum > 254) { @@ -437,10 +471,10 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, * finished with that one. */ - dptr_close_oldest(True); + dptr_close_oldest(sconn, true); /* Now try again... */ - dptr->dnum = bitmap_find(dptr_bmap, 0); + dptr->dnum = bitmap_find(sconn->smb1.searches.dptr_bmap, 0); if(dptr->dnum == -1 || dptr->dnum > 254) { DEBUG(0,("dptr_create: returned %d: Error - all old dirptrs in use ?\n", dptr->dnum)); SAFE_FREE(dptr); @@ -455,7 +489,7 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, * a range that will return 256 - MAX_DIRECTORY_HANDLES. */ - dptr->dnum = bitmap_find(dptr_bmap, 255); + dptr->dnum = bitmap_find(sconn->smb1.searches.dptr_bmap, 255); if(dptr->dnum == -1 || dptr->dnum < 255) { @@ -466,10 +500,10 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, * directory handles. */ - dptr_close_oldest(False); + dptr_close_oldest(sconn, false); /* Now try again... */ - dptr->dnum = bitmap_find(dptr_bmap, 255); + dptr->dnum = bitmap_find(sconn->smb1.searches.dptr_bmap, 255); if(dptr->dnum == -1 || dptr->dnum < 255) { DEBUG(0,("dptr_create: returned %d: Error - all new dirptrs in use ?\n", dptr->dnum)); @@ -480,7 +514,7 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, } } - bitmap_set(dptr_bmap, dptr->dnum); + bitmap_set(sconn->smb1.searches.dptr_bmap, dptr->dnum); dptr->dnum += 1; /* Always bias the dnum by one - no zero dnums allowed. */ @@ -491,7 +525,7 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, dptr->expect_close = expect_close; dptr->wcard = SMB_STRDUP(wcard); if (!dptr->wcard) { - bitmap_clear(dptr_bmap, dptr->dnum - 1); + bitmap_clear(sconn->smb1.searches.dptr_bmap, dptr->dnum - 1); SAFE_FREE(dptr); TALLOC_FREE(dir_hnd); return NT_STATUS_NO_MEMORY; @@ -504,7 +538,7 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, dptr->attr = attr; - DLIST_ADD(dirptrs, dptr); + DLIST_ADD(sconn->smb1.searches.dirptrs, dptr); DEBUG(3,("creating new dirptr %d for path %s, expect_close = %d\n", dptr->dnum,path,expect_close)); @@ -521,7 +555,8 @@ NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, int dptr_CloseDir(struct dptr_struct *dptr) { - DLIST_REMOVE(dirptrs, dptr); + struct smbd_server_connection *sconn = dptr->conn->sconn; + DLIST_REMOVE(sconn->smb1.searches.dirptrs, dptr); TALLOC_FREE(dptr->dir_hnd); return 0; } @@ -724,10 +759,11 @@ void dptr_init_search_op(struct dptr_struct *dptr) Fill the 5 byte server reserved dptr field. ****************************************************************************/ -bool dptr_fill(char *buf1,unsigned int key) +bool dptr_fill(struct smbd_server_connection *sconn, + char *buf1,unsigned int key) { unsigned char *buf = (unsigned char *)buf1; - struct dptr_struct *dptr = dptr_get(key, False); + struct dptr_struct *dptr = dptr_get(sconn, key, false); uint32 offset; if (!dptr) { DEBUG(1,("filling null dirptr %d\n",key)); @@ -745,10 +781,11 @@ bool dptr_fill(char *buf1,unsigned int key) Fetch the dir ptr and seek it given the 5 byte server field. ****************************************************************************/ -struct dptr_struct *dptr_fetch(char *buf,int *num) +struct dptr_struct *dptr_fetch(struct smbd_server_connection *sconn, + char *buf, int *num) { unsigned int key = *(unsigned char *)buf; - struct dptr_struct *dptr = dptr_get(key, False); + struct dptr_struct *dptr = dptr_get(sconn, key, false); uint32 offset; long seekoff; @@ -765,7 +802,7 @@ struct dptr_struct *dptr_fetch(char *buf,int *num) } SeekDir(dptr->dir_hnd,seekoff); DEBUG(3,("fetching dirptr %d for path %s at offset %d\n", - key,dptr_path(key),(int)seekoff)); + key, dptr->path, (int)seekoff)); return(dptr); } @@ -773,15 +810,16 @@ struct dptr_struct *dptr_fetch(char *buf,int *num) Fetch the dir ptr. ****************************************************************************/ -struct dptr_struct *dptr_fetch_lanman2(int dptr_num) +struct dptr_struct *dptr_fetch_lanman2(struct smbd_server_connection *sconn, + int dptr_num) { - struct dptr_struct *dptr = dptr_get(dptr_num, False); + struct dptr_struct *dptr = dptr_get(sconn, dptr_num, false); if (!dptr) { DEBUG(3,("fetched null dirptr %d\n",dptr_num)); return(NULL); } - DEBUG(3,("fetching dirptr %d for path %s\n",dptr_num,dptr_path(dptr_num))); + DEBUG(3,("fetching dirptr %d for path %s\n",dptr_num,dptr->path)); return(dptr); } @@ -1245,7 +1283,9 @@ static int smb_Dir_destructor(struct smb_Dir *dirp) if (dirp->dir) { SMB_VFS_CLOSEDIR(dirp->conn,dirp->dir); } - dirhandles_open--; + if (dirp->conn->sconn) { + dirp->conn->sconn->smb1.searches.dirhandles_open--; + } return 0; } @@ -1257,6 +1297,7 @@ struct smb_Dir *OpenDir(TALLOC_CTX *mem_ctx, connection_struct *conn, const char *name, const char *mask, uint32 attr) { struct smb_Dir *dirp = TALLOC_ZERO_P(mem_ctx, struct smb_Dir); + struct smbd_server_connection *sconn = conn->sconn; if (!dirp) { return NULL; @@ -1271,7 +1312,9 @@ struct smb_Dir *OpenDir(TALLOC_CTX *mem_ctx, connection_struct *conn, goto fail; } - dirhandles_open++; + if (sconn) { + sconn->smb1.searches.dirhandles_open++; + } talloc_set_destructor(dirp, smb_Dir_destructor); dirp->dir = SMB_VFS_OPENDIR(conn, dirp->dir_path, mask, attr); diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c index 317304a86d..f680b76369 100644 --- a/source3/smbd/globals.c +++ b/source3/smbd/globals.c @@ -46,10 +46,6 @@ struct smbd_dmapi_context *dmapi_ctx = NULL; bool dfree_broken = false; -struct bitmap *dptr_bmap = NULL; -struct dptr_struct *dirptrs = NULL; -int dirhandles_open = 0; - /* how many write cache buffers have been allocated */ unsigned int allocated_write_caches = 0; diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 6a62cf6a21..338398968a 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -44,11 +44,6 @@ extern struct smbd_dmapi_context *dmapi_ctx; extern bool dfree_broken; -extern struct bitmap *dptr_bmap; -//struct dptr_struct; -extern struct dptr_struct *dirptrs; -extern int dirhandles_open; - /* how many write cache buffers have been allocated */ extern unsigned int allocated_write_caches; @@ -453,6 +448,12 @@ struct smbd_server_connection { struct pending_auth_data *pd_list; struct notify_mid_map *notify_mid_maps; + + struct { + struct bitmap *dptr_bmap; + struct dptr_struct *dirptrs; + int dirhandles_open; + } searches; } smb1; struct { struct tevent_context *event_ctx; diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 99c862300d..6ec46071ff 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -2206,6 +2206,9 @@ void smbd_process(void) #endif conn_init(smbd_server_conn); + if (!init_dptrs(smbd_server_conn)) { + exit_server("init_dptrs() failed"); + } smbd_server_conn->smb1.fde = event_add_fd(smbd_event_context(), smbd_server_conn, diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index f6028a3eef..3498109f12 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -1367,6 +1367,7 @@ void reply_search(struct smb_request *req) TALLOC_CTX *ctx = talloc_tos(); bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); struct dptr_struct *dirptr = NULL; + struct smbd_server_connection *sconn = smbd_server_conn; START_PROFILE(SMBsearch); @@ -1463,18 +1464,18 @@ void reply_search(struct smb_request *req) dirtype = status_dirtype; } - dirptr = dptr_fetch(status+12,&dptr_num); + dirptr = dptr_fetch(sconn, status+12,&dptr_num); if (!dirptr) { goto SearchEmpty; } - dirpath = dptr_path(dptr_num); + dirpath = dptr_path(sconn, dptr_num); directory = talloc_strdup(ctx, dirpath); if (!directory) { reply_nterror(req, NT_STATUS_NO_MEMORY); goto out; } - mask = dptr_wcard(dptr_num); + mask = dptr_wcard(sconn, dptr_num); if (!mask) { goto SearchEmpty; } @@ -1483,7 +1484,7 @@ void reply_search(struct smb_request *req) * check from the initial saved string. */ mask_contains_wcard = ms_has_wild(mask); - dirtype = dptr_attr(dptr_num); + dirtype = dptr_attr(sconn, dptr_num); } DEBUG(4,("dptr_num is %d\n",dptr_num)); @@ -1499,7 +1500,7 @@ void reply_search(struct smb_request *req) reply_nterror(req, NT_STATUS_NO_MEMORY); goto out; } - dptr_fill(buf+12,dptr_num); + dptr_fill(sconn, buf+12,dptr_num); if (dptr_zero(buf+12) && (status_len==0)) { numentries = 1; } else { @@ -1550,7 +1551,7 @@ void reply_search(struct smb_request *req) reply_nterror(req, NT_STATUS_NO_MEMORY); goto out; } - if (!dptr_fill(buf+12,dptr_num)) { + if (!dptr_fill(sconn, buf+12,dptr_num)) { break; } if (message_push_blob(&req->outbuf, @@ -1571,15 +1572,15 @@ void reply_search(struct smb_request *req) (X/Open spec) */ if (numentries == 0) { - dptr_close(&dptr_num); + dptr_close(sconn, &dptr_num); } else if(expect_close && status_len == 0) { /* Close the dptr - we know it's gone */ - dptr_close(&dptr_num); + dptr_close(sconn, &dptr_num); } /* If we were called as SMBfunique, then we can close the dirptr now ! */ if(dptr_num >= 0 && req->cmd == SMBfunique) { - dptr_close(&dptr_num); + dptr_close(sconn, &dptr_num); } if ((numentries == 0) && !mask_contains_wcard) { @@ -1633,6 +1634,7 @@ void reply_fclose(struct smb_request *req) NTSTATUS err; bool path_contains_wcard = False; TALLOC_CTX *ctx = talloc_tos(); + struct smbd_server_connection *sconn = smbd_server_conn; START_PROFILE(SMBfclose); @@ -1662,9 +1664,9 @@ void reply_fclose(struct smb_request *req) memcpy(status,p,21); - if(dptr_fetch(status+12,&dptr_num)) { + if(dptr_fetch(sconn, status+12,&dptr_num)) { /* Close the dptr - we know it's gone */ - dptr_close(&dptr_num); + dptr_close(sconn, &dptr_num); } reply_outbuf(req, 1, 0); @@ -5532,6 +5534,7 @@ void reply_rmdir(struct smb_request *req) char *directory = NULL; NTSTATUS status; TALLOC_CTX *ctx = talloc_tos(); + struct smbd_server_connection *sconn = smbd_server_conn; START_PROFILE(SMBrmdir); @@ -5563,7 +5566,7 @@ void reply_rmdir(struct smb_request *req) goto out; } - dptr_closepath(smb_dname->base_name, req->smbpid); + dptr_closepath(sconn, smb_dname->base_name, req->smbpid); status = rmdir_internals(ctx, conn, smb_dname); if (!NT_STATUS_IS_OK(status)) { reply_nterror(req, status); diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 4b1c803d75..ace3124842 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -914,8 +914,6 @@ static bool init_structs(void ) file_init(); - init_dptrs(); - if (!secrets_init()) return False; diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 3f93b3d571..9273339b71 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -2018,6 +2018,7 @@ static void call_trans2findfirst(connection_struct *conn, bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); TALLOC_CTX *ctx = talloc_tos(); struct dptr_struct *dirptr = NULL; + struct smbd_server_connection *sconn = smbd_server_conn; if (total_params < 13) { reply_nterror(req, NT_STATUS_INVALID_PARAMETER); @@ -2250,7 +2251,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd /* Check if we can close the dirptr */ if(close_after_first || (finished && close_if_end)) { DEBUG(5,("call_trans2findfirst - (2) closing dptr_num %d\n", dptr_num)); - dptr_close(&dptr_num); + dptr_close(sconn, &dptr_num); } /* @@ -2261,7 +2262,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd */ if(numentries == 0) { - dptr_close(&dptr_num); + dptr_close(sconn, &dptr_num); if (Protocol < PROTOCOL_NT1) { reply_doserror(req, ERRDOS, ERRnofiles); goto out; @@ -2284,8 +2285,8 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd send_trans2_replies(conn, req, params, 10, pdata, PTR_DIFF(p,pdata), max_data_bytes); - if ((! *directory) && dptr_path(dptr_num)) { - directory = talloc_strdup(talloc_tos(),dptr_path(dptr_num)); + if ((! *directory) && dptr_path(sconn, dptr_num)) { + directory = talloc_strdup(talloc_tos(),dptr_path(sconn, dptr_num)); if (!directory) { reply_nterror(req, NT_STATUS_NO_MEMORY); } @@ -2356,6 +2357,7 @@ static void call_trans2findnext(connection_struct *conn, bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); TALLOC_CTX *ctx = talloc_tos(); struct dptr_struct *dirptr; + struct smbd_server_connection *sconn = smbd_server_conn; if (total_params < 13) { reply_nterror(req, NT_STATUS_INVALID_PARAMETER); @@ -2477,15 +2479,15 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd params = *pparams; /* Check that the dptr is valid */ - if(!(dirptr = dptr_fetch_lanman2(dptr_num))) { + if(!(dirptr = dptr_fetch_lanman2(sconn, dptr_num))) { reply_doserror(req, ERRDOS, ERRnofiles); return; } - directory = dptr_path(dptr_num); + directory = dptr_path(sconn, dptr_num); /* Get the wildcard mask from the dptr */ - if((p = dptr_wcard(dptr_num))== NULL) { + if((p = dptr_wcard(sconn, dptr_num))== NULL) { DEBUG(2,("dptr_num %d has no wildcard\n", dptr_num)); reply_doserror(req, ERRDOS, ERRnofiles); return; @@ -2494,7 +2496,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd mask = p; /* Get the attr mask from the dptr */ - dirtype = dptr_attr(dptr_num); + dirtype = dptr_attr(sconn, dptr_num); DEBUG(3,("dptr_num is %d, mask = %s, attr = %x, dirptr=(0x%lX,%ld)\n", dptr_num, mask, dirtype, @@ -2602,7 +2604,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd /* Check if we can close the dirptr */ if(close_after_request || (finished && close_if_end)) { DEBUG(5,("call_trans2findnext: closing dptr_num = %d\n", dptr_num)); - dptr_close(&dptr_num); /* This frees up the saved mask */ + dptr_close(sconn, &dptr_num); /* This frees up the saved mask */ } /* Set up the return parameter block */ @@ -7851,6 +7853,7 @@ static void call_trans2ioctl(connection_struct *conn, void reply_findclose(struct smb_request *req) { int dptr_num; + struct smbd_server_connection *sconn = smbd_server_conn; START_PROFILE(SMBfindclose); @@ -7864,7 +7867,7 @@ void reply_findclose(struct smb_request *req) DEBUG(3,("reply_findclose, dptr_num = %d\n", dptr_num)); - dptr_close(&dptr_num); + dptr_close(sconn, &dptr_num); reply_outbuf(req, 0, 0); -- cgit From 50f54250f4b566e10d0be40dc2d0117c6cb7a73d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 6 Aug 2009 12:15:51 +0200 Subject: s3:smbd: split the dir entry marshalling into smbd_marshall_dir_entry() So that we can reuse it for SMB2 Find. metze --- source3/smbd/trans2.c | 925 ++++++++++++++++++++++++++------------------------ 1 file changed, 482 insertions(+), 443 deletions(-) (limited to 'source3') diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 9273339b71..780d7d606c 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -1446,88 +1446,41 @@ static bool smbd_dirptr_lanman2_mode_fn(TALLOC_CTX *ctx, return true; } -static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, - connection_struct *conn, - struct dptr_struct *dirptr, - uint16 flags2, - const char *path_mask, - uint32 dirtype, - int info_level, - int requires_resume_key, - bool dont_descend, - bool ask_sharemode, - char **ppdata, - char *base_data, - char *end_data, - int space_remaining, - bool *out_of_space, - bool *got_exact_match, - int *last_entry_off, - struct ea_list *name_list) +static bool smbd_marshall_dir_entry(TALLOC_CTX *ctx, + connection_struct *conn, + uint16_t flags2, + uint32_t info_level, + struct ea_list *name_list, + bool check_mangled_names, + bool requires_resume_key, + uint32_t mode, + const char *fname, + const struct smb_filename *smb_fname, + uint64_t space_remaining, + char *base_data, + char **ppdata, + char *end_data, + bool *out_of_space, + uint64_t *last_entry_off) { - const char *mask = NULL; char *p, *q, *pdata = *ppdata; - uint32 reskey=0; - long prev_dirpos=0; - uint32 mode=0; - SMB_OFF_T file_size = 0; + uint32_t reskey=0; + uint64_t file_size = 0; uint64_t allocation_size = 0; - uint32 len; + uint32_t len; struct timespec mdate_ts, adate_ts, create_date_ts; time_t mdate = (time_t)0, adate = (time_t)0, create_date = (time_t)0; char *nameptr; char *last_entry_ptr; bool was_8_3; - uint32 nt_extmode; /* Used for NT connections instead of mode */ - char *fname = NULL; - struct smb_filename *smb_fname = NULL; - struct smbd_dirptr_lanman2_state state; - bool ok; + uint32_t nt_extmode; /* Used for NT connections instead of mode */ - ZERO_STRUCT(state); - state.conn = conn; - state.info_level = info_level; - state.check_mangled_names = lp_manglednames(conn->params); - state.has_wild = dptr_has_wild(dirptr); - state.got_exact_match = false; - - *out_of_space = False; - *got_exact_match = False; + *out_of_space = false; ZERO_STRUCT(mdate_ts); ZERO_STRUCT(adate_ts); ZERO_STRUCT(create_date_ts); - p = strrchr_m(path_mask,'/'); - if(p != NULL) { - if(p[1] == '\0') { - mask = "*.*"; - } else { - mask = p+1; - } - } else { - mask = path_mask; - } - - ok = smbd_dirptr_get_entry(ctx, - dirptr, - mask, - dirtype, - dont_descend, - ask_sharemode, - smbd_dirptr_lanman2_match_fn, - smbd_dirptr_lanman2_mode_fn, - &state, - &fname, - &smb_fname, - &mode, - &prev_dirpos); - if (!ok) { - return false; - } - - *got_exact_match = state.got_exact_match; - if (!(mode & aDIR)) { file_size = get_file_size_stat(&smb_fname->st); } @@ -1553,418 +1506,405 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, nt_extmode = mode ? mode : FILE_ATTRIBUTE_NORMAL; switch (info_level) { - case SMB_FIND_INFO_STANDARD: - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_INFO_STANDARD\n")); - if(requires_resume_key) { - SIVAL(p,0,reskey); - p += 4; - } - srv_put_dos_date2(p,0,create_date); - srv_put_dos_date2(p,4,adate); - srv_put_dos_date2(p,8,mdate); - SIVAL(p,12,(uint32)file_size); - SIVAL(p,16,(uint32)allocation_size); - SSVAL(p,20,mode); - p += 23; - nameptr = p; - if (flags2 & FLAGS2_UNICODE_STRINGS) { - p += ucs2_align(base_data, p, 0); - } - len = srvstr_push(base_data, flags2, p, - fname, PTR_DIFF(end_data, p), - STR_TERMINATE); - if (flags2 & FLAGS2_UNICODE_STRINGS) { - if (len > 2) { - SCVAL(nameptr, -1, len - 2); - } else { - SCVAL(nameptr, -1, 0); - } + case SMB_FIND_INFO_STANDARD: + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_INFO_STANDARD\n")); + if(requires_resume_key) { + SIVAL(p,0,reskey); + p += 4; + } + srv_put_dos_date2(p,0,create_date); + srv_put_dos_date2(p,4,adate); + srv_put_dos_date2(p,8,mdate); + SIVAL(p,12,(uint32)file_size); + SIVAL(p,16,(uint32)allocation_size); + SSVAL(p,20,mode); + p += 23; + nameptr = p; + if (flags2 & FLAGS2_UNICODE_STRINGS) { + p += ucs2_align(base_data, p, 0); + } + len = srvstr_push(base_data, flags2, p, + fname, PTR_DIFF(end_data, p), + STR_TERMINATE); + if (flags2 & FLAGS2_UNICODE_STRINGS) { + if (len > 2) { + SCVAL(nameptr, -1, len - 2); } else { - if (len > 1) { - SCVAL(nameptr, -1, len - 1); - } else { - SCVAL(nameptr, -1, 0); - } - } - p += len; - break; - - case SMB_FIND_EA_SIZE: - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_EA_SIZE\n")); - if(requires_resume_key) { - SIVAL(p,0,reskey); - p += 4; - } - srv_put_dos_date2(p,0,create_date); - srv_put_dos_date2(p,4,adate); - srv_put_dos_date2(p,8,mdate); - SIVAL(p,12,(uint32)file_size); - SIVAL(p,16,(uint32)allocation_size); - SSVAL(p,20,mode); - { - unsigned int ea_size = estimate_ea_size(conn, NULL, - smb_fname->base_name); - SIVAL(p,22,ea_size); /* Extended attributes */ + SCVAL(nameptr, -1, 0); } - p += 27; - nameptr = p - 1; - len = srvstr_push(base_data, flags2, - p, fname, PTR_DIFF(end_data, p), - STR_TERMINATE | STR_NOALIGN); - if (flags2 & FLAGS2_UNICODE_STRINGS) { - if (len > 2) { - len -= 2; - } else { - len = 0; - } + } else { + if (len > 1) { + SCVAL(nameptr, -1, len - 1); } else { - if (len > 1) { - len -= 1; - } else { - len = 0; - } + SCVAL(nameptr, -1, 0); } - SCVAL(nameptr,0,len); - p += len; - SCVAL(p,0,0); p += 1; /* Extra zero byte ? - why.. */ - break; + } + p += len; + break; - case SMB_FIND_EA_LIST: + case SMB_FIND_EA_SIZE: + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_EA_SIZE\n")); + if (requires_resume_key) { + SIVAL(p,0,reskey); + p += 4; + } + srv_put_dos_date2(p,0,create_date); + srv_put_dos_date2(p,4,adate); + srv_put_dos_date2(p,8,mdate); + SIVAL(p,12,(uint32)file_size); + SIVAL(p,16,(uint32)allocation_size); + SSVAL(p,20,mode); { - struct ea_list *file_list = NULL; - size_t ea_len = 0; - - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_EA_LIST\n")); - if (!name_list) { - TALLOC_FREE(fname); - TALLOC_FREE(smb_fname); - return False; - } - if(requires_resume_key) { - SIVAL(p,0,reskey); - p += 4; - } - srv_put_dos_date2(p,0,create_date); - srv_put_dos_date2(p,4,adate); - srv_put_dos_date2(p,8,mdate); - SIVAL(p,12,(uint32)file_size); - SIVAL(p,16,(uint32)allocation_size); - SSVAL(p,20,mode); - p += 22; /* p now points to the EA area. */ - - file_list = get_ea_list_from_file(ctx, conn, NULL, - smb_fname->base_name, - &ea_len); - name_list = ea_list_union(name_list, file_list, &ea_len); - - /* We need to determine if this entry will fit in the space available. */ - /* Max string size is 255 bytes. */ - if (PTR_DIFF(p + 255 + ea_len,pdata) > space_remaining) { - TALLOC_FREE(fname); - TALLOC_FREE(smb_fname); - /* Move the dirptr back to prev_dirpos */ - dptr_SeekDir(dirptr, prev_dirpos); - *out_of_space = True; - DEBUG(9,("get_lanman2_dir_entry: out of space\n")); - return False; /* Not finished - just out of space */ + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); + SIVAL(p,22,ea_size); /* Extended attributes */ + } + p += 27; + nameptr = p - 1; + len = srvstr_push(base_data, flags2, + p, fname, PTR_DIFF(end_data, p), + STR_TERMINATE | STR_NOALIGN); + if (flags2 & FLAGS2_UNICODE_STRINGS) { + if (len > 2) { + len -= 2; + } else { + len = 0; } - - /* Push the ea_data followed by the name. */ - p += fill_ea_buffer(ctx, p, space_remaining, conn, name_list); - nameptr = p; - len = srvstr_push(base_data, flags2, - p + 1, fname, PTR_DIFF(end_data, p+1), - STR_TERMINATE | STR_NOALIGN); - if (flags2 & FLAGS2_UNICODE_STRINGS) { - if (len > 2) { - len -= 2; - } else { - len = 0; - } + } else { + if (len > 1) { + len -= 1; } else { - if (len > 1) { - len -= 1; - } else { - len = 0; - } + len = 0; } - SCVAL(nameptr,0,len); - p += len + 1; - SCVAL(p,0,0); p += 1; /* Extra zero byte ? - why.. */ - break; } + SCVAL(nameptr,0,len); + p += len; + SCVAL(p,0,0); p += 1; /* Extra zero byte ? - why.. */ + break; - case SMB_FIND_FILE_BOTH_DIRECTORY_INFO: - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_BOTH_DIRECTORY_INFO\n")); - was_8_3 = mangle_is_8_3(fname, True, conn->params); + case SMB_FIND_EA_LIST: + { + struct ea_list *file_list = NULL; + size_t ea_len = 0; + + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_EA_LIST\n")); + if (!name_list) { + return false; + } + if (requires_resume_key) { + SIVAL(p,0,reskey); p += 4; - SIVAL(p,0,reskey); p += 4; - put_long_date_timespec(p,create_date_ts); p += 8; - put_long_date_timespec(p,adate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - SOFF_T(p,0,file_size); p += 8; - SOFF_T(p,0,allocation_size); p += 8; - SIVAL(p,0,nt_extmode); p += 4; - q = p; p += 4; /* q is placeholder for name length. */ - { - unsigned int ea_size = estimate_ea_size(conn, NULL, - smb_fname->base_name); - SIVAL(p,0,ea_size); /* Extended attributes */ - p += 4; + } + srv_put_dos_date2(p,0,create_date); + srv_put_dos_date2(p,4,adate); + srv_put_dos_date2(p,8,mdate); + SIVAL(p,12,(uint32)file_size); + SIVAL(p,16,(uint32)allocation_size); + SSVAL(p,20,mode); + p += 22; /* p now points to the EA area. */ + + file_list = get_ea_list_from_file(ctx, conn, NULL, + smb_fname->base_name, + &ea_len); + name_list = ea_list_union(name_list, file_list, &ea_len); + + /* We need to determine if this entry will fit in the space available. */ + /* Max string size is 255 bytes. */ + if (PTR_DIFF(p + 255 + ea_len,pdata) > space_remaining) { + *out_of_space = true; + DEBUG(9,("get_lanman2_dir_entry: out of space\n")); + return False; /* Not finished - just out of space */ + } + + /* Push the ea_data followed by the name. */ + p += fill_ea_buffer(ctx, p, space_remaining, conn, name_list); + nameptr = p; + len = srvstr_push(base_data, flags2, + p + 1, fname, PTR_DIFF(end_data, p+1), + STR_TERMINATE | STR_NOALIGN); + if (flags2 & FLAGS2_UNICODE_STRINGS) { + if (len > 2) { + len -= 2; + } else { + len = 0; } - /* Clear the short name buffer. This is - * IMPORTANT as not doing so will trigger - * a Win2k client bug. JRA. - */ - if (!was_8_3 && state.check_mangled_names) { - char mangled_name[13]; /* mangled 8.3 name. */ - if (!name_to_8_3(fname,mangled_name,True, - conn->params)) { - /* Error - mangle failed ! */ - memset(mangled_name,'\0',12); - } - mangled_name[12] = 0; - len = srvstr_push(base_data, flags2, - p+2, mangled_name, 24, - STR_UPPER|STR_UNICODE); - if (len < 24) { - memset(p + 2 + len,'\0',24 - len); - } - SSVAL(p, 0, len); + } else { + if (len > 1) { + len -= 1; } else { - memset(p,'\0',26); + len = 0; } - p += 2 + 24; - len = srvstr_push(base_data, flags2, p, - fname, PTR_DIFF(end_data, p), - STR_TERMINATE_ASCII); - SIVAL(q,0,len); - p += len; - SIVAL(p,0,0); /* Ensure any padding is null. */ - len = PTR_DIFF(p, pdata); - len = (len + 3) & ~3; - SIVAL(pdata,0,len); - p = pdata + len; - break; + } + SCVAL(nameptr,0,len); + p += len + 1; + SCVAL(p,0,0); p += 1; /* Extra zero byte ? - why.. */ + break; + } - case SMB_FIND_FILE_DIRECTORY_INFO: - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_DIRECTORY_INFO\n")); + case SMB_FIND_FILE_BOTH_DIRECTORY_INFO: + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_BOTH_DIRECTORY_INFO\n")); + was_8_3 = mangle_is_8_3(fname, True, conn->params); + p += 4; + SIVAL(p,0,reskey); p += 4; + put_long_date_timespec(p,create_date_ts); p += 8; + put_long_date_timespec(p,adate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + SOFF_T(p,0,file_size); p += 8; + SOFF_T(p,0,allocation_size); p += 8; + SIVAL(p,0,nt_extmode); p += 4; + q = p; p += 4; /* q is placeholder for name length. */ + { + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); + SIVAL(p,0,ea_size); /* Extended attributes */ p += 4; - SIVAL(p,0,reskey); p += 4; - put_long_date_timespec(p,create_date_ts); p += 8; - put_long_date_timespec(p,adate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - SOFF_T(p,0,file_size); p += 8; - SOFF_T(p,0,allocation_size); p += 8; - SIVAL(p,0,nt_extmode); p += 4; + } + /* Clear the short name buffer. This is + * IMPORTANT as not doing so will trigger + * a Win2k client bug. JRA. + */ + if (!was_8_3 && check_mangled_names) { + char mangled_name[13]; /* mangled 8.3 name. */ + if (!name_to_8_3(fname,mangled_name,True, + conn->params)) { + /* Error - mangle failed ! */ + memset(mangled_name,'\0',12); + } + mangled_name[12] = 0; len = srvstr_push(base_data, flags2, - p + 4, fname, PTR_DIFF(end_data, p+4), - STR_TERMINATE_ASCII); - SIVAL(p,0,len); - p += 4 + len; - SIVAL(p,0,0); /* Ensure any padding is null. */ - len = PTR_DIFF(p, pdata); - len = (len + 3) & ~3; - SIVAL(pdata,0,len); - p = pdata + len; - break; - - case SMB_FIND_FILE_FULL_DIRECTORY_INFO: - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_FULL_DIRECTORY_INFO\n")); - p += 4; - SIVAL(p,0,reskey); p += 4; - put_long_date_timespec(p,create_date_ts); p += 8; - put_long_date_timespec(p,adate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - SOFF_T(p,0,file_size); p += 8; - SOFF_T(p,0,allocation_size); p += 8; - SIVAL(p,0,nt_extmode); p += 4; - q = p; p += 4; /* q is placeholder for name length. */ - { - unsigned int ea_size = estimate_ea_size(conn, NULL, - smb_fname->base_name); - SIVAL(p,0,ea_size); /* Extended attributes */ - p +=4; + p+2, mangled_name, 24, + STR_UPPER|STR_UNICODE); + if (len < 24) { + memset(p + 2 + len,'\0',24 - len); } - len = srvstr_push(base_data, flags2, p, - fname, PTR_DIFF(end_data, p), - STR_TERMINATE_ASCII); - SIVAL(q, 0, len); - p += len; + SSVAL(p, 0, len); + } else { + memset(p,'\0',26); + } + p += 2 + 24; + len = srvstr_push(base_data, flags2, p, + fname, PTR_DIFF(end_data, p), + STR_TERMINATE_ASCII); + SIVAL(q,0,len); + p += len; + SIVAL(p,0,0); /* Ensure any padding is null. */ + len = PTR_DIFF(p, pdata); + len = (len + 3) & ~3; + SIVAL(pdata,0,len); + p = pdata + len; + break; - SIVAL(p,0,0); /* Ensure any padding is null. */ - len = PTR_DIFF(p, pdata); - len = (len + 3) & ~3; - SIVAL(pdata,0,len); - p = pdata + len; - break; + case SMB_FIND_FILE_DIRECTORY_INFO: + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_DIRECTORY_INFO\n")); + p += 4; + SIVAL(p,0,reskey); p += 4; + put_long_date_timespec(p,create_date_ts); p += 8; + put_long_date_timespec(p,adate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + SOFF_T(p,0,file_size); p += 8; + SOFF_T(p,0,allocation_size); p += 8; + SIVAL(p,0,nt_extmode); p += 4; + len = srvstr_push(base_data, flags2, + p + 4, fname, PTR_DIFF(end_data, p+4), + STR_TERMINATE_ASCII); + SIVAL(p,0,len); + p += 4 + len; + SIVAL(p,0,0); /* Ensure any padding is null. */ + len = PTR_DIFF(p, pdata); + len = (len + 3) & ~3; + SIVAL(pdata,0,len); + p = pdata + len; + break; - case SMB_FIND_FILE_NAMES_INFO: - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_NAMES_INFO\n")); - p += 4; - SIVAL(p,0,reskey); p += 4; - p += 4; - /* this must *not* be null terminated or w2k gets in a loop trying to set an - acl on a dir (tridge) */ - len = srvstr_push(base_data, flags2, p, - fname, PTR_DIFF(end_data, p), - STR_TERMINATE_ASCII); - SIVAL(p, -4, len); - p += len; - SIVAL(p,0,0); /* Ensure any padding is null. */ - len = PTR_DIFF(p, pdata); - len = (len + 3) & ~3; - SIVAL(pdata,0,len); - p = pdata + len; - break; + case SMB_FIND_FILE_FULL_DIRECTORY_INFO: + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_FULL_DIRECTORY_INFO\n")); + p += 4; + SIVAL(p,0,reskey); p += 4; + put_long_date_timespec(p,create_date_ts); p += 8; + put_long_date_timespec(p,adate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + SOFF_T(p,0,file_size); p += 8; + SOFF_T(p,0,allocation_size); p += 8; + SIVAL(p,0,nt_extmode); p += 4; + q = p; p += 4; /* q is placeholder for name length. */ + { + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); + SIVAL(p,0,ea_size); /* Extended attributes */ + p +=4; + } + len = srvstr_push(base_data, flags2, p, + fname, PTR_DIFF(end_data, p), + STR_TERMINATE_ASCII); + SIVAL(q, 0, len); + p += len; + + SIVAL(p,0,0); /* Ensure any padding is null. */ + len = PTR_DIFF(p, pdata); + len = (len + 3) & ~3; + SIVAL(pdata,0,len); + p = pdata + len; + break; - case SMB_FIND_ID_FULL_DIRECTORY_INFO: - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_ID_FULL_DIRECTORY_INFO\n")); - p += 4; - SIVAL(p,0,reskey); p += 4; - put_long_date_timespec(p,create_date_ts); p += 8; - put_long_date_timespec(p,adate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - SOFF_T(p,0,file_size); p += 8; - SOFF_T(p,0,allocation_size); p += 8; - SIVAL(p,0,nt_extmode); p += 4; - q = p; p += 4; /* q is placeholder for name length. */ - { - unsigned int ea_size = estimate_ea_size(conn, NULL, - smb_fname->base_name); - SIVAL(p,0,ea_size); /* Extended attributes */ - p +=4; - } - SIVAL(p,0,0); p += 4; /* Unknown - reserved ? */ - SIVAL(p,0,smb_fname->st.st_ex_ino); p += 4; /* FileIndexLow */ - SIVAL(p,0,smb_fname->st.st_ex_dev); p += 4; /* FileIndexHigh */ - len = srvstr_push(base_data, flags2, p, - fname, PTR_DIFF(end_data, p), - STR_TERMINATE_ASCII); - SIVAL(q, 0, len); - p += len; - SIVAL(p,0,0); /* Ensure any padding is null. */ - len = PTR_DIFF(p, pdata); - len = (len + 3) & ~3; - SIVAL(pdata,0,len); - p = pdata + len; - break; + case SMB_FIND_FILE_NAMES_INFO: + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_NAMES_INFO\n")); + p += 4; + SIVAL(p,0,reskey); p += 4; + p += 4; + /* this must *not* be null terminated or w2k gets in a loop trying to set an + acl on a dir (tridge) */ + len = srvstr_push(base_data, flags2, p, + fname, PTR_DIFF(end_data, p), + STR_TERMINATE_ASCII); + SIVAL(p, -4, len); + p += len; + SIVAL(p,0,0); /* Ensure any padding is null. */ + len = PTR_DIFF(p, pdata); + len = (len + 3) & ~3; + SIVAL(pdata,0,len); + p = pdata + len; + break; - case SMB_FIND_ID_BOTH_DIRECTORY_INFO: - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_ID_BOTH_DIRECTORY_INFO\n")); - was_8_3 = mangle_is_8_3(fname, True, conn->params); - p += 4; - SIVAL(p,0,reskey); p += 4; - put_long_date_timespec(p,create_date_ts); p += 8; - put_long_date_timespec(p,adate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - put_long_date_timespec(p,mdate_ts); p += 8; - SOFF_T(p,0,file_size); p += 8; - SOFF_T(p,0,allocation_size); p += 8; - SIVAL(p,0,nt_extmode); p += 4; - q = p; p += 4; /* q is placeholder for name length */ - { - unsigned int ea_size = estimate_ea_size(conn, NULL, - smb_fname->base_name); - SIVAL(p,0,ea_size); /* Extended attributes */ - p +=4; + case SMB_FIND_ID_FULL_DIRECTORY_INFO: + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_ID_FULL_DIRECTORY_INFO\n")); + p += 4; + SIVAL(p,0,reskey); p += 4; + put_long_date_timespec(p,create_date_ts); p += 8; + put_long_date_timespec(p,adate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + SOFF_T(p,0,file_size); p += 8; + SOFF_T(p,0,allocation_size); p += 8; + SIVAL(p,0,nt_extmode); p += 4; + q = p; p += 4; /* q is placeholder for name length. */ + { + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); + SIVAL(p,0,ea_size); /* Extended attributes */ + p +=4; + } + SIVAL(p,0,0); p += 4; /* Unknown - reserved ? */ + SIVAL(p,0,smb_fname->st.st_ex_ino); p += 4; /* FileIndexLow */ + SIVAL(p,0,smb_fname->st.st_ex_dev); p += 4; /* FileIndexHigh */ + len = srvstr_push(base_data, flags2, p, + fname, PTR_DIFF(end_data, p), + STR_TERMINATE_ASCII); + SIVAL(q, 0, len); + p += len; + SIVAL(p,0,0); /* Ensure any padding is null. */ + len = PTR_DIFF(p, pdata); + len = (len + 3) & ~3; + SIVAL(pdata,0,len); + p = pdata + len; + break; + + case SMB_FIND_ID_BOTH_DIRECTORY_INFO: + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_ID_BOTH_DIRECTORY_INFO\n")); + was_8_3 = mangle_is_8_3(fname, True, conn->params); + p += 4; + SIVAL(p,0,reskey); p += 4; + put_long_date_timespec(p,create_date_ts); p += 8; + put_long_date_timespec(p,adate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + put_long_date_timespec(p,mdate_ts); p += 8; + SOFF_T(p,0,file_size); p += 8; + SOFF_T(p,0,allocation_size); p += 8; + SIVAL(p,0,nt_extmode); p += 4; + q = p; p += 4; /* q is placeholder for name length */ + { + unsigned int ea_size = estimate_ea_size(conn, NULL, + smb_fname->base_name); + SIVAL(p,0,ea_size); /* Extended attributes */ + p +=4; + } + /* Clear the short name buffer. This is + * IMPORTANT as not doing so will trigger + * a Win2k client bug. JRA. + */ + if (!was_8_3 && check_mangled_names) { + char mangled_name[13]; /* mangled 8.3 name. */ + if (!name_to_8_3(fname,mangled_name,True, + conn->params)) { + /* Error - mangle failed ! */ + memset(mangled_name,'\0',12); } - /* Clear the short name buffer. This is - * IMPORTANT as not doing so will trigger - * a Win2k client bug. JRA. - */ - if (!was_8_3 && state.check_mangled_names) { - char mangled_name[13]; /* mangled 8.3 name. */ - if (!name_to_8_3(fname,mangled_name,True, - conn->params)) { - /* Error - mangle failed ! */ - memset(mangled_name,'\0',12); - } - mangled_name[12] = 0; - len = srvstr_push(base_data, flags2, - p+2, mangled_name, 24, - STR_UPPER|STR_UNICODE); - SSVAL(p, 0, len); - if (len < 24) { - memset(p + 2 + len,'\0',24 - len); - } - SSVAL(p, 0, len); - } else { - memset(p,'\0',26); + mangled_name[12] = 0; + len = srvstr_push(base_data, flags2, + p+2, mangled_name, 24, + STR_UPPER|STR_UNICODE); + SSVAL(p, 0, len); + if (len < 24) { + memset(p + 2 + len,'\0',24 - len); } - p += 26; - SSVAL(p,0,0); p += 2; /* Reserved ? */ - SIVAL(p,0,smb_fname->st.st_ex_ino); p += 4; /* FileIndexLow */ - SIVAL(p,0,smb_fname->st.st_ex_dev); p += 4; /* FileIndexHigh */ - len = srvstr_push(base_data, flags2, p, - fname, PTR_DIFF(end_data, p), - STR_TERMINATE_ASCII); - SIVAL(q,0,len); - p += len; - SIVAL(p,0,0); /* Ensure any padding is null. */ - len = PTR_DIFF(p, pdata); - len = (len + 3) & ~3; - SIVAL(pdata,0,len); - p = pdata + len; - break; + SSVAL(p, 0, len); + } else { + memset(p,'\0',26); + } + p += 26; + SSVAL(p,0,0); p += 2; /* Reserved ? */ + SIVAL(p,0,smb_fname->st.st_ex_ino); p += 4; /* FileIndexLow */ + SIVAL(p,0,smb_fname->st.st_ex_dev); p += 4; /* FileIndexHigh */ + len = srvstr_push(base_data, flags2, p, + fname, PTR_DIFF(end_data, p), + STR_TERMINATE_ASCII); + SIVAL(q,0,len); + p += len; + SIVAL(p,0,0); /* Ensure any padding is null. */ + len = PTR_DIFF(p, pdata); + len = (len + 3) & ~3; + SIVAL(pdata,0,len); + p = pdata + len; + break; - /* CIFS UNIX Extension. */ + /* CIFS UNIX Extension. */ - case SMB_FIND_FILE_UNIX: - case SMB_FIND_FILE_UNIX_INFO2: - p+= 4; - SIVAL(p,0,reskey); p+= 4; /* Used for continuing search. */ + case SMB_FIND_FILE_UNIX: + case SMB_FIND_FILE_UNIX_INFO2: + p+= 4; + SIVAL(p,0,reskey); p+= 4; /* Used for continuing search. */ - /* Begin of SMB_QUERY_FILE_UNIX_BASIC */ + /* Begin of SMB_QUERY_FILE_UNIX_BASIC */ - if (info_level == SMB_FIND_FILE_UNIX) { - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_UNIX\n")); - p = store_file_unix_basic(conn, p, - NULL, &smb_fname->st); - len = srvstr_push(base_data, flags2, p, - fname, PTR_DIFF(end_data, p), - STR_TERMINATE); - } else { - DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_UNIX_INFO2\n")); - p = store_file_unix_basic_info2(conn, p, - NULL, &smb_fname->st); - nameptr = p; - p += 4; - len = srvstr_push(base_data, flags2, p, fname, - PTR_DIFF(end_data, p), 0); - SIVAL(nameptr, 0, len); - } + if (info_level == SMB_FIND_FILE_UNIX) { + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_UNIX\n")); + p = store_file_unix_basic(conn, p, + NULL, &smb_fname->st); + len = srvstr_push(base_data, flags2, p, + fname, PTR_DIFF(end_data, p), + STR_TERMINATE); + } else { + DEBUG(10,("get_lanman2_dir_entry: SMB_FIND_FILE_UNIX_INFO2\n")); + p = store_file_unix_basic_info2(conn, p, + NULL, &smb_fname->st); + nameptr = p; + p += 4; + len = srvstr_push(base_data, flags2, p, fname, + PTR_DIFF(end_data, p), 0); + SIVAL(nameptr, 0, len); + } - p += len; - SIVAL(p,0,0); /* Ensure any padding is null. */ + p += len; + SIVAL(p,0,0); /* Ensure any padding is null. */ - len = PTR_DIFF(p, pdata); - len = (len + 3) & ~3; - SIVAL(pdata,0,len); /* Offset from this structure to the beginning of the next one */ - p = pdata + len; - /* End of SMB_QUERY_FILE_UNIX_BASIC */ + len = PTR_DIFF(p, pdata); + len = (len + 3) & ~3; + SIVAL(pdata,0,len); /* Offset from this structure to the beginning of the next one */ + p = pdata + len; + /* End of SMB_QUERY_FILE_UNIX_BASIC */ - break; + break; - default: - TALLOC_FREE(fname); - TALLOC_FREE(smb_fname); - return false; + default: + return false; } - TALLOC_FREE(fname); - TALLOC_FREE(smb_fname); - if (PTR_DIFF(p,pdata) > space_remaining) { - /* Move the dirptr back to prev_dirpos */ - dptr_SeekDir(dirptr, prev_dirpos); - *out_of_space = True; + *out_of_space = true; DEBUG(9,("get_lanman2_dir_entry: out of space\n")); - return False; /* Not finished - just out of space */ + return false; /* Not finished - just out of space */ } /* Setup the last entry pointer, as an offset from base_data */ @@ -1975,6 +1915,105 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, return true; } +static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, + connection_struct *conn, + struct dptr_struct *dirptr, + uint16 flags2, + const char *path_mask, + uint32 dirtype, + int info_level, + int requires_resume_key, + bool dont_descend, + bool ask_sharemode, + char **ppdata, + char *base_data, + char *end_data, + int space_remaining, + bool *out_of_space, + bool *got_exact_match, + int *_last_entry_off, + struct ea_list *name_list) +{ + const char *p; + const char *mask = NULL; + long prev_dirpos = 0; + uint32_t mode = 0; + char *fname = NULL; + struct smb_filename *smb_fname = NULL; + struct smbd_dirptr_lanman2_state state; + bool ok; + uint64_t last_entry_off = 0; + + ZERO_STRUCT(state); + state.conn = conn; + state.info_level = info_level; + state.check_mangled_names = lp_manglednames(conn->params); + state.has_wild = dptr_has_wild(dirptr); + state.got_exact_match = false; + + *out_of_space = false; + *got_exact_match = false; + + p = strrchr_m(path_mask,'/'); + if(p != NULL) { + if(p[1] == '\0') { + mask = "*.*"; + } else { + mask = p+1; + } + } else { + mask = path_mask; + } + + ok = smbd_dirptr_get_entry(ctx, + dirptr, + mask, + dirtype, + dont_descend, + ask_sharemode, + smbd_dirptr_lanman2_match_fn, + smbd_dirptr_lanman2_mode_fn, + &state, + &fname, + &smb_fname, + &mode, + &prev_dirpos); + if (!ok) { + return false; + } + + *got_exact_match = state.got_exact_match; + + ok = smbd_marshall_dir_entry(ctx, + conn, + flags2, + info_level, + name_list, + state.check_mangled_names, + requires_resume_key, + mode, + fname, + smb_fname, + space_remaining, + base_data, + ppdata, + end_data, + out_of_space, + &last_entry_off); + TALLOC_FREE(fname); + TALLOC_FREE(smb_fname); + if (*out_of_space) { + dptr_SeekDir(dirptr, prev_dirpos); + return false; + } + if (!ok) { + return false; + } + + *_last_entry_off = last_entry_off; + return true; +} + /**************************************************************************** Reply to a TRANS2_FINDFIRST. ****************************************************************************/ -- cgit From ea6819ae7565c22b0d6276acebfbab472a4e4c18 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 7 Aug 2009 10:19:20 -0700 Subject: Correctly send out notify messages for timestamp changes. "change time" has no notify message, so don't send anything out when we change it. Use FILE_NOTIFY_CHANGE_CREATION correctly when changing the create time. Jeremy. --- source3/smbd/trans2.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'source3') diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 780d7d606c..a8b721120d 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -5224,7 +5224,6 @@ NTSTATUS smb_set_file_time(connection_struct *conn, FILE_NOTIFY_CHANGE_LAST_ACCESS |FILE_NOTIFY_CHANGE_LAST_WRITE; bool set_createtime = false; - bool set_ctime = false; NTSTATUS status; if (!VALID_STAT(smb_fname->st)) { @@ -5240,8 +5239,6 @@ NTSTATUS smb_set_file_time(connection_struct *conn, if (null_timespec(ft->ctime)) { ft->ctime = smb_fname->st.st_ex_ctime; - } else { - set_ctime = true; } if (null_timespec(ft->atime)) { @@ -5278,8 +5275,9 @@ NTSTATUS smb_set_file_time(connection_struct *conn, struct timespec ats = smb_fname->st.st_ex_atime; if ((timespec_compare(&ft->atime, &ats) == 0) && (timespec_compare(&ft->mtime, &mts) == 0)) { - if (set_createtime || set_ctime) { - notify_fname(conn, NOTIFY_ACTION_MODIFIED, FILE_NOTIFY_CHANGE_LAST_WRITE, + if (set_createtime) { + notify_fname(conn, NOTIFY_ACTION_MODIFIED, + FILE_NOTIFY_CHANGE_CREATION, smb_fname->base_name); } return NT_STATUS_OK; -- cgit From d296c774c5981baa863c697782dba1b6280d632e Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 7 Aug 2009 12:38:31 -0700 Subject: Move the checks for null timestamps down below the VFS_NTIMES layer (as it's done in onefs). This simplifies greatly the code in smb_set_file_time() w.r.t. changenotify messages. Jeremy. --- source3/modules/vfs_default.c | 15 +++++++++++++++ source3/smbd/trans2.c | 33 +++------------------------------ 2 files changed, 18 insertions(+), 30 deletions(-) (limited to 'source3') diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index a4922e7e05..2ee2fd1249 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -780,6 +780,21 @@ static int vfswrap_ntimes(vfs_handle_struct *handle, goto out; } + if (null_timespec(ft->atime)) { + ft->atime= smb_fname->st.st_ex_atime; + } + + if (null_timespec(ft->mtime)) { + ft->mtime = smb_fname->st.st_ex_mtime; + } + + if ((timespec_compare(&ft->atime, + &smb_fname->st.st_ex_atime) == 0) && + (timespec_compare(&ft->mtime, + &smb_fname->st.st_ex_mtime) == 0)) { + return 0; + } + #if defined(HAVE_UTIMES) if (ft != NULL) { struct timeval tv[2]; diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index a8b721120d..2e47eab4f0 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -5222,8 +5222,8 @@ NTSTATUS smb_set_file_time(connection_struct *conn, struct smb_filename *smb_fname_base = NULL; uint32 action = FILE_NOTIFY_CHANGE_LAST_ACCESS - |FILE_NOTIFY_CHANGE_LAST_WRITE; - bool set_createtime = false; + |FILE_NOTIFY_CHANGE_LAST_WRITE + |FILE_NOTIFY_CHANGE_CREATION; NTSTATUS status; if (!VALID_STAT(smb_fname->st)) { @@ -5232,22 +5232,14 @@ NTSTATUS smb_set_file_time(connection_struct *conn, /* get some defaults (no modifications) if any info is zero or -1. */ if (null_timespec(ft->create_time)) { - ft->create_time = smb_fname->st.st_ex_btime; - } else { - set_createtime = true; - } - - if (null_timespec(ft->ctime)) { - ft->ctime = smb_fname->st.st_ex_ctime; + action &= ~FILE_NOTIFY_CHANGE_CREATION; } if (null_timespec(ft->atime)) { - ft->atime= smb_fname->st.st_ex_atime; action &= ~FILE_NOTIFY_CHANGE_LAST_ACCESS; } if (null_timespec(ft->mtime)) { - ft->mtime = smb_fname->st.st_ex_mtime; action &= ~FILE_NOTIFY_CHANGE_LAST_WRITE; } @@ -5265,25 +5257,6 @@ NTSTATUS smb_set_file_time(connection_struct *conn, DEBUG(5,("smb_set_file_time: createtime: %s\n ", time_to_asc(convert_timespec_to_time_t(ft->create_time)))); - /* - * Try and set the times of this file if - * they are different from the current values. - */ - - { - struct timespec mts = smb_fname->st.st_ex_mtime; - struct timespec ats = smb_fname->st.st_ex_atime; - if ((timespec_compare(&ft->atime, &ats) == 0) && - (timespec_compare(&ft->mtime, &mts) == 0)) { - if (set_createtime) { - notify_fname(conn, NOTIFY_ACTION_MODIFIED, - FILE_NOTIFY_CHANGE_CREATION, - smb_fname->base_name); - } - return NT_STATUS_OK; - } - } - if (setting_write_time) { /* * This was a Windows setfileinfo on an open file. -- cgit