#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Setting up source files..." # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$install_dir" chmod -R o-rwx "$install_dir" chmod -R u+rwX $install_dir/{cache/,data/,pagecache/,tmp/} chown -R $app:www-data "$install_dir" #================================================= # PHP-FPM CONFIGURATION #================================================= ynh_script_progression --message="Configuring PHP-FPM..." # Create a dedicated PHP-FPM config ynh_add_fpm_config --usage=low --footprint=low #================================================= # NGINX CONFIGURATION #================================================= ynh_script_progression --message="Configuring NGINX web server..." # Create a dedicated NGINX config ynh_add_nginx_config #================================================= # SPECIFIC SETUP #================================================= # ADD A CONFIGURATION #================================================= ynh_script_progression --message="Adding a configuration file..." # Get the timezone timezone=$(cat /etc/timezone) # Generate the salt salt=$(php$phpversion -r 'echo sha1(uniqid("", true) ."_". mt_rand());') # Generate the hash with the password hash=$(echo -n "${password}${admin}${salt}" | sha1sum | awk '{print $1}') # Generate the API secret secret=$(php${YNH_PHP_VERSION} -r "echo str_shuffle(substr(hash_hmac('sha512', uniqid('${salt}'), '${admin}'), 10, 12));") # Set default_private_links. By default, make them public if the app is public. if ynh_permission_has_user --permission=main --user=visitors then default_private_links=false else default_private_links=true fi # Installing the config file and replace the placeholders ynh_add_config --template="../conf/config.json.php" --destination="$install_dir/data/config.json.php" chmod 700 "$install_dir/data/config.json.php" #================================================= # GENERIC FINALIZATION #================================================= # SETUP LOGROTATE #================================================= ynh_script_progression --message="Configuring log rotation..." # Use logrotate to manage application logfile(s) touch "$install_dir/data/log.txt" ynh_use_logrotate "$install_dir/data/log.txt" --specific_user=$app chown $app:www-data "$install_dir/data/log.txt" #================================================= # SETUP FAIL2BAN #================================================= ynh_script_progression --message="Configuring Fail2Ban..." # Create a dedicated Fail2Ban config ynh_add_fail2ban_config --logpath="$install_dir/data/log.txt" --failregex="\s-\s\s-\sLogin failed for user.*$" #================================================= # END OF SCRIPT #================================================= ynh_script_progression --message="Installation of $app completed"