1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/transmission_ynh.git synced 2024-09-04 01:46:12 +02:00

Merge pull request #60 from YunoHost-Apps/testing

Testing
This commit is contained in:
Kayou 2019-08-23 18:05:52 +02:00 committed by GitHub
commit 3937754ccf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 504 additions and 237 deletions

View file

@ -1,16 +1,66 @@
Transmission for YunoHost
=========================
# Transmission app for YunoHost
[Yunohost project](https://yunohost.org/#/)
[![Integration level](https://dash.yunohost.org/integration/transmission.svg)](https://dash.yunohost.org/appci/app/transmission)
[![Install Transmission with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=transmission)
[Transmission](http://www.transmissionbt.com/) is a fast, Free/Libre BitTorrent
client. This package install the Transmission web server.
> *This package allow you to install Transmission quickly and simply on a YunoHost server.
If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.*
[![Install Wallabag v2 with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=transmission)
## Overview
Transmission is a fast, easy, and free BitTorrent client.
Continuous intergation
----------------------
**Shipped version:** Debian repository version.
* [Weekly CI report (in french)](https://forum.yunohost.org/t/rapport-hebdomadaire-dintegration-continue/2297)
* [Last CI build](https://ci-apps.yunohost.org/jenkins/job/transmission%20%28Official%29/lastBuild/consoleFull)
## Screenshots
![](https://transmissionbt.com/images/screenshots/Clutch-Large.jpg)
## Demo
* [YunoHost demo](https://demo.yunohost.org/nextcloud/)
## Configuration
## Documentation
* Official documentation: https://github.com/transmission/transmission/wiki
* YunoHost documentation: https://yunohost.org/#/app_transmission
## YunoHost specific features
* Integration with YunoHost Multimedia directories
#### Multi-users support
#### Supported architectures
* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/transmission%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/transmission/)
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/transmission%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/transmission/)
* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/transmission%20%28Apps%29.svg)](https://ci-stretch.nohost.me/ci/apps/transmission/)
## Limitations
## Additionnal informations
```
## Links
* Report a bug: https://github.com/YunoHost-Apps/transmission_ynh/issues
* Transmission website: https://transmissionbt.com/
* Transmission repository: https://github.com/transmission/transmission
* YunoHost website: https://yunohost.org/
---
Developers infos
----------------
Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/transmission_ynh/tree/testing).
To try the testing branch, please proceed like that.
```
sudo yunohost app install https://github.com/YunoHost-Apps/transmission_ynh/tree/testing --debug
or
sudo yunohost app upgrade transmission -u https://github.com/YunoHost-Apps/transmission_ynh/tree/testing --debug
```

View file

@ -8,7 +8,7 @@
setup_sub_dir=1
setup_root=1
setup_nourl=0
setup_private=0
setup_private=1
setup_public=0
upgrade=1
upgrade=1 from_commit=7d887f6bc1e29ce94de703517d5302580cbb8a7e
@ -16,20 +16,9 @@
multi_instance=0
incorrect_path=1
port_already_use=1 (9091)
change_url=0
change_url=1
;;; Levels
Level 1=auto
Level 2=auto
Level 3=auto
# Level 4: No multi-users support
Level 4=na
# Level 5: https://github.com/YunoHost-Apps/transmission_ynh/issues/30
Level 5=1
Level 6=auto
Level 7=auto
Level 8=0
Level 9=0
Level 10=0
Level 5=auto
;;; Options
Email=
Notification=down

View file

@ -0,0 +1,5 @@
# These settings affect the size of the buffers for send and receive sockets.
# Size of receive socket buffer
net.core.rmem_max = 4194304
# Size of send socket buffer
net.core.wmem_max = 1048576

View file

@ -1,16 +1,18 @@
location __PATH__transmission {
proxy_pass http://127.0.0.1:__PORT____PATH__transmission;
location __PATH__/transmission {
proxy_pass http://127.0.0.1:__PORT____PATH__/transmission;
client_max_body_size 8M;
# Include SSOWAT user panel.
include conf.d/yunohost_panel.conf.inc;
more_clear_input_headers 'Accept-Encoding';
}
location __PATH__ {
location __PATH__/ {
proxy_pass http://127.0.0.1:__PORT__/;
}
location __PATH__downloads {
location __PATH__/downloads {
alias /home/yunohost.transmission/completed/;
autoindex on;
autoindex_exact_size off;

View file

@ -6,7 +6,7 @@
"en": "A Fast, Easy, and Free BitTorrent Client",
"fr": "Un client BitTorrent libre et rapide"
},
"version": "1.0",
"version": "1.0~ynh2",
"url": "https://www.transmissionbt.com/",
"license": "GPL-3.0",
"maintainer": {
@ -14,7 +14,7 @@
"email": "apps@yunohost.org"
},
"requirements": {
"yunohost": ">= 2.7.2"
"yunohost": ">= 3.5"
},
"multi_instance": false,
"services": [

View file

@ -19,6 +19,6 @@
- [ ] **Approval (LGTM)** :
- [ ] **Approval (LGTM)** :
- **CI succeeded** :
[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/transmission_ynh%20PR-NUM-/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/transmission_ynh%20PR-NUM-/)
[![Build Status](https://ci-apps-hq.yunohost.org/jenkins/job/transmission_ynh%20PR-NUM-/badge/icon)](https://ci-apps-hq.yunohost.org/jenkins/job/transmission_ynh%20PR-NUM-/)
*Please replace '-NUM-' in this link by the PR number.*
When the PR is marked as ready to merge, you have to wait for 3 days before really merging it.

View file

@ -1,37 +1,62 @@
#!/bin/bash
#=================================================
# YUNOHOST MULTIMEDIA INTEGRATION
# COMMON VARIABLES
#=================================================
# dependencies used by the app
pkg_dependencies="transmission-daemon transmission-cli transmission-common acl"
#=================================================
# PERSONAL HELPERS
#=================================================
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
#=================================================
# FUTURE OFFICIAL HELPERS
#=================================================
# Install or update the main directory yunohost.multimedia
#
# usage: ynh_multimedia_build_main_dir
ynh_multimedia_build_main_dir () {
wget -qq https://github.com/YunoHost-Apps/yunohost.multimedia/archive/master.zip
unzip -qq master.zip
local ynh_media_release="v1.2"
local checksum="806a827ba1902d6911095602a9221181"
# Download yunohost.multimedia scripts
wget -nv https://github.com/YunoHost-Apps/yunohost.multimedia/archive/${ynh_media_release}.tar.gz
# Check the control sum
echo "${checksum} ${ynh_media_release}.tar.gz" | md5sum -c --status \
|| ynh_die "Corrupt source"
# Check if the package acl is installed. Or install it.
ynh_package_is_installed 'acl' \
|| ynh_package_install acl
# Extract
mkdir yunohost.multimedia-master
tar -xf ${ynh_media_release}.tar.gz -C yunohost.multimedia-master --strip-components 1
./yunohost.multimedia-master/script/ynh_media_build.sh
}
# Add a directory in yunohost.multimedia
# This "directory" will be a symbolic link to a existing directory.
#
# usage: ynh_multimedia_addfolder "Source directory" "Destination directory"
#
# | arg: -s, --source_dir= - Source directory - The real directory which contains your medias.
# | arg: -d, --dest_dir= - Destination directory - The name and the place of the symbolic link, relative to "/home/yunohost.multimedia"
ynh_multimedia_addfolder () {
./yunohost.multimedia-master/script/ynh_media_addfolder.sh --source="$1" --dest="$2"
}
#=================================================
# BACKUP
#=================================================
HUMAN_SIZE () { # Transforme une taille en Ko en une taille lisible pour un humain
human=$(numfmt --to=iec --from-unit=1K $1)
echo $human
}
CHECK_SIZE () { # Vérifie avant chaque backup que l'espace est suffisant
file_to_analyse=$1
backup_size=$(du --summarize "$file_to_analyse" | cut -f1)
free_space=$(df --output=avail "/home/yunohost.backup" | sed 1d)
if [ $free_space -le $backup_size ]
then
echo "Espace insuffisant pour sauvegarder $file_to_analyse." >&2
echo "Espace disponible: $(HUMAN_SIZE $free_space)" >&2
ynh_die "Espace nécessaire: $(HUMAN_SIZE $backup_size)"
fi
# Declare an array to define the options of this helper.
declare -Ar args_array=( [s]=source_dir= [d]=dest_dir= )
local source_dir
local dest_dir
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
./yunohost.multimedia-master/script/ynh_media_addfolder.sh --source="$source_dir" --dest="$dest_dir"
}

View file

@ -1,64 +1,61 @@
#!/bin/bash
#=================================================
# GENERIC STARTING
#=================================================
# MANAGE FAILURE OF THE SCRIPT
#=================================================
# Exit on command errors and treat unset variables as an error
set -eu
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
if [ ! -e _common.sh ]; then
# Get the _common.sh file if it's not in the current directory
cp ../settings/scripts/_common.sh ./_common.sh
chmod a+rx _common.sh
fi
source _common.sh
source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..."
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain)
domain=$(ynh_app_setting_get --app=$app --key=domain)
#=================================================
# STANDARD BACKUP STEPS
#=================================================
# BACKUP OF THE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Backing up nginx web server configuration..."
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#=================================================
# SPECIFIC BACKUP
#=================================================
# BACKUP TRANSMISSION CONFIGURATION
#=================================================
ynh_script_progression --message="Backing up transmission configuration..."
ynh_backup "/etc/transmission-daemon/settings.json"
ynh_backup --src_path="/etc/transmission-daemon/settings.json"
ynh_backup --src_path="/etc/sysctl.d/90-transmission.conf"
#=================================================
# BACKUP DATA
#=================================================
ynh_script_progression --message="Backing up transmission data..."
ynh_backup "/usr/share/transmission"
ynh_backup --src_path="/usr/share/transmission"
ynh_backup --src_path="/var/lib/transmission-daemon"
ynh_backup "/var/lib/transmission-daemon"
ynh_backup --src_path="/home/yunohost.transmission" --is_big
backup_core_only=$(ynh_app_setting_get $app backup_core_only)
# If backup_core_only have a value in settings.yml, do not backup the data directory
if [ -z $backup_core_only ]
then
CHECK_SIZE "/home/yunohost.transmission"
ynh_backup "/home/yunohost.transmission"
else
echo "Data dir will not saved, because backup_core_only is set." >&2
fi
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last

115
scripts/change_url Normal file
View file

@ -0,0 +1,115 @@
#!/bin/bash
#=================================================
# GENERIC STARTING
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
old_domain=$YNH_APP_OLD_DOMAIN
old_path=$YNH_APP_OLD_PATH
new_domain=$YNH_APP_NEW_DOMAIN
new_path=$YNH_APP_NEW_PATH
app=$YNH_APP_INSTANCE_NAME
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..."
# Needed for helper "ynh_add_nginx_config"
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
port=$(ynh_app_setting_get --app=$app --key=port)
#=================================================
# CHECK WHICH PARTS SHOULD BE CHANGED
#=================================================
change_domain=0
if [ "$old_domain" != "$new_domain" ]
then
change_domain=1
fi
change_path=0
if [ "$old_path" != "$new_path" ]
then
change_path=1
fi
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# STOP SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Stopping transmission..." --weight=2
ynh_systemd_action --service_name=transmission-daemon --action=stop
#=================================================
# MODIFY URL IN NGINX CONF
#=================================================
ynh_script_progression --message="Updating nginx web server configuration..." --weight=2
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
# Change the path in the nginx config file
if [ $change_path -eq 1 ]
then
# Make a backup of the original nginx config file if modified
ynh_backup_if_checksum_is_different --file="$nginx_conf_path"
# Set global variables for nginx helper
domain="$old_domain"
path_url="$new_path"
# Create a dedicated nginx config
ynh_add_nginx_config
fi
# Change the domain for nginx
if [ $change_domain -eq 1 ]
then
# Delete file checksum for the old conf file location
ynh_delete_file_checksum --file="$nginx_conf_path"
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
# Store file checksum for the new config file location
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
fi
#=================================================
# SPECIFIC MODIFICATIONS
#=================================================
# UPDATE TRANSMISSION CONFIGURATION
#=================================================
ynh_replace_string --match_string="rpc-url\": \"${old_path%/}/transmission/" --replace_string="rpc-url\": \"${new_path%/}/transmission/" --target_file="/etc/transmission-daemon/settings.json"
#=================================================
# GENERIC FINALISATION
#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Starting transmission..." --weight=2
ynh_systemd_action --service_name=transmission-daemon --action=start
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading nginx web server..."
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Change of URL completed for $app" --last

View file

@ -28,45 +28,47 @@ app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS
#=================================================
ynh_script_progression --message="Validating installation parameters..."
# Normalize the url path syntax
path_url=$(ynh_normalize_url_path $path_url)
# Check web path availability
ynh_webpath_available $domain $path_url
# Register (book) web path
ynh_webpath_register $app $domain $path_url
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
ynh_script_progression --message="Storing installation settings..." --weight=2
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app path $path_url
ynh_app_setting_set --app=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# FIND AND OPEN PORTS
#=================================================
ynh_script_progression --message="Configuring firewall..." --weight=16
# Find a free port
port=$(ynh_find_port 9091)
port=$(ynh_find_port --port=9091)
# Open this port
yunohost firewall allow --no-upnp TCP $port >/dev/null 2>&1
ynh_app_setting_set $app port $port
ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
ynh_app_setting_set --app=$app --key=port --value=$port
# Find a free port
peer_port=$(ynh_find_port 51413)
peer_port=$(ynh_find_port --port=51413)
# Open this port
yunohost firewall allow Both $peer_port >/dev/null 2>&1
ynh_app_setting_set $app peer_port $peer_port
ynh_exec_warn_less yunohost firewall allow Both $peer_port
ynh_app_setting_set --app=$app --key=peer_port --value=$peer_port
#=================================================
# INSTALL TRANSMISSION
#=================================================
ynh_script_progression --message="Installing transmission..." --weight=16
ynh_install_app_dependencies transmission-daemon transmission-cli transmission-common acl
ynh_install_app_dependencies $pkg_dependencies
# Fix a stupid issue which happens sometimes ...
# transmission-common is installed (it's a dependency of
@ -82,10 +84,9 @@ fi
#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Configuring nginx web server..." --weight=2
# Add a "/" at the end of path_url for next commands
# To avoid a double / in the nginx config file.
[ "$path_url" = "/" ] || path_url=${path_url}/
# Create a dedicated nginx config
ynh_add_nginx_config
#=================================================
@ -108,37 +109,50 @@ chmod -R 777 /home/yunohost.transmission/watched
#=================================================
# CONFIGURE TRANSMISSION
#=================================================
ynh_script_progression --message="Configuring transmission..." --weight=2
# Transmission has to be stopped before modifying its config
systemctl stop transmission-daemon
ynh_systemd_action --service_name=transmission-daemon --action=stop
# Create a RPC password
rpcpassword=$(ynh_string_random)
ynh_app_setting_set $app rpcpassword "$rpcpassword"
ynh_app_setting_set --app=$app --key=rpcpassword --value="$rpcpassword"
ynh_replace_string "__RPC_PASSWORD_TO_CHANGE__" "$rpcpassword" ../conf/settings.json
ynh_replace_string "__PATH__" "$path_url" ../conf/settings.json
ynh_replace_string "__PEER_PORT__" "$peer_port" ../conf/settings.json
ynh_replace_string "__PORT__" "$port" ../conf/settings.json
ynh_replace_string --match_string="__RPC_PASSWORD_TO_CHANGE__" --replace_string="$rpcpassword" --target_file=../conf/settings.json
if [ "$path_url" != "/" ]
then
ynh_replace_string --match_string="__PATH__" --replace_string="$path_url/" --target_file=../conf/settings.json
else
ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file=../conf/settings.json
fi
ynh_replace_string --match_string="__PEER_PORT__" --replace_string="$peer_port" --target_file=../conf/settings.json
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file=../conf/settings.json
cp ../conf/settings.json /etc/transmission-daemon/settings.json
cp ../conf/90-transmission.conf /etc/sysctl.d/90-transmission.conf
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 0 ]; then
sysctl --load=/etc/sysctl.d/90-transmission.conf
fi
#=================================================
# STORE THE CHECKSUM OF THE CONFIG FILE
#=================================================
ynh_store_file_checksum /etc/transmission-daemon/settings.json
ynh_store_file_checksum --file=/etc/transmission-daemon/settings.json
ynh_store_file_checksum --file=/etc/sysctl.d/90-transmission.conf
#=================================================
# YUNOHOST MULTIMEDIA INTEGRATION
#=================================================
ynh_script_progression --message="Adding multimedia directories..." --weight=4
ynh_multimedia_build_main_dir
# Set rights on transmission directory (parent need to be readable by other, and progress need to be writable by multimedia. Because files will move)
ynh_multimedia_addfolder "/home/yunohost.transmission" "share/Torrents"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission" --dest_dir="share/Torrents"
# And share completed directory
ynh_multimedia_addfolder "/home/yunohost.transmission/completed" "share/Torrents"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission/completed" --dest_dir="share/Torrents"
# Share also watched directory, to allow to use it easily
ynh_multimedia_addfolder "/home/yunohost.transmission/watched" "share/Torrent to download"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission/watched" --dest_dir="share/Torrent to download"
#=================================================
# PATCH SOURCE TO ADD A DOWNLOAD BUTTON
@ -148,22 +162,30 @@ cp ../sources/extra_files/app/toolbar-downloads.png /usr/share/transmission/web/
cat ../sources/extra_files/app/ynh_common.css >> /usr/share/transmission/web/style/transmission/common.css
ynh_replace_string "<div id=\"toolbar-inspector\" title=\"Toggle Inspector\"></div>" "<div id=\"toolbar-inspector\" title=\"Toggle Inspector\"></div><div id=\"toolbar-separator\"></div><a href=\"../../downloads/\" id=\"toolbar-downloads\" title=\"Downloads\" target=\"_blank\"></a>" /usr/share/transmission/web/index.html
#=================================================
# START TRANSMISSION
#=================================================
ynh_script_progression --message="Starting transmission..."
ynh_systemd_action --service_name=transmission-daemon --action=start
#=================================================
# GENERIC FINALISATION
#=================================================
# ENABLE SERVICE IN ADMIN PANEL
# ADVERTISE SERVICE IN ADMIN PANEL
#=================================================
yunohost service add transmission-daemon --log "/var/log/syslog"
#=================================================
# START TRANSMISSION
#=================================================
systemctl start transmission-daemon
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading nginx web server..."
systemctl reload nginx
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Installation of $app completed" --last

View file

@ -12,50 +12,54 @@ source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..."
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain)
port=$(ynh_app_setting_get $app port)
peer_port=$(ynh_app_setting_get $app peer_port)
domain=$(ynh_app_setting_get --app=$app --key=domain)
port=$(ynh_app_setting_get --app=$app --key=port)
peer_port=$(ynh_app_setting_get --app=$app --key=peer_port)
#=================================================
# STANDARD REMOVE
#=================================================
# REMOVE TRANSMISSION-DAEMON
# REMOVE SERVICE FROM ADMIN PANEL
#=================================================
ynh_remove_app_dependencies
#=================================================
# DISABLE SERVICE IN ADMIN PANEL
#=================================================
if yunohost service status | grep -q transmission-daemon
# Remove a service from the admin panel, added by `yunohost service add`
if yunohost service status transmission-daemon >/dev/null 2>&1
then
echo "Remove transmission-daemon service"
ynh_script_progression --message="Removing $app service..." --weight=8
yunohost service remove transmission-daemon
fi
#=================================================
# REMOVE TRANSMISSION-DAEMON
#=================================================
ynh_script_progression --message="Removing transmission..." --weight=9
ynh_remove_app_dependencies
#=================================================
# CLOSE THE PORTS
#=================================================
if yunohost firewall list | grep -q "\- $port$"
then
echo "Close port $port"
yunohost firewall disallow TCP $port 2>&1
ynh_script_progression --message="Closing port $port..."
ynh_exec_warn_less yunohost firewall disallow TCP $port
fi
if yunohost firewall list | grep -q "\- $peer_port$"
then
echo "Close port $peer_port"
yunohost firewall disallow Both $peer_port 2>&1
ynh_script_progression --message="Closing port $peer_port..."
ynh_exec_warn_less yunohost firewall disallow Both $peer_port
fi
#=================================================
# REMOVE THE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Removing nginx web server configuration..."
# Remove the dedicated nginx config
ynh_remove_nginx_config
@ -65,27 +69,30 @@ ynh_remove_nginx_config
#=================================================
# REMOVE DATA
#=================================================
backup_core_only=$(ynh_app_setting_get $app backup_core_only)
# If backup_core_only have a value in settings.yml, do not remove the data directory
if [ -z $backup_core_only ]
then
ynh_secure_remove /home/yunohost.transmission
fi
# And remove the link in yunohost.multimedia
rm "/home/yunohost.multimedia/share/Torrents"
rm "/home/yunohost.multimedia/share/Torrent to download"
ynh_script_progression --message="Removing transmission data..."
# Web interface
ynh_secure_remove /usr/share/transmission
ynh_secure_remove --file=/usr/share/transmission
# And data
ynh_secure_remove /var/lib/transmission-daemon
ynh_secure_remove --file=/var/lib/transmission-daemon
# Kernel parameters
ynh_secure_remove --file=/etc/sysctl.d/90-transmission.conf
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 0 ]; then
sysctl --load=/etc/sysctl.d/90-transmission.conf
fi
#=================================================
# GENERIC FINALISATION
#=================================================
# REMOVE DEDICATED USER
#=================================================
ynh_script_progression --message="Removing the dedicated system user"
ynh_system_user_delete debian-transmission
# Delete a system user
ynh_system_user_delete --username=debian-transmission
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Removal of $app completed" --last

View file

@ -1,40 +1,37 @@
#!/bin/bash
#=================================================
# GENERIC STARTING
#=================================================
# MANAGE FAILURE OF THE SCRIPT
#=================================================
# Exit on command errors and treat unset variables as an error
set -eu
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
if [ ! -e _common.sh ]; then
# Get the _common.sh file if it's not in the current directory
cp ../settings/scripts/_common.sh ./_common.sh
chmod a+rx _common.sh
fi
source _common.sh
source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading settings..."
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain)
path_url=$(ynh_app_setting_get $app path)
port=$(ynh_app_setting_get $app port)
peer_port=$(ynh_app_setting_get $app peer_port)
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
port=$(ynh_app_setting_get --app=$app --key=port)
peer_port=$(ynh_app_setting_get --app=$app --key=peer_port)
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
ynh_script_progression --message="Validating restoration parameters..."
ynh_webpath_available $domain $path_url \
|| ynh_die "Path not available: ${domain}${path_url}"
@ -42,87 +39,106 @@ ynh_webpath_available $domain $path_url \
#=================================================
# STANDARD RESTORE STEPS
#=================================================
# RESTORE OF THE NGINX CONFIGURATION
# RESTORE THE NGINX CONFIGURATION
#=================================================
ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#=================================================
# OPEN PORTS
#=================================================
ynh_script_progression --message="Configuring firewall..." --weight=13
yunohost firewall allow --no-upnp TCP $port >/dev/null 2>&1
yunohost firewall allow Both $peer_port >/dev/null 2>&1
ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
ynh_exec_warn_less yunohost firewall allow Both $peer_port
#=================================================
# SPECIFIC RESTORE
#=================================================
# REINSTALL TRANSMISSION
#=================================================
ynh_script_progression --message="Reinstalling transmission..." --weight=16
ynh_install_app_dependencies transmission-daemon transmission-cli transmission-common acl
# Define and install dependencies
ynh_install_app_dependencies $pkg_dependencies
#=================================================
# RESTORE TRANSMISSION CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring transmission configuration..." --weight=2
# Transmission has to be stopped before modifying its config
systemctl stop transmission-daemon
ynh_systemd_action --service_name=transmission-daemon --action=stop
ynh_secure_remove /etc/transmission-daemon/settings.json
ynh_restore_file /etc/transmission-daemon/settings.json
ynh_secure_remove --file=/etc/transmission-daemon/settings.json
ynh_restore_file --origin_path=/etc/transmission-daemon/settings.json
ynh_restore_file --origin_path="/etc/sysctl.d/90-transmission.conf"
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 0 ]; then
sysctl --load=/etc/sysctl.d/90-transmission.conf
fi
#=================================================
# RESTORE DATA
#=================================================
ynh_script_progression --message="Restoring transmission data..."
ynh_secure_remove /usr/share/transmission
ynh_restore_file /usr/share/transmission
ynh_secure_remove --file=/usr/share/transmission
ynh_restore_file --origin_path=/usr/share/transmission
ynh_secure_remove /var/lib/transmission-daemon
ynh_restore_file /var/lib/transmission-daemon
ynh_secure_remove --file=/var/lib/transmission-daemon
ynh_restore_file --origin_path=/var/lib/transmission-daemon
# Use --not_mandatory for the data directory, because if the backup has been made with BACKUP_CORE_ONLY, there's no data into the backup.
ynh_restore_file --origin_path="/home/yunohost.transmission" --not_mandatory
#=================================================
# RESTORE USER RIGHTS
#=================================================
# The data directory is restored only if it's in the backup.
# If the backup have made with backup_core_only option, this directory didn't saved.
if [ -d "${YNH_APP_BACKUP_DIR}/home/yunohost.transmission" ]
then
ynh_restore_file "/home/yunohost.transmission"
else
mkdir -p /home/yunohost.transmission/{progress,completed,watched}
chown -R debian-transmission:www-data /home/yunohost.transmission/
chown -R debian-transmission: /home/yunohost.transmission/{progress,watched}
chmod -R 640 /home/yunohost.transmission
chmod -R 777 /home/yunohost.transmission/watched
fi
# Remove the backup_core_only option from the settings.yml
ynh_app_setting_delete $app backup_core_only
#=================================================
# YUNOHOST MULTIMEDIA INTEGRATION
#=================================================
ynh_script_progression --message="Adding multimedia directories..." --weight=4
ynh_multimedia_build_main_dir
# Set rights on transmission directory (parent need to be readable by other, and progress need to be writable by multimedia. Because files will move)
ynh_multimedia_addfolder "/home/yunohost.transmission" "share/Torrents"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission" --dest_dir="share/Torrents"
# And share completed directory
ynh_multimedia_addfolder "/home/yunohost.transmission/completed" "share/Torrents"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission/completed" --dest_dir="share/Torrents"
# Share also watched directory, to allow to use it easily
ynh_multimedia_addfolder "/home/yunohost.transmission/watched" "share/Torrent to download"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission/watched" --dest_dir="share/Torrent to download"
#=================================================
# ENABLE SERVICE IN ADMIN PANEL
# START TRANSMISSION
#=================================================
ynh_script_progression --message="Starting transmission..."
ynh_systemd_action --service_name=transmission-daemon --action=start
#=================================================
# ADVERTISE SERVICE IN ADMIN PANEL
#=================================================
yunohost service add transmission-daemon --log "/var/log/syslog"
#=================================================
# START TRANSMISSION
# GENERIC FINALIZATION
#=================================================
# RELOAD NGINX AND PHP-FPM
#=================================================
ynh_script_progression --message="Reloading nginx web server..." --weight=2
systemctl start transmission-daemon
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# RELOAD NGINX
# END OF SCRIPT
#=================================================
systemctl reload nginx
ynh_script_progression --message="Restoration completed for $app" --last

View file

@ -12,65 +12,84 @@ source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=2
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain)
path_url=$(ynh_app_setting_get $app path)
port=$(ynh_app_setting_get $app port)
peer_port=$(ynh_app_setting_get $app peer_port)
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
port=$(ynh_app_setting_get --app=$app --key=port)
peer_port=$(ynh_app_setting_get --app=$app --key=peer_port)
#=================================================
# FIX OLD THINGS
# CHECK VERSION
#=================================================
if [ -z $port ]; then
upgrade_type=$(ynh_check_app_version_changed)
#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
ynh_script_progression --message="Ensuring downward compatibility..." --weight=4
if [ -z "$port" ]; then
port=9091
ynh_app_setting_set $app port $port
ynh_app_setting_set --app=$app --key=port --value=$port
fi
if [ -z $peer_port ]; then
if [ -z "$peer_port" ]; then
peer_port=51413
ynh_app_setting_set $app peer_port $peer_port
ynh_app_setting_set --app=$app --key=peer_port --value=$peer_port
fi
# Add peer_port also on UDP.
yunohost firewall allow UDP $peer_port >/dev/null 2>&1
ynh_exec_warn_less yunohost firewall allow UDP $peer_port
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=3
# Inform the backup/restore process that it should not save the data directory
# Use only for the previous backup script that doesn't set 'is_big'
ynh_app_setting_set $app backup_core_only 1
ynh_backup_before_upgrade # Backup the current version of the app
# Backup the current version of the app
ynh_backup_before_upgrade
# Remove the option backup_core_only after the backup.
ynh_app_setting_delete $app backup_core_only
ynh_clean_setup () {
ynh_restore_upgradebackup # restore it if the upgrade fails
# restore it if the upgrade fails
ynh_restore_upgradebackup
}
ynh_abort_if_errors # Exit if an error occurs during the execution of the script
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# CHECK THE PATH
#=================================================
# Normalize the URL path syntax
path_url=$(ynh_normalize_url_path $path_url)
path_url=$(ynh_normalize_url_path --path_url=$path_url)
#=================================================
# STANDARD UPGRADE STEPS
#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2
# Add a "/" at the end of path_url for next commands
# To avoid a double / in the nginx config file.
[ "$path_url" = "/" ] || path_url=${path_url}/
# Create a dedicated nginx config
ynh_add_nginx_config
#=================================================
# INSTALL DEPENDENCIES
#=================================================
ynh_script_progression --message="Upgrading dependencies..." --weight=7
ynh_install_app_dependencies transmission-daemon transmission-cli transmission-common acl
ynh_install_app_dependencies $pkg_dependencies
#=================================================
# SPECIFIC UPGRADE
@ -92,41 +111,57 @@ chmod -R 777 /home/yunohost.transmission/watched
#=================================================
# CONFIGURE TRANSMISSION
#=================================================
ynh_script_progression --message="Reconfiguring transmission..." --weight=2
# Transmission has to be stopped before modifying its config
systemctl stop transmission-daemon
ynh_systemd_action --service_name=transmission-daemon --action=stop
# Verify the checksum and backup the file if it's different
ynh_backup_if_checksum_is_different /etc/transmission-daemon/settings.json
ynh_backup_if_checksum_is_different --file=/etc/transmission-daemon/settings.json
# Create a RPC password
rpcpassword=$(ynh_string_random)
ynh_app_setting_set $app rpcpassword "$rpcpassword"
ynh_app_setting_set --app=$app --key=rpcpassword --value="$rpcpassword"
ynh_replace_string "__RPC_PASSWORD_TO_CHANGE__" "$rpcpassword" ../conf/settings.json
ynh_replace_string "__PATH__" "$path_url" ../conf/settings.json
ynh_replace_string "__PEER_PORT__" "$peer_port" ../conf/settings.json
ynh_replace_string "__PORT__" "$port" ../conf/settings.json
ynh_replace_string --match_string="__RPC_PASSWORD_TO_CHANGE__" --replace_string="$rpcpassword" --target_file=../conf/settings.json
if [ "$path_url" != "/" ]
then
ynh_replace_string --match_string="__PATH__" --replace_string="$path_url/" --target_file=../conf/settings.json
else
ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file=../conf/settings.json
fi
ynh_replace_string --match_string="__PEER_PORT__" --replace_string="$peer_port" --target_file=../conf/settings.json
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file=../conf/settings.json
cp ../conf/settings.json /etc/transmission-daemon/settings.json
# Verify the checksum and backup the file if it's different
ynh_backup_if_checksum_is_different --file=/etc/sysctl.d/90-transmission.conf
cp ../conf/90-transmission.conf /etc/sysctl.d/90-transmission.conf
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 0 ]; then
sysctl --load=/etc/sysctl.d/90-transmission.conf
fi
#=================================================
# STORE THE CHECKSUM OF THE CONFIG FILE
#=================================================
# Recalculate and store the config file checksum into the app settings
ynh_store_file_checksum /etc/transmission-daemon/settings.json
ynh_store_file_checksum --file=/etc/transmission-daemon/settings.json
ynh_store_file_checksum --file=/etc/sysctl.d/90-transmission.conf
#=================================================
# YUNOHOST MULTIMEDIA INTEGRATION
#=================================================
ynh_script_progression --message="Adding multimedia directories..." --weight=3
ynh_multimedia_build_main_dir
# Set rights on transmission directory (parent need to be readable by other, and progress need to be writable by multimedia. Because files will move)
ynh_multimedia_addfolder "/home/yunohost.transmission" "share/Torrents"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission" --dest_dir="share/Torrents"
# And share completed directory
ynh_multimedia_addfolder "/home/yunohost.transmission/completed" "share/Torrents"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission/completed" --dest_dir="share/Torrents"
# Share also watched directory, to allow to use it easily
ynh_multimedia_addfolder "/home/yunohost.transmission/watched" "share/Torrent to download"
ynh_multimedia_addfolder --source_dir="/home/yunohost.transmission/watched" --dest_dir="share/Torrent to download"
#=================================================
# PATCH SOURCE TO ADD A DOWNLOAD BUTTON
@ -142,17 +177,21 @@ ynh_replace_string "<div id=\"toolbar-inspector\" title=\"Toggle Inspector\"></d
#=================================================
# START TRANSMISSION
#=================================================
ynh_script_progression --message="Starting transmission..." --weight=2
systemctl start transmission-daemon
ynh_systemd_action --service_name=transmission-daemon --action=start
#=================================================
# GENERIC FINALISATION
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading nginx web server..."
systemctl reload nginx
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# REMOVE BACKUP_CORE_ONLY
# END OF SCRIPT
#=================================================
ynh_app_setting_delete $app backup_core_only
ynh_script_progression --message="Upgrade of $app completed" --last