2017-06-21 11:34:24 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
#=================================================
|
|
|
|
# GENERIC START
|
|
|
|
#=================================================
|
|
|
|
# IMPORT GENERIC HELPERS
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
source _common.sh
|
|
|
|
source /usr/share/yunohost/helpers
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# MANAGE SCRIPT FAILURE
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
ynh_clean_setup () {
|
|
|
|
### Remove this function if there's nothing to clean before calling the remove script.
|
|
|
|
true
|
|
|
|
}
|
|
|
|
# Exit if an error occurs during the execution of the script
|
|
|
|
ynh_abort_if_errors
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
|
|
|
#=================================================
|
2017-06-21 11:34:24 +02:00
|
|
|
|
|
|
|
# Retrieve arguments
|
|
|
|
domain=$YNH_APP_ARG_DOMAIN
|
2017-11-11 16:35:49 +01:00
|
|
|
password=$YNH_APP_ARG_PASSWORD
|
2018-02-05 19:09:21 +01:00
|
|
|
nextcloud_domain=$YNH_APP_ARG_NEXTCLOUDDOMAIN
|
2017-06-21 11:34:24 +02:00
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
#=================================================
|
|
|
|
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
|
|
|
#=================================================
|
2017-06-21 11:34:24 +02:00
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
### If the app uses nginx as web server (written in HTML/PHP in most cases), the final path should be "/var/www/$app".
|
|
|
|
### If the app provides an internal web server (or uses another application server such as uwsgi), the final path should be "/opt/yunohost/$app"
|
|
|
|
final_path=/opt/yunohost/$app
|
|
|
|
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
2017-06-21 19:45:46 +02:00
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
# Check web path availability
|
|
|
|
ynh_webpath_available $domain
|
|
|
|
# Register (book) web path
|
|
|
|
ynh_webpath_register $app $domain
|
2017-06-21 11:34:24 +02:00
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
#=================================================
|
|
|
|
# STORE SETTINGS FROM MANIFEST
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
ynh_app_setting_set $app domain $domain
|
|
|
|
ynh_app_setting_set $app password $password
|
|
|
|
ynh_app_setting_set $app nextcloud_domain $nextcloud_domain
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# FIND AND OPEN A PORT
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
### Use these lines if you have to open a port for the application
|
|
|
|
### `ynh_find_port` will find the first available port starting from the given port.
|
|
|
|
### If you're not using these lines:
|
|
|
|
### - Remove the section "CLOSE A PORT" in the remove script
|
2017-06-21 11:34:24 +02:00
|
|
|
|
2018-02-05 19:09:21 +01:00
|
|
|
# Find a free port
|
|
|
|
port=$(ynh_find_port 9980)
|
|
|
|
# Open this port
|
|
|
|
yunohost firewall allow --no-upnp TCP $port 2>&1
|
|
|
|
ynh_app_setting_set $app port $port
|
2017-06-21 11:34:24 +02:00
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
#===============================================
|
|
|
|
# ADD COLLABORA REPOSITORY
|
|
|
|
#===============================================
|
2017-11-11 16:41:23 +01:00
|
|
|
|
2018-11-01 16:55:18 +01:00
|
|
|
apt-get -yy install apt-transport-https
|
|
|
|
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
|
2018-11-02 18:15:03 +01:00
|
|
|
|
2018-11-01 16:55:18 +01:00
|
|
|
if [ "$(lsb_release --codename --short)" != "jessie" ]; then
|
|
|
|
echo 'deb https://collaboraoffice.com/repos/CollaboraOnline/CODE-debian8 ./' | sudo tee -a /etc/apt/sources.list.d/collabora.list
|
|
|
|
else
|
|
|
|
|
|
|
|
echo 'deb https://collaboraoffice.com/repos/CollaboraOnline/CODE-debian9 ./' | sudo tee -a /etc/apt/sources.list.d/collabora.list
|
|
|
|
fi
|
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
#==============================================
|
|
|
|
# INSTALL COLLABORA
|
|
|
|
#==============================================
|
|
|
|
ynh_package_update
|
|
|
|
ynh_install_app_dependencies loolwsd code-brand
|
2017-06-25 09:05:13 +02:00
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# NGINX CONFIGURATION
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Create a dedicated nginx config
|
2017-08-22 19:27:56 +02:00
|
|
|
ynh_add_nginx_config
|
2017-06-25 09:05:13 +02:00
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# CREATE DEDICATED USER
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Create a system user
|
|
|
|
ynh_system_user_create $app
|
|
|
|
|
2017-11-11 16:35:49 +01:00
|
|
|
#=================================================
|
|
|
|
# MODIFY A CONFIG FILE
|
|
|
|
#=================================================
|
|
|
|
cp -a ../conf/loolwsd.xml /etc/loolwsd
|
2018-09-18 18:20:38 +02:00
|
|
|
ynh_replace_string "__NEXTCLOUDDOMAIN__" "$nextcloud_domain" "/etc/loolwsd/loolwsd.xml"
|
2017-11-11 16:35:49 +01:00
|
|
|
ynh_replace_string "__PASSWORD__" "$password" "/etc/loolwsd/loolwsd.xml"
|
2018-02-05 20:41:41 +01:00
|
|
|
systemctl start loolwsd
|
2017-11-11 16:35:49 +01:00
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
|
2017-06-25 09:05:13 +02:00
|
|
|
#=================================================
|
2018-11-02 18:15:03 +01:00
|
|
|
# STORE THE CONFIG FILE CHECKSUM
|
2017-06-25 09:05:13 +02:00
|
|
|
#=================================================
|
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
### `ynh_store_file_checksum` is used to store the checksum of a file.
|
|
|
|
### That way, during the upgrade script, by using `ynh_backup_if_checksum_is_different`,
|
|
|
|
### you can make a backup of this file before modifying it again if the admin had modified it.
|
2017-06-25 09:05:13 +02:00
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
# Calculate and store the config file checksum into the app settings
|
|
|
|
ynh_store_file_checksum "/etc/loolwsd/loolwsd.xml"
|
2017-06-25 09:05:13 +02:00
|
|
|
|
2018-11-02 18:15:03 +01:00
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# GENERIC FINALIZATION
|
|
|
|
#=================================================
|
|
|
|
# SECURE FILES AND DIRECTORIES
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
### For security reason, any app should set the permissions to root: before anything else.
|
|
|
|
### Then, if write authorization is needed, any access should be given only to directories
|
|
|
|
### that really need such authorization.
|
|
|
|
|
|
|
|
# Set permissions to app files
|
|
|
|
chown -R root: /etc/loolwsd
|
|
|
|
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# SETUP SSOWAT
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# unprotected_uris allows SSO credentials to be passed anyway.
|
|
|
|
ynh_app_setting_set $app unprotected_uris "/"
|
2017-06-21 11:34:24 +02:00
|
|
|
|
|
|
|
# Reload services
|
2018-02-05 19:09:21 +01:00
|
|
|
systemctl restart loolwsd
|
2018-11-02 18:15:03 +01:00
|
|
|
systemctl reload nginx
|
2017-08-22 19:27:56 +02:00
|
|
|
|