68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
from urllib.request import urlopen
|
|
from urllib.error import URLError
|
|
import psutil
|
|
|
|
from .error_sources import WarningSource
|
|
|
|
|
|
def internet_on():
|
|
test_urls = (
|
|
"https://build.openflexure.org", # Bath server
|
|
"https://openflexure.org", # GitHub pages
|
|
)
|
|
for url in test_urls:
|
|
try:
|
|
urlopen(url, timeout=10)
|
|
# If any test passes, return True
|
|
return True
|
|
except URLError:
|
|
pass
|
|
# If no test passed, return False
|
|
return False
|
|
|
|
|
|
def main():
|
|
error_sources = []
|
|
|
|
# Check internet
|
|
if not internet_on():
|
|
error_sources.append(
|
|
WarningSource(
|
|
"No internet connection detected. Updates may not be available."
|
|
)
|
|
)
|
|
|
|
# Check memory
|
|
mem = psutil.virtual_memory()
|
|
total_gb = mem.total / 1e9
|
|
|
|
if total_gb <= 1:
|
|
error_sources.append(
|
|
WarningSource(
|
|
(
|
|
"Less than 1GB total memory available.",
|
|
"For small scans, or control from another device, this is usually fine.",
|
|
"\n More complex usage may require additional resources.",
|
|
)
|
|
)
|
|
)
|
|
|
|
# Check disks
|
|
data_partitions = [
|
|
disk
|
|
for disk in psutil.disk_partitions()
|
|
if "rw" in disk.opts and disk.mountpoint != "/boot"
|
|
]
|
|
for part in data_partitions:
|
|
usage = psutil.disk_usage(part.mountpoint)
|
|
if int(usage.percent) >= 90:
|
|
error_sources.append(
|
|
WarningSource(
|
|
(
|
|
f"Disk {part.device}, at {part.mountpoint} is {int(usage.percent)}% full.",
|
|
"Captures may fail to save soon.",
|
|
)
|
|
)
|
|
)
|
|
|
|
return error_sources
|