aboutsummaryrefslogtreecommitdiff
path: root/scripts/.fonctions
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/.fonctions')
-rw-r--r--scripts/.fonctions28
1 files changed, 28 insertions, 0 deletions
diff --git a/scripts/.fonctions b/scripts/.fonctions
index 8013e27..20f9ea0 100644
--- a/scripts/.fonctions
+++ b/scripts/.fonctions
@@ -233,3 +233,31 @@ ynh_psql_drop_db() {
ynh_psql_drop_user() {
sudo su -c "dropuser ${1}" postgres
}
+
+# Remove a file or a directory securely
+#
+# usage: ynh_secure_remove path_to_remove
+# | arg: path_to_remove - File or directory to remove
+ynh_secure_remove () {
+ path_to_remove=$1
+ forbidden_path=" \
+ /var/www \
+ /home/yunohost.app"
+
+ if [[ "$forbidden_path" =~ "$path_to_remove" \
+ # Match all path or subpath in $forbidden_path
+ || "$path_to_remove" =~ ^/[[:alnum:]]+$ \
+ # Match all first level path from / (Like /var, /root, etc...)
+ || "${path_to_remove:${#path_to_remove}-1}" = "/" ]]
+ # Match if the path finish by /. Because it's seems there is an empty variable
+ then
+ echo "Avoid deleting of $path_to_remove." >&2
+ else
+ if [ -e "$path_to_remove" ]
+ then
+ sudo rm -R "$path_to_remove"
+ else
+ echo "$path_to_remove doesn't deleted because it's not exist." >&2
+ fi
+ fi
+} \ No newline at end of file