The branch, master has been updated via 8972c92 s3:net ads join: remove a useless empty comment block via 976672b s3:net ads join: add a comment for the call to _net_ads_join_dns_update() via be312e7 s3:net ads join: reduce indentation in _net_ads_join_dns_updates() via 7e5c5bd s3:net ads join: move dns update code out to new function _net_ads_join_dns_updates() via 1768d36 s3:net ads join: improve comment for dns update block via 8f9b432 s3:net ads join: improve status evaluation for call to net_update_dns() via 9cd7b8f s3:net ads join: interpret return code of ads_kinit_password() in dns update block via 4831b6e s3:net ads join: check for malloc success and react accordingly in dns update block via ca913c9 s3:net ads join: check for success of fetching machine password in dns update block via 04fa9a3 s3:net ads join: untangle assignment from check, fix return code and improve error logging via 63d9b5d s3:net ads join: reduce indentation and improve logging in the dns update code block via 1d83f21 s3:net ads join: untangle assignment from check. via dc4cf82 s3:net registry: fix a copy and paste error in a help text from 2343703 tevent: Fix python documentation strings
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 8972c92342211fefb3d76bc306f7fbc467089010 Author: Michael Adam <ob...@samba.org> Date: Tue Jan 31 16:16:47 2012 +0100 s3:net ads join: remove a useless empty comment block Autobuild-User: Michael Adam <ob...@samba.org> Autobuild-Date: Tue Jan 31 18:37:45 CET 2012 on sn-devel-104 commit 976672bf805e3ec44c10e07baeaa4a4ebc0da5cc Author: Michael Adam <ob...@samba.org> Date: Tue Jan 31 16:15:54 2012 +0100 s3:net ads join: add a comment for the call to _net_ads_join_dns_update() commit be312e76d2b27674c5e38b760ca6521052caa460 Author: Michael Adam <ob...@samba.org> Date: Tue Jan 31 01:05:14 2012 +0100 s3:net ads join: reduce indentation in _net_ads_join_dns_updates() commit 7e5c5bdcc46b55c5890d755601fe5278557d0948 Author: Michael Adam <ob...@samba.org> Date: Tue Jan 31 00:59:21 2012 +0100 s3:net ads join: move dns update code out to new function _net_ads_join_dns_updates() commit 1768d3621a077eb8b0457cbcabc1f7e2a4545948 Author: Michael Adam <ob...@samba.org> Date: Mon Jan 30 18:04:41 2012 +0100 s3:net ads join: improve comment for dns update block commit 8f9b43281d7ad425a4e6681503eb6e872d9040d7 Author: Michael Adam <ob...@samba.org> Date: Mon Jan 30 14:15:14 2012 +0100 s3:net ads join: improve status evaluation for call to net_update_dns() untangle assignment from check and log error code in message if failed. commit 9cd7b8f04d6e51a0be4e18e8842ff1062134afae Author: Michael Adam <ob...@samba.org> Date: Mon Jan 30 14:12:15 2012 +0100 s3:net ads join: interpret return code of ads_kinit_password() in dns update block If failed, print according error message and skip the attempt to do dns update. commit 4831b6e6bb422a9186cf42980894b5e46c147ed4 Author: Michael Adam <ob...@samba.org> Date: Mon Jan 30 14:07:52 2012 +0100 s3:net ads join: check for malloc success and react accordingly in dns update block commit ca913c98a6948f1b4acf38dd548fb6fa0191367c Author: Michael Adam <ob...@samba.org> Date: Mon Jan 30 14:05:59 2012 +0100 s3:net ads join: check for success of fetching machine password in dns update block log and cleanup accordingly if failed commit 04fa9a389c6d027dc4defb2527550fda650c4a6b Author: Michael Adam <ob...@samba.org> Date: Mon Jan 30 14:00:12 2012 +0100 s3:net ads join: untangle assignment from check, fix return code and improve error logging only the dns update failed, not the join. Also do proper memory cleanup commit 63d9b5d75a435bbbc06aa8d00371a1c61b69acfb Author: Michael Adam <ob...@samba.org> Date: Mon Jan 30 13:56:45 2012 +0100 s3:net ads join: reduce indentation and improve logging in the dns update code block by doing an early goto done upon error condition commit 1d83f2118e0e9e1de02909247114ac18ce55a6be Author: Michael Adam <ob...@samba.org> Date: Mon Jan 30 13:03:59 2012 +0100 s3:net ads join: untangle assignment from check. commit dc4cf82fb573074b4bb063321c86cb306902a4bc Author: Michael Adam <ob...@samba.org> Date: Fri Jan 27 14:02:07 2012 +0100 s3:net registry: fix a copy and paste error in a help text ----------------------------------------------------------------------- Summary of changes: source3/utils/net_ads.c | 135 +++++++++++++++++++++++++++-------------- source3/utils/net_registry.c | 4 +- 2 files changed, 91 insertions(+), 48 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c index 0893a1d..381393e 100644 --- a/source3/utils/net_ads.c +++ b/source3/utils/net_ads.c @@ -1304,8 +1304,91 @@ static int net_ads_join_usage(struct net_context *c, int argc, const char **argv return -1; } -/******************************************************************* - ********************************************************************/ + +static void _net_ads_join_dns_updates(TALLOC_CTX *ctx, struct libnet_JoinCtx *r) +{ +#if defined(WITH_DNS_UPDATES) + ADS_STRUCT *ads_dns = NULL; + int ret; + NTSTATUS status; + + /* + * In a clustered environment, don't do dynamic dns updates: + * Registering the set of ip addresses that are assigned to + * the interfaces of the node that performs the join does usually + * not have the desired effect, since the local interfaces do not + * carry the complete set of the cluster's public IP addresses. + * And it can also contain internal addresses that should not + * be visible to the outside at all. + * In order to do dns updates in a clustererd setup, use + * net ads dns register. + */ + if (lp_clustering()) { + d_fprintf(stderr, _("Not doing automatic DNS update in a " + "clustered setup.\n")); + return; + } + + if (!r->out.domain_is_ad) { + return; + } + + /* + * We enter this block with user creds. + * kinit with the machine password to do dns update. + */ + + ads_dns = ads_init(lp_realm(), NULL, r->in.dc_name); + + if (ads_dns == NULL) { + d_fprintf(stderr, _("DNS update failed: out of memory!\n")); + goto done; + } + + use_in_memory_ccache(); + + ret = asprintf(&ads_dns->auth.user_name, "%s$", lp_netbios_name()); + if (ret == -1) { + d_fprintf(stderr, _("DNS update failed: out of memory\n")); + goto done; + } + + ads_dns->auth.password = secrets_fetch_machine_password( + r->out.netbios_domain_name, NULL, NULL); + if (ads_dns->auth.password == NULL) { + d_fprintf(stderr, _("DNS update failed: out of memory\n")); + goto done; + } + + ads_dns->auth.realm = SMB_STRDUP(r->out.dns_domain_name); + if (ads_dns->auth.realm == NULL) { + d_fprintf(stderr, _("DNS update failed: out of memory\n")); + goto done; + } + + strupper_m(ads_dns->auth.realm); + + ret = ads_kinit_password(ads_dns); + if (ret != 0) { + d_fprintf(stderr, + _("DNS update failed: kinit failed: %s\n"), + error_message(ret)); + goto done; + } + + status = net_update_dns(ctx, ads_dns, NULL); + if (!NT_STATUS_IS_OK(status)) { + d_fprintf( stderr, _("DNS update failed: %s\n"), + nt_errstr(status)); + } + +done: + ads_destroy(&ads_dns); +#endif + + return; +} + int net_ads_join(struct net_context *c, int argc, const char **argv) { @@ -1444,52 +1527,12 @@ int net_ads_join(struct net_context *c, int argc, const char **argv) r->out.netbios_domain_name); } -#if defined(WITH_DNS_UPDATES) /* - * In a clustered environment, don't do dynamic dns updates: - * Registering the set of ip addresses that are assigned to - * the interfaces of the node that performs the join does usually - * not have the desired effect, since the local interfaces do not - * carry the complete set of the cluster's public IP addresses. - * And it can also contain internal addresses that should not - * be visible to the outside at all. - * In order to do dns updates in a clustererd setup, use - * net ads dns register. + * We try doing the dns update (if it was compiled in). + * If the dns update fails, we still consider the join + * operation as succeeded if we came this far. */ - if (lp_clustering()) { - d_fprintf(stderr, _("Not doing automatic DNS update in a " - "clustered setup.\n")); - goto done; - } - - if (r->out.domain_is_ad) { - /* We enter this block with user creds */ - ADS_STRUCT *ads_dns = NULL; - - if ( (ads_dns = ads_init( lp_realm(), NULL, r->in.dc_name )) != NULL ) { - /* kinit with the machine password */ - - use_in_memory_ccache(); - if (asprintf( &ads_dns->auth.user_name, "%s$", lp_netbios_name()) == -1) { - goto fail; - } - ads_dns->auth.password = secrets_fetch_machine_password( - r->out.netbios_domain_name, NULL, NULL ); - ads_dns->auth.realm = SMB_STRDUP( r->out.dns_domain_name ); - strupper_m(ads_dns->auth.realm ); - ads_kinit_password( ads_dns ); - } - - if ( !ads_dns || !NT_STATUS_IS_OK(net_update_dns( ctx, ads_dns, NULL)) ) { - d_fprintf( stderr, _("DNS update failed!\n") ); - } - - /* exit from this block using machine creds */ - ads_destroy(&ads_dns); - } - -done: -#endif + _net_ads_join_dns_updates(ctx, r); TALLOC_FREE(r); TALLOC_FREE( ctx ); diff --git a/source3/utils/net_registry.c b/source3/utils/net_registry.c index 90b0d19..eb7d19a 100644 --- a/source3/utils/net_registry.c +++ b/source3/utils/net_registry.c @@ -1439,9 +1439,9 @@ int net_registry(struct net_context *c, int argc, const char **argv) "check", net_registry_check, NET_TRANSPORT_LOCAL, - N_("Check .reg file"), + N_("Check a registry database"), N_("net registry check\n" - " Check .reg file") + " Check a registry database") }, { NULL, NULL, 0, NULL, NULL } }; -- Samba Shared Repository