diff --git a/scripts/config b/scripts/config index d91a7be..8232a73 100644 --- a/scripts/config +++ b/scripts/config @@ -19,10 +19,28 @@ source /usr/share/yunohost/helpers ynh_abort_if_errors datadir=$(ynh_app_setting_get --app=$app --key=datadir) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= # 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 @@ -33,33 +51,33 @@ datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= set__directories() { - mkdir -p /etc/samba/smb.conf.d + mkdir -p $final_path/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 + # 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 $datadir/$directory + + # Create the directory + mkdir -p $datadir/$directory - chmod 750 "$datadir/$directory" - chmod -R o-rwx "$datadir/$directory" - chown -R root:root "$datadir/$directory" - setfacl -R -m g:samba.$directory:rwx,d:g:samba.$directory:rwx $datadir/$directory + chmod 750 "$datadir/$directory" + chmod -R o-rwx "$datadir/$directory" + chown -R root:root "$datadir/$directory" + setfacl -R -m g:samba.$directory:rwx,d:g:samba.$directory:rwx $datadir/$directory - # Add the configuration in /etc/samba/smb.conf if needed - cat > /etc/samba/smb.conf.d/$directory.conf < $final_path/smb.conf.d/$directory.conf < /etc/samba/smb.conf < $final_path/smb.conf <> /etc/samba/smb.conf + cat $final_path/smb.conf.d/*.conf >> $final_path/smb.conf #--------------------------------------------- # IMPORTANT: to be able to upgrade properly, you have to saved the value in settings too @@ -88,6 +116,30 @@ EOF ynh_app_setting_set $app directories $directories } +set__readonly_dir() { + local value + for directory in $directories; do + value="no" + if [[ $directory =~ $(echo "^($(echo $readonly_dir | sed s/ /|/g))$") ]]; then + value="yes" + fi + ynh_write_var_in_file --file=$final_path/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 $directories; do + value="yes" + if [[ $directory =~ $(echo "^($(echo $unbrowseable | sed s/ /|/g))$") ]]; then + value="no" + fi + ynh_write_var_in_file --file=$final_path/smb.conf.d/$directory.conf --key="browsable" --value="$value" + done + ynh_app_setting_set $app unbrowseable $unbrowseable + +} #================================================= # GENERIC FINALIZATION #=================================================