The 'manual' procedure for creating BOINC accounts is as follows.
A participant must:
- locate BOINC project web sites,
read them, and decide which to join;
- Download and install the BOINC client software.
and then for each selected project:
- fill out a web registration form;
- handle an email;
- cut and paste a URL and account key into the BOINC client.
If the participant chooses N projects,
there are N forms to fill out,
N emails to handle, and N dialog interactions with the BOINC client.
This is tedious if there are lots of projects.
Furthermore, it involves cutting and pasting long random strings,
which is intimidating to some participants.
This document describes BOINC's support for account management systems,
which streamline the process of finding and joining BOINC projects.
A typical account management system is implemented as a web site.
The participant experience is:
- Visit the account manager site,
set up a 'meta-account' (name, email, password),
browse a list of projects, and click checkboxes to select projects.
- Handle an email from each selected project
(click on a link in the email).
- Download and install the BOINC client software from the account manager.
- Enter the meta-account name and password in a BOINC client dialog.
This requires about 1/3 of the interactions of the manual approach,
and avoids dealing with long random strings.
Implementation
An account management system works as follows:
- The participant sets up his meta-account and selects projects.
- The account manager issues a create account RPC
to each selected project.
- The project creates an account (marked as 'unconfirmed')
and sends an email to the participant.
- The participant opens the email and clicks on a link in it,
causing the account to be marked as 'confirmed'.
- The account manager periodically polls each selected project
with a query account RPC,
waiting for all accounts to become confirmed.
- When all accounts are confirmed,
the participant downloads and installs the BOINC client software
from the account manager.
The install package includes a file
(specific to this account manager)
containing the URL of the account manager.
- The BOINC client runs, and asks the participant to enter
the name and password of his meta-account.
- The BOINC client does a query accounts RPC
to the account manager, obtaining a list of accounts.
It then attaches to these accounts and proceeds.
This architecture involves two RPC mechanisms:
- Account creation RPCs (steps 2 and 5 above);
- A Account manager RPCs (step 8 above).
This document describes these two RPC mechanisms.
The underlying protocol of both mechanisms is as follows:
- Each RPC is an HTTP POST transaction.
- The request and reply messages are strings of the form
".html_text("
param1=val1¶m2=val2&...¶mn=valn
")."
there param1 ... paramN are the input or output parameter names,
and val1 ... valn are the values.
All values are URL-encoded using the PHP urlencode() function.
Account creation RPCs
The RPC functions are as follows:
Create account
";
list_start();
list_item("URL", "project_url/am_create.php");
list_item(
"input", "email address
nonce ID (crypto-random string)"
);
list_item(
"output", "status (integer; 0=success)"
);
list_item(
"action",
"The server creates a tentative account.
The server sends email to the given address, of the form:
Someone (hopefully you) joined [project name] with this email address.
To confirm your participation in [project name] please visit the following URL:
xxx
If you do not want to participate in [project name], just ignore this message.
When the participant visits xxx, the account is confirmed.
");
list_end();
echo "
Query account
";
list_start();
list_item("URL", "project_url/am_query.php");
list_item("input",
"nonce ID"
);
list_item("output",
"status (integer; 0 means account has been confirmed)
account key (string)
"
);
list_item("action",
"If the account has been confirmed, return status=0 and the account key."
);
list_end();
echo "
Get account info
";
list_start();
list_item("URL", "project_url/am_get_info.php");
list_item("input", "account key");
list_item("output",
"status (integer)
name (string)
country (string)
postal_code (string)
global_prefs (XML string)
project_prefs (XML string)
url (string)
send_email (integer)
show_hosts (integer)
"
);
list_end();
echo "
Set account info
";
list_start();
list_item("URL", "project_url/am_set_info.php");
list_item("input", "account key
name (string)
country (string)
postal_code (string)
global_prefs (XML string)
project_prefs (XML string)
url (string)
send_email (integer)
show_hosts (integer)
"
);
list_item("output", "status (integer)");
list_end();
echo "
Account manager RPCs
";
list_start();
list_item("URL", "Given in the file account_manager_url.xml,
included in the installer"
);
list_item("input", "name (string)
password (string)"
);
list_item("output",
"url1, key1, ..., urln, keyn: list of accounts.
Each account consists of a (URL, account key) pair."
);
list_end();
page_tail();
?>