Commit Graph

33 Commits

Author SHA1 Message Date
David Anderson 01e02d2c93 Use safe_strcpy() instead of strncpy(); it guarantees null termination 2020-04-20 20:11:14 -07:00
David Anderson 1fceef042e client: allow specifying device name in cc_config.xml
If cc_config.xml contains <device_name>x</device_name>,
report that to projects rather than the name returned by gethostname()
2020-04-19 20:35:37 -07:00
David Anderson 10fdef0cdd client: fix GUI RPC password generation bug on Win
Apparently when Win runs in a VM, the random number generation functions
(e.g. CryptGenRandom()) don't work.
We weren't checking for this, resulting in a garbage (and guessable) password.

Also change function names to indicate that string is not just random,
but also hard to guess.
2019-11-28 00:50:31 -08:00
David Anderson d626dfd8d5 client/wrappers, Win: consolidate defines for _getcwd etc in boinc_win.h
They belong here, not in .cpp files
2017-01-26 20:59:11 -08:00
Rom Walton 2cc9a0b6c4 client: Cleanup low hanging fruit with regards to cleaning up sprintf.
Use snprintf instead.
2016-02-18 00:59:13 -05:00
Rom Walton 56da6b11fb client: Cleanup low hanging fruit with regards to cleaning up strcpy and strcat use.
Use safe_strcpy and safe_strcat when dealing with non-pointer data types.
2016-02-15 21:53:07 -05:00
David Anderson c22e57f418 client: compute host CPID as hash of (MAC address, current directory).
That way if there are multiple instances per host,
they'll get different host CPIDs
2014-02-03 15:58:52 -08:00
David Anderson 634613abcc client: generate host CPID as a function of MAC address
This makes the host CPID stable; if you repeatedly install BOINC
on a particular node, it will get the same host CPID each time,
and your host table won't get lots of redundant entries.
A host can have multiple NICs;
we use the MAC address of the first Ethernet controller we find,
or the last NIC if there is none.
Of course, this will create problems if we get the same MAC address
for different hosts; in principle this shouldn't happen.

Remove the unused file hostinfo_network.h
2013-11-18 20:31:14 -08:00
David Anderson 420dadd3e9 client (Android): fix bug that cause wrong domain name to be shown.
I moved get_host_info() after parse_state_file() in the init,
since on Android we need to get the domain name from the state file
before calling get_host_info().
Hopefully this won't cause other problems.
2013-08-27 12:13:18 -07:00
Rom Walton 8d115edf35 android: Rename existing android devices which have the domain_name 'localhost'. Parsing of the existing host info structure in the client_state.xml file happens before the detection routines are executed. 2013-08-26 12:46:19 -04:00
Rom Walton 1deb7a13bb android: fix build break 2013-08-23 15:47:39 -04:00
David Anderson b10348ca1a client (Android): use random string for domain name
- parse domain_name from state file
- if it's empty, generate one of the form android_xxxxxxxx
- don't use MAC address
2013-08-22 23:50:13 -07:00
David Anderson 61913b181f client (Android): GUI reports battery and wifi status to client
Previously the client had (C++) code to
- check whether on AC or USB power
- get battery status and temperature
- check whether on wifi
These functions looked in various places under /sys.
Problem: the paths are system-dependent,
so whatever we do won't work on all devices.

The Android APIs for getting this info are in Java,
so we can't call them from the client.

Solution: have the GUI periodically get this info
and report it to the client via a GUI RPC.
The GUI must make this RPC periodically:
if the client doesn't get one within some period of time
(currently 30 sec) it suspends computing and network.

Also: if suspending jobs because of battery charge level
or temperature, leave them in memory.
2013-05-14 12:28:09 -07:00
Rom Walton af7948910e client: Adjust logging on Android so that all messages that show up in the event log are also dumped to LogCat, things were originally setup with that intent but I don't think __VA_ARGS__ was having the desired effect. 2013-03-05 15:57:34 +01:00
Rom Walton 011441fb1f client: Removed unused variables on Android wifi detection 2013-03-05 15:40:04 +01:00
Rom Walton 7b40d2286f client: Fix Typo for Android 2013-03-05 15:40:04 +01:00
Rom Walton 64ec0f49a3 client: Fix typos for Android 2013-03-05 15:40:04 +01:00
David Anderson 607060ffaa - client (Android)
- Don't compute if the battery is overheated
    - Don't compute until the batter is 95% charged.
        Then stop computing if it falls below 90%.
        (On some devices, computing causes the batter to drain
        even while it's recharging).
2013-03-05 15:24:01 +01:00
Joachim Fritzsch ad05a8b0b9 - client: (android) add wifi location of Android 4 devices to detect wifi state properly. 2013-03-05 14:05:04 +01:00
David Anderson 22f93cf009 - Client: initial checkin for Android version. From Joachim Fritzsch.
svn path=/trunk/boinc/; revision=25982
2012-08-04 00:27:32 +00:00
David Anderson 1abff8dd98 win compile fix
svn path=/trunk/boinc/; revision=25560
2012-04-14 04:56:35 +00:00
David Anderson f4d985c659 - client: add PID to random stuff used to make host CPID,
in case running multiple clients on same host


svn path=/trunk/boinc/; revision=25559
2012-04-14 04:48:20 +00:00
David Anderson caf56b8b6b - lib: change get_mac_address() to avoid sprintf(buf, "%s...", buf);
use strcat instead
- client: don't use get_mac_address() to create host CPIDs
    (we have plenty of other info to make them unique)
- storage stuff


svn path=/trunk/boinc/; revision=25269
2012-02-16 00:08:40 +00:00
David Anderson 0d41de283a - client: revert to old network functions (gethostbyname() etc.) on Win:
- inet_ntop() etc. exist only on Vista+
		- the other functions are declared in winsock2.h.
			This breaks the Manager build, since wxwidgets includes winsock.h.
		So to hell with it.
	- windows build: manager doesn't depend on client

svn path=/trunk/boinc/; revision=22358
2010-09-15 20:33:44 +00:00
David Anderson 0f4735352a - client: a bit of IPv6 compatibility
- use "sockaddr_storage" to store network addresses
        (which may be IPv4 or IPv6)
        rather than assuming they fit in an int.
    - the entries in gui_rpc_auth.cfg may now be IPv6 addresses
        (a🅱️c:e:f:g format),
        or domain names of hosts that support only IPv6
    Note: GUI RPCs are still constrained to use IPv4,
    but this should be easy to change if it's every needed

    Also: replace deprecated gethostbyname() with getaddrinfo().

svn path=/trunk/boinc/; revision=22353
2010-09-15 17:41:25 +00:00
Rom Walton 9cb3e6ffc7 - client & lib: bring header inclusion up-to-date for the CC to begin
hunting down a memory leak.
        
    client/
        <Various Files>
    lib/
        <Various Files>

svn path=/trunk/boinc/; revision=21457
2010-05-11 19:10:29 +00:00
Rom Walton e14e1cad34 - Remove BOINC_RCSID tags from source files, we are doing branching and tagging
properly.
        
    <Various Files>

svn path=/trunk/boinc/; revision=20873
2010-03-12 16:51:57 +00:00
David Anderson a4e82069d6 - client: add a bunch of debugging messages (<task_debug>)
for showing how GPU instances are being reserved
- scheduler: add "sse3" plan class example
- web: add option (NO_TEAMS constant) for suppressing teams

svn path=/trunk/boinc/; revision=18658
2009-07-22 18:41:02 +00:00
David Anderson 10f9e11ee6 - lib: created a new file for declaring "replacements"
for functions like strlcpy() etc.
    config.h is included here rather than in str_util.h


svn path=/trunk/boinc/; revision=18437
2009-06-16 20:54:44 +00:00
Eric J. Korpela 8f3abcc835 - Added checks for net/*.h, arpa/*.h, netinet/*.h and code to figure out
which of those files to include
    - Modified MAC address check to work on some non-Linux unixes.
      (mac_address.cpp)
    - Added suggested change to "already attached to project" checking.
      (ProjectInfoPage.cpp)
    - changed includes of standard c header files to their c++ equivalents
      (i.e. replaced <stdio.h> with <cstdio>) for namespace protection.
    - replaced "using namespace std;" with more explicit "using std::function" in
      several files.
    - Fixed bug in checking whether the os is OS/2 and added conditional OS_OS2
      to the build environment. (boinc_platform.m4,configure.ac)
    - Changed build environment to not use -nostandardlibs unless we are using
      G++ and static linkage is specified. (configure.ac)
    - Added makefiles and package building files for solaris CSW package manager.
    - Fixed bug with attempting to find login name using logname. (configure.ac)
    - Added ifdef HAVE_* protection around some include files commonly found in
      sys.
    - Added support for unified binary for x86_64/i686-pc-solaris.
      (cs_platforms.cpp)
    - generate_host_cpid() now uses MAC address on non-linux unix.
      (hostinfo_network.cpp)
    - Macro BOINC_SET_COMPILE_FLAGS now doesn't check gcc only flags on non-gcc
      compilers. (boinc_set_compile_flags.m4)
    - Library compiles no longer depend upon the library extension or require
      the library to be prefixed with lib.
    - More fixes for fcgi builds.
    - Added declaration of "struct ether_addr" and ether_ntoa().  Have not yet
      implemented ether_ntoa() for machines that don't have it, or where it is
      buggy.  (unix_util.h)
    - Added FCGI::perror() which calls FCGI_perror(). (boinc_fcgi.{h,cpp})
    - Fixed library Makefiles so that all required headers get installed.


svn path=/trunk/boinc/; revision=17388
2009-02-26 00:23:23 +00:00
David Anderson 5ac0aee6ce - client: add OS name into the hash for host CPID
(for multi-OS hosts)
- scheduler: use sqrt(x) instead of x in stop-checking
    for single redundancy.

svn path=/trunk/boinc/; revision=16433
2008-11-05 20:27:04 +00:00
David Anderson 5141a6eabe David 5 Nov 2008
- client: make host CPID a function of:
        MAC addresses + hostname + IP addr
        This means that a given host will generally always get the same CPID.
        Helpful e.g. on grids where the client gets installed repeatedly.
        From Artyom Sharov.

    client/
        hostinfo_network.cpp
    lib/
        hostinfo.cpp
        mac_address.cpp,h
    win_build/
        boinc_cli_curl.vcproj
        libboinc.vcproj

svn path=/trunk/boinc/; revision=16432
2008-11-05 20:11:45 +00:00
David Anderson 98cfb8d3b0 - rename .C files to .cpp so that Doxygen will work
svn path=/trunk/boinc/; revision=16069
2008-09-26 18:20:24 +00:00