mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=11654
This commit is contained in:
parent
498b233e2d
commit
ec058a64b2
|
@ -13311,3 +13311,10 @@ Charlie 11 Dec 2006
|
||||||
Rom 12 Dec 2006 (Forked from HEAD)
|
Rom 12 Dec 2006 (Forked from HEAD)
|
||||||
- Branch boinc_core_release_5_8 created for the BOINC 5.8 client release.
|
- Branch boinc_core_release_5_8 created for the BOINC 5.8 client release.
|
||||||
|
|
||||||
|
David 12 Dec 2006
|
||||||
|
- add updater program
|
||||||
|
|
||||||
|
configure.ac
|
||||||
|
lib/
|
||||||
|
Makefile.am
|
||||||
|
updater.C (new)
|
||||||
|
|
|
@ -147,6 +147,7 @@ SAH_LINKS
|
||||||
AC_SUBST([CLIENT_BIN_FILENAME],[boinc${EXEEXT}])
|
AC_SUBST([CLIENT_BIN_FILENAME],[boinc${EXEEXT}])
|
||||||
AC_SUBST([CLIENT_CMD_BIN_FILENAME],[boinccmd${EXEEXT}])
|
AC_SUBST([CLIENT_CMD_BIN_FILENAME],[boinccmd${EXEEXT}])
|
||||||
AC_SUBST([CLIENT_GUI_BIN_FILENAME],[boincmgr${EXEEXT}])
|
AC_SUBST([CLIENT_GUI_BIN_FILENAME],[boincmgr${EXEEXT}])
|
||||||
|
AC_SUBST([UPDATER_BIN_FILENAME],[_updater${EXEEXT}])
|
||||||
|
|
||||||
dnl If we're running under cygwin, check whether we want to use X11 or WIN32
|
dnl If we're running under cygwin, check whether we want to use X11 or WIN32
|
||||||
dnl GUI
|
dnl GUI
|
||||||
|
|
|
@ -24,10 +24,10 @@ list_item("<a href=client_msgs.php>cc_config.xml</a>",
|
||||||
"turn log messages on/off by category,
|
"turn log messages on/off by category,
|
||||||
and other core client configuration options."
|
and other core client configuration options."
|
||||||
);
|
);
|
||||||
list_item("<a href=gui_rpc.php>remote_hosts.cfg</a>",
|
list_item("<a href=gui_rpc_auth.php>remote_hosts.cfg</a>",
|
||||||
"hosts from which remote GUI RPCs is allowed"
|
"hosts from which remote GUI RPCs is allowed"
|
||||||
);
|
);
|
||||||
list_item("<a href=gui_rpc.php>gui_rpc_auth.cfg</a>",
|
list_item("<a href=gui_rpc_auth.php>gui_rpc_auth.cfg</a>",
|
||||||
"GUI RPC password"
|
"GUI RPC password"
|
||||||
);
|
);
|
||||||
list_item("<a href=client_startup.php>project_init.xml</a>",
|
list_item("<a href=client_startup.php>project_init.xml</a>",
|
||||||
|
|
|
@ -44,8 +44,8 @@ Use the client version number to decide what subsequent RPCs to make
|
||||||
|
|
||||||
<h2>Authorization</h2>
|
<h2>Authorization</h2>
|
||||||
<p>
|
<p>
|
||||||
The RPC protocol allows the GUI program to authenticate itself
|
GUI RPC authorization is described <a href=gui_rpc_auth.php>here</a>.
|
||||||
using a password; this is described below.
|
The RPC protocol allows the GUI program to authenticate itself using a password.
|
||||||
Some of the RPC operations can be done without authentication;
|
Some of the RPC operations can be done without authentication;
|
||||||
others can be done without authentication, but only by a GUI program
|
others can be done without authentication, but only by a GUI program
|
||||||
running on the same machine.
|
running on the same machine.
|
||||||
|
@ -325,48 +325,6 @@ They can then do repeated RPCs over this connection.
|
||||||
Each reply message ends with the character '\\003.
|
Each reply message ends with the character '\\003.
|
||||||
|
|
||||||
|
|
||||||
<h2>Access control for GUI RPC</h2>
|
|
||||||
<p>
|
|
||||||
Since GUI RPCs can control the BOINC client
|
|
||||||
(e.g. attaching/detaching projects)
|
|
||||||
it is important to protect your BOINC client from unauthorized control.
|
|
||||||
There are two levels of protection:
|
|
||||||
<ul>
|
|
||||||
<li> You can associate a password with the client.
|
|
||||||
If a password is used,
|
|
||||||
GUI RPCs must be authenticated with this password.
|
|
||||||
<li> You can restrict RPCs to a limited set of hosts.
|
|
||||||
</ul>
|
|
||||||
A GUI RPC is handled only if it passes both levels of protection.
|
|
||||||
|
|
||||||
<h2>Password protection</h2>
|
|
||||||
<p>
|
|
||||||
If you place a password in a file <b>gui_rpc_auth.cfg</b>
|
|
||||||
in your BOINC directory,
|
|
||||||
GUI RPCs must be authenticated using the password.
|
|
||||||
<p>
|
|
||||||
If this file is not present, there is no password protection.
|
|
||||||
|
|
||||||
<h2>Remote host restriction</h2>
|
|
||||||
<p>
|
|
||||||
By default the core client accepts GUI RPCs only from the same host.
|
|
||||||
|
|
||||||
<p>
|
|
||||||
You can allow remote hosts to control a core client in two ways:
|
|
||||||
<ul>
|
|
||||||
<li> If you run the client with the
|
|
||||||
-allow_remote_gui_rpc command line option,
|
|
||||||
it will accept connections from any host.
|
|
||||||
This is not recommended unless the host is behind a firewall
|
|
||||||
that blocks the GUI RPC port (1043).
|
|
||||||
<li>
|
|
||||||
You can create
|
|
||||||
a file remote_hosts.cfg in your BOINC directory containing
|
|
||||||
a list of allowed DNS host names or IP addresses (one per line).
|
|
||||||
Those hosts will be able to connect.
|
|
||||||
The remote_hosts.cfg file can have comment lines that start with either a #
|
|
||||||
or a ; character as well.
|
|
||||||
</ul>
|
|
||||||
";
|
";
|
||||||
|
|
||||||
page_tail();
|
page_tail();
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
<?php
|
||||||
|
require_once("docutil.php");
|
||||||
|
page_head("Authorizing remote control of BOINC");
|
||||||
|
echo "
|
||||||
|
<h2>Remote control of the BOINC client</h2>
|
||||||
|
<p>
|
||||||
|
The BOINC core client typically is controlled by
|
||||||
|
the <a href=manager.php>BOINC Manager</a> running on the same machine:
|
||||||
|
<br> <center>
|
||||||
|
<img src=gui_auth.png>
|
||||||
|
<br> </center>
|
||||||
|
The two programs communicate over a local connection,
|
||||||
|
using 'GUI RPC' (Graphical User Interface Remote Procedure Call).
|
||||||
|
<p>
|
||||||
|
It's also possible to use the BOINC Manager to control
|
||||||
|
a core client on a different host:
|
||||||
|
<br> <center>
|
||||||
|
<img src=gui_auth2.png>
|
||||||
|
<br> </center>
|
||||||
|
And BOINCView (an add-on program developed by a third party) is
|
||||||
|
able to control many BOINC clients at once:
|
||||||
|
<br> <center>
|
||||||
|
<img src=gui_auth3.png>
|
||||||
|
<br> </center>
|
||||||
|
|
||||||
|
<h2>Access control for GUI RPC</h2>
|
||||||
|
<p>
|
||||||
|
Since GUI RPCs can control the BOINC client
|
||||||
|
(e.g. attaching/detaching projects)
|
||||||
|
it is important to protect your BOINC client from unauthorized control.
|
||||||
|
There are two levels of protection:
|
||||||
|
<ul>
|
||||||
|
<li> You can associate a password with the client.
|
||||||
|
If a password is used,
|
||||||
|
GUI RPCs must be authenticated with this password.
|
||||||
|
<li> You can restrict RPCs to a limited set of hosts.
|
||||||
|
</ul>
|
||||||
|
A GUI RPC is handled only if it passes both levels of protection.
|
||||||
|
<p>
|
||||||
|
After a standard installation, BOINC is highly secure;
|
||||||
|
it generates its own (long, random) password,
|
||||||
|
and it doesn't allow access from other hosts.
|
||||||
|
|
||||||
|
<h2>Password protection</h2>
|
||||||
|
<p>
|
||||||
|
If you place a password in a file <b>gui_rpc_auth.cfg</b>
|
||||||
|
in your BOINC directory,
|
||||||
|
GUI RPCs must be authenticated using the password.
|
||||||
|
<p>
|
||||||
|
If this file is not present, there is no password protection.
|
||||||
|
|
||||||
|
<h2>Remote host restriction</h2>
|
||||||
|
<p>
|
||||||
|
By default the core client accepts GUI RPCs only from the same host.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You can allow remote hosts to control a core client in two ways:
|
||||||
|
<ul>
|
||||||
|
<li> If you run the client with the
|
||||||
|
-allow_remote_gui_rpc command line option,
|
||||||
|
it will accept connections from any host.
|
||||||
|
This is not recommended unless the host is behind a firewall
|
||||||
|
that blocks the GUI RPC port (1043).
|
||||||
|
<li>
|
||||||
|
You can create
|
||||||
|
a file <b>remote_hosts.cfg</b> in your BOINC directory containing
|
||||||
|
a list of allowed DNS host names or IP addresses (one per line).
|
||||||
|
Those hosts will be able to connect.
|
||||||
|
The remote_hosts.cfg file can have comment lines that start with either a #
|
||||||
|
or a ; character as well.
|
||||||
|
</ul>
|
||||||
|
";
|
||||||
|
page_tail();
|
||||||
|
?>
|
|
@ -47,6 +47,7 @@ or need help installing BOINC, you can
|
||||||
<li> <a href=teams.php>Teams</a>
|
<li> <a href=teams.php>Teams</a>
|
||||||
<li> <a href=acct_mgrs.php>Account managers</a>
|
<li> <a href=acct_mgrs.php>Account managers</a>
|
||||||
<li> <a href=client_msgs.php>Core client configuration</a>
|
<li> <a href=client_msgs.php>Core client configuration</a>
|
||||||
|
<li> <a href=http://boinc.berkeley.edu/gui_rpc_auth.php>Authorizing remote control</a>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>Advanced users</h3>
|
<h3>Advanced users</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -7,13 +7,13 @@ include $(top_srcdir)/Makefile.incl
|
||||||
nslprogs=boinc_cmd$(EXEEXT)
|
nslprogs=boinc_cmd$(EXEEXT)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bin_PROGRAMS = crypt_prog$(EXEEXT) $(nslprogs)
|
bin_PROGRAMS = crypt_prog$(EXEEXT) $(nslprogs) updater$(EXEEXT)
|
||||||
|
|
||||||
EXTRA_PROGRAMS = md5_test$(EXEEXT) shmem_test$(EXEEXT) msg_test$(EXEEXT)
|
EXTRA_PROGRAMS = md5_test$(EXEEXT) shmem_test$(EXEEXT) msg_test$(EXEEXT)
|
||||||
|
|
||||||
all-local: client-bin
|
all-local: client-bin
|
||||||
|
|
||||||
client-bin: @CLIENT_CMD_BIN_FILENAME@
|
client-bin: @CLIENT_CMD_BIN_FILENAME@ @UPDATER_BIN_FILENAME@
|
||||||
|
|
||||||
boinc_cmd_SOURCES = \
|
boinc_cmd_SOURCES = \
|
||||||
boinc_cmd.C \
|
boinc_cmd.C \
|
||||||
|
@ -21,6 +21,11 @@ boinc_cmd_SOURCES = \
|
||||||
|
|
||||||
boinc_cmd_LDADD = $(lib_LIBRARIES) $(PTHREAD_LIBS)
|
boinc_cmd_LDADD = $(lib_LIBRARIES) $(PTHREAD_LIBS)
|
||||||
|
|
||||||
|
updater_SOURCES = \
|
||||||
|
updater.C
|
||||||
|
|
||||||
|
updater_LDADD = $(lib_LIBRARIES)
|
||||||
|
|
||||||
# make a hard link to the client name.
|
# make a hard link to the client name.
|
||||||
@CLIENT_CMD_BIN_FILENAME@: boinc_cmd$(EXEEXT)
|
@CLIENT_CMD_BIN_FILENAME@: boinc_cmd$(EXEEXT)
|
||||||
rm -f $@
|
rm -f $@
|
||||||
|
@ -29,6 +34,13 @@ boinc_cmd_LDADD = $(lib_LIBRARIES) $(PTHREAD_LIBS)
|
||||||
@LN@ $? $@
|
@LN@ $? $@
|
||||||
@STRIP@ $@
|
@STRIP@ $@
|
||||||
|
|
||||||
|
@UPDATER_BIN_FILENAME@: updater$(EXEEXT)
|
||||||
|
rm -f $@
|
||||||
|
rm -f $@.unmodified
|
||||||
|
cp $? $@.unmodified
|
||||||
|
@LN@ $? $@
|
||||||
|
@STRIP@ $@
|
||||||
|
|
||||||
lib_LIBRARIES = libboinc.a
|
lib_LIBRARIES = libboinc.a
|
||||||
EXTRA_DIST = *.h *.C
|
EXTRA_DIST = *.h *.C
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
// Berkeley Open Infrastructure for Network Computing
|
||||||
|
// http://boinc.berkeley.edu
|
||||||
|
// Copyright (C) 2006 University of California
|
||||||
|
//
|
||||||
|
// This is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation;
|
||||||
|
// either version 2.1 of the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This software is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
// See the GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// To view the GNU Lesser General Public License visit
|
||||||
|
// http://www.gnu.org/copyleft/lesser.html
|
||||||
|
// or write to the Free Software Foundation, Inc.,
|
||||||
|
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
// This program is run in a version directory.
|
||||||
|
// The main BOINC directory is ../../..
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "filesys.h"
|
||||||
|
|
||||||
|
#define MAIN_DIR "../../.."
|
||||||
|
|
||||||
|
int prepare_prev_dir() {
|
||||||
|
char prev_dir[256];
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
sprintf(prev_dir, "%s/prev_version", MAIN_DIR);
|
||||||
|
if (is_dir(prev_dir)) {
|
||||||
|
retval = clean_out_dir(prev_dir);
|
||||||
|
if (retval) return retval;
|
||||||
|
} else {
|
||||||
|
retval = boinc_mkdir(prev_dir);
|
||||||
|
if (retval) return retval;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int move_to_prev(char* file) {
|
||||||
|
char oldname[1024], newname[1024];
|
||||||
|
sprintf(oldname, "%s/%s", MAIN_DIR, file);
|
||||||
|
sprintf(newname, "%s/prev_version/%s", MAIN_DIR, file);
|
||||||
|
return boinc_rename(oldname, newname);
|
||||||
|
}
|
||||||
|
|
||||||
|
int move_to_main(char* file) {
|
||||||
|
char newname[1024];
|
||||||
|
sprintf(newname, "%s/%s", MAIN_DIR, file);
|
||||||
|
return boinc_rename(file, newname);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
retval = prepare_prev_dir();
|
||||||
|
if (retval) exit(retval);
|
||||||
|
move_to_prev("boinc.exe");
|
||||||
|
move_to_prev("boincmgr.exe");
|
||||||
|
move_to_main("boinc.exe");
|
||||||
|
move_to_main("boincmgr.exe");
|
||||||
|
}
|
Loading…
Reference in New Issue