mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
89 lines
3.9 KiB
Bash
89 lines
3.9 KiB
Bash
#!/bin/bash
|
|
|
|
readonly MEDIA_GROUP=multimedia
|
|
readonly MEDIA_DIRECTORY=/home/yunohost.multimedia
|
|
|
|
# Initialize the multimedia directory system
|
|
#
|
|
# usage: ynh_multimedia_build_main_dir
|
|
ynh_multimedia_build_main_dir() {
|
|
|
|
## Création du groupe multimedia
|
|
groupadd -f $MEDIA_GROUP
|
|
|
|
## Création des dossiers génériques
|
|
mkdir -p "$MEDIA_DIRECTORY"
|
|
mkdir -p "$MEDIA_DIRECTORY/share"
|
|
mkdir -p "$MEDIA_DIRECTORY/share/Music"
|
|
mkdir -p "$MEDIA_DIRECTORY/share/Picture"
|
|
mkdir -p "$MEDIA_DIRECTORY/share/Video"
|
|
mkdir -p "$MEDIA_DIRECTORY/share/eBook"
|
|
|
|
## Création des dossiers utilisateurs
|
|
for user in $(yunohost user list --output-as json | jq -r '.users | keys[]'); do
|
|
mkdir -p "$MEDIA_DIRECTORY/$user"
|
|
mkdir -p "$MEDIA_DIRECTORY/$user/Music"
|
|
mkdir -p "$MEDIA_DIRECTORY/$user/Picture"
|
|
mkdir -p "$MEDIA_DIRECTORY/$user/Video"
|
|
mkdir -p "$MEDIA_DIRECTORY/$user/eBook"
|
|
ln -sfn "$MEDIA_DIRECTORY/share" "$MEDIA_DIRECTORY/$user/Share"
|
|
# Création du lien symbolique dans le home de l'utilisateur.
|
|
#link will only be created if the home directory of the user exists and if it's located in '/home' folder
|
|
local user_home="$(getent passwd $user | cut -d: -f6 | grep '^/home/')"
|
|
if [[ -d "$user_home" ]]; then
|
|
ln -sfn "$MEDIA_DIRECTORY/$user" "$user_home/Multimedia"
|
|
fi
|
|
# Propriétaires des dossiers utilisateurs.
|
|
chown -R $user "$MEDIA_DIRECTORY/$user"
|
|
done
|
|
# Default yunohost hooks for post_user_create,delete will take care
|
|
# of creating/deleting corresponding multimedia folders when users
|
|
# are created/deleted in the future...
|
|
|
|
## Application des droits étendus sur le dossier multimedia.
|
|
# Droit d'écriture pour le groupe et le groupe multimedia en acl et droit de lecture pour other:
|
|
setfacl -RnL -m g:$MEDIA_GROUP:rwX,g::rwX,o:r-X "$MEDIA_DIRECTORY" || true
|
|
# Application de la même règle que précédemment, mais par défaut pour les nouveaux fichiers.
|
|
setfacl -RnL -m d:g:$MEDIA_GROUP:rwX,g::rwX,o:r-X "$MEDIA_DIRECTORY" || true
|
|
# Réglage du masque par défaut. Qui garantie (en principe...) un droit maximal à rwx. Donc pas de restriction de droits par l'acl.
|
|
setfacl -RL -m m::rwx "$MEDIA_DIRECTORY" || true
|
|
}
|
|
|
|
# Add a directory in yunohost.multimedia
|
|
#
|
|
# usage: ynh_multimedia_addfolder --source_dir="source_dir" --dest_dir="dest_dir"
|
|
#
|
|
# | arg: --source_dir= - Source directory - The real directory which contains your medias.
|
|
# | arg: --dest_dir= - Destination directory - The name and the place of the symbolic link, relative to "/home/yunohost.multimedia"
|
|
#
|
|
# This "directory" will be a symbolic link to a existing directory.
|
|
ynh_multimedia_addfolder() {
|
|
|
|
# ============ Argument parsing =============
|
|
local -A args_array=([s]=source_dir= [d]=dest_dir=)
|
|
local source_dir
|
|
local dest_dir
|
|
ynh_handle_getopts_args "$@"
|
|
# ===========================================
|
|
|
|
# Ajout d'un lien symbolique vers le dossier à partager
|
|
ln -sfn "$source_dir" "$MEDIA_DIRECTORY/$dest_dir"
|
|
|
|
## Application des droits étendus sur le dossier ajouté
|
|
# Droit d'écriture pour le groupe et le groupe multimedia en acl et droit de lecture pour other:
|
|
setfacl -RnL -m g:$MEDIA_GROUP:rwX,g::rwX,o:r-X "$source_dir"
|
|
# Application de la même règle que précédemment, mais par défaut pour les nouveaux fichiers.
|
|
setfacl -RnL -m d:g:$MEDIA_GROUP:rwX,g::rwX,o:r-X "$source_dir"
|
|
# Réglage du masque par défaut. Qui garantie (en principe...) un droit maximal à rwx. Donc pas de restriction de droits par l'acl.
|
|
setfacl -RL -m m::rwx "$source_dir"
|
|
}
|
|
|
|
# Add an user to the multimedia group, in turn having write permission in multimedia directories
|
|
#
|
|
# usage: ynh_multimedia_addaccess user_name
|
|
#
|
|
# | arg: user_name - The name of the user which gain this access.
|
|
ynh_multimedia_addaccess() {
|
|
groupadd -f $MEDIA_GROUP
|
|
usermod -a -G $MEDIA_GROUP $1
|
|
}
|