static bool wbinfo_set_auth_user(char *username) { const char *password; char *p; fstring user, domain; /* Separate into user and password */ parse_wbinfo_domain_user(username, domain, user); p = strchr(user, '%'); if (p != NULL) { *p = 0; password = p+1; } else { char *thepass = getpass("Password: "******""; } /* Store or remove DOMAIN\username%password in secrets.tdb */ secrets_init(); if (user[0]) { if (!secrets_store(SECRETS_AUTH_USER, user, strlen(user) + 1)) { d_fprintf(stderr, "error storing username\n"); return false; } /* We always have a domain name added by the parse_wbinfo_domain_user() function. */ if (!secrets_store(SECRETS_AUTH_DOMAIN, domain, strlen(domain) + 1)) { d_fprintf(stderr, "error storing domain name\n"); return false; } } else { secrets_delete(SECRETS_AUTH_USER); secrets_delete(SECRETS_AUTH_DOMAIN); } if (password[0]) { if (!secrets_store(SECRETS_AUTH_PASSWORD, password, strlen(password) + 1)) { d_fprintf(stderr, "error storing password\n"); return false; } } else secrets_delete(SECRETS_AUTH_PASSWORD); return true; }
/** * @brief Set the authorised user for winbindd access in secrets.tdb */ static int net_setauthuser(struct net_context *c, int argc, const char **argv) { const char *password = NULL; if (!secrets_init()) { d_fprintf(stderr, _("Failed to open secrets.tdb.\n")); return 1; } /* Delete the settings. */ if (argc >= 1) { if (strncmp(argv[0], "delete", 6) != 0) { d_fprintf(stderr,_("Usage:\n")); d_fprintf(stderr, _(" net setauthuser -U user[%%password] \n" " Set the auth user account to user" "password. Prompt for password if not " "specified.\n")); d_fprintf(stderr, _(" net setauthuser delete\n" " Delete the auth user setting.\n")); return 1; } secrets_delete(SECRETS_AUTH_USER); secrets_delete(SECRETS_AUTH_DOMAIN); secrets_delete(SECRETS_AUTH_PASSWORD); return 0; } if (!c->opt_user_specified) { d_fprintf(stderr, _("Usage:\n")); d_fprintf(stderr, _(" net setauthuser -U user[%%password]\n" " Set the auth user account to user" "password. Prompt for password if not " "specified.\n")); d_fprintf(stderr, _(" net setauthuser delete\n" " Delete the auth user setting.\n")); return 1; } password = net_prompt_pass(c, _("the auth user")); if (password == NULL) { d_fprintf(stderr,_("Failed to get the auth users password.\n")); return 1; } if (!secrets_store(SECRETS_AUTH_USER, c->opt_user_name, strlen(c->opt_user_name) + 1)) { d_fprintf(stderr, _("error storing auth user name\n")); return 1; } if (!secrets_store(SECRETS_AUTH_DOMAIN, c->opt_workgroup, strlen(c->opt_workgroup) + 1)) { d_fprintf(stderr, _("error storing auth user domain\n")); return 1; } if (!secrets_store(SECRETS_AUTH_PASSWORD, password, strlen(password) + 1)) { d_fprintf(stderr, _("error storing auth user password\n")); return 1; } return 0; }