mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Drop legacy stuff for backups from before the 3.7 era
This commit is contained in:
parent
a8656c835c
commit
df49cc83d5
2 changed files with 34 additions and 191 deletions
|
@ -1282,17 +1282,8 @@ class RestoreManager:
|
|||
|
||||
regen_conf()
|
||||
|
||||
# Check that at least a group exists (all_users) to know if we need to
|
||||
# do the migration 0011 : setup group and permission
|
||||
#
|
||||
# Legacy code
|
||||
if "all_users" not in user_group_list()["groups"].keys():
|
||||
from yunohost.utils.legacy import SetupGroupPermissions
|
||||
|
||||
# Update LDAP schema restart slapd
|
||||
logger.info(m18n.n("migration_0011_update_LDAP_schema"))
|
||||
regen_conf(names=["slapd"], force=True)
|
||||
SetupGroupPermissions.migrate_LDAP_db()
|
||||
# TODO : here, we should have a way to go through all migrations
|
||||
# and apply stuff if needed
|
||||
|
||||
# Remove all permission for all app which is still in the LDAP
|
||||
for permission_name in user_permission_list(ignore_system_perms=True)[
|
||||
|
@ -1425,7 +1416,8 @@ class RestoreManager:
|
|||
restore_script = os.path.join(tmp_folder_for_app_restore, "restore")
|
||||
|
||||
# Restore permissions
|
||||
if os.path.isfile("%s/permissions.yml" % app_settings_new_path):
|
||||
if not os.path.isfile("%s/permissions.yml" % app_settings_new_path):
|
||||
raise YunohostError("Didnt find a permssions.yml for the app !?", raw_msg=True)
|
||||
|
||||
permissions = read_yaml("%s/permissions.yml" % app_settings_new_path)
|
||||
existing_groups = user_group_list()["groups"]
|
||||
|
@ -1463,12 +1455,6 @@ class RestoreManager:
|
|||
permission_sync_to_user()
|
||||
|
||||
os.remove("%s/permissions.yml" % app_settings_new_path)
|
||||
else:
|
||||
# Otherwise, we need to migrate the legacy permissions of this
|
||||
# app (included in its settings.yml)
|
||||
from yunohost.utils.legacy import SetupGroupPermissions
|
||||
|
||||
SetupGroupPermissions.migrate_app_permission(app=app_instance_name)
|
||||
|
||||
# Migrate old settings
|
||||
legacy_permission_settings = [
|
||||
|
|
|
@ -19,149 +19,6 @@ from yunohost.permission import (
|
|||
|
||||
logger = getActionLogger("yunohost.legacy")
|
||||
|
||||
|
||||
class SetupGroupPermissions:
|
||||
@staticmethod
|
||||
def remove_if_exists(target):
|
||||
|
||||
from yunohost.utils.ldap import _get_ldap_interface
|
||||
|
||||
ldap = _get_ldap_interface()
|
||||
|
||||
try:
|
||||
objects = ldap.search(target + ",dc=yunohost,dc=org")
|
||||
# ldap search will raise an exception if no corresponding object is found >.> ...
|
||||
except Exception:
|
||||
logger.debug("%s does not exist, no need to delete it" % target)
|
||||
return
|
||||
|
||||
objects.reverse()
|
||||
for o in objects:
|
||||
for dn in o["dn"]:
|
||||
dn = dn.replace(",dc=yunohost,dc=org", "")
|
||||
logger.debug("Deleting old object %s ..." % dn)
|
||||
try:
|
||||
ldap.remove(dn)
|
||||
except Exception as e:
|
||||
raise YunohostError(
|
||||
"migration_0011_failed_to_remove_stale_object", dn=dn, error=e
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def migrate_LDAP_db():
|
||||
|
||||
logger.info(m18n.n("migration_0011_update_LDAP_database"))
|
||||
|
||||
from yunohost.utils.ldap import _get_ldap_interface
|
||||
|
||||
ldap = _get_ldap_interface()
|
||||
|
||||
ldap_map = read_yaml(
|
||||
"/usr/share/yunohost/yunohost-config/moulinette/ldap_scheme.yml"
|
||||
)
|
||||
|
||||
try:
|
||||
SetupGroupPermissions.remove_if_exists("ou=permission")
|
||||
SetupGroupPermissions.remove_if_exists("ou=groups")
|
||||
|
||||
attr_dict = ldap_map["parents"]["ou=permission"]
|
||||
ldap.add("ou=permission", attr_dict)
|
||||
|
||||
attr_dict = ldap_map["parents"]["ou=groups"]
|
||||
ldap.add("ou=groups", attr_dict)
|
||||
|
||||
attr_dict = ldap_map["children"]["cn=all_users,ou=groups"]
|
||||
ldap.add("cn=all_users,ou=groups", attr_dict)
|
||||
|
||||
attr_dict = ldap_map["children"]["cn=visitors,ou=groups"]
|
||||
ldap.add("cn=visitors,ou=groups", attr_dict)
|
||||
|
||||
for rdn, attr_dict in ldap_map["depends_children"].items():
|
||||
ldap.add(rdn, attr_dict)
|
||||
except Exception as e:
|
||||
raise YunohostError("migration_0011_LDAP_update_failed", error=e)
|
||||
|
||||
logger.info(m18n.n("migration_0011_create_group"))
|
||||
|
||||
# Create a group for each yunohost user
|
||||
user_list = ldap.search(
|
||||
"ou=users,dc=yunohost,dc=org",
|
||||
"(&(objectclass=person)(!(uid=root))(!(uid=nobody)))",
|
||||
["uid", "uidNumber"],
|
||||
)
|
||||
for user_info in user_list:
|
||||
username = user_info["uid"][0]
|
||||
ldap.update(
|
||||
"uid=%s,ou=users" % username,
|
||||
{
|
||||
"objectClass": [
|
||||
"mailAccount",
|
||||
"inetOrgPerson",
|
||||
"posixAccount",
|
||||
"userPermissionYnh",
|
||||
]
|
||||
},
|
||||
)
|
||||
user_group_create(
|
||||
username,
|
||||
gid=user_info["uidNumber"][0],
|
||||
primary_group=True,
|
||||
sync_perm=False,
|
||||
)
|
||||
user_group_update(
|
||||
groupname="all_users", add=username, force=True, sync_perm=False
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def migrate_app_permission(app=None):
|
||||
logger.info(m18n.n("migration_0011_migrate_permission"))
|
||||
|
||||
apps = _installed_apps()
|
||||
|
||||
if app:
|
||||
if app not in apps:
|
||||
logger.error(
|
||||
"Can't migrate permission for app %s because it ain't installed..."
|
||||
% app
|
||||
)
|
||||
apps = []
|
||||
else:
|
||||
apps = [app]
|
||||
|
||||
for app in apps:
|
||||
permission = app_setting(app, "allowed_users")
|
||||
path = app_setting(app, "path")
|
||||
domain = app_setting(app, "domain")
|
||||
|
||||
url = "/" if domain and path else None
|
||||
if permission:
|
||||
known_users = list(user_list()["users"].keys())
|
||||
allowed = [
|
||||
user for user in permission.split(",") if user in known_users
|
||||
]
|
||||
else:
|
||||
allowed = ["all_users"]
|
||||
permission_create(
|
||||
app + ".main",
|
||||
url=url,
|
||||
allowed=allowed,
|
||||
show_tile=True,
|
||||
protected=False,
|
||||
sync_perm=False,
|
||||
)
|
||||
|
||||
app_setting(app, "allowed_users", delete=True)
|
||||
|
||||
# Migrate classic public app still using the legacy unprotected_uris
|
||||
if (
|
||||
app_setting(app, "unprotected_uris") == "/"
|
||||
or app_setting(app, "skipped_uris") == "/"
|
||||
):
|
||||
user_permission_update(app + ".main", add="visitors", sync_perm=False)
|
||||
|
||||
permission_sync_to_user()
|
||||
|
||||
|
||||
LEGACY_PERMISSION_LABEL = {
|
||||
("nextcloud", "skipped"): "api", # .well-known
|
||||
("libreto", "skipped"): "pad access", # /[^/]+
|
||||
|
|
Loading…
Add table
Reference in a new issue