#!/bin/bash # In simple cases, you don't need a config script. # With a simple config_panel.toml, you can write in the app settings, in the # upstream config file or replace complete files (logo ...) and restart services. # The config scripts allows you to go further, to handle specific cases # (validation of several interdependent fields, specific getter/setter for a value, # display dynamic informations or choices, pre-loading of config type .cube... ). #================================================= # GENERIC STARTING #================================================= # IMPORT GENERIC HELPERS #================================================= source /usr/share/yunohost/helpers ynh_abort_if_errors data_dir=$(ynh_app_setting_get --app=$app --key=data_dir) install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) #================================================= # SPECIFIC GETTERS FOR TOML SHORT KEY #================================================= get__readonly_dir() { local directories=$(ynh_app_setting_get $app directories) if [[ "$directories" == "" ]] then echo "choices: []" else echo "choices:" for directory in $(echo $directories | sed "s/,/ /g") do echo " $directory: $directory" done fi } get__unbrowseable() { get__readonly_dir } #================================================= # SPECIFIC VALIDATORS FOR TOML SHORT KEYS #================================================= #================================================= # SPECIFIC SETTERS FOR TOML SHORT KEYS #================================================= set__directories() { mkdir -p $install_dir/smb.conf.d #--------------------------------------------- # IMPORTANT: setter are trigger only if a change is detected #--------------------------------------------- for directory in $(echo $directories | sed "s/,/ /g"); do # Create yunohost permission if ! ynh_permission_exists --permission=$directory ; then ynh_permission_create --permission="$directory" --allowed=all_users --show_tile=false fi # Create the directory mkdir -p $data_dir/$directory chmod 750 "$data_dir/$directory" chmod -R o-rwx "$data_dir/$directory" chown -R root:root "$data_dir/$directory" setfacl -R -m g:samba.$directory:rwx,d:g:samba.$directory:rwx $data_dir/$directory # Add the configuration in /etc/samba/smb.conf if needed cat > $install_dir/smb.conf.d/$directory.conf < $install_dir/smb.conf <> $install_dir/smb.conf #--------------------------------------------- # IMPORTANT: to be able to upgrade properly, you have to saved the value in settings too #--------------------------------------------- ynh_app_setting_set $app directories $directories } set__readonly_dir() { local value for directory in $(echo $directories | sed "s/,/ /g"); do value="no" if [[ $directory =~ $(echo "^($(echo $readonly_dir | sed s/ /|/g))$") ]]; then value="yes" fi ynh_write_var_in_file --file=$install_dir/smb.conf.d/$directory.conf --key="read only" --value="$value" done ynh_app_setting_set $app readonly_dir $readonly_dir } set__unbrowseable() { local value for directory in $(echo $directories | sed "s/,/ /g"); do value="yes" if [[ $directory =~ $(echo "^($(echo $unbrowseable | sed s/ /|/g))$") ]]; then value="no" fi ynh_write_var_in_file --file=$install_dir/smb.conf.d/$directory.conf --key="browsable" --value="$value" done ynh_app_setting_set $app unbrowseable $unbrowseable } #================================================= # GENERIC FINALIZATION #================================================= ynh_app_config_run $1