int net_samsync_ldb(struct net_context *ctx, int argc, const char **argv) { NTSTATUS status; struct libnet_context *libnetctx; struct libnet_samsync_ldb r; libnetctx = libnet_context_init(ctx->event_ctx, ctx->lp_ctx); if (!libnetctx) { return -1; } libnetctx->cred = ctx->credentials; r.out.error_string = NULL; r.in.machine_account = NULL; r.in.binding_string = NULL; /* Needed to override the ACLs on ldb */ r.in.session_info = system_session(libnetctx, ctx->lp_ctx); status = libnet_samsync_ldb(libnetctx, libnetctx, &r); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("libnet_samsync_ldb returned %s: %s\n", nt_errstr(status), r.out.error_string)); return -1; } talloc_free(libnetctx); return 0; }
samsync->in.binding_string = NULL; samsync->out.error_string = NULL; if (argc == 1 && argv[0]->type == MPR_TYPE_OBJECT) { MprVar *credentials = mprGetProperty(argv[0], "machine_account", NULL); MprVar *session_info = mprGetProperty(argv[0], "session_info", NULL); if (credentials) { samsync->in.machine_account = talloc_get_type(mprGetPtr(credentials, "creds"), struct cli_credentials); } if (session_info) { samsync->in.session_info = talloc_get_type(mprGetPtr(session_info, "session_info"), struct auth_session_info); } } /* do the domain samsync */ status = libnet_samsync_ldb(ctx, samsync, samsync); if (!NT_STATUS_IS_OK(status)) { MprVar error_string = mprString(samsync->out.error_string); mprSetPropertyValue(argv[0], "error_string", error_string); mpr_Return(eid, mprCreateBoolVar(False)); } else { mpr_Return(eid, mprCreateBoolVar(True)); } talloc_free(mem_ctx); return 0; } /*