mirror of https://github.com/BOINC/boinc.git
client: debug use of authenticators with account managers
This commit is contained in:
parent
99fbb26598
commit
40dccf9168
|
@ -383,6 +383,7 @@ int ACCT_MGR_OP::parse(FILE* f) {
|
|||
}
|
||||
if (xp.match_tag("/acct_mgr_reply")) return 0;
|
||||
if (xp.parse_str("name", ami.project_name, 256)) continue;
|
||||
if (xp.parse_str("authenticator", ami.authenticator, 256)) continue;
|
||||
if (xp.parse_int("error_num", error_num)) continue;
|
||||
if (xp.parse_string("error", error_str)) continue;
|
||||
if (xp.parse_string("error_msg", error_str)) continue;
|
||||
|
|
|
@ -78,12 +78,14 @@ struct ACCT_MGR_INFO : PROJ_AM {
|
|||
|
||||
inline bool using_am() {
|
||||
if (!strlen(master_url)) return false;
|
||||
if (strlen(authenticator)) return true;
|
||||
if (!strlen(login_name)) return false;
|
||||
if (!strlen(password_hash)) return false;
|
||||
return true;
|
||||
}
|
||||
inline bool same_am(const char* mu, const char* ln, const char* ph) {
|
||||
inline bool same_am(const char* mu, const char* ln, const char* ph, const char* auth) {
|
||||
if (strcmp(mu, master_url)) return false;
|
||||
if (!strcmp(auth, authenticator)) return true;
|
||||
if (strcmp(ln, login_name)) return false;
|
||||
if (strcmp(ph, password_hash)) return false;
|
||||
return true;
|
||||
|
|
|
@ -640,7 +640,9 @@ static void handle_acct_mgr_info(GUI_RPC_CONN& grc) {
|
|||
gstate.acct_mgr_info.project_name
|
||||
);
|
||||
|
||||
if (strlen(gstate.acct_mgr_info.login_name)) {
|
||||
if (strlen(gstate.acct_mgr_info.login_name)
|
||||
|| strlen(gstate.acct_mgr_info.authenticator)
|
||||
) {
|
||||
grc.mfout.printf(" <have_credentials/>\n");
|
||||
}
|
||||
|
||||
|
@ -938,7 +940,7 @@ static void handle_project_attach_poll(GUI_RPC_CONN& grc) {
|
|||
// url/name/passwd args are null
|
||||
//
|
||||
static void handle_acct_mgr_rpc(GUI_RPC_CONN& grc) {
|
||||
string url, name, password;
|
||||
string url, name, password, authenticator;
|
||||
string password_hash, name_lc;
|
||||
bool use_config_file = false;
|
||||
bool bad_arg = false;
|
||||
|
@ -971,6 +973,7 @@ static void handle_acct_mgr_rpc(GUI_RPC_CONN& grc) {
|
|||
url = gstate.acct_mgr_info.master_url;
|
||||
name = gstate.acct_mgr_info.login_name;
|
||||
password_hash = gstate.acct_mgr_info.password_hash;
|
||||
authenticator = gstate.acct_mgr_info.authenticator;
|
||||
}
|
||||
} else {
|
||||
bad_arg = !url_found || !name_found || !password_found;
|
||||
|
@ -990,7 +993,7 @@ static void handle_acct_mgr_rpc(GUI_RPC_CONN& grc) {
|
|||
grc.mfout.printf("<error>bad arg</error>\n");
|
||||
} else if (gstate.acct_mgr_info.using_am()
|
||||
&& !url.empty()
|
||||
&& !gstate.acct_mgr_info.same_am(url.c_str(), name.c_str(), password_hash.c_str())
|
||||
&& !gstate.acct_mgr_info.same_am(url.c_str(), name.c_str(), password_hash.c_str(), authenticator.c_str())
|
||||
){
|
||||
grc.mfout.printf("<error>attached to a different AM - detach first</error>\n");
|
||||
} else {
|
||||
|
@ -998,6 +1001,7 @@ static void handle_acct_mgr_rpc(GUI_RPC_CONN& grc) {
|
|||
safe_strcpy(ami.master_url, url.c_str());
|
||||
safe_strcpy(ami.login_name, name.c_str());
|
||||
safe_strcpy(ami.password_hash, password_hash.c_str());
|
||||
safe_strcpy(ami.authenticator, authenticator.c_str());
|
||||
gstate.acct_mgr_op.do_rpc(ami, true);
|
||||
grc.mfout.printf("<success/>\n");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue