summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorMarco Rodolfi <marco.rodolfi@tuta.io>2022-11-20 01:34:38 +0100
committerGitHub <noreply@github.com>2022-11-19 19:34:38 -0500
commit5d8601347a709f9a2db1e500109fe2affe7b6873 (patch)
treed52a5f903e9763aba7c9e5c36ef7f2eb08f83f1e /backend
parent1e02fcf39436112e898fd8b10ee94b6e158a4aee (diff)
downloaddecky-loader-5d8601347a709f9a2db1e500109fe2affe7b6873.tar.gz
decky-loader-5d8601347a709f9a2db1e500109fe2affe7b6873.zip
Fix for wrong path for settings json files (#258)v2.4.3v2.4.2-pre1
Co-authored-by: AAGaming <aa@mail.catvibers.me>
Diffstat (limited to 'backend')
-rw-r--r--backend/helpers.py10
-rw-r--r--backend/settings.py24
2 files changed, 30 insertions, 4 deletions
diff --git a/backend/helpers.py b/backend/helpers.py
index c12a2fa5..b97352bd 100644
--- a/backend/helpers.py
+++ b/backend/helpers.py
@@ -1,3 +1,5 @@
+import grp
+import pwd
import re
import ssl
import subprocess
@@ -56,6 +58,14 @@ def get_user() -> str:
raise ValueError("helpers.get_user method called before user variable was set. Run helpers.set_user first.")
return user
+#Get the user owner of the given file path.
+def get_user_owner(file_path) -> str:
+ return pwd.getpwuid(os.stat(file_path).st_uid)[0]
+
+#Get the user group of the given file path.
+def get_user_group(file_path) -> str:
+ return grp.getgrgid(os.stat(file_path).st_gid)[0]
+
# Set the global user group. get_user must be called first
def set_user_group() -> str:
global group
diff --git a/backend/settings.py b/backend/settings.py
index 9b09a3e2..d2cce769 100644
--- a/backend/settings.py
+++ b/backend/settings.py
@@ -1,20 +1,36 @@
-import imp
from json import dump, load
-from os import mkdir, path
+from os import mkdir, path, listdir, rename
+from shutil import chown
-from helpers import get_home_path, get_homebrew_path, get_user, set_user
+from helpers import get_home_path, get_homebrew_path, get_user, set_user, get_user_owner
class SettingsManager:
def __init__(self, name, settings_directory = None) -> None:
set_user()
USER = get_user()
+ wrong_dir = get_homebrew_path(get_home_path(USER))
if settings_directory == None:
- settings_directory = get_homebrew_path(get_home_path(USER))
+ settings_directory = path.join(wrong_dir, "settings")
+
self.path = path.join(settings_directory, name + ".json")
+ #Create the folder with the correct permission
if not path.exists(settings_directory):
mkdir(settings_directory)
+ chown(settings_directory, USER, USER)
+
+ #Copy all old settings file in the root directory to the correct folder
+ for file in listdir(wrong_dir):
+ if file.endswith(".json"):
+ rename(path.join(wrong_dir,file),
+ path.join(settings_directory, file))
+ self.path = path.join(settings_directory, name + ".json")
+
+
+ #If the owner of the settings directory is not the user, then set it as the user:
+ if get_user_owner(settings_directory) != USER:
+ chown(settings_directory, USER, USER)
self.settings = {}