From 633d5a6bef2c17bf62f30809e08fb1d600275038 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Fri, 6 Apr 2007 00:37:07 +0000 Subject: [PATCH] *** empty log message *** svn path=/trunk/boinc/; revision=12325 --- checkin_notes | 10 ++++++++++ client/acct_mgr.C | 18 +++++++++--------- doc/boinc_cmd.php | 9 ++++++--- lib/boinc_cmd.C | 28 +++++++++++++++++++++++++++- 4 files changed, 52 insertions(+), 13 deletions(-) diff --git a/checkin_notes b/checkin_notes index bf669f33eb..b657b5446a 100755 --- a/checkin_notes +++ b/checkin_notes @@ -3259,3 +3259,13 @@ David 5 Apr 2007 lib/ diagnostics.C error_numbers.h + +David 5 Apr 2007 + - core client: canonicalize account manager URL + - boinc_cmd: add --join_acct_mgr, --quit_acct_mgr commands; + remove --acct_mgr_op command. + + client/ + acct_mgr.C + lib/ + boinc_cmd.C diff --git a/client/acct_mgr.C b/client/acct_mgr.C index d4982e3885..5edcd775fc 100644 --- a/client/acct_mgr.C +++ b/client/acct_mgr.C @@ -47,15 +47,15 @@ ACCT_MGR_OP::ACCT_MGR_OP() { // if url is null, defect from current account manager // int ACCT_MGR_OP::do_rpc( - std::string url, std::string name, std::string password_hash, + std::string _url, std::string name, std::string password_hash, bool _via_gui ) { int retval; unsigned int i; - char buf[256], password[256]; + char url[256], password[256], buf[256]; FILE *pwdf; - strlcpy(buf, url.c_str(), sizeof(buf)); + strlcpy(url, _url.c_str(), sizeof(url)); error_num = ERR_IN_PROGRESS; via_gui = _via_gui; @@ -66,7 +66,7 @@ int ACCT_MGR_OP::do_rpc( // if null URL, defect from current AMS // - if (!strlen(buf) && strlen(gstate.acct_mgr_info.acct_mgr_url)) { + if (!strlen(url) && strlen(gstate.acct_mgr_info.acct_mgr_url)) { msg_printf(NULL, MSG_INFO, "Removing account manager info"); gstate.acct_mgr_info.clear(); boinc_delete_file(ACCT_MGR_URL_FILENAME); @@ -80,13 +80,13 @@ int ACCT_MGR_OP::do_rpc( return 0; } - canonicalize_master_url(buf); - if (!valid_master_url(buf)) { + canonicalize_master_url(url); + if (!valid_master_url(url)) { error_num = ERR_INVALID_URL; return 0; } - strlcpy(ami.acct_mgr_url, url.c_str(), sizeof(ami.acct_mgr_url)); + strlcpy(ami.acct_mgr_url, url, sizeof(ami.acct_mgr_url)); strlcpy(ami.acct_mgr_name, "", sizeof(ami.acct_mgr_name)); strlcpy(ami.login_name, name.c_str(), sizeof(ami.login_name)); strlcpy(ami.password_hash, password_hash.c_str(), sizeof(ami.password_hash)); @@ -174,7 +174,7 @@ int ACCT_MGR_OP::do_rpc( } fprintf(f, "\n"); fclose(f); - sprintf(buf, "%srpc.php", url.c_str()); + sprintf(buf, "%srpc.php", url); retval = gstate.gui_http.do_rpc_post( this, buf, ACCT_MGR_REQUEST_FILENAME, ACCT_MGR_REPLY_FILENAME ); @@ -182,7 +182,7 @@ int ACCT_MGR_OP::do_rpc( error_num = retval; return retval; } - msg_printf(NULL, MSG_INFO, "Contacting account manager at %s", url.c_str()); + msg_printf(NULL, MSG_INFO, "Contacting account manager at %s", url); return 0; } diff --git a/doc/boinc_cmd.php b/doc/boinc_cmd.php index 4fb03e8118..8ee6c2d010 100644 --- a/doc/boinc_cmd.php +++ b/doc/boinc_cmd.php @@ -29,6 +29,12 @@ list_item("--create_account URL email password name", "Create account with the given email address, password, and user name" ); list_item("--project_attach URL auth","Attach to an account"); +list_item("--join_acct_mgr URL name password", + "Attach to an account manager (or do RPC if already attached)." +); +list_item("--quit_acct_mgr", + "Quit the current account manager." +); list_bar("State queries"); list_item("--get_state", "show complete client state"); list_item("--get_results", "show results"); @@ -110,9 +116,6 @@ list_item( ", "Set proxy settings (all fields are mandatory)" ); -list_item("--acct_mgr_rpc URL name password", - "Instruct core client to contact an account manager server." -); list_item("--run_benchmarks", "Run CPU benchmarks"); list_item( "--set_screensaver_mode on|off blank_time diff --git a/lib/boinc_cmd.C b/lib/boinc_cmd.C index 1e1532af6c..f0e8711039 100644 --- a/lib/boinc_cmd.C +++ b/lib/boinc_cmd.C @@ -375,11 +375,37 @@ int main(int argc, char** argv) { HOST_INFO hi; retval = rpc.get_host_info(hi); if (!retval) hi.print(); - } else if (!strcmp(cmd, "--acct_mgr_rpc")) { + } else if (!strcmp(cmd, "--join_acct_mgr")) { char* am_url = next_arg(argc, argv, i); char* am_name = next_arg(argc, argv, i); char* am_passwd = next_arg(argc, argv, i); retval = rpc.acct_mgr_rpc(am_url, am_name, am_passwd); + if (!retval) { + while (1) { + ACCT_MGR_RPC_REPLY amrr; + retval = rpc.acct_mgr_rpc_poll(amrr); + if (retval) { + printf("poll status: %s\n", boincerror(retval)); + } else { + if (amrr.error_num) { + printf("poll status: %s\n", boincerror(amrr.error_num)); + if (amrr.error_num != ERR_IN_PROGRESS) break; + boinc_sleep(1); + } else { + unsigned int i, n = amrr.messages.size(); + if (n) { + printf("Messages from account manager:\n"); + for (i=0; i