*** empty log message ***

svn path=/trunk/boinc/; revision=6599
This commit is contained in:
David Anderson 2005-07-13 13:41:41 +00:00
parent aa41f9487a
commit 43f9d91ecc
2 changed files with 178 additions and 19 deletions

View File

@ -84,13 +84,15 @@ call attach_to_project(PROJ_URL, true)
function attach_to_project(PROJ_URL, bool user_supplied_url) function attach_to_project(PROJ_URL, bool user_supplied_url)
1) Dialog: 1) Dialog ("query_key"):
Attaching to PROJ_URL.
Do you already have an account on PROJ_URL? Do you already have an account on PROJ_URL?
No [button] No - create new account [button]
Yes [button] paste account key here: ______________________ [text field] Yes [button] paste account key here: ______________________ [text field]
How to find an existing account key [button] How to find an existing account key [button]
Cancel
Dialog (how to find an existing account key): Dialog (how to find an existing account key):
@ -119,7 +121,7 @@ If answer to 1) is "no":
2) BOINC client tries to communicates with project, create account 2) BOINC client tries to communicates with project, create account
3) if succeed in creating account 3) if succeed in creating account
Dialog: Dialog ("welcome"):
Welcome to PROJ_NAME Welcome to PROJ_NAME
Your web browser should now show a Your web browser should now show a
@ -135,8 +137,8 @@ Web page (foo.edu/welcome.php?auth=xxxxx)
Your new account has a name and optional email address. Your new account has a name and optional email address.
You can changes these if you like: You can changes these if you like:
Name: xxx Name: xxx (the user's account name on host)
(this wil be shown on our web site) (this will be shown on our web site)
Email address: Email address:
(this will not be displayed or distributed) (this will not be displayed or distributed)
OK to send periodic email newsletters [checkbox] OK to send periodic email newsletters [checkbox]
@ -158,14 +160,19 @@ Web page (foo.edu/welcome.php?auth=xxxxx)
go to the Foo@home home page [link] go to the Foo@home home page [link]
(update button goes to a "account info updated" page) Notes:
- update button goes to a "account info updated" page
- if email address already exists, show
"An account with that email address already exists.
(User is done) (User is done)
4) if project replies with an error message: 4) if project replies with an error message:
Dialog: Dialog ("project_unavailable"):
PROJ_NAME is temporarily unavailable. PROJ_NAME is temporarily unavailable.
Please check PROJ_URL [link] for information. Please check PROJ_URL [link] for information.
@ -178,15 +185,15 @@ Go to Projects tab.
user is done. user is done.
5) If no connection failure or no reply 5) If no connection failure or no reply
call network_failure() retry = network_failure()
Go to 6) if (retry) go to 2
If answer to 4) is "yes": If answer to 4) is "yes":
10) if account key is syntactically invalid 10) if account key is syntactically invalid
Dialog: Dialog ("invalid_key"):
The account key xxx is invalid. The account key xxx is invalid.
Account keys are 32 characters, each of which is a-f or 0-9. Account keys are 32 characters, each of which is a-f or 0-9.
@ -196,7 +203,7 @@ Dialog:
11) If project is up, and account key is verified 11) If project is up, and account key is verified
Dialog: Dialog ("valid_key"):
Account key is valid. Account key is valid.
This computer is now participating in Foo@home. This computer is now participating in Foo@home.
@ -205,7 +212,7 @@ Dialog:
User is done. User is done.
12) If project is up, and account key is not verified 12) If project is up, and account key is not verified
Dialog: Dialog ("unrecognized_key"):
xxx is not the key of any existing account on Foo@home. xxx is not the key of any existing account on Foo@home.
Account keys from other BOINC projects will not work on Foo@home. Account keys from other BOINC projects will not work on Foo@home.
Please check your account key. Please check your account key.
@ -216,7 +223,7 @@ Go to 4
13) if project replies with an error message: 13) if project replies with an error message:
Dialog: Dialog ("project_unavailable"):
Foo@home is temporarily unavailable. Foo@home is temporarily unavailable.
Please check http://foo.edu [link] for information. Please check http://foo.edu [link] for information.
@ -228,7 +235,7 @@ Dialog:
Go to Projects tab. Go to Projects tab.
user is done. user is done.
14) else (if no reply): call network_failure() 14) else (if no reply): call network_failure(user_supplied_url)
---------------- ----------------
@ -238,7 +245,7 @@ function network_failure(bool user_supplied_url):
or got no reply. or got no reply.
Returns true if we should retry the operation.) Returns true if we should retry the operation.)
Dialog: Dialog ("unable_to_contact"):
BOINC is unable to contact PROJ_URL BOINC is unable to contact PROJ_URL
Possible reasons are: Possible reasons are:

View File

@ -1,6 +1,158 @@
Implementation notes Implementation notes
What do we know at the start? ------------------------------------------
If they downloaded the installer then they have network connectivity project-specific installers
and working proxy setup for their browser.
If via CD-ROM, nothing is known. These produce a file "start_project.xml" containing the URL
(and possibly the name) of the starting project in the BOINC directory.
This file tells the BOINC manager to attach to this project.
The file could be produced either of two ways:
1) The file is part of the install bundle.
This would require projects to edit the installers
released by BOINC, using ORCA or whatever tools are needed
2) The project URL is encoded in the installer filename,
and the installer runs a script that finds this name
and creates the file.
(Not sure how easy this is to do)
------------------------------------------
Database
Allow nulls in the email_addr table.
Make it non-unique.
------------------------------------------
Web interfaces
- "get account key" page can now return
multiple accounts with same email address
(show creation time, credit in email message)
- can possibly provide interface for merging accounts
(but this is tricky and can wait)
welcome.php?auth=xxx
shows welcome page (see doc)
and returns cookie with account key
create_account.php
in:
name
out:
status
account key
verify_account.php
in:
acct key
out:
yes/no
if yes:
name
------------------------------------------
Scheduler
------------------------------------------
GUI RPCs
create_account();
in: URL
Implementation:
fetches URL/create_account.php
poll_create_account();
returns status:
in_progress,
success,
returns account key in this case
project_down,
no_reply
verify_account()
in: URL, key
poll_verify_account()
returns status:
in_progress,
success,
returns yes/no, name in this case
project_down,
no_reply
------------------------------------------
Manager
On startup:
If start_project.xml exists
attach_to_project(url, false)
attach_to_project(url/name, user_supplied_url) {
restart:
switch(show_dialog(query_key)) {
yes:
if (invalid_key) {
show_dialog(invalid_key)
goto restart
}
verify_account(URL, key)
while (1)
ret = poll_verify_account()
if (!in_progress) break
sleep(1);
}
switch(ret) {
success/yes:
show_dialog(valid_key);
return;
success/no:
show_dialog(unrecognized_key);
goto restart;
error:
show_dialog(project_unavailable)
no_reply:
retry = network_failure()
if (retry) goto restart;
}
no:
name = get local account name on host
retry:
gui_rpc.create_account()
while (1)
ret = poll_create_account()
if !in_progress break;
sleep(1);
}
switch(ret) {
success:
show_web_page(welcome.php?auth=acct_key)
show_dialog(welcome)
set tab to projects
project_down:
show_dialog(project_unavailable")
set tab to projects
no_reply:
retry = network_failure();
if (goto retry)
set tab to projects
}
cancel:
}
}
bool network_failure(bool user_supplied_url) {
show_web_page(url/proxy_problems.php)
ret = show_dialog(unable_to_contact)
switch (ret) {
change:
show_dialog(proxy_settings)
retry:
return true;
cancel:
return false;
}
}
Miscellaneous:
- Add a "account key" button in the Projects tab.
When clicked, it shows the account key
in a way that can be cut/pasted.