mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
r8077: Propagate changes in rpc connect routine to functions using it
(it's quite common). rafal (This used to be commit 798b00c24ae30a08ac81342d13130a6a2f9d3a08)
This commit is contained in:
parent
e6b54f7acf
commit
4fa6a156bc
@ -47,7 +47,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
TALLOC_CTX *mem_ctx, union libnet_JoinDomain *r)
|
||||
{
|
||||
NTSTATUS status;
|
||||
union libnet_rpc_connect c;
|
||||
struct libnet_RpcConnect c;
|
||||
struct samr_Connect sc;
|
||||
struct policy_handle p_handle;
|
||||
struct samr_LookupDomain ld;
|
||||
@ -70,14 +70,14 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
int policy_min_pw_len = 0;
|
||||
|
||||
/* prepare connect to the SAMR pipe of users domain PDC */
|
||||
c.pdc.level = LIBNET_RPC_CONNECT_PDC;
|
||||
c.pdc.in.domain_name = r->samr.in.domain_name;
|
||||
c.pdc.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
|
||||
c.pdc.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
|
||||
c.pdc.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
|
||||
c.level = LIBNET_RPC_CONNECT_PDC;
|
||||
c.in.domain_name = r->samr.in.domain_name;
|
||||
c.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
|
||||
c.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
|
||||
c.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
|
||||
|
||||
/* 1. connect to the SAMR pipe of users domain PDC (maybe a standalone server or workstation) */
|
||||
status = libnet_rpc_connect(ctx, mem_ctx, &c);
|
||||
status = libnet_RpcConnect(ctx, mem_ctx, &c);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Connection to SAMR pipe of PDC of domain '%s' failed: %s\n",
|
||||
@ -92,7 +92,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
sc.out.connect_handle = &p_handle;
|
||||
|
||||
/* 2. do a samr_Connect to get a policy handle */
|
||||
status = dcerpc_samr_Connect(c.pdc.out.dcerpc_pipe, mem_ctx, &sc);
|
||||
status = dcerpc_samr_Connect(c.out.dcerpc_pipe, mem_ctx, &sc);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_Connect failed: %s\n",
|
||||
@ -115,7 +115,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
ld.in.domain_name = &d_name;
|
||||
|
||||
/* 3. do a samr_LookupDomain to get the domain sid */
|
||||
status = dcerpc_samr_LookupDomain(c.pdc.out.dcerpc_pipe, mem_ctx, &ld);
|
||||
status = dcerpc_samr_LookupDomain(c.out.dcerpc_pipe, mem_ctx, &ld);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_LookupDomain for [%s] failed: %s\n",
|
||||
@ -140,7 +140,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
od.out.domain_handle = &d_handle;
|
||||
|
||||
/* 4. do a samr_OpenDomain to get a domain handle */
|
||||
status = dcerpc_samr_OpenDomain(c.pdc.out.dcerpc_pipe, mem_ctx, &od);
|
||||
status = dcerpc_samr_OpenDomain(c.out.dcerpc_pipe, mem_ctx, &od);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_OpenDomain for [%s] failed: %s\n",
|
||||
@ -160,7 +160,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
cu.out.access_granted = &access_granted;
|
||||
|
||||
/* 4. do a samr_CreateUser2 to get an account handle, or an error */
|
||||
status = dcerpc_samr_CreateUser2(c.pdc.out.dcerpc_pipe, mem_ctx, &cu);
|
||||
status = dcerpc_samr_CreateUser2(c.out.dcerpc_pipe, mem_ctx, &cu);
|
||||
if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status, NT_STATUS_USER_EXISTS)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_CreateUser2 for [%s] failed: %s\n",
|
||||
@ -179,7 +179,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
ln.in.names[0].string = r->samr.in.account_name;
|
||||
|
||||
/* 5. do a samr_LookupNames to get the users rid */
|
||||
status = dcerpc_samr_LookupNames(c.pdc.out.dcerpc_pipe, mem_ctx, &ln);
|
||||
status = dcerpc_samr_LookupNames(c.out.dcerpc_pipe, mem_ctx, &ln);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_LookupNames for [%s] failed: %s\n",
|
||||
@ -205,7 +205,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
ou.out.user_handle = &u_handle;
|
||||
|
||||
/* 6. do a samr_OpenUser to get a user handle */
|
||||
status = dcerpc_samr_OpenUser(c.pdc.out.dcerpc_pipe, mem_ctx, &ou);
|
||||
status = dcerpc_samr_OpenUser(c.out.dcerpc_pipe, mem_ctx, &ou);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_OpenUser for [%s] failed: %s\n",
|
||||
@ -216,7 +216,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
|
||||
pwp.in.user_handle = &u_handle;
|
||||
|
||||
status = dcerpc_samr_GetUserPwInfo(c.pdc.out.dcerpc_pipe, mem_ctx, &pwp);
|
||||
status = dcerpc_samr_GetUserPwInfo(c.out.dcerpc_pipe, mem_ctx, &pwp);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
policy_min_pw_len = pwp.out.info.min_password_length;
|
||||
}
|
||||
@ -227,7 +227,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
r2.samr_handle.in.account_name = r->samr.in.account_name;
|
||||
r2.samr_handle.in.newpassword = r->samr.out.join_password;
|
||||
r2.samr_handle.in.user_handle = &u_handle;
|
||||
r2.samr_handle.in.dcerpc_pipe = c.pdc.out.dcerpc_pipe;
|
||||
r2.samr_handle.in.dcerpc_pipe = c.out.dcerpc_pipe;
|
||||
|
||||
status = libnet_SetPassword(ctx, mem_ctx, &r2);
|
||||
|
||||
@ -241,7 +241,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
qui.in.user_handle = &u_handle;
|
||||
qui.in.level = 16;
|
||||
|
||||
status = dcerpc_samr_QueryUserInfo(c.pdc.out.dcerpc_pipe, mem_ctx, &qui);
|
||||
status = dcerpc_samr_QueryUserInfo(c.out.dcerpc_pipe, mem_ctx, &qui);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string
|
||||
= talloc_asprintf(mem_ctx,
|
||||
@ -276,7 +276,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
sui.in.info = &u_info;
|
||||
sui.in.level = 16;
|
||||
|
||||
dcerpc_samr_SetUserInfo(c.pdc.out.dcerpc_pipe, mem_ctx, &sui);
|
||||
dcerpc_samr_SetUserInfo(c.out.dcerpc_pipe, mem_ctx, &sui);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string
|
||||
= talloc_asprintf(mem_ctx,
|
||||
@ -288,7 +288,7 @@ static NTSTATUS libnet_JoinDomain_samr(struct libnet_context *ctx,
|
||||
|
||||
disconnect:
|
||||
/* close connection */
|
||||
talloc_free(c.pdc.out.dcerpc_pipe);
|
||||
talloc_free(c.out.dcerpc_pipe);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@ -35,7 +35,7 @@
|
||||
static NTSTATUS libnet_ChangePassword_samr(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, union libnet_ChangePassword *r)
|
||||
{
|
||||
NTSTATUS status;
|
||||
union libnet_rpc_connect c;
|
||||
struct libnet_RpcConnect c;
|
||||
#if 0
|
||||
struct policy_handle user_handle;
|
||||
struct samr_Password hash1, hash2, hash3, hash4, hash5, hash6;
|
||||
@ -52,14 +52,14 @@ static NTSTATUS libnet_ChangePassword_samr(struct libnet_context *ctx, TALLOC_CT
|
||||
uint8_t old_lm_hash[16], new_lm_hash[16];
|
||||
|
||||
/* prepare connect to the SAMR pipe of the users domain PDC */
|
||||
c.pdc.level = LIBNET_RPC_CONNECT_PDC;
|
||||
c.pdc.in.domain_name = r->samr.in.domain_name;
|
||||
c.pdc.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
|
||||
c.pdc.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
|
||||
c.pdc.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
|
||||
c.level = LIBNET_RPC_CONNECT_PDC;
|
||||
c.in.domain_name = r->samr.in.domain_name;
|
||||
c.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
|
||||
c.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
|
||||
c.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
|
||||
|
||||
/* 1. connect to the SAMR pipe of users domain PDC (maybe a standalone server or workstation) */
|
||||
status = libnet_rpc_connect(ctx, mem_ctx, &c);
|
||||
status = libnet_RpcConnect(ctx, mem_ctx, &c);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Connection to SAMR pipe of PDC of domain '%s' failed: %s\n",
|
||||
@ -68,7 +68,7 @@ static NTSTATUS libnet_ChangePassword_samr(struct libnet_context *ctx, TALLOC_CT
|
||||
}
|
||||
|
||||
/* prepare password change for account */
|
||||
server.string = talloc_asprintf(mem_ctx, "\\\\%s", dcerpc_server_name(c.pdc.out.dcerpc_pipe));
|
||||
server.string = talloc_asprintf(mem_ctx, "\\\\%s", dcerpc_server_name(c.out.dcerpc_pipe));
|
||||
account.string = r->samr.in.account_name;
|
||||
|
||||
E_md4hash(r->samr.in.oldpassword, old_nt_hash);
|
||||
@ -96,7 +96,7 @@ static NTSTATUS libnet_ChangePassword_samr(struct libnet_context *ctx, TALLOC_CT
|
||||
pw3.in.password3 = NULL;
|
||||
|
||||
/* 2. try samr_ChangePasswordUser3 */
|
||||
status = dcerpc_samr_ChangePasswordUser3(c.pdc.out.dcerpc_pipe, mem_ctx, &pw3);
|
||||
status = dcerpc_samr_ChangePasswordUser3(c.out.dcerpc_pipe, mem_ctx, &pw3);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_ChangePasswordUser3 failed: %s\n",
|
||||
@ -139,7 +139,7 @@ ChangePasswordUser2:
|
||||
pw2.in.lm_verifier = &lm_verifier;
|
||||
|
||||
/* 3. try samr_ChangePasswordUser2 */
|
||||
status = dcerpc_samr_ChangePasswordUser2(c.pdc.out.dcerpc_pipe, mem_ctx, &pw2);
|
||||
status = dcerpc_samr_ChangePasswordUser2(c.out.dcerpc_pipe, mem_ctx, &pw2);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_ChangePasswordUser2 failed: %s\n",
|
||||
@ -164,7 +164,7 @@ ChangePasswordUser2:
|
||||
|
||||
OemChangePasswordUser2:
|
||||
/* prepare samr_OemChangePasswordUser2 */
|
||||
a_server.string = talloc_asprintf(mem_ctx, "\\\\%s", dcerpc_server_name(c.pdc.out.dcerpc_pipe));
|
||||
a_server.string = talloc_asprintf(mem_ctx, "\\\\%s", dcerpc_server_name(c.out.dcerpc_pipe));
|
||||
a_account.string = r->samr.in.account_name;
|
||||
|
||||
encode_pw_buffer(lm_pass.data, r->samr.in.newpassword, STR_ASCII);
|
||||
@ -177,7 +177,7 @@ OemChangePasswordUser2:
|
||||
oe2.in.hash = &lm_verifier;
|
||||
|
||||
/* 4. try samr_OemChangePasswordUser2 */
|
||||
status = dcerpc_samr_OemChangePasswordUser2(c.pdc.out.dcerpc_pipe, mem_ctx, &oe2);
|
||||
status = dcerpc_samr_OemChangePasswordUser2(c.out.dcerpc_pipe, mem_ctx, &oe2);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_OemChangePasswordUser2 failed: %s\n",
|
||||
@ -247,7 +247,7 @@ ChangePasswordUser:
|
||||
#endif
|
||||
disconnect:
|
||||
/* close connection */
|
||||
talloc_free(c.pdc.out.dcerpc_pipe);
|
||||
talloc_free(c.out.dcerpc_pipe);
|
||||
|
||||
return status;
|
||||
}
|
||||
@ -502,7 +502,7 @@ static NTSTATUS libnet_SetPassword_samr_handle(struct libnet_context *ctx, TALLO
|
||||
static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, union libnet_SetPassword *r)
|
||||
{
|
||||
NTSTATUS status;
|
||||
union libnet_rpc_connect c;
|
||||
struct libnet_RpcConnect c;
|
||||
struct samr_Connect sc;
|
||||
struct policy_handle p_handle;
|
||||
struct samr_LookupDomain ld;
|
||||
@ -515,14 +515,14 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
|
||||
union libnet_SetPassword r2;
|
||||
|
||||
/* prepare connect to the SAMR pipe of users domain PDC */
|
||||
c.pdc.level = LIBNET_RPC_CONNECT_PDC;
|
||||
c.pdc.in.domain_name = r->samr.in.domain_name;
|
||||
c.pdc.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
|
||||
c.pdc.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
|
||||
c.pdc.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
|
||||
c.level = LIBNET_RPC_CONNECT_PDC;
|
||||
c.in.domain_name = r->samr.in.domain_name;
|
||||
c.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
|
||||
c.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
|
||||
c.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
|
||||
|
||||
/* 1. connect to the SAMR pipe of users domain PDC (maybe a standalone server or workstation) */
|
||||
status = libnet_rpc_connect(ctx, mem_ctx, &c);
|
||||
status = libnet_RpcConnect(ctx, mem_ctx, &c);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Connection to SAMR pipe of PDC of domain '%s' failed: %s\n",
|
||||
@ -537,7 +537,7 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
|
||||
sc.out.connect_handle = &p_handle;
|
||||
|
||||
/* 2. do a samr_Connect to get a policy handle */
|
||||
status = dcerpc_samr_Connect(c.pdc.out.dcerpc_pipe, mem_ctx, &sc);
|
||||
status = dcerpc_samr_Connect(c.out.dcerpc_pipe, mem_ctx, &sc);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_Connect failed: %s\n",
|
||||
@ -551,7 +551,7 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
|
||||
ld.in.domain_name = &d_name;
|
||||
|
||||
/* 3. do a samr_LookupDomain to get the domain sid */
|
||||
status = dcerpc_samr_LookupDomain(c.pdc.out.dcerpc_pipe, mem_ctx, &ld);
|
||||
status = dcerpc_samr_LookupDomain(c.out.dcerpc_pipe, mem_ctx, &ld);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_LookupDomain for [%s] failed: %s\n",
|
||||
@ -567,7 +567,7 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
|
||||
od.out.domain_handle = &d_handle;
|
||||
|
||||
/* 4. do a samr_OpenDomain to get a domain handle */
|
||||
status = dcerpc_samr_OpenDomain(c.pdc.out.dcerpc_pipe, mem_ctx, &od);
|
||||
status = dcerpc_samr_OpenDomain(c.out.dcerpc_pipe, mem_ctx, &od);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_OpenDomain for [%s] failed: %s\n",
|
||||
@ -586,7 +586,7 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
|
||||
ln.in.names[0].string = r->samr.in.account_name;
|
||||
|
||||
/* 5. do a samr_LookupNames to get the users rid */
|
||||
status = dcerpc_samr_LookupNames(c.pdc.out.dcerpc_pipe, mem_ctx, &ln);
|
||||
status = dcerpc_samr_LookupNames(c.out.dcerpc_pipe, mem_ctx, &ln);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_LookupNames for [%s] failed: %s\n",
|
||||
@ -611,7 +611,7 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
|
||||
ou.out.user_handle = &u_handle;
|
||||
|
||||
/* 6. do a samr_OpenUser to get a user handle */
|
||||
status = dcerpc_samr_OpenUser(c.pdc.out.dcerpc_pipe, mem_ctx, &ou);
|
||||
status = dcerpc_samr_OpenUser(c.out.dcerpc_pipe, mem_ctx, &ou);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->samr.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"samr_OpenUser for [%s] failed: %s\n",
|
||||
@ -623,7 +623,7 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
|
||||
r2.samr_handle.in.account_name = r->samr.in.account_name;
|
||||
r2.samr_handle.in.newpassword = r->samr.in.newpassword;
|
||||
r2.samr_handle.in.user_handle = &u_handle;
|
||||
r2.samr_handle.in.dcerpc_pipe = c.pdc.out.dcerpc_pipe;
|
||||
r2.samr_handle.in.dcerpc_pipe = c.out.dcerpc_pipe;
|
||||
|
||||
status = libnet_SetPassword(ctx, mem_ctx, &r2);
|
||||
|
||||
@ -631,7 +631,7 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
|
||||
|
||||
disconnect:
|
||||
/* close connection */
|
||||
talloc_free(c.pdc.out.dcerpc_pipe);
|
||||
talloc_free(c.out.dcerpc_pipe);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@ -27,18 +27,18 @@ NTSTATUS libnet_ListShares(struct libnet_context *ctx,
|
||||
TALLOC_CTX *mem_ctx, struct libnet_ListShares *r)
|
||||
{
|
||||
NTSTATUS status;
|
||||
union libnet_rpc_connect c;
|
||||
struct libnet_RpcConnect c;
|
||||
struct srvsvc_NetShareEnumAll s;
|
||||
uint32_t resume_handle;
|
||||
struct srvsvc_NetShareCtr0 ctr0;
|
||||
|
||||
c.standard.level = LIBNET_RPC_CONNECT_STANDARD;
|
||||
c.standard.in.server_name = r->in.server_name;
|
||||
c.standard.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
|
||||
c.standard.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
|
||||
c.standard.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
|
||||
c.level = LIBNET_RPC_CONNECT_SERVER;
|
||||
c.in.domain_name = r->in.server_name;
|
||||
c.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
|
||||
c.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
|
||||
c.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
|
||||
|
||||
status = libnet_rpc_connect(ctx, mem_ctx, &c);
|
||||
status = libnet_RpcConnect(ctx, mem_ctx, &c);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Connection to SRVSVC pipe of server %s "
|
||||
@ -55,7 +55,7 @@ NTSTATUS libnet_ListShares(struct libnet_context *ctx,
|
||||
|
||||
ZERO_STRUCT(ctr0);
|
||||
|
||||
status = dcerpc_srvsvc_NetShareEnumAll(c.standard.out.dcerpc_pipe, mem_ctx, &s);
|
||||
status = dcerpc_srvsvc_NetShareEnumAll(c.out.dcerpc_pipe, mem_ctx, &s);
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
@ -72,7 +72,7 @@ NTSTATUS libnet_ListShares(struct libnet_context *ctx,
|
||||
r->out.ctr = s.out.ctr;
|
||||
|
||||
disconnect:
|
||||
talloc_free(c.standard.out.dcerpc_pipe);
|
||||
talloc_free(c.out.dcerpc_pipe);
|
||||
|
||||
return status;
|
||||
}
|
||||
@ -82,16 +82,16 @@ NTSTATUS libnet_AddShare(struct libnet_context *ctx,
|
||||
TALLOC_CTX *mem_ctx, struct libnet_AddShare *r)
|
||||
{
|
||||
NTSTATUS status;
|
||||
union libnet_rpc_connect c;
|
||||
struct libnet_RpcConnect c;
|
||||
struct srvsvc_NetShareAdd s;
|
||||
|
||||
c.standard.level = LIBNET_RPC_CONNECT_STANDARD;
|
||||
c.standard.in.server_name = r->in.server_name;
|
||||
c.standard.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
|
||||
c.standard.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
|
||||
c.standard.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
|
||||
c.level = LIBNET_RPC_CONNECT_SERVER;
|
||||
c.in.domain_name = r->in.server_name;
|
||||
c.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
|
||||
c.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
|
||||
c.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
|
||||
|
||||
status = libnet_rpc_connect(ctx, mem_ctx, &c);
|
||||
status = libnet_RpcConnect(ctx, mem_ctx, &c);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Connection to SRVSVC pipe of server %s "
|
||||
@ -104,7 +104,7 @@ NTSTATUS libnet_AddShare(struct libnet_context *ctx,
|
||||
s.in.info.info2 = &r->in.share;
|
||||
s.in.server_unc = talloc_asprintf(mem_ctx, "\\\\%s", r->in.server_name);
|
||||
|
||||
status = dcerpc_srvsvc_NetShareAdd(c.standard.out.dcerpc_pipe, mem_ctx,&s);
|
||||
status = dcerpc_srvsvc_NetShareAdd(c.out.dcerpc_pipe, mem_ctx,&s);
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
@ -113,7 +113,7 @@ NTSTATUS libnet_AddShare(struct libnet_context *ctx,
|
||||
r->in.server_name, nt_errstr(status));
|
||||
}
|
||||
|
||||
talloc_free(c.standard.out.dcerpc_pipe);
|
||||
talloc_free(c.out.dcerpc_pipe);
|
||||
|
||||
return status;
|
||||
}
|
||||
@ -123,16 +123,16 @@ NTSTATUS libnet_DelShare(struct libnet_context *ctx,
|
||||
TALLOC_CTX *mem_ctx, struct libnet_DelShare *r)
|
||||
{
|
||||
NTSTATUS status;
|
||||
union libnet_rpc_connect c;
|
||||
struct libnet_RpcConnect c;
|
||||
struct srvsvc_NetShareDel s;
|
||||
|
||||
c.standard.level = LIBNET_RPC_CONNECT_STANDARD;
|
||||
c.standard.in.server_name = r->in.server_name;
|
||||
c.standard.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
|
||||
c.standard.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
|
||||
c.standard.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
|
||||
c.level = LIBNET_RPC_CONNECT_SERVER;
|
||||
c.in.domain_name = r->in.server_name;
|
||||
c.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
|
||||
c.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
|
||||
c.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
|
||||
|
||||
status = libnet_rpc_connect(ctx, mem_ctx, &c);
|
||||
status = libnet_RpcConnect(ctx, mem_ctx, &c);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Connection to SRVSVC pipe of server %s "
|
||||
@ -144,7 +144,7 @@ NTSTATUS libnet_DelShare(struct libnet_context *ctx,
|
||||
s.in.server_unc = talloc_asprintf(mem_ctx, "\\\\%s", r->in.server_name);
|
||||
s.in.share_name = r->in.share_name;
|
||||
|
||||
status = dcerpc_srvsvc_NetShareDel(c.standard.out.dcerpc_pipe, mem_ctx, &s);
|
||||
status = dcerpc_srvsvc_NetShareDel(c.out.dcerpc_pipe, mem_ctx, &s);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
"srvsvc_NetShareDel on server '%s' failed"
|
||||
@ -152,7 +152,7 @@ NTSTATUS libnet_DelShare(struct libnet_context *ctx,
|
||||
r->in.server_name, nt_errstr(status));
|
||||
}
|
||||
|
||||
talloc_free(c.standard.out.dcerpc_pipe);
|
||||
talloc_free(c.out.dcerpc_pipe);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@ -29,19 +29,19 @@
|
||||
static NTSTATUS libnet_RemoteTOD_srvsvc(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, union libnet_RemoteTOD *r)
|
||||
{
|
||||
NTSTATUS status;
|
||||
union libnet_rpc_connect c;
|
||||
struct libnet_RpcConnect c;
|
||||
struct srvsvc_NetRemoteTOD tod;
|
||||
struct tm tm;
|
||||
|
||||
/* prepare connect to the SRVSVC pipe of a timeserver */
|
||||
c.standard.level = LIBNET_RPC_CONNECT_STANDARD;
|
||||
c.standard.in.server_name = r->srvsvc.in.server_name;
|
||||
c.standard.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
|
||||
c.standard.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
|
||||
c.standard.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
|
||||
c.level = LIBNET_RPC_CONNECT_SERVER;
|
||||
c.in.domain_name = r->srvsvc.in.server_name;
|
||||
c.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
|
||||
c.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
|
||||
c.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
|
||||
|
||||
/* 1. connect to the SRVSVC pipe of a timeserver */
|
||||
status = libnet_rpc_connect(ctx, mem_ctx, &c);
|
||||
status = libnet_RpcConnect(ctx, mem_ctx, &c);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->srvsvc.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Connection to SRVSVC pipe of server '%s' failed: %s\n",
|
||||
@ -50,10 +50,10 @@ static NTSTATUS libnet_RemoteTOD_srvsvc(struct libnet_context *ctx, TALLOC_CTX *
|
||||
}
|
||||
|
||||
/* prepare srvsvc_NetrRemoteTOD */
|
||||
tod.in.server_unc = talloc_asprintf(mem_ctx, "\\%s", c.standard.in.server_name);
|
||||
tod.in.server_unc = talloc_asprintf(mem_ctx, "\\%s", c.in.domain_name);
|
||||
|
||||
/* 2. try srvsvc_NetRemoteTOD */
|
||||
status = dcerpc_srvsvc_NetRemoteTOD(c.pdc.out.dcerpc_pipe, mem_ctx, &tod);
|
||||
status = dcerpc_srvsvc_NetRemoteTOD(c.out.dcerpc_pipe, mem_ctx, &tod);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->srvsvc.out.error_string = talloc_asprintf(mem_ctx,
|
||||
"srvsvc_NetrRemoteTOD on server '%s' failed: %s\n",
|
||||
@ -88,7 +88,7 @@ static NTSTATUS libnet_RemoteTOD_srvsvc(struct libnet_context *ctx, TALLOC_CTX *
|
||||
|
||||
disconnect:
|
||||
/* close connection */
|
||||
talloc_free(c.standard.out.dcerpc_pipe);
|
||||
talloc_free(c.out.dcerpc_pipe);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@ -27,26 +27,26 @@
|
||||
NTSTATUS libnet_CreateUser(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, struct libnet_CreateUser *r)
|
||||
{
|
||||
NTSTATUS status;
|
||||
union libnet_rpc_connect cn;
|
||||
union libnet_find_pdc fp;
|
||||
struct libnet_RpcConnect cn;
|
||||
struct libnet_Lookup fp;
|
||||
struct libnet_rpc_domain_open dom_io;
|
||||
struct libnet_rpc_useradd user_io;
|
||||
|
||||
/* find domain pdc */
|
||||
fp.generic.level = LIBNET_FIND_PDC_GENERIC;
|
||||
fp.generic.in.domain_name = r->in.domain_name;
|
||||
fp.in.hostname = r->in.domain_name;
|
||||
fp.in.methods = NULL;
|
||||
|
||||
status = libnet_find_pdc(ctx, mem_ctx, &fp);
|
||||
status = libnet_LookupPdc(ctx, mem_ctx, &fp);
|
||||
if (!NT_STATUS_IS_OK(status)) return status;
|
||||
|
||||
/* connect rpc service of remote server */
|
||||
cn.standard.level = LIBNET_RPC_CONNECT_PDC;
|
||||
cn.standard.in.server_name = fp.generic.out.pdc_name;
|
||||
cn.standard.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
|
||||
cn.standard.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
|
||||
cn.standard.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
|
||||
cn.level = LIBNET_RPC_CONNECT_PDC;
|
||||
cn.in.domain_name = talloc_strdup(mem_ctx, *fp.out.address);
|
||||
cn.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
|
||||
cn.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
|
||||
cn.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
|
||||
|
||||
status = libnet_rpc_connect(ctx, mem_ctx, &cn);
|
||||
status = libnet_RpcConnect(ctx, mem_ctx, &cn);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Connection to SAMR pipe domain '%s' PDC failed: %s\n",
|
||||
@ -54,13 +54,13 @@ NTSTATUS libnet_CreateUser(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
|
||||
return status;
|
||||
}
|
||||
|
||||
ctx->samr = cn.pdc.out.dcerpc_pipe;
|
||||
ctx->pipe = cn.out.dcerpc_pipe;
|
||||
|
||||
/* open connected domain */
|
||||
dom_io.in.domain_name = r->in.domain_name;
|
||||
dom_io.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
|
||||
|
||||
status = libnet_rpc_domain_open(ctx->samr, mem_ctx, &dom_io);
|
||||
status = libnet_rpc_domain_open(ctx->pipe, mem_ctx, &dom_io);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Creating user account failed: %s\n",
|
||||
@ -74,7 +74,7 @@ NTSTATUS libnet_CreateUser(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
|
||||
user_io.in.username = r->in.user_name;
|
||||
user_io.in.domain_handle = dom_io.out.domain_handle;
|
||||
|
||||
status = libnet_rpc_useradd(ctx->samr, mem_ctx, &user_io);
|
||||
status = libnet_rpc_useradd(ctx->pipe, mem_ctx, &user_io);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
r->out.error_string = talloc_asprintf(mem_ctx,
|
||||
"Creating user account failed: %s\n",
|
||||
|
Loading…
x
Reference in New Issue
Block a user