* Selection is by app_version_num isntead of app_version_id
* Sorting does not change between most recent and all app versions
* Main query ignores not needed and timed out results
* Displays and links various metrics
* Uses the platfom name from the platform table
* Always shows anonymous platform applications
Added more filters and moved logic from PHP to the DB. This results in a smaller memory footprint of the script but stresses the database a little more for big projects.
This is for my own use in BOINC-wide teams.
It must work even if account/team creation are disabled
(as they are in the BOINC-wide teams site).
To do this, I moved the <disable_team_creation> check out of make_team()
and moved it to the existing places that call make_team().
The logic now matches that of make_user().
The default for uotd_time in the profile table is NULL but new profiles created after commit 6543928 have uotd_time=0. This means they are not eligible for UOTD because the default candidate queries only check if uotd_time is null. This fixes that and considers NULL and 0 as 'profile has not been UOTD but can be a candidate'.
UOTD selection now uses the DB layer and outputs the different stages of candidate selection so they end up in the logfile. Selecting a new UOTD can now be enforced (so it always happens at the same time or the current UOTD's profile is not approved by the project).
Modern Browser complain if there are non-https elements in https websites. This makes sure that if the user visits via https all elements of the page are also retrieved using SSL. Furthermore it uses https urls in emails that are send to the user, if SECURE_URL_BASE is set in project/project.inc.
The only remaining places where URL_BASE is used is when it is used as master_url where it is important that it is in sync with what the scheduler uses.
Oddly enough, I couldn't repro this on Chrome or Firefox;
I remained logged in after quit/restart browser,
even though the cookie said it was for this browsing session only.
The SETI@home result table is about to run out of 32-bit IDs,
so we need to move to 64-bit result IDs.
This will happen to the workunit table at some point too.
I changed the server C++ code to use the "long" type for all DB IDs
(and to use appropriate conversion codes like %lu).
"long" is 64 bit on 64-bit machines.
For uniformity I did this for all tables,
even ones (like app) that will never get big.
I chose NOT to change the DB schema for now.
The new code will work with 32-bit ID fields in the DB.
As projects approach the 32-bit limit on a table they can change
its ID field, and fields that reference this table, to BIGINT.
This is likely to happen only on the result and workunit tables.
I put functions in html/ops/db_update.php
to change the IDs of these tables.
In "strict mode", inserts fail if they don't supply values
for columns with no default defined in the schema
(in non-strict mode, 0 and '' are implicit defaults).
Starting with MySQL version 5.6, strict mode is the default.
This breaks some of the BOINC web code,
which does inserts without giving values to some columns.
There are two ways to solve this:
1) change the schema to give defaults everywhere
2) change the PHP code to supply values for more columns.
I'm using 1) in some cases and 2) in others.
This commit fixes some of the errors; there are others.
Change the way we see if a web server is running on a host.
Fetch http://host, and check for 2xx or 4xx status.
With this change, new server_status.php works on SETI@home.
remote_server_status.php (script for seeing if remote daemons are running)
did this by ps -C command,
and seeing if the last line of the output contained the command.
This didn't work for SETI@home, because the daemons are symbolic links in bin/.
The command that ps knows about is the file name after resolving the link.
This generally doesn't contain the original command name,
so it would look like no remote daemons are running.
Fix: look up the PID (in pid_host/xxx.pid) and use "ps PID".
This also correctly distinguishes between daemons
that use the same program on the same host.