mirror of
https://github.com/YunoHost-Apps/nextcloud_ynh.git
synced 2024-09-03 19:55:57 +02:00
164 lines
6.3 KiB
Bash
164 lines
6.3 KiB
Bash
#!/bin/bash
|
|
|
|
#=================================================
|
|
# COMMON VARIABLES
|
|
#=================================================
|
|
|
|
YNH_PHP_VERSION="8.1"
|
|
|
|
php_dependencies="php${YNH_PHP_VERSION}-fpm php${YNH_PHP_VERSION}-bz2 php${YNH_PHP_VERSION}-imap php${YNH_PHP_VERSION}-gmp php${YNH_PHP_VERSION}-gd php${YNH_PHP_VERSION}-intl php${YNH_PHP_VERSION}-curl php${YNH_PHP_VERSION}-apcu php${YNH_PHP_VERSION}-redis php${YNH_PHP_VERSION}-ldap php${YNH_PHP_VERSION}-imagick php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-igbinary php${YNH_PHP_VERSION}-bcmath"
|
|
|
|
pkg_dependencies="imagemagick libmagickcore-6.q16-6-extra acl tar smbclient at $php_dependencies"
|
|
|
|
#=================================================
|
|
# EXPERIMENTAL HELPERS
|
|
#=================================================
|
|
|
|
# Check if an URL is already handled
|
|
# usage: is_url_handled --domain=DOMAIN --path=PATH_URI
|
|
is_url_handled() {
|
|
# Declare an array to define the options of this helper.
|
|
local legacy_args=dp
|
|
declare -Ar args_array=( [d]=domain= [p]=path= )
|
|
local domain
|
|
local path
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
|
|
# Try to get the url with curl, and keep the http code and an eventual redirection url.
|
|
local curl_output="$(curl --insecure --silent --output /dev/null \
|
|
--write-out '%{http_code};%{redirect_url}' https://127.0.0.1$path --header "Host: $domain" --resolve $domain:443:127.0.0.1)"
|
|
|
|
# Cut the output and keep only the first part to keep the http code
|
|
local http_code="${curl_output%%;*}"
|
|
# Do the same thing but keep the second part, the redirection url
|
|
local redirection="${curl_output#*;}"
|
|
|
|
# Return 1 if the url isn't handled.
|
|
# Which means either curl got a 404 (or the admin) or the sso.
|
|
# A handled url should redirect to a publicly accessible url.
|
|
# Return 1 if the url has returned 404
|
|
if [ "$http_code" = "404" ] || [[ $redirection =~ "/yunohost/admin" ]]; then
|
|
return 1
|
|
# Return 1 if the url is redirected to the SSO
|
|
elif [[ $redirection =~ "/yunohost/sso" ]]; then
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
|
|
#=================================================
|
|
|
|
# Check available space before creating a temp directory.
|
|
#
|
|
# usage: ynh_smart_mktemp --min_size="Min size"
|
|
#
|
|
# | arg: -s, --min_size= - Minimal size needed for the temporary directory, in Mb
|
|
ynh_smart_mktemp () {
|
|
# Declare an array to define the options of this helper.
|
|
declare -Ar args_array=( [s]=min_size= )
|
|
local min_size
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
|
|
min_size="${min_size:-300}"
|
|
# Transform the minimum size from megabytes to kilobytes
|
|
min_size=$(( $min_size * 1024 ))
|
|
|
|
# Check if there's enough free space in a directory
|
|
is_there_enough_space () {
|
|
local free_space=$(df --output=avail "$1" | sed 1d)
|
|
test $free_space -ge $min_size
|
|
}
|
|
|
|
if is_there_enough_space /tmp; then
|
|
local tmpdir=/tmp
|
|
elif is_there_enough_space /var; then
|
|
local tmpdir=/var
|
|
elif is_there_enough_space /; then
|
|
local tmpdir=/
|
|
elif is_there_enough_space /home; then
|
|
local tmpdir=/home
|
|
else
|
|
ynh_die "Insufficient free space to continue..."
|
|
fi
|
|
|
|
echo "$(mktemp --directory --tmpdir="$tmpdir")"
|
|
}
|
|
|
|
#=================================================
|
|
# FUTURE OFFICIAL HELPERS
|
|
#=================================================
|
|
|
|
# Open a connection as a user
|
|
#
|
|
# example: ynh_mysql_connect_as --user="user" --password="pass" <<< "UPDATE ...;"
|
|
# example: ynh_mysql_connect_as --user="user" --password="pass" --default_character_set="utf8mb4" < /path/to/file.sql
|
|
#
|
|
# usage: ynh_mysql_connect_as --user=user --password=password [--database=database] [--default_character_set=character-set]
|
|
# | arg: -u, --user= - the user name to connect as
|
|
# | arg: -p, --password= - the user password
|
|
# | arg: -d, --database= - the database to connect to
|
|
# | arg: -c, --default_character_set= - the charset to use
|
|
#
|
|
# Requires YunoHost version 2.2.4 or higher.
|
|
ynh_mysql_connect_as() {
|
|
# Declare an array to define the options of this helper.
|
|
local legacy_args=updc
|
|
local -A args_array=( [u]=user= [p]=password= [d]=database= [c]=default_character_set= )
|
|
local user
|
|
local password
|
|
local database
|
|
local default_character_set
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
database="${database:-}"
|
|
default_character_set="${default_character_set:-}"
|
|
|
|
if [ -n "$default_character_set" ]
|
|
then
|
|
default_character_set="--default-character-set=$default_character_set"
|
|
else
|
|
default_character_set="--default-character-set=latin1"
|
|
fi
|
|
|
|
mysql --user="$user" --password="$password" "$default_character_set" --batch "$database"
|
|
}
|
|
|
|
|
|
|
|
# Dump a database
|
|
#
|
|
# example: ynh_mysql_dump_db --database=roundcube --default_character_set="utf8mb4" > ./dump.sql
|
|
#
|
|
# usage: ynh_mysql_dump_db --database=database
|
|
# | arg: -d, --database= - the database name to dump
|
|
# | arg: -c, --default_character_set= - the charset to use
|
|
# | ret: the mysqldump output
|
|
#
|
|
# Requires YunoHost version 2.2.4 or higher.
|
|
ynh_mysql_dump_db() {
|
|
# Declare an array to define the options of this helper.
|
|
local legacy_args=dc
|
|
local -A args_array=( [d]=database= [c]=default_character_set= )
|
|
local database
|
|
local default_character_set
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
default_character_set="${default_character_set:-}"
|
|
MYSQL_ROOT_PWD_FILE=/etc/yunohost/mysql
|
|
|
|
if [ -n "$default_character_set" ]
|
|
then
|
|
default_character_set="--default-character-set=$default_character_set"
|
|
else
|
|
# By default, default character set is "latin1"
|
|
default_character_set="--default-character-set=latin1"
|
|
fi
|
|
|
|
if [ -f "$MYSQL_ROOT_PWD_FILE" ]; then
|
|
mysqldump --user="root" --password="$(cat $MYSQL_ROOT_PWD_FILE)" --single-transaction --skip-dump-date "$default_character_set" "$database"
|
|
else
|
|
mysqldump --single-transaction --skip-dump-date "$default_character_set" "$database"
|
|
fi
|
|
}
|