diff --git a/agent/app/app.py b/agent/app/app.py
index 6c876a5..ecc2780 100644
--- a/agent/app/app.py
+++ b/agent/app/app.py
@@ -1,11 +1,9 @@
# -*- coding: utf-8 -*-
-import os
import time
from dataclasses import dataclass
import schedule
-import yaml # type: ignore
from balena.operator import Operator as Balena
from boinc.operator import Operator as Boinc
from scitizen.operator import Operator as Scitizen
@@ -35,10 +33,7 @@ def __post_init__(self) -> None:
Seed the project table, check the hostname, set the schedule interval and
run the agent
"""
- with open(f"{os.path.dirname(os.path.abspath(__file__))}/projects.yml") as file:
- projects = yaml.load(file, Loader=yaml.SafeLoader).get("projects")
- self.scitizen.set_projects(projects)
-
+ self.scitizen.set_projects()
self.balena.set_hostname("scitizen")
schedule.every(30).seconds.do(self.job)
diff --git a/agent/app/boinc/operator.py b/agent/app/boinc/operator.py
index c0a3375..76727d4 100644
--- a/agent/app/boinc/operator.py
+++ b/agent/app/boinc/operator.py
@@ -7,7 +7,7 @@
from pathlib import Path
from typing import Any, Dict, List
-import boinc.utils as utils
+import utils
from jinja2 import Template
from xmltodict import parse
@@ -274,8 +274,8 @@ def get_host_info(self) -> Dict[str, Any]:
host: dict = {}
# fetch data from the BOINC client and parse it
- reply = self._send_request(name="get_host_info")
- result = utils.deep_get(reply, "boinc_gui_rpc_reply.host_info")
+ reply = self._send_request(name="get_state")
+ result = utils.deep_get(reply, "boinc_gui_rpc_reply.client_state.host_info")
# hack to handle no results
if result is None:
@@ -305,20 +305,28 @@ def get_host_info(self) -> Dict[str, Any]:
host.update({"domain_name": result.get("domain_name")})
# fetch data from the BOINC client and parse it
- reply = self._send_request(name="exchange_versions")
- result = utils.deep_get(reply, "boinc_gui_rpc_reply.server_version")
-
- # hack to handle no results
- if result is None:
- result = {}
+ major = utils.deep_get(
+ reply, "boinc_gui_rpc_reply.client_state.core_client_major_version"
+ )
+ minor = utils.deep_get(
+ reply, "boinc_gui_rpc_reply.client_state.core_client_minor_version"
+ )
+ release = utils.deep_get(
+ reply, "boinc_gui_rpc_reply.client_state.core_client_release"
+ )
# add static data relative to the software
- host.update(
- {
- "boinc_version": f"{result.get('major')}.{result.get('minor')}.{result.get('release')}"
- }
+ host.update({"boinc_version": f"{major}.{minor}.{release}"})
+
+ # fetch data from the BOINC client and parse it
+ reply = self._send_request(name="get_state")
+ platform = utils.deep_get(
+ reply, "boinc_gui_rpc_reply.client_state.platform_name"
)
+ # add static data relative to the software
+ host.update({"platform": platform})
+
return host
def sync_projects(self, projects: List[Dict[str, Any]]) -> None:
diff --git a/agent/app/boinc/queries/exchange_versions.xml.j2 b/agent/app/boinc/queries/exchange_versions.xml.j2
deleted file mode 100644
index 4a63cc9..0000000
--- a/agent/app/boinc/queries/exchange_versions.xml.j2
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/agent/app/boinc/queries/get_host_info.xml.j2 b/agent/app/boinc/queries/get_state.xml.j2
similarity index 71%
rename from agent/app/boinc/queries/get_host_info.xml.j2
rename to agent/app/boinc/queries/get_state.xml.j2
index c5895ce..c5f3de1 100644
--- a/agent/app/boinc/queries/get_host_info.xml.j2
+++ b/agent/app/boinc/queries/get_state.xml.j2
@@ -1,3 +1,3 @@
-
+
diff --git a/agent/app/projects.yml b/agent/app/projects.yml
deleted file mode 100644
index be9a5d8..0000000
--- a/agent/app/projects.yml
+++ /dev/null
@@ -1,395 +0,0 @@
----
-projects:
- - id: 8f14e45fceea167a5a36dedd4bea2543
- avatar: R@h
- description: |
- Determine the 3-dimensional shapes of proteins in research that may ultimately
- lead to finding cures for some major human diseases. By running Rosetta@home you
- will help us speed up and extend our research in ways we couldn't possibly attempt
- without your help. You will also be helping our efforts at designing new proteins
- to fight diseases such as COVID-19, HIV, malaria, cancer, and Alzheimer's
- general_area: Biology and Medicine
- home: University of Washington
- image: https://boinc.berkeley.edu/images/rosetta_at_home_logo.jpg
- keywords: 9 13 11 23 24 28 64
- name: Rosetta@home
- platforms: |
- - aarch64-unknown-linux-gnu
- - arm-android-linux-gnu
- - i686-pc-linux-gnu
- - windows_intelx86
- - windows_x86_64
- - windows_x86_64[vbox64]
- - x86_64-apple-darwin
- - x86_64-pc-linux-gnu
- - x86_64-pc-linux-gnu[vbox64]
- specific_area: Biology
- summary: Study diseases such as COVID-19, HIV, malaria, cancer, and Alzheimer's
- url: https://boinc.bakerlab.org/rosetta/
- web_url: https://boinc.bakerlab.org/rosetta/
- weak_authenticator: 2348499_186a12cccae17b42df557063fb3dff67
-
- - id: 6512bd43d9caa6e02c990b0a82652dca
- avatar: A@h
- description: |
- The aim of the project is to derive shapes and spin for a significant
- part of the asteroid population. As input data, we use any asteroid photometry that
- is available. The results are asteroid convex shape models with the direction of
- the spin axis and the rotation period.
- general_area: Physical Science
- home: Charles University in Prague
- image: https://boinc.berkeley.edu/images/asteroids_logo.jpg
- keywords: 1 20 36 37
- name: Asteroids@home
- platforms: |
- - arm-android-linux-gnu[arm_android_non_pie]
- - arm-android-linux-gnu[arm_android_pie]
- - arm-unknown-linux-gnueabihf
- - armv6l-unknown-linux-gnueabihf
- - i686-apple-darwin[sse3]
- - i686-apple-darwin[sse3_osx]
- - i686-pc-freebsd
- - i686-pc-linux-gnu
- - i686-pc-linux-gnu[avx_linux]
- - i686-pc-linux-gnu[sse2_linux]
- - i686-pc-linux-gnu[sse3_linux]
- - windows_intelx86
- - windows_intelx86[avx_win10]
- - windows_intelx86[avx_win7]
- - windows_intelx86[avx_winxp]
- - windows_intelx86[cuda55]
- - windows_intelx86[sse2_win10]
- - windows_intelx86[sse2_win7]
- - windows_intelx86[sse2_winxp]
- - windows_intelx86[sse3_win10]
- - windows_intelx86[sse3_win7]
- - windows_intelx86[sse3_winxp]
- - windows_x86_64[avx_win10]
- - windows_x86_64[avx_win7]
- - windows_x86_64[avx_winxp]
- - windows_x86_64[cuda102_win10]
- - windows_x86_64[cuda102_win7]
- - windows_x86_64[cuda55]
- - windows_x86_64[sse2_win10]
- - windows_x86_64[sse2_win7]
- - windows_x86_64[sse2_winxp]
- - windows_x86_64[sse3_win10]
- - windows_x86_64[sse3_win7]
- - windows_x86_64[sse3_winxp]
- - x86_64-apple-darwin[sse3]
- - x86_64-apple-darwin[sse3_osx]
- - x86_64-pc-freebsd
- - x86_64-pc-linux-gnu[avx_linux]
- - x86_64-pc-linux-gnu[cuda102_linux]
- - x86_64-pc-linux-gnu[cuda55]
- - x86_64-pc-linux-gnu[sse2_linux]
- - x86_64-pc-linux-gnu[sse3_linux]
- specific_area: Astrophysics
- summary: Study the properties of asteroids
- url: http://asteroidsathome.net/boinc/
- web_url: http://asteroidsathome.net/boinc/
- weak_authenticator: 471707_439c418d5f6ce7cdbb62c60c6f91e61d
-
- - id: c51ce410c124a10e0db5e4b97fc2af39
- avatar: U@H
- description: |
- Universe@Home aims to create the first database of the simulated stellar
- content of the Universe, from the earliest stars to the most exotic black hole binaries.
- general_area: Physical Science
- home: University of Warsaw
- image: https://boinc.berkeley.edu/images/universe_at_home.png
- keywords: 1 20 43 57
- name: Universe@Home
- platforms: |
- - aarch64-unknown-linux-gnu
- - arm-android-linux-gnu[android_arm_pie]
- - arm-unknown-linux-gnueabihf
- - armv7l-unknown-linux-gnueabihf
- - windows_x86_64
- - x86_64-pc-linux-gnu
- specific_area: Astronomy
- summary: Do research in physics and astronomy
- url: https://universeathome.pl/universe/
- web_url: https://universeathome.pl/universe/
- weak_authenticator: 225109_1e3c507523811251e5045b1a9cb7ee26
-
- - id: c74d97b01eae257e44aa9d5bade97baf
- avatar: E@h
- description: |
- Einstein@Home uses your computer's idle time to search for weak astrophysical
- signals from spinning neutron stars (often called pulsars) using data from the LIGO
- gravitational-wave detectors, the Arecibo radio telescope, and the Fermi gamma-ray
- satellite.
- general_area: Physical Science
- home:
- University of Wisconsin - Milwaukee (USA), Max Planck Institute for Gravitational
- Physics - Hanover (Germany)
- image: https://boinc.berkeley.edu/images/einstein.jpg
- keywords: 1 4 3 59 26
- name: Einstein@home
- platforms: |
- - arm-android-linux-gnu[ASIMDPIE]
- - arm-android-linux-gnu[ASIMDPIE_1X]
- - arm-android-linux-gnu[ASIMDPIE_Beta]
- - arm-android-linux-gnu[NEON]
- - arm-android-linux-gnu[NEONPIE]
- - arm-android-linux-gnu[NEONPIE_1X]
- - arm-android-linux-gnu[VFP]
- - arm-unknown-linux-gnueabihf
- - arm-unknown-linux-gnueabihf[NEON]
- - arm64-apple-darwin
- - i686-apple-darwin[opencl-intel_gpu-lion]
- - i686-apple-darwin[opencl-intel_gpu-lion-Beta]
- - i686-pc-linux-gnu[FGRPSSE]
- - powerpc-apple-darwin[ALTIVEC]
- - windows_intelx86[FGRPSSE]
- - windows_intelx86[opencl-intel_gpu]
- - windows_x86_64[BRP4-opencl-intel_gpu-nd]
- - windows_x86_64[FGRPopencl-ati]
- - windows_x86_64[FGRPopencl-intel_gpu]
- - windows_x86_64[FGRPopencl-nvidia]
- - windows_x86_64[FGRPopencl1K-ati]
- - windows_x86_64[FGRPopencl1K-nvidia]
- - windows_x86_64[FGRPopenclTV-nvidia]
- - windows_x86_64[GW-opencl-ati]
- - windows_x86_64[GW-opencl-nvidia]
- - windows_x86_64[GWnew]
- - windows_x86_64[opencl-intel_gpu]
- - windows_x86_64[opencl-intel_gpu-Beta]
- - windows_x86_64[opencl-intel_gpu-new]
- - x86_64-apple-darwin[FGRPopencl-ati-mav]
- - x86_64-apple-darwin[FGRPopencl-nvidia-mav]
- - x86_64-apple-darwin[FGRPopenclTV-nvidia]
- - x86_64-apple-darwin[FGRPSSE]
- - x86_64-apple-darwin[GW-opencl-ati-OSX]
- - x86_64-apple-darwin[GW-opencl-nvidia-OSX]
- - x86_64-apple-darwin[Lion]
- - x86_64-pc-linux-gnu[FGRPopencl-ati]
- - x86_64-pc-linux-gnu[FGRPopencl-nvidia]
- - x86_64-pc-linux-gnu[FGRPopencl1K-ati]
- - x86_64-pc-linux-gnu[FGRPopencl1K-nvidia]
- - x86_64-pc-linux-gnu[FGRPopenclTV-nvidia]
- - x86_64-pc-linux-gnu[FGRPSSE]
- - x86_64-pc-linux-gnu[GW-opencl-ati]
- - x86_64-pc-linux-gnu[GW-opencl-nvidia]
- - x86_64-pc-linux-gnu[GWnew]
- specific_area: Astrophysics
- summary: Help detect pulsars and gravitational waves
- url: http://einstein.phys.uwm.edu/
- web_url: https://einsteinathome.org/
- weak_authenticator: 1034532_935f4713ce9494060c9654c774c88685
-
- - id: 70efdf2ec9b086079795c442636b55fb
- avatar: L@h
- description:
- The Large Hadron Collider (LHC) is a particle accelerator at CERN, the
- European Organization for Nuclear Research, the world's largest particle physics
- laboratory. It is the most powerful instrument ever built to investigate on particles
- proprieties. LHC@home runs simulations to improve the design of LHC and its detectors.
- general_area: Physical Science
- home: CERN (European Organization for Nuclear Research)
- image: https://boinc.berkeley.edu/images/lhc.jpg
- keywords: 6 7 59 27
- name: LHC@home
- platforms: |
- - aarch64-android-linux-gnu
- - aarch64-android-linux-gnu[android]
- - aarch64-unknown-linux-gnu
- - i686-pc-linux-gnu[sse2]
- - windows_intelx86
- - windows_intelx86[avx]
- - windows_intelx86[sse2]
- - windows_x86_64[avx]
- - windows_x86_64[sse2]
- - windows_x86_64[vbox64]
- - windows_x86_64[vbox64_mt_mcore_atlas]
- - windows_x86_64[vbox64_theory]
- - x86_64-apple-darwin[avx]
- - x86_64-apple-darwin[sse2]
- - x86_64-apple-darwin[vbox64]
- - x86_64-apple-darwin[vbox64_mt_mcore_atlas]
- - x86_64-apple-darwin[vbox64_theory]
- - x86_64-pc-freebsd[avx]
- - x86_64-pc-freebsd[sse2]
- - x86_64-pc-freebsd[vbox64_theory]
- - x86_64-pc-linux-gnu[avx]
- - x86_64-pc-linux-gnu[long_native_mt]
- - x86_64-pc-linux-gnu[native_mt]
- - x86_64-pc-linux-gnu[native_theory]
- - x86_64-pc-linux-gnu[sse2]
- - x86_64-pc-linux-gnu[vbox64]
- - x86_64-pc-linux-gnu[vbox64_mt_mcore_atlas]
- - x86_64-pc-linux-gnu[vbox64_theory]
- specific_area: Physics
- summary: Improve the design of the Large Hadron Collider
- url: https://lhcathome.cern.ch/lhcathome/
- web_url: https://lhcathome.cern.ch/lhcathome/
- weak_authenticator: 787712_e7ec22b6d2c890bd12d55fd56c57e6c1
-
- - id: c0c7c76d30bd3dcaefc96f40275bdc0a
- avatar: iT
- description: |
- The goal of the iThena project is to generate a dynamic topological model
- of the Internet, based on measurements from distributed devices.
- general_area: Mathematics, computing, and games
- home: Cyber-Complex Foundation
- keywords: "15"
- name: iThena
- platforms: |
- - aarch64-unknown-linux-gnu
- - arm-unknown-linux-gnueabihf
- - windows_intelx86
- - x86_64-pc-linux-gnu
- specific_area: Computer science
- summary: Study the Internet
- url: https://root.ithena.net/usr/
- web_url: https://root.ithena.net/usr/
- weak_authenticator: 41373_56d8227b4ca86fbfb58642bad8064baa
-
- - id: a1d0c6e83f027327d8461063f4ac58a6
- avatar: RS
- description: |
- The enormous size of the diagonal Latin squares space makes it unfeasible
- to enumerate all its objects straightforwardly in reasonable time. So, in order
- to discover the structure of this space, sophisticated search methods are needed.
- In RakeSearch project, we implement an application that picks up separate pairs
- of mutually orthogonal DLSs, which allows to reconstruct full graphs of their orthogonality.
- general_area: Mathematics, computing, and games
- home: Karelian Research Center, Russian Academy of Sciences
- keywords: 15 20 44
- name: RakeSearch
- platforms: |
- - arm-unknown-linux-gnueabihf
- - e2k-linux-gnu
- - i686-pc-linux-gnu
- - windows_intelx86
- - windows_x86_64
- - x86_64-pc-linux-gnu
- specific_area: Mathematics
- summary: Study Latin Squares
- url: https://rake.boincfast.ru/rakesearch/
- web_url: https://rake.boincfast.ru/rakesearch/
- weak_authenticator: 13528_3f14685c433e226041771669abbc6923
-
- - id: b6d767d2f8ed5d21a44b0e5886680cb9
- avatar: WCG
- description: |
- To further critical non-profit research on some of humanity's most pressing
- problems by creating the world's largest volunteer computing grid. Research includes
- HIV-AIDS, cancer, tropical and neglected diseases, solar energy, clean water and
- many more.
- general_area: Multiple applications
- home: IBM Corporate Citizenship
- image: https://boinc.berkeley.edu/images/wcg.jpg
- keywords: 9 10 14 64 29 23 24
- name: World Community Grid
- platforms: |
- - i686-pc-linux-gnu
- - x86_64-pc-linux-gnu
- - windows_intelx86
- - windows_x86_64
- - x86_64-apple-darwin
- - arm-android-linux-gnu
- - aarch64-android-linux-gnu
- - arm-unknown-linux-gnueabihf
- specific_area: Medical, environmental and other humanitarian research
- summary: Do biomedical and environmental research
- url: http://www.worldcommunitygrid.org/
- web_url: http://www.worldcommunitygrid.org/
- weak_authenticator: 1142050_bff21735a8975927645d3ff2b60e152f
-
- - id: 67c6a1e7ce56d3d6fa748ab6d9af3fd7
- avatar: M@H
- description: |
- MLC@Home is dedicated to understanding and interpreting complex machine
- learning models, with an emphasis on neural networks.
- general_area: Cognitive science and artificial intelligence
- home: University of Maryland, Baltimore County (UMBC)
- image: https://boinc.berkeley.edu/images/mlcathome-banner.png
- keywords: 16 23 24
- name: MLC@Home
- platforms: |
- - aarch64-unknown-linux-gnu
- - arm-unknown-linux-gnu
- - arm-unknown-linux-gnueabihf
- - windows_x86_64
- - windows_x86_64[cuda10200]
- - x86_64-pc-linux-gnu
- - x86_64-pc-linux-gnu[amdrocm]
- - x86_64-pc-linux-gnu[cuda10200]
- specific_area: Artificial Intelligence
- summary: Study machine learning
- url: https://www.mlcathome.org/mlcathome/
- web_url: https://www.mlcathome.org/mlcathome/
- weak_authenticator: 43537_9feaf8e1b00f49e7ac888897521032a9
-
- - id: c81e728d9d4c2f636f067f89cc14862c
- avatar: R@H
- description: |
- Radioactive@Home is creating a free and continuously updated map of radiation
- levels using sensors connected to volunteers' computers. You must buy a sensor
- to participate.
- general_area: Distributed sensing
- home: BOINC Poland Foundation
- image: https://boinc.berkeley.edu/images/radioactive.jpg
- keywords: 34 20 43
- name: Radioactive@Home
- platforms: |
- - windows_intelx86
- - i686-pc-linux-gnu[nci]
- - arm-unknown-linux-gnueabi
- - armv6l-unknown-linux-gnueabihf
- - arm-unknown-linux-gnueabihf
- - mipsel-unknown-linux-gnu
- - armv7l-unknown-linux-gnueabihf
- specific_area: Environmental research
- summary: Monitor radiation levels
- url: http://radioactiveathome.org/boinc/
- web_url: http://radioactiveathome.org/boinc/
- weak_authenticator: 93746_1ff2bebc388ccfd9d09c580e010a6a92
-
- - id: 2838023a778dfaecdc212708f721b788
- avatar: S@H
- description: |
- Study drugs to fight SARS-CoV-2.
- general_area: Biology and Medicine
- home: The COVID.SI project and the Karelian Research Center of the Russian Academy of Sciences
- image: https://boinc.berkeley.edu/images/sidock.png
- keywords: 9 13 64 20 44
- name: SIDock@home
- platforms: |
- - x86_64-pc-linux-gnu
- - x86_64-apple-darwin
- - windows_x86_64
- - arm-unknown-linux-gnueabihf
- specific_area: Biomedicine
- summary: Study drugs to fight SARS-CoV-2
- url: https://www.sidock.si/sidock/
- web_url: https://www.sidock.si/sidock/
- weak_authenticator: 4335_4ce69ae921efc46321ec5d515b6c94e7
-
- - id: 37693cfc748049e45d87b8c7d8b9aacd
- avatar: AN
- description: |
- Amicable numbers are pairs where the sum of the proper divisors of each is equal to the other number.
- The goal of this project is to collect all amicable numbers up to a very large limit.
- general_area: Mathematics, computing, and games
- home: Independent
- keywords: 15 32 20
- name: Amicable Numbers
- platforms: |
- - aarch64-unknown-linux-gnu[mt]
- - windows_x86_64[mt]
- - windows_x86_64[opencl_amd]
- - windows_x86_64[opencl_nvidia]
- - x86_64-apple-darwin[mt]
- - x86_64-apple-darwin[opencl_amd]
- - x86_64-apple-darwin[opencl_nvidia]
- - x86_64-pc-linux-gnu[mt]
- - x86_64-pc-linux-gnu[opencl_amd]
- - x86_64-pc-linux-gnu[opencl_nvidia]
- specific_area: Mathematics
- summary: Do research in number theory
- url: https://sech.me/boinc/Amicable/
- web_url: https://sech.me/boinc/Amicable/
- weak_authenticator: 44677_6eb84b6eab64f40a10278f088d68968d
diff --git a/agent/app/scitizen/operator.py b/agent/app/scitizen/operator.py
index 4d060bc..6f0c56a 100644
--- a/agent/app/scitizen/operator.py
+++ b/agent/app/scitizen/operator.py
@@ -1,9 +1,13 @@
# -*- coding: utf-8 -*-
from dataclasses import dataclass
+from pathlib import Path
from typing import Any, Dict, List
import requests
+import utils
+import xmltodict
+import yaml
@dataclass
@@ -19,13 +23,14 @@ class Operator:
host: The name of the Scitizen API host.
port: The port of the Scitizen API host.
session: A session to improve performance.
+ config: The path to the config file.
Methods:
set_device: Set the device info
set_tasks: Set all the running tasks.
clean_tasks: Run maintenance queries on the database.
get_projects: Fetch all the projects available.
- set_projects: Set the state (enabled/disabled) of all the projects available.
+ set_projects: Set all the BOINC projects.
"""
base_url: str = ""
@@ -33,6 +38,7 @@ class Operator:
host: str = "localhost"
port: int = 8080
session: requests.Session = requests.Session()
+ config: str = f"{(Path(__file__).parent).resolve()}/projects.yml"
def __post_init__(self) -> None:
"""Initialize the Operator.
@@ -91,16 +97,32 @@ def get_projects(self) -> List[str]:
return self.session.get(url=f"{self.base_url}/projects").json()
- def set_projects(self, projects: List[Dict[str, Any]]) -> None:
+ def set_projects(self) -> None:
"""Send projects to the Scitizen API.
- It is used to update the Scitizen data with data coming from the BOINC Client.
-
- Args:
- projects:
- The list of projects to send to the Scitizen API.
+ It is used to fetch the official project list from the BOINC API,
+ complete them with some Scitizen relative configs (like avatars and weak authenticators)
+ and send them to the Scitizen API for persistence.
"""
+ # load scitizen config
+ with open(self.config) as file:
+ config = yaml.load(file, Loader=yaml.SafeLoader).get("projects")
+
+ # fetch official project list
+ response = requests.get("https://boinc.berkeley.edu/project_list.php")
+ projects = xmltodict.parse(response.text).get("projects").get("project")
+
+ # iterate over official project and override config
+ for project in projects:
+ uuid: str = utils.md5(project.get("id"))
+ project.update({"uuid": uuid})
+ project.update({"platforms": str(project.get("platforms").get("name"))})
+ project.update({"avatar": config.get(uuid, {}).get("avatar")})
+ project.update(
+ {"weak_authenticator": config.get(uuid, {}).get("weak_authenticator")}
+ )
+
for project in projects:
self.session.post(
url=f"{self.base_url}/projects/{project.get('uuid')}", json=project
diff --git a/agent/app/scitizen/projects.yml b/agent/app/scitizen/projects.yml
new file mode 100644
index 0000000..1a76250
--- /dev/null
+++ b/agent/app/scitizen/projects.yml
@@ -0,0 +1,137 @@
+---
+projects:
+ 8f14e45fceea167a5a36dedd4bea2543:
+ avatar: R@h
+ weak_authenticator: 2348499_186a12cccae17b42df557063fb3dff67
+
+ c9f0f895fb98ab9159f51fd0297e236d:
+ avatar: CP
+ weak_authenticator: 2011746_1ab8969914d88b3bb941c0db2d81095c
+
+ 1f0e3dad99908345f7439f8ffabdffc4:
+ avatar: CSG
+ weak_authenticator: 1549900_2ec7f3f218990556291fcdf8bd0421f7
+
+ f7177163c833dff4b38fc8d2872f1ec6:
+ avatar: B@T
+ weak_authenticator: 21911_bf44581b6ebcab65aefc26e190046932
+
+ 6512bd43d9caa6e02c990b0a82652dca:
+ avatar: A@h
+ weak_authenticator: 471707_439c418d5f6ce7cdbb62c60c6f91e61d
+
+ 33e75ff09dd601bbe69f351039152189:
+ avatar: CC
+ weak_authenticator: 1648775_0f463e700cffac3e5c0208d68a20050c
+
+ c20ad4d76fe97759aa27a0c99bff6710:
+ avatar: C@H
+ weak_authenticator: 1814706_1c80358958413f4c3eac9eb75246a9fa
+
+ aab3238922bcc25a6f606eb525ffdc56:
+ avatar: M@h
+ weak_authenticator: 1797723_bb0f5215bd077026e61c4a2be7266471
+
+ d9d4f495e875a2e075a1a4a6e1b9770f:
+ avatar: M@H
+ weak_authenticator: 15856591_51a4df5be469d4106f78c1e16dc76b7c
+
+ 4e732ced3463d06de0ca9a15b6153677:
+ avatar: MOO
+ weak_authenticator: 326490_bd7799eaf789fc90921b6d9b09e92a3a
+
+ 17e62166fc8586dfa4d1bc0e1742c08b:
+ avatar: N@H
+ weak_authenticator: 69975_cbee59906d550800d73a51ce64511165
+
+ 6ea9ab1baa0efb9e19094440c317e21b:
+ avatar: NFS
+ weak_authenticator: 1105563_3d8b03c0842747ee72302844fa74018d
+
+ 1ff1de774005f8da13f42943881c655f:
+ avatar: NFh
+ weak_authenticator: 120082_cf41ef1986daa709586f73a2bdb78f54
+
+ a5771bce93e200c36f7cd9dfd0e5deaa:
+ avatar: ODL
+ weak_authenticator: 33135_f5b48880c88267d564c8823cc2dd76ea
+
+ d67d8ab4f4c10bf22aa353e27879133c:
+ avatar: ODL
+ weak_authenticator: 31846_e0510332a47ac1f87aa9d2fa01ea9531
+
+ 34173cb38f07f89ddbebc2ac9128303f:
+ avatar: PG
+ weak_authenticator: 1424988_ad4b9f9d87c95db0299d9f25ff20a1d2
+
+ e4da3b7fbbce2345d7772b0674a318d5:
+ avatar: RNA
+ weak_authenticator: 152940_d84023a627bb016b15a8e3fdb683a61b
+
+ c51ce410c124a10e0db5e4b97fc2af39:
+ avatar: U@H
+ weak_authenticator: 225109_1e3c507523811251e5045b1a9cb7ee26
+
+ c74d97b01eae257e44aa9d5bade97baf:
+ avatar: E@h
+ weak_authenticator: 1034532_935f4713ce9494060c9654c774c88685
+
+ 70efdf2ec9b086079795c442636b55fb:
+ avatar: LHC
+ weak_authenticator: 787712_e7ec22b6d2c890bd12d55fd56c57e6c1
+
+ c0c7c76d30bd3dcaefc96f40275bdc0a:
+ avatar: iT
+ weak_authenticator: 41373_56d8227b4ca86fbfb58642bad8064baa
+
+ a1d0c6e83f027327d8461063f4ac58a6:
+ avatar: RS
+ weak_authenticator: 13528_3f14685c433e226041771669abbc6923
+
+ b6d767d2f8ed5d21a44b0e5886680cb9:
+ avatar: WCG
+ weak_authenticator: 1142050_bff21735a8975927645d3ff2b60e152f
+
+ 67c6a1e7ce56d3d6fa748ab6d9af3fd7:
+ avatar: MLC
+ weak_authenticator: 43537_9feaf8e1b00f49e7ac888897521032a9
+
+ c81e728d9d4c2f636f067f89cc14862c:
+ avatar: R@H
+ weak_authenticator: 93746_1ff2bebc388ccfd9d09c580e010a6a92
+
+ 2838023a778dfaecdc212708f721b788:
+ avatar: S@h
+ weak_authenticator: 4335_4ce69ae921efc46321ec5d515b6c94e7
+
+ 37693cfc748049e45d87b8c7d8b9aacd:
+ avatar: AN
+ weak_authenticator: 44677_6eb84b6eab64f40a10278f088d68968d
+
+ 1679091c5a880faf6fb5e6087eb1b2dc:
+ avatar: GPU
+ weak_authenticator: 572510_c32d61242105241cffcc8c3cd9c3c99e
+
+ f457c545a9ded88f18ecee47145a72c0:
+ avatar: Q@h
+ weak_authenticator: 1245_2a0dee4611b8a12c84257fe7f8c82a21
+
+ e369853df766fa44e1ed0ff613f563bd:
+ avatar: SRB
+ weak_authenticator: 2602_8df6ed9d52d1a20fadf3213f2b147119
+
+ 182be0c5cdcd5072bb1864cdee4d3d6e:
+ avatar: G@H
+ weak_authenticator: None
+
+ 642e92efb79421734881b53e1e1b18b6:
+ avatar: IBE
+ weak_authenticator: null
+
+ eccbc87e4b5ce2fe28308fd9f2a7baf3:
+ avatar: M@H
+ weak_authenticator: null
+
+ 3c59dc048e8850243be8079a5c74d079:
+ avatar: Y@h
+ weak_authenticator: null
diff --git a/agent/app/boinc/utils.py b/agent/app/utils.py
similarity index 100%
rename from agent/app/boinc/utils.py
rename to agent/app/utils.py
diff --git a/api/app/models.py b/api/app/models.py
index 5eec94d..29b7a00 100644
--- a/api/app/models.py
+++ b/api/app/models.py
@@ -35,6 +35,7 @@ class Device(SQLModel, table=True): # type: ignore
operating_system_version: Optional[str]
boinc_version: Optional[str]
scitizen_version: Optional[str]
+ platform: Optional[str]
# setup the pseudo-columns (metadata related to the record)
created_at: Optional[datetime] = Field(
diff --git a/worker/config/account_asteroidsathome.net_boinc.xml b/worker/config/account_asteroidsathome.net_boinc.xml
deleted file mode 100644
index c3b8d71..0000000
--- a/worker/config/account_asteroidsathome.net_boinc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- http://asteroidsathome.net/boinc/
- 471707_439c418d5f6ce7cdbb62c60c6f91e61d
-
diff --git a/worker/config/account_boinc.bakerlab.org_rosetta.xml b/worker/config/account_boinc.bakerlab.org_rosetta.xml
deleted file mode 100644
index 1d7fa18..0000000
--- a/worker/config/account_boinc.bakerlab.org_rosetta.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- https://boinc.bakerlab.org/rosetta/
- 2348499_186a12cccae17b42df557063fb3dff67
-
diff --git a/worker/config/account_einstein.phys.uwm.edu.xml b/worker/config/account_einstein.phys.uwm.edu.xml
deleted file mode 100644
index 21ba82a..0000000
--- a/worker/config/account_einstein.phys.uwm.edu.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- http://einstein.phys.uwm.edu/
- 1034532_935f4713ce9494060c9654c774c88685
-
diff --git a/worker/config/account_lhcathome.cern.ch_lhcathome.xml b/worker/config/account_lhcathome.cern.ch_lhcathome.xml
deleted file mode 100644
index fda6e4e..0000000
--- a/worker/config/account_lhcathome.cern.ch_lhcathome.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- https://lhcathome.cern.ch/lhcathome/
- 787712_e7ec22b6d2c890bd12d55fd56c57e6c1
-
diff --git a/worker/config/account_radioactiveathome.org_boinc.xml b/worker/config/account_radioactiveathome.org_boinc.xml
deleted file mode 100644
index 96f39c0..0000000
--- a/worker/config/account_radioactiveathome.org_boinc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- http://radioactiveathome.org/boinc/
- 93746_1ff2bebc388ccfd9d09c580e010a6a92
-
diff --git a/worker/config/account_rake.boincfast.ru_rakesearch.xml b/worker/config/account_rake.boincfast.ru_rakesearch.xml
deleted file mode 100644
index 34eaecc..0000000
--- a/worker/config/account_rake.boincfast.ru_rakesearch.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- https://rake.boincfast.ru/rakesearch/
- 13528_3f14685c433e226041771669abbc6923
-
diff --git a/worker/config/account_root.ithena.net_usr.xml b/worker/config/account_root.ithena.net_usr.xml
deleted file mode 100644
index ba76bcb..0000000
--- a/worker/config/account_root.ithena.net_usr.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- https://root.ithena.net/usr/
- 41373_56d8227b4ca86fbfb58642bad8064baa
-
diff --git a/worker/config/account_sech.me_boinc_Amicable.xml b/worker/config/account_sech.me_boinc_Amicable.xml
deleted file mode 100644
index 31ccf48..0000000
--- a/worker/config/account_sech.me_boinc_Amicable.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- https://sech.me/boinc/Amicable/
- 44677_6eb84b6eab64f40a10278f088d68968d
-
diff --git a/worker/config/account_universeathome.pl_universe.xml b/worker/config/account_universeathome.pl_universe.xml
deleted file mode 100644
index ecb2b72..0000000
--- a/worker/config/account_universeathome.pl_universe.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- https://universeathome.pl/universe/
- 225109_1e3c507523811251e5045b1a9cb7ee26
-
diff --git a/worker/config/account_www.mlcathome.org_mlcathome.xml b/worker/config/account_www.mlcathome.org_mlcathome.xml
deleted file mode 100644
index 4f7a639..0000000
--- a/worker/config/account_www.mlcathome.org_mlcathome.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- https://www.mlcathome.org/mlcathome/
- 43537_9feaf8e1b00f49e7ac888897521032a9
-
diff --git a/worker/config/account_www.sidock.si_sidock.xml b/worker/config/account_www.sidock.si_sidock.xml
deleted file mode 100644
index b739716..0000000
--- a/worker/config/account_www.sidock.si_sidock.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- https://www.sidock.si/sidock/
- 4335_4ce69ae921efc46321ec5d515b6c94e7
-
diff --git a/worker/config/account_www.worldcommunitygrid.org.xml b/worker/config/account_www.worldcommunitygrid.org.xml
deleted file mode 100644
index 8a80bd9..0000000
--- a/worker/config/account_www.worldcommunitygrid.org.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- http://www.worldcommunitygrid.org/
- 1142050_bff21735a8975927645d3ff2b60e152f
-