summaryrefslogtreecommitdiff
path: root/backend/helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/helpers.py')
-rw-r--r--backend/helpers.py55
1 files changed, 23 insertions, 32 deletions
diff --git a/backend/helpers.py b/backend/helpers.py
index a1877fb8..4036db85 100644
--- a/backend/helpers.py
+++ b/backend/helpers.py
@@ -2,13 +2,13 @@ import re
import ssl
import uuid
import os
-import sys
import subprocess
from hashlib import sha256
from io import BytesIO
import certifi
-from aiohttp.web import Response, middleware
+from aiohttp.web import Request, Response, middleware
+from aiohttp.typedefs import Handler
from aiohttp import ClientSession
import localplatform
from customtypes import UserType
@@ -31,17 +31,17 @@ def get_csrf_token():
return csrf_token
@middleware
-async def csrf_middleware(request, handler):
+async def csrf_middleware(request: Request, handler: Handler):
if str(request.method) == "OPTIONS" or request.headers.get('Authentication') == csrf_token or str(request.rel_url) == "/auth/token" or str(request.rel_url).startswith("/plugins/load_main/") or str(request.rel_url).startswith("/static/") or str(request.rel_url).startswith("/legacy/") or str(request.rel_url).startswith("/steam_resource/") or str(request.rel_url).startswith("/frontend/") or assets_regex.match(str(request.rel_url)) or frontend_regex.match(str(request.rel_url)):
return await handler(request)
- return Response(text='Forbidden', status='403')
+ return Response(text='Forbidden', status=403)
# Get the default homebrew path unless a home_path is specified. home_path argument is deprecated
-def get_homebrew_path(home_path = None) -> str:
+def get_homebrew_path() -> str:
return localplatform.get_unprivileged_path()
# Recursively create path and chown as user
-def mkdir_as_user(path):
+def mkdir_as_user(path: str):
path = os.path.realpath(path)
os.makedirs(path, exist_ok=True)
localplatform.chown(path)
@@ -57,23 +57,18 @@ def get_loader_version() -> str:
# returns the appropriate system python paths
def get_system_pythonpaths() -> list[str]:
- extra_args = {}
-
- if localplatform.ON_LINUX:
- # run as normal normal user to also include user python paths
- extra_args["user"] = localplatform.localplatform._get_user_id()
- extra_args["env"] = {}
-
try:
+ # run as normal normal user if on linux to also include user python paths
proc = subprocess.run(["python3" if localplatform.ON_LINUX else "python", "-c", "import sys; print('\\n'.join(x for x in sys.path if x))"],
- capture_output=True, **extra_args)
+ # TODO make this less insane
+ capture_output=True, user=localplatform.localplatform._get_user_id() if localplatform.ON_LINUX else None, env={} if localplatform.ON_LINUX else None) # type: ignore
return [x.strip() for x in proc.stdout.decode().strip().split("\n")]
except Exception as e:
logger.warn(f"Failed to execute get_system_pythonpaths(): {str(e)}")
return []
# Download Remote Binaries to local Plugin
-async def download_remote_binary_to_path(url, binHash, path) -> bool:
+async def download_remote_binary_to_path(url: str, binHash: str, path: str) -> bool:
rv = False
try:
if os.access(os.path.dirname(path), os.W_OK):
@@ -110,46 +105,42 @@ def set_user_group() -> str:
# Get the user id hosting the plugin loader
def get_user_id() -> int:
- return localplatform.localplatform._get_user_id()
+ return localplatform.localplatform._get_user_id() # pyright: ignore [reportPrivateUsage]
# Get the user hosting the plugin loader
def get_user() -> str:
- return localplatform.localplatform._get_user()
+ return localplatform.localplatform._get_user() # pyright: ignore [reportPrivateUsage]
# Get the effective user id of the running process
def get_effective_user_id() -> int:
- return localplatform.localplatform._get_effective_user_id()
+ return localplatform.localplatform._get_effective_user_id() # pyright: ignore [reportPrivateUsage]
# Get the effective user of the running process
def get_effective_user() -> str:
- return localplatform.localplatform._get_effective_user()
+ return localplatform.localplatform._get_effective_user() # pyright: ignore [reportPrivateUsage]
# Get the effective user group id of the running process
def get_effective_user_group_id() -> int:
- return localplatform.localplatform._get_effective_user_group_id()
+ return localplatform.localplatform._get_effective_user_group_id() # pyright: ignore [reportPrivateUsage]
# Get the effective user group of the running process
def get_effective_user_group() -> str:
- return localplatform.localplatform._get_effective_user_group()
+ return localplatform.localplatform._get_effective_user_group() # pyright: ignore [reportPrivateUsage]
# Get the user owner of the given file path.
-def get_user_owner(file_path) -> str:
- return localplatform.localplatform._get_user_owner(file_path)
+def get_user_owner(file_path: str) -> str:
+ return localplatform.localplatform._get_user_owner(file_path) # pyright: ignore [reportPrivateUsage]
-# Get the user group of the given file path.
-def get_user_group(file_path) -> str:
- return localplatform.localplatform._get_user_group(file_path)
+# Get the user group of the given file path, or the user group hosting the plugin loader
+def get_user_group(file_path: str | None = None) -> str:
+ return localplatform.localplatform._get_user_group(file_path) # pyright: ignore [reportPrivateUsage]
# Get the group id of the user hosting the plugin loader
def get_user_group_id() -> int:
- return localplatform.localplatform._get_user_group_id()
-
-# Get the group of the user hosting the plugin loader
-def get_user_group() -> str:
- return localplatform.localplatform._get_user_group()
+ return localplatform.localplatform._get_user_group_id() # pyright: ignore [reportPrivateUsage]
# Get the default home path unless a user is specified
-def get_home_path(username = None) -> str:
+def get_home_path(username: str | None = None) -> str:
return localplatform.get_home_path(UserType.ROOT if username == "root" else UserType.HOST_USER)
async def is_systemd_unit_active(unit_name: str) -> bool: