mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Yoloattempt to try to cleanup some ugly os.system
This commit is contained in:
parent
3daac24443
commit
6c03cf2b11
6 changed files with 46 additions and 56 deletions
|
@ -45,6 +45,10 @@ from moulinette.utils.filesystem import (
|
||||||
read_yaml,
|
read_yaml,
|
||||||
write_to_file,
|
write_to_file,
|
||||||
write_to_json,
|
write_to_json,
|
||||||
|
cp,
|
||||||
|
rm,
|
||||||
|
chown,
|
||||||
|
chmod,
|
||||||
)
|
)
|
||||||
|
|
||||||
from yunohost.utils import packages
|
from yunohost.utils import packages
|
||||||
|
@ -643,15 +647,15 @@ def app_upgrade(app=[], url=None, file=None, force=False, no_safety_backup=False
|
||||||
# Replace scripts and manifest and conf (if exists)
|
# Replace scripts and manifest and conf (if exists)
|
||||||
# Move scripts and manifest to the right place
|
# Move scripts and manifest to the right place
|
||||||
for file_to_copy in APP_FILES_TO_COPY:
|
for file_to_copy in APP_FILES_TO_COPY:
|
||||||
os.system(f"rm -rf '{app_setting_path}/{file_to_copy}'")
|
rm(f'{app_setting_path}/{file_to_copy}', recursive=True, force=True)
|
||||||
if os.path.exists(os.path.join(extracted_app_folder, file_to_copy)):
|
if os.path.exists(os.path.join(extracted_app_folder, file_to_copy)):
|
||||||
os.system(f"cp -R '{extracted_app_folder}/{file_to_copy}' '{app_setting_path}'")
|
cp(f'{extracted_app_folder}/{file_to_copy}', f'{app_setting_path}/{file_to_copy}', recursive=True)
|
||||||
|
|
||||||
# Clean and set permissions
|
# Clean and set permissions
|
||||||
shutil.rmtree(extracted_app_folder)
|
shutil.rmtree(extracted_app_folder)
|
||||||
os.system("chmod 600 %s" % app_setting_path)
|
chmod(app_setting_path, 0o600)
|
||||||
os.system("chmod 400 %s/settings.yml" % app_setting_path)
|
chmod(f"{app_setting_path}/settings.yml", 0o400)
|
||||||
os.system("chown -R root: %s" % app_setting_path)
|
chown(app_setting_path, "root", recursive=True)
|
||||||
|
|
||||||
# So much win
|
# So much win
|
||||||
logger.success(m18n.n("app_upgraded", app=app_instance_name))
|
logger.success(m18n.n("app_upgraded", app=app_instance_name))
|
||||||
|
@ -816,7 +820,7 @@ def app_install(
|
||||||
# Move scripts and manifest to the right place
|
# Move scripts and manifest to the right place
|
||||||
for file_to_copy in APP_FILES_TO_COPY:
|
for file_to_copy in APP_FILES_TO_COPY:
|
||||||
if os.path.exists(os.path.join(extracted_app_folder, file_to_copy)):
|
if os.path.exists(os.path.join(extracted_app_folder, file_to_copy)):
|
||||||
os.system(f"cp -R '{extracted_app_folder}/{file_to_copy}' '{app_setting_path}'")
|
cp(f'{extracted_app_folder}/{file_to_copy}', f'{app_setting_path}/{file_to_copy}', recursive=True)
|
||||||
|
|
||||||
# Initialize the main permission for the app
|
# Initialize the main permission for the app
|
||||||
# The permission is initialized with no url associated, and with tile disabled
|
# The permission is initialized with no url associated, and with tile disabled
|
||||||
|
@ -955,9 +959,9 @@ def app_install(
|
||||||
|
|
||||||
# Clean and set permissions
|
# Clean and set permissions
|
||||||
shutil.rmtree(extracted_app_folder)
|
shutil.rmtree(extracted_app_folder)
|
||||||
os.system("chmod 600 %s" % app_setting_path)
|
chmod(app_setting_path, 0o600)
|
||||||
os.system("chmod 400 %s/settings.yml" % app_setting_path)
|
chmod(f"{app_setting_path}/settings.yml", 0o400)
|
||||||
os.system("chown -R root: %s" % app_setting_path)
|
chown(app_setting_path, "root", recursive=True)
|
||||||
|
|
||||||
logger.success(m18n.n("installation_complete"))
|
logger.success(m18n.n("installation_complete"))
|
||||||
|
|
||||||
|
@ -1153,7 +1157,7 @@ def app_makedefault(operation_logger, app, domain=None):
|
||||||
write_to_json(
|
write_to_json(
|
||||||
"/etc/ssowat/conf.json.persistent", ssowat_conf, sort_keys=True, indent=4
|
"/etc/ssowat/conf.json.persistent", ssowat_conf, sort_keys=True, indent=4
|
||||||
)
|
)
|
||||||
os.system("chmod 644 /etc/ssowat/conf.json.persistent")
|
chmod("/etc/ssowat/conf.json.persistent", 0o644)
|
||||||
|
|
||||||
logger.success(m18n.n("ssowat_conf_updated"))
|
logger.success(m18n.n("ssowat_conf_updated"))
|
||||||
|
|
||||||
|
@ -2077,24 +2081,16 @@ def _extract_app_from_folder(path: str) -> Tuple[Dict, str]:
|
||||||
|
|
||||||
extracted_app_folder = _make_tmp_workdir_for_app()
|
extracted_app_folder = _make_tmp_workdir_for_app()
|
||||||
|
|
||||||
if ".zip" in path:
|
if os.path.isdir(path):
|
||||||
extract_result = os.system(
|
|
||||||
f"unzip '{path}' -d {extracted_app_folder} > /dev/null 2>&1"
|
|
||||||
)
|
|
||||||
elif ".tar" in path:
|
|
||||||
extract_result = os.system(
|
|
||||||
f"tar -xf '{path}' -C {extracted_app_folder} > /dev/null 2>&1"
|
|
||||||
)
|
|
||||||
elif os.path.isdir(path):
|
|
||||||
shutil.rmtree(extracted_app_folder)
|
shutil.rmtree(extracted_app_folder)
|
||||||
if path[-1] != "/":
|
if path[-1] != "/":
|
||||||
path = path + "/"
|
path = path + "/"
|
||||||
extract_result = os.system(f"cp -a '{path}' '{extracted_app_folder}'")
|
cp(path, extracted_app_folder, recursive=True)
|
||||||
else:
|
else:
|
||||||
extract_result = 1
|
try:
|
||||||
|
shutil.unpack_archive(path, extracted_app_folder)
|
||||||
if extract_result != 0:
|
except Exception:
|
||||||
raise YunohostError("app_extraction_failed")
|
raise YunohostError("app_extraction_failed")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if len(os.listdir(extracted_app_folder)) == 1:
|
if len(os.listdir(extracted_app_folder)) == 1:
|
||||||
|
|
|
@ -32,7 +32,7 @@ from collections import OrderedDict
|
||||||
|
|
||||||
from moulinette import m18n, Moulinette
|
from moulinette import m18n, Moulinette
|
||||||
from moulinette.utils.log import getActionLogger
|
from moulinette.utils.log import getActionLogger
|
||||||
from moulinette.utils.filesystem import read_file, write_to_file, read_toml
|
from moulinette.utils.filesystem import read_file, write_to_file, read_toml, mkdir
|
||||||
|
|
||||||
from yunohost.domain import (
|
from yunohost.domain import (
|
||||||
domain_list,
|
domain_list,
|
||||||
|
@ -471,7 +471,7 @@ def _get_dns_zone_for_domain(domain):
|
||||||
# Check if there's a NS record for that domain
|
# Check if there's a NS record for that domain
|
||||||
answer = dig(parent, rdtype="NS", full_answers=True, resolvers="force_external")
|
answer = dig(parent, rdtype="NS", full_answers=True, resolvers="force_external")
|
||||||
if answer[0] == "ok":
|
if answer[0] == "ok":
|
||||||
os.system(f"mkdir -p {cache_folder}")
|
mkdir(cache_folder, parents=True)
|
||||||
write_to_file(cache_file, parent)
|
write_to_file(cache_file, parent)
|
||||||
return parent
|
return parent
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ from typing import Dict, Any
|
||||||
from moulinette import m18n, Moulinette
|
from moulinette import m18n, Moulinette
|
||||||
from moulinette.core import MoulinetteError
|
from moulinette.core import MoulinetteError
|
||||||
from moulinette.utils.log import getActionLogger
|
from moulinette.utils.log import getActionLogger
|
||||||
from moulinette.utils.filesystem import write_to_file, read_yaml, write_to_yaml
|
from moulinette.utils.filesystem import write_to_file, read_yaml, write_to_yaml, rm
|
||||||
|
|
||||||
from yunohost.app import (
|
from yunohost.app import (
|
||||||
app_ssowatconf,
|
app_ssowatconf,
|
||||||
|
@ -328,7 +328,7 @@ def domain_remove(operation_logger, domain, remove_apps=False, force=False):
|
||||||
]
|
]
|
||||||
|
|
||||||
for stuff in stuff_to_delete:
|
for stuff in stuff_to_delete:
|
||||||
os.system("rm -rf {stuff}")
|
rm(stuff, force=True, recursive=True)
|
||||||
|
|
||||||
# Sometime we have weird issues with the regenconf where some files
|
# Sometime we have weird issues with the regenconf where some files
|
||||||
# appears as manually modified even though they weren't touched ...
|
# appears as manually modified even though they weren't touched ...
|
||||||
|
|
|
@ -33,7 +33,7 @@ import subprocess
|
||||||
from moulinette import m18n
|
from moulinette import m18n
|
||||||
from moulinette.core import MoulinetteError
|
from moulinette.core import MoulinetteError
|
||||||
from moulinette.utils.log import getActionLogger
|
from moulinette.utils.log import getActionLogger
|
||||||
from moulinette.utils.filesystem import write_to_file, read_file
|
from moulinette.utils.filesystem import write_to_file, read_file, rm, chown, chmod
|
||||||
from moulinette.utils.network import download_json
|
from moulinette.utils.network import download_json
|
||||||
|
|
||||||
from yunohost.utils.error import YunohostError, YunohostValidationError
|
from yunohost.utils.error import YunohostError, YunohostValidationError
|
||||||
|
@ -152,13 +152,12 @@ def dyndns_subscribe(
|
||||||
|
|
||||||
os.system(
|
os.system(
|
||||||
"cd /etc/yunohost/dyndns && "
|
"cd /etc/yunohost/dyndns && "
|
||||||
"dnssec-keygen -a hmac-sha512 -b 512 -r /dev/urandom -n USER %s"
|
f"dnssec-keygen -a hmac-sha512 -b 512 -r /dev/urandom -n USER {domain}"
|
||||||
% domain
|
|
||||||
)
|
|
||||||
os.system(
|
|
||||||
"chmod 600 /etc/yunohost/dyndns/*.key /etc/yunohost/dyndns/*.private"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
chmod("/etc/yunohost/dyndns", 0o600, recursive=True)
|
||||||
|
chown("/etc/yunohost/dyndns", "root", recursive=True)
|
||||||
|
|
||||||
private_file = glob.glob("/etc/yunohost/dyndns/*%s*.private" % domain)[0]
|
private_file = glob.glob("/etc/yunohost/dyndns/*%s*.private" % domain)[0]
|
||||||
key_file = glob.glob("/etc/yunohost/dyndns/*%s*.key" % domain)[0]
|
key_file = glob.glob("/etc/yunohost/dyndns/*%s*.key" % domain)[0]
|
||||||
with open(key_file) as f:
|
with open(key_file) as f:
|
||||||
|
@ -175,12 +174,12 @@ def dyndns_subscribe(
|
||||||
timeout=30,
|
timeout=30,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
os.system("rm -f %s" % private_file)
|
rm(private_file, force=True)
|
||||||
os.system("rm -f %s" % key_file)
|
rm(key_file, force=True)
|
||||||
raise YunohostError("dyndns_registration_failed", error=str(e))
|
raise YunohostError("dyndns_registration_failed", error=str(e))
|
||||||
if r.status_code != 201:
|
if r.status_code != 201:
|
||||||
os.system("rm -f %s" % private_file)
|
rm(private_file, force=True)
|
||||||
os.system("rm -f %s" % key_file)
|
rm(key_file, force=True)
|
||||||
try:
|
try:
|
||||||
error = json.loads(r.text)["error"]
|
error = json.loads(r.text)["error"]
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|
|
@ -34,7 +34,7 @@ from importlib import import_module
|
||||||
from moulinette import m18n, Moulinette
|
from moulinette import m18n, Moulinette
|
||||||
from yunohost.utils.error import YunohostError, YunohostValidationError
|
from yunohost.utils.error import YunohostError, YunohostValidationError
|
||||||
from moulinette.utils import log
|
from moulinette.utils import log
|
||||||
from moulinette.utils.filesystem import read_yaml
|
from moulinette.utils.filesystem import read_yaml, cp
|
||||||
|
|
||||||
HOOK_FOLDER = "/usr/share/yunohost/hooks/"
|
HOOK_FOLDER = "/usr/share/yunohost/hooks/"
|
||||||
CUSTOM_HOOK_FOLDER = "/etc/yunohost/hooks.d/"
|
CUSTOM_HOOK_FOLDER = "/etc/yunohost/hooks.d/"
|
||||||
|
@ -60,8 +60,7 @@ def hook_add(app, file):
|
||||||
os.makedirs(CUSTOM_HOOK_FOLDER + action)
|
os.makedirs(CUSTOM_HOOK_FOLDER + action)
|
||||||
|
|
||||||
finalpath = CUSTOM_HOOK_FOLDER + action + "/" + priority + "-" + app
|
finalpath = CUSTOM_HOOK_FOLDER + action + "/" + priority + "-" + app
|
||||||
os.system("cp %s %s" % (file, finalpath))
|
cp(file, finalpath)
|
||||||
os.system("chown -hR admin: %s" % HOOK_FOLDER)
|
|
||||||
|
|
||||||
return {"hook": finalpath}
|
return {"hook": finalpath}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ from typing import List
|
||||||
from moulinette import Moulinette, m18n
|
from moulinette import Moulinette, m18n
|
||||||
from moulinette.utils.log import getActionLogger
|
from moulinette.utils.log import getActionLogger
|
||||||
from moulinette.utils.process import check_output, call_async_output
|
from moulinette.utils.process import check_output, call_async_output
|
||||||
from moulinette.utils.filesystem import read_yaml, write_to_yaml
|
from moulinette.utils.filesystem import read_yaml, write_to_yaml, cp, mkdir, rm
|
||||||
|
|
||||||
from yunohost.app import (
|
from yunohost.app import (
|
||||||
app_info,
|
app_info,
|
||||||
|
@ -1147,13 +1147,11 @@ class Migration(object):
|
||||||
backup_folder = "/home/yunohost.backup/premigration/" + time.strftime(
|
backup_folder = "/home/yunohost.backup/premigration/" + time.strftime(
|
||||||
"%Y%m%d-%H%M%S", time.gmtime()
|
"%Y%m%d-%H%M%S", time.gmtime()
|
||||||
)
|
)
|
||||||
os.makedirs(backup_folder, 0o750)
|
mkdir(backup_folder, 0o750, parents=True)
|
||||||
os.system("systemctl stop slapd")
|
os.system("systemctl stop slapd")
|
||||||
os.system(f"cp -r --preserve /etc/ldap {backup_folder}/ldap_config")
|
cp("/etc/ldap", f"{backup_folder}/ldap_config", recursive=True)
|
||||||
os.system(f"cp -r --preserve /var/lib/ldap {backup_folder}/ldap_db")
|
cp("/var/lib/ldap", f"{backup_folder}/ldap_db", recursive=True)
|
||||||
os.system(
|
cp("/etc/yunohost/apps", f"{backup_folder}/apps_settings", recursive=True)
|
||||||
f"cp -r --preserve /etc/yunohost/apps {backup_folder}/apps_settings"
|
|
||||||
)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise YunohostError(
|
raise YunohostError(
|
||||||
"migration_ldap_can_not_backup_before_migration", error=str(e)
|
"migration_ldap_can_not_backup_before_migration", error=str(e)
|
||||||
|
@ -1169,17 +1167,15 @@ class Migration(object):
|
||||||
)
|
)
|
||||||
os.system("systemctl stop slapd")
|
os.system("systemctl stop slapd")
|
||||||
# To be sure that we don't keep some part of the old config
|
# To be sure that we don't keep some part of the old config
|
||||||
os.system("rm -r /etc/ldap/slapd.d")
|
rm("/etc/ldap/slapd.d", force=True, recursive=True)
|
||||||
os.system(f"cp -r --preserve {backup_folder}/ldap_config/. /etc/ldap/")
|
cp(f"{backup_folder}/ldap_config", "/etc/ldap", recursive=True)
|
||||||
os.system(f"cp -r --preserve {backup_folder}/ldap_db/. /var/lib/ldap/")
|
cp(f"{backup_folder}/ldap_db", "/var/lib/ldap", recursive=True)
|
||||||
os.system(
|
cp(f"{backup_folder}/apps_settings", "/etc/yunohost/apps", recursive=True)
|
||||||
f"cp -r --preserve {backup_folder}/apps_settings/. /etc/yunohost/apps/"
|
|
||||||
)
|
|
||||||
os.system("systemctl start slapd")
|
os.system("systemctl start slapd")
|
||||||
os.system(f"rm -r {backup_folder}")
|
rm(backup_folder, force=True, recursive=True)
|
||||||
logger.info(m18n.n("migration_ldap_rollback_success"))
|
logger.info(m18n.n("migration_ldap_rollback_success"))
|
||||||
raise
|
raise
|
||||||
else:
|
else:
|
||||||
os.system(f"rm -r {backup_folder}")
|
rm(backup_folder, force=True, recursive=True)
|
||||||
|
|
||||||
return func
|
return func
|
||||||
|
|
Loading…
Add table
Reference in a new issue