*** empty log message ***

svn path=/trunk/boinc/; revision=5576
This commit is contained in:
David Anderson 2005-03-07 21:47:28 +00:00
parent 2944a46d99
commit 71a6e7e75a
4 changed files with 39 additions and 6 deletions

View File

@ -25599,3 +25599,14 @@ David 7 Mar 2005
lib/
Makefile.am
network.C,h
David 7 Mar 2005
- Bug fixes in GUI RPC protection.
It works now using boinc_cmd.
(need to integrate in BOINC manager)
client/
gui_rpc_server.C
lib/
boinc_cmd.C
gui_rpc_client.C

View File

@ -474,6 +474,7 @@ void GUI_RPC_CONN::handle_auth2(char* buf, MIOFILE& fout) {
return;
}
fout.printf("<authorized/>\n");
auth_needed = false;
}
int GUI_RPC_CONN::handle_rpc() {
@ -510,9 +511,9 @@ int GUI_RPC_CONN::handle_rpc() {
"<client_version>%d</client_version>\n",
gstate.version()
);
if (match_tag(request_msg, "<auth1>")) {
if (match_tag(request_msg, "<auth1")) {
handle_auth1(mf);
} else if (match_tag(request_msg, "<auth2>")) {
} else if (match_tag(request_msg, "<auth2")) {
handle_auth2(request_msg, mf);
} else if (auth_needed) {
auth_failure(mf);

View File

@ -87,6 +87,16 @@ void parse_display_args(char** argv, DISPLAY_INFO& di) {
}
}
void show_error(int retval) {
switch(retval) {
case ERR_AUTHENTICATOR:
fprintf(stderr, "Authentication failure\n");
break;
default:
fprintf(stderr, "Error %d\n", retval);
}
}
int main(int argc, char** argv) {
RPC_CLIENT rpc;
unsigned int i;
@ -121,7 +131,7 @@ int main(int argc, char** argv) {
if (passwd) {
retval = rpc.authorize(passwd);
if (retval) {
fprintf(stderr, "can't authorize\n");
fprintf(stderr, "Authorization failure: %d\n", retval);
exit(1);
}
}
@ -293,7 +303,7 @@ int main(int argc, char** argv) {
fprintf(stderr, "unrecognized command %s\n", argv[i]);
}
if (retval) {
fprintf(stderr, "Operation failed: %d\n", retval);
show_error(retval);
}
#ifdef _WIN32

View File

@ -45,6 +45,8 @@
using std::string;
using std::vector;
//#define DEBUG
DISPLAY_INFO::DISPLAY_INFO() {
memset(this, 0, sizeof(DISPLAY_INFO));
}
@ -1001,8 +1003,8 @@ int RPC_CLIENT::authorize(char* passwd) {
sprintf(buf, "%s%s", nonce, passwd);
md5_block((const unsigned char*)buf, strlen(buf), nonce_hash);
sprintf(buf, "<nonce_hash>%s</nonce_hash>\n", nonce_hash);
retval = rpc.do_rpc("<auth2/>\n");
sprintf(buf, "<auth2/>\n<nonce_hash>%s</nonce_hash>\n", nonce_hash);
retval = rpc.do_rpc(buf);
if (retval) return retval;
while (rpc.fin.fgets(buf, 256)) {
if (match_tag(buf, "<authorized/>")) {
@ -1058,11 +1060,17 @@ int RPC::do_rpc(const char* req) {
int retval;
if (rpc_client->sock == 0) return ERR_CONNECT;
#ifdef DEBUG
puts(req);
#endif
retval = rpc_client->send_request(req);
if (retval) return retval;
retval = rpc_client->get_reply(mbuf);
if (retval) return retval;
fin.init_buf(mbuf);
#ifdef DEBUG
puts(mbuf);
#endif
return 0;
}
@ -1079,6 +1087,9 @@ int RPC_CLIENT::get_state(CC_STATE& state) {
if (retval) return retval;
while (rpc.fin.fgets(buf, 256)) {
if (match_tag(buf, "<unauthorized")) {
return ERR_AUTHENTICATOR;
}
if (match_tag(buf, "</client_state>")) break;
else if (parse_int(buf, "<client_version>", client_version)) continue;
else if (match_tag(buf, "<project>")) {