mirror of
https://github.com/YunoHost-Apps/calibreweb_ynh.git
synced 2024-09-03 18:16:20 +02:00
Merge branch 'testing' into missing-zlib-dep
This commit is contained in:
commit
f53d058a68
27 changed files with 361 additions and 399 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
*~
|
||||
*.sw[op]
|
||||
*.sw[op]
|
||||
/check_process
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding//conf/generate_password_hash.py=utf-8
|
22
README.md
22
README.md
|
@ -1,7 +1,7 @@
|
|||
|
||||
# Calibre-web for YunoHost
|
||||
[](https://ci-apps.yunohost.org/jenkins/job/calibreweb%20%28Community%29/lastBuild/consoleFull)
|
||||
[](https://install-app.yunohost.org/?app=calibreweb)
|
||||
|
||||
[](https://dash.yunohost.org/appci/app/calibreweb)  
|
||||
[](https://install-app.yunohost.org/?app=calibreweb)
|
||||
|
||||
> *This package allow you to install calibreweb 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.*
|
||||
|
@ -15,7 +15,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d
|
|||
|
||||
Alternatively, you may use [COPS](https://github.com/YunoHost-Apps/cops_ynh) which also allows access to your Calibre Library, but in read-only mode.
|
||||
|
||||
**Shipped version:** The shipped version is 0.6.7, but as the numbering changed in the calibre-web app, it is numbered as 0.96.7 in yunohost.
|
||||
**Shipped version:** The shipped version is 0.6.12 - Pilar, but as the numbering changed in the calibre-web app, it is numbered as 0.96.12 in yunohost.
|
||||
|
||||
Users will be synchronized with authorized Yunohost users (having the calibreweb.main authorization group) automatically. In case of issue you may force the sync in the app itself.
|
||||
|
||||
|
@ -49,7 +49,7 @@ By default, removing the app will **never** delete the library.
|
|||
|
||||
## Known Limitations
|
||||
|
||||
* Authorization access to library to be done manually after install if Calibre library was already existing, for example :
|
||||
* Authorization access to library to be done manually after install if Calibre library was already existing (except in yunohost.multimedia directory), for example :
|
||||
```
|
||||
chown -R calibreweb: path/to/library
|
||||
or
|
||||
|
@ -58,7 +58,7 @@ chmod o+rw path/to/library
|
|||
* Do not use a Nextcloud folder. It's all right if the folder is an external storage in Nextcloud but not if it's an internal one : Changing the data in the library will cause trouble with the sync
|
||||
* "Magic link feature is not yet available
|
||||
* Change to library made outside calibreweb are not automatically updated in calibreweb. It is required to disconnect and reconnect to see the changes : Do not open a database both in calibre & calibreweb!
|
||||
* Yunohost install use the Tornado server which limits the upload size of a single file to 200Mo.
|
||||
* Kobo Sync doesn’t work when Calibre is installed on a subdomain. This issue is caused by nginx. However, it works great when installed on a path e.g. `https://domain.tld/calibreweb`
|
||||
|
||||
## Links
|
||||
|
||||
|
@ -68,16 +68,15 @@ chmod o+rw path/to/library
|
|||
|
||||
---
|
||||
|
||||
Developers info
|
||||
----------------
|
||||
## Developers info
|
||||
|
||||
Please do your pull request to the [testing branch](https://github.com/Yunohost-Apps/calibreweb_ynh/tree/Testing).
|
||||
Please do your pull request to the [testing branch](https://github.com/Yunohost-Apps/calibreweb_ynh/tree/testing).
|
||||
|
||||
To try the testing branch, please proceed like that.
|
||||
```
|
||||
sudo yunohost app install https://github.com/Yunohost-Apps/calibreweb_ynh/tree/Testing --debug
|
||||
sudo yunohost app install https://github.com/Yunohost-Apps/calibreweb_ynh/tree/testing --debug
|
||||
or
|
||||
sudo yunohost app upgrade calibreweb -u https://github.com/Yunohost-Apps/calibreweb_ynh/tree/Testing --debug
|
||||
sudo yunohost app upgrade calibreweb -u https://github.com/Yunohost-Apps/calibreweb_ynh/tree/testing --debug
|
||||
```
|
||||
|
||||
|
||||
|
@ -92,6 +91,7 @@ sudo yunohost app upgrade calibreweb -u https://github.com/Yunohost-Apps/calibre
|
|||
- [ ] Add cronjob to reload database (for nextcloud integration)
|
||||
- [X] OPDS activation
|
||||
- [ ] Add config-panel option to trigger do_not_backup_data
|
||||
- [ ] Add config-panel to manage max upload size
|
||||
- [ ] Add action to restart the server
|
||||
- [ ] Add action to synchronize users
|
||||
- [ ] Add action to deactivate LDAP et retrieve admin password
|
||||
|
|
|
@ -16,34 +16,19 @@
|
|||
setup_private=1
|
||||
setup_public=1
|
||||
upgrade=1
|
||||
upgrade=1 from_commit=11f5b96df7d8850beff47f9904745fa53a6f7ed9
|
||||
#Last version
|
||||
upgrade=1 from_commit=daf9f864b4f4adde4130c9d000ecc87f5d44ca42
|
||||
#v0.6.6
|
||||
# upgrade=1 from_commit=11f5b96df7d8850beff47f9904745fa53a6f7ed9
|
||||
backup_restore=1
|
||||
multi_instance=1
|
||||
port_already_use=1 (8083)
|
||||
change_url=1
|
||||
#;; Failed upgrade
|
||||
#Run to trigger an error during upgrade to check backup_restore
|
||||
# ; pre-install
|
||||
# touch /tmp/upgrade_error
|
||||
# ; Manifest
|
||||
# domain="domain.tld" (DOMAIN)
|
||||
# path="/calibre" (PATH)
|
||||
# calibre_path="/home/yunohost.app/calibreweb"
|
||||
# admin="john" (USER)
|
||||
# language="en"
|
||||
# is_public=0 (PUBLIC|public=1|private=0)
|
||||
# upload=1
|
||||
# password="a very long password"
|
||||
# ; Checks
|
||||
# setup_sub_dir=1
|
||||
# setup_root=1
|
||||
# upgrade=1 from_commit=3b9c5041e4fa73cb965368379f2b83d076c65341
|
||||
;;; Levels
|
||||
Level 5=auto
|
||||
;;; Options
|
||||
Email=nicolas@aubonalbanais.ovh
|
||||
Notification=none
|
||||
;;; Upgrade options
|
||||
; commit=11f5b96df7d8850beff47f9904745fa53a6f7ed9
|
||||
name=Version 0.96.0~ynh4
|
||||
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&password=pass&is_public=1&
|
||||
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&password=pass&is_public=1&
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
SOURCE_URL=https://github.com/janeczku/calibre-web/releases/download/0.6.7/calibre-web-0.6.7.zip
|
||||
SOURCE_SUM=0c803df4b49993987a7f317c47ba38e680e45712b49da3cb7eb6c66f57379f30
|
||||
SOURCE_FORMAT=zip
|
||||
SOURCE_URL=https://github.com/janeczku/calibre-web/releases/download/0.6.12/calibre-web-0.6.12.zip
|
||||
SOURCE_SUM=c9caeacb5e1ec0ca8e8b6f042193f7b41a403e3e84eaf6b7f238f93041b94a6a
|
||||
SOURCE_FORMAT=zip
|
|
@ -1,3 +1,3 @@
|
|||
SOURCE_URL=https://github.com/janeczku/calibre-web/archive/0.6.6.zip
|
||||
SOURCE_SUM=87633c2817263ed2d12fce67ea292b1c6d042aa949aafb728789c15d495415cc
|
||||
SOURCE_FORMAT=zip
|
||||
SOURCE_FORMAT=zip
|
|
@ -1,3 +0,0 @@
|
|||
nickname=\'$admin\',
|
||||
locale=\'$language\',
|
||||
mature_content=0
|
|
@ -1,9 +1,17 @@
|
|||
location __PATH__ {
|
||||
client_max_body_size 200M;
|
||||
# Force usage of https
|
||||
if ($scheme = http) {
|
||||
rewrite ^ https://$server_name$request_uri? permanent;
|
||||
}
|
||||
#Client max body size to allow upload of ebook.
|
||||
#big number as audiobook may be quite big
|
||||
client_max_body_size 500M;
|
||||
|
||||
#Proxy buffering is required for Kobo sync on large library
|
||||
proxy_busy_buffers_size 512k;
|
||||
proxy_buffers 4 512k;
|
||||
proxy_buffer_size 256k;
|
||||
|
||||
proxy_pass http://localhost:__PORT__;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
|
|
|
@ -7,7 +7,7 @@ Type=simple
|
|||
User=__APP__
|
||||
Group=__APP__
|
||||
WorkingDirectory=__FINALPATH__/
|
||||
ExecStart=/bin/sh -c '/usr/bin/python3.5 __FINALPATH__/cps.py'
|
||||
ExecStart=/bin/sh -c '/usr/bin/python3 __FINALPATH__/cps.py'
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
"en": "Browsing, reading and downloading eBooks using a Calibre database",
|
||||
"fr": "Explorer, lire et télécharger des eBooks à partir d'une base de données Calibre"
|
||||
},
|
||||
"version": "0.96.7~ynh5",
|
||||
"version": "0.96.12~ynh1",
|
||||
"url": "https://github.com/janeczku/calibre-web",
|
||||
"license": "free",
|
||||
"license": "GPL-3.0-only",
|
||||
"maintainer": {
|
||||
"name": "Krakinou",
|
||||
"email": "misterl56@hotmail.com"
|
||||
},
|
||||
"requirements": {
|
||||
"yunohost": ">= 3.7.1"
|
||||
"yunohost": ">= 4.2.0"
|
||||
},
|
||||
"multi_instance": true,
|
||||
"services": [
|
||||
|
@ -25,38 +25,22 @@
|
|||
{
|
||||
"name": "domain",
|
||||
"type": "domain",
|
||||
"ask": {
|
||||
"en": "Choose a domain name for Calibre-web",
|
||||
"fr": "Choisissez un nom de domaine pour Calibre-web"
|
||||
},
|
||||
"example": "example.com"
|
||||
},
|
||||
{
|
||||
"name": "path",
|
||||
"type": "path",
|
||||
"ask": {
|
||||
"en": "Choose a path for Calibre-web",
|
||||
"fr": "Choisissez un chemin pour Calibre-web"
|
||||
},
|
||||
"example": "/calibre",
|
||||
"default": "/calibre"
|
||||
},
|
||||
{
|
||||
"name": "admin",
|
||||
"type": "user",
|
||||
"ask": {
|
||||
"en": "Choose an admin user",
|
||||
"fr": "Choisissez l’administrateur"
|
||||
},
|
||||
"example": "johndoe"
|
||||
},
|
||||
{
|
||||
"name": "is_public",
|
||||
"type": "boolean",
|
||||
"ask": {
|
||||
"en": "Is it a public application?",
|
||||
"fr": "Est-ce une application publique ?"
|
||||
},
|
||||
"help":{
|
||||
"en":"No will set the library in /home/yunohost.multimedia/admin/eBook, except if you set the library as public",
|
||||
"fr":"Non parametrera la bibliothèque pour /home/yunohost.multimedia/admin/eBook sauf si la bibliothèque est également publique"
|
||||
|
@ -84,7 +68,7 @@
|
|||
"optional": true,
|
||||
"ask": {
|
||||
"en": "Do you want to allow uploading of books?",
|
||||
"fr": "Voulez vous autoriser l'upload de livres?"
|
||||
"fr": "Voulez vous autoriser le téléversement de livres?"
|
||||
},
|
||||
"help":{
|
||||
"en":"You may change it later in the app",
|
||||
|
|
18
pull_request_template.md
Normal file
18
pull_request_template.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
## Problem
|
||||
- *Description of why you made this PR*
|
||||
|
||||
## Solution
|
||||
- *And how do you fix that problem*
|
||||
|
||||
## PR Status
|
||||
- [ ] Code finished.
|
||||
- [ ] Tested with Package_check.
|
||||
- [ ] Fix or enhancement tested.
|
||||
- [ ] Upgrade from last version tested.
|
||||
- [ ] Can be reviewed and tested.
|
||||
|
||||
## Package_check results
|
||||
---
|
||||
*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results*
|
||||
|
||||
[/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/calibreweb_ynh%20PR-NUM-%20(USERNAME)/)
|
|
@ -2,97 +2,9 @@
|
|||
|
||||
PKG_DEPENDENCIES="sqlite3 libldap2-dev libsasl2-dev python3-dev imagemagick python3-lxml libjpeg-dev zlib1g-dev"
|
||||
#PKG_DEPENDENCIES="sqlite3 python3-pip imagemagick"
|
||||
|
||||
DOSSIER_MEDIA=/home/yunohost.multimedia
|
||||
|
||||
LOG_FILE=/var/log/$app/$app.log
|
||||
ACCESS_LOG_FILE=/var/log/$app/$app-access.log
|
||||
|
||||
#=================================================
|
||||
# EXPERIMENTAL HELPERS
|
||||
# TO BE DELETED WHEN RELEASED
|
||||
#=================================================
|
||||
|
||||
#=================================================
|
||||
#YNH_MULTIMEDIA
|
||||
#=================================================
|
||||
|
||||
|
||||
# Need also the helper https://github.com/YunoHost-Apps/Experimental_helpers/blob/master/ynh_handle_getopts_args/ynh_handle_getopts_args
|
||||
|
||||
# Install or update the main directory yunohost.multimedia
|
||||
#
|
||||
# usage: ynh_multimedia_build_main_dir
|
||||
ynh_multimedia_build_main_dir () {
|
||||
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 () {
|
||||
# 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"
|
||||
}
|
||||
|
||||
# Move a directory in yunohost.multimedia, and replace by a symbolic link
|
||||
#
|
||||
# usage: ynh_multimedia_movefolder "Source directory" "Destination directory"
|
||||
#
|
||||
# | arg: -s, --source_dir= - Source directory - The real directory which contains your medias.
|
||||
# It will be moved to "Destination directory"
|
||||
# A symbolic link will replace it.
|
||||
# | arg: -d, --dest_dir= - Destination directory - The new name and place of the directory, relative to "/home/yunohost.multimedia"
|
||||
ynh_multimedia_movefolder () {
|
||||
# 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 --inv --source="$source_dir" --dest="$dest_dir"
|
||||
}
|
||||
|
||||
# Allow an user to have an write authorisation in multimedia directories
|
||||
#
|
||||
# usage: ynh_multimedia_addaccess user_name
|
||||
#
|
||||
# | arg: -u, --user_name= - The name of the user which gain this access.
|
||||
ynh_multimedia_addaccess () {
|
||||
# Declare an array to define the options of this helper.
|
||||
declare -Ar args_array=( [u]=user_name=)
|
||||
local user_name
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
|
||||
groupadd -f multimedia
|
||||
usermod -a -G multimedia $user_name
|
||||
}
|
||||
|
||||
#These var are used in init_calibre_db_settings conf file
|
||||
log_file=/var/log/$app/$app.log
|
||||
access_log_file=/var/log/$app/$app-access.log
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# IMPORT GENERIC HELPERS
|
||||
#=================================================
|
||||
|
||||
|
||||
source ../settings/scripts/_common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
|
@ -19,7 +19,7 @@ ynh_abort_if_errors
|
|||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Loading installation settings..." --weight=1
|
||||
ynh_print_info --message="Loading installation settings..."
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
|
@ -31,26 +31,17 @@ port=$(ynh_app_setting_get $app port)
|
|||
calibre_dir=$(sqlite3 $final_path/app.db "SELECT config_calibre_dir FROM settings WHERE ID=1")
|
||||
#Save it in settings so that it can be used back afterward
|
||||
calibre_dir=${calibre_dir%/}
|
||||
ynh_app_setting_set $app calibre_dir $calibre_dir
|
||||
|
||||
source ../settings/scripts/_common.sh
|
||||
|
||||
ynh_app_setting_set $app calibre_dir $calibre_dir
|
||||
|
||||
#=================================================
|
||||
# STANDARD BACKUP STEPS
|
||||
# DECLARE DATA AND CONF FILES TO BACKUP
|
||||
#=================================================
|
||||
# STOP SYSTEMD SERVICE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Stopping a systemd service..." --weight=1
|
||||
|
||||
ynh_systemd_action --service_name=$app --action="stop"
|
||||
|
||||
ynh_print_info --message="Declaring files to be backed up..."
|
||||
|
||||
#=================================================
|
||||
# BACKUP THE APP MAIN DIR
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Backing up the main app directory..." --weight=1
|
||||
#This will backup the app.db file at the same time
|
||||
ynh_backup --src_path="$final_path"
|
||||
|
||||
|
@ -58,44 +49,30 @@ ynh_backup --src_path="$final_path"
|
|||
# BACKUP THE NGINX CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Backing up nginx web server configuration..." --weight=1
|
||||
|
||||
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC BACKUP
|
||||
#=================================================
|
||||
# BACKUP LOGROTATE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up logrotate configuration..." --weight=1
|
||||
|
||||
ynh_backup --src_path="/etc/logrotate.d/$app"
|
||||
|
||||
#=================================================
|
||||
# BACKUP SYSTEMD
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up systemd configuration..." --weight=1
|
||||
ynh_backup --src_path="/etc/systemd/system/$app.service"
|
||||
|
||||
ynh_backup --src_path="/etc/systemd/system/$app.service"
|
||||
|
||||
#=================================================
|
||||
# BACKUP THE DATA DIRECTORY
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up data directory..."
|
||||
ynh_print_info "Data directory will be backup up only if BACKUP_CORE_ONLY is unset"
|
||||
|
||||
ynh_backup --src_path="$calibre_dir" --is_big
|
||||
|
||||
|
||||
#=================================================
|
||||
# START SYSTEMD SERVICE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Starting a systemd service..." --weight=5
|
||||
|
||||
ynh_systemd_action --service_name=$app --action="start" -l "server on :$port" -t 30
|
||||
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last
|
||||
ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."
|
||||
|
|
|
@ -26,6 +26,9 @@ ynh_script_progression --message="Loading installation settings..." --weight=1
|
|||
# Needed for helper "ynh_add_nginx_config"
|
||||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
port=$(ynh_app_setting_get $app port)
|
||||
|
||||
#Source common.sh required to be after var initialization as some variables are updated in it that are then used in the script
|
||||
#when initializing the conf file of the app
|
||||
source _common.sh
|
||||
|
||||
#=================================================
|
||||
|
@ -120,7 +123,7 @@ fi
|
|||
#=================================================
|
||||
ynh_script_progression --message="Starting a systemd service..." --weight=2
|
||||
|
||||
ynh_systemd_action --service_name=$app --action="start" -l "server on :$port" -t 30
|
||||
ynh_systemd_action --service_name=$app --action="start" --line_match="Starting Gevent server on" -t 30
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
# IMPORT GENERIC HELPERS
|
||||
#=================================================
|
||||
|
||||
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
|
@ -22,12 +23,22 @@ language=$YNH_APP_ARG_LANGUAGE
|
|||
upload=$YNH_APP_ARG_UPLOAD
|
||||
public_library=$YNH_APP_ARG_PUBLIC_LIBRARY
|
||||
|
||||
#Source common.sh required to be after var initialization as some variables are updated in it that are then used in the script
|
||||
#when initializing the conf file of the app
|
||||
source _common.sh
|
||||
|
||||
#if app is public, we assume library is public
|
||||
if [ $is_public -eq 1 ]; then
|
||||
public_library=1
|
||||
fi
|
||||
|
||||
source _common.sh
|
||||
if [ $is_public -eq 1 ]; then #app is public, library is public
|
||||
calibre_dir=$DOSSIER_MEDIA/share/eBook
|
||||
elif [ $is_public -eq 0 ] && [ $public_library -eq 1 ]; then #app is private, library is public
|
||||
calibre_dir=$DOSSIER_MEDIA/share/eBook
|
||||
else #app is private, library is private
|
||||
calibre_dir=$DOSSIER_MEDIA/$admin/eBook
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# MANAGE SCRIPT FAILURE
|
||||
|
@ -36,7 +47,6 @@ source _common.sh
|
|||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
|
||||
#=================================================
|
||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||
#=================================================
|
||||
|
@ -45,9 +55,6 @@ ynh_script_progression --message="Validating installation parameters..." --weigh
|
|||
final_path=/var/www/$app
|
||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
||||
|
||||
# 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
|
||||
|
@ -63,18 +70,15 @@ ynh_app_setting_set $app path $path_url
|
|||
ynh_app_setting_set $app admin $admin
|
||||
ynh_app_setting_set $app is_public $is_public
|
||||
|
||||
|
||||
#=================================================
|
||||
# STANDARD MODIFICATIONS
|
||||
#=================================================
|
||||
# FIND AND OPEN A PORT
|
||||
# FIND AN AVAILABLE PORT
|
||||
#=================================================
|
||||
|
||||
# Find a free port
|
||||
port=$(ynh_find_port 8083)
|
||||
# Open this port
|
||||
ynh_script_progression --message="Opening port $port..." --weight=5
|
||||
yunohost firewall allow --no-upnp TCP $port 2>&1
|
||||
ynh_script_progression --message="Setting port $port..." --weight=5
|
||||
ynh_app_setting_set $app port $port
|
||||
|
||||
#=================================================
|
||||
|
@ -82,6 +86,12 @@ ynh_app_setting_set $app port $port
|
|||
#=================================================
|
||||
ynh_script_progression --message="Downloading sources to $final_path..." --weight=10
|
||||
ynh_app_setting_set $app final_path $final_path
|
||||
|
||||
#Set settings constant initializer of the app
|
||||
ynh_add_config --template="../sources/patches/app-config_sql.py.patch.src" --destination="../sources/patches/app-config_sql.py.patch"
|
||||
ynh_add_config --template="../sources/patches/app-ub.py.patch.src" --destination="../sources/patches/app-ub.py.patch"
|
||||
ynh_add_config --template="../sources/patches/app-constants.py.patch.src" --destination="../sources/patches/app-constants.py.patch"
|
||||
|
||||
# Download, check integrity, uncompress and patch the source from app.src
|
||||
ynh_setup_source "$final_path"
|
||||
|
||||
|
@ -89,7 +99,7 @@ ynh_setup_source "$final_path"
|
|||
# INSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Installing package dependencies..." --weight=15
|
||||
ynh_script_progression --message="Installing package dependencies..." --weight=30
|
||||
ynh_install_app_dependencies $PKG_DEPENDENCIES
|
||||
|
||||
#use latest version of pip as per documentation in https://github.com/pypa/get-pip
|
||||
|
@ -124,6 +134,7 @@ ynh_add_nginx_config
|
|||
ynh_system_user_create $app
|
||||
|
||||
chown -R $app: $final_path
|
||||
chmod 740 $final_path
|
||||
|
||||
#=================================================
|
||||
# SETUP SYSTEMD
|
||||
|
@ -145,13 +156,6 @@ ynh_script_progression --message="Creating files and directory..." --weight=5
|
|||
ynh_multimedia_build_main_dir
|
||||
ynh_multimedia_addaccess $app
|
||||
|
||||
if [ $is_public -eq 1 ]; then #app is public, library is public
|
||||
calibre_dir=$DOSSIER_MEDIA/share/eBook
|
||||
elif [ $is_public -eq 0 ] && [ $public_library -eq 1 ]; then #app is private, library is public
|
||||
calibre_dir=$DOSSIER_MEDIA/share/eBook
|
||||
else #app is private, library is private
|
||||
calibre_dir=$DOSSIER_MEDIA/$admin/eBook
|
||||
fi
|
||||
|
||||
#Check if metadata.db file exists. If not create it (empty library)
|
||||
if [ ! -e "$calibre_dir"/metadata.db ]; then
|
||||
|
@ -179,29 +183,26 @@ ynh_script_progression --message="Setting up database and settings..." --weight=
|
|||
#we need to start and stop the service so that initial app.db file is created and that we can set default data
|
||||
#If port 8083 is already in use (ex for second instance), then service start will fail, which is expected : so we do not want
|
||||
#to set $port on the line match. "server on" will be displayed in case the port is already in use and should be ok to spot the fact that the database is initialized.
|
||||
ynh_systemd_action --service_name=$app --action="start" --line_match="server on " --log_path="$final_path/calibre-web.log" -t 30
|
||||
#ynh_systemd_action --service_name=$app --action="start" --line_match="Starting Gevent server on" --log_path="$final_path/calibre-web.log" -t 30
|
||||
#sleep required on low spec like raspberryPi
|
||||
sleep 2s
|
||||
#sleep 2s
|
||||
#remove unwanted calibre-web.log
|
||||
ynh_secure_remove --file="$final_path/calibre-web.log"
|
||||
ynh_systemd_action --service_name=$app --action="stop"
|
||||
#ynh_secure_remove --file="$final_path/calibre-web.log"
|
||||
#ynh_systemd_action --service_name=$app --action="stop"
|
||||
|
||||
|
||||
#set database settings as per conf file
|
||||
conf="\"UPDATE settings SET $(. <(echo -E echo $(<../conf/init_calibre_db_settings))), $(. <(echo -E echo $(<../conf/init_calibre_db_ldap_settings))) WHERE ID=1\""
|
||||
eval sqlite3 $final_path/app.db "$conf"
|
||||
#conf="\"UPDATE settings SET $(. <(echo -E echo $(<../conf/init_calibre_db_settings))), $(. <(echo -E echo $(<../conf/init_calibre_db_ldap_settings))) WHERE ID=1\""
|
||||
#eval sqlite3 $final_path/app.db "$conf"
|
||||
|
||||
conf="\"UPDATE user SET $(. <(echo -E echo $(<../conf/init_calibre_db_user))) WHERE ID=1\""
|
||||
eval sqlite3 $final_path/app.db "$conf"
|
||||
#conf="\"UPDATE user SET $(. <(echo -E echo $(<../conf/init_calibre_db_user))) WHERE ID=1\""
|
||||
#eval sqlite3 $final_path/app.db "$conf"
|
||||
|
||||
#=================================================
|
||||
# SECURE FILES AND DIRECTORIES
|
||||
#=================================================
|
||||
#Update Imagick policy as per https://github.com/janeczku/calibre-web/wiki/FAQ#what-to-do-if-cover-pictures-are-not-extracted-from-pdf-files
|
||||
ynh_replace_string --match_string="<policy domain="coder" rights="none" pattern="PDF" />" \
|
||||
--replace_string="<policy domain="coder" rights="read" pattern="PDF" />" \
|
||||
--target_file="/etc/ImageMagick-6/policy.xml"
|
||||
|
||||
# Set permissions to app files
|
||||
#disabled - do not work when calibreweb is not owner
|
||||
#chown -R root: $final_path
|
||||
#chown $app: $final_path/app.db
|
||||
|
||||
|
||||
#=================================================
|
||||
|
@ -209,13 +210,13 @@ eval sqlite3 $final_path/app.db "$conf"
|
|||
#=================================================
|
||||
|
||||
# Calculate and store the config file checksum into the app settings
|
||||
ynh_store_file_checksum "${final_path}/app.db"
|
||||
#ynh_store_file_checksum "${final_path}/app.db"
|
||||
|
||||
#=================================================
|
||||
# ADVERTISE SERVICE IN ADMIN PANEL
|
||||
# INTEGRATE SERVICE IN YUNOHOST
|
||||
#=================================================
|
||||
|
||||
yunohost service add $app --description "Browse eBook in the web" --log "/var/log/$app/$app.log"
|
||||
yunohost service add $app --description="Browse eBook in the web" --log="/var/log/$app/$app.log"
|
||||
|
||||
#=================================================
|
||||
# SETUP SSOWAT
|
||||
|
@ -229,16 +230,15 @@ then
|
|||
ynh_permission_update --permission "main" --add visitors
|
||||
fi
|
||||
if [ $public_library -eq 0 ]; then
|
||||
yunohost app addaccess $app -u $admin
|
||||
ynh_permission_update --permission "main" --add $admin
|
||||
fi
|
||||
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reload nginx and start $app..." --weight=5
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
ynh_systemd_action --service_name=$app --action="start" --line_match="server on :$port" -t 30
|
||||
ynh_systemd_action --service_name=$app --action="start" --line_match="Starting Gevent server on" -t 30
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# IMPORT GENERIC HELPERS
|
||||
#=================================================
|
||||
|
||||
|
||||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
|
@ -20,7 +20,6 @@ port=$(ynh_app_setting_get $app port)
|
|||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
calibre_dir=$(ynh_app_setting_get $app calibre_dir)
|
||||
|
||||
source _common.sh
|
||||
|
||||
#=================================================
|
||||
# REMOVE SERVICE FROM ADMIN PANEL
|
||||
|
@ -88,6 +87,13 @@ then
|
|||
yunohost firewall disallow TCP $port 2>&1
|
||||
fi
|
||||
|
||||
#Restore Imagick policy
|
||||
if [ -z /etc/ImageMagick-6/policy.xml ]; then
|
||||
ynh_replace_string --match_string="<policy domain="coder" rights="read" pattern="PDF" />" \
|
||||
--replace_string="<policy domain="coder" rights="none" pattern="PDF" />" \
|
||||
--target_file="/etc/ImageMagick-6/policy.xml"
|
||||
fi
|
||||
|
||||
# Remove the log files
|
||||
ynh_script_progression --message="Removing log file..." --weight=1
|
||||
ynh_secure_remove "/var/log/$app/"
|
||||
|
|
|
@ -19,6 +19,7 @@ ynh_abort_if_errors
|
|||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Loading settings..." --weight=1
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
domain=$(ynh_app_setting_get $app domain)
|
||||
|
@ -27,6 +28,9 @@ final_path=$(ynh_app_setting_get $app final_path)
|
|||
calibre_dir=$(ynh_app_setting_get $app calibre_dir)
|
||||
is_public=$(ynh_app_setting_get $app is_public)
|
||||
port=$(ynh_app_setting_get $app port)
|
||||
|
||||
#Source common.sh required to be after var initialization as some variables are updated in it that are then used in the script
|
||||
#when initializing the conf file of the app
|
||||
source ../settings/scripts/_common.sh
|
||||
|
||||
#=================================================
|
||||
|
@ -51,7 +55,6 @@ ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
|
|||
#=================================================
|
||||
|
||||
ynh_script_progression --message="reopening port $port..." --weight=5
|
||||
yunohost firewall allow --no-upnp TCP $port 2>&1
|
||||
ynh_app_setting_set $app port $port
|
||||
|
||||
#=================================================
|
||||
|
@ -67,15 +70,13 @@ ynh_system_user_create --username=$app
|
|||
# RESTORE THE APP MAIN DIR
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restoring the app main directory..." --weight=1
|
||||
|
||||
ynh_restore_file --origin_path="$final_path"
|
||||
|
||||
#=================================================
|
||||
# RESTORE USER RIGHTS
|
||||
#=================================================
|
||||
|
||||
# Restore permissions on app files
|
||||
chown -R $app: $final_path
|
||||
chmod 740 $final_path
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC RESTORATION
|
||||
|
@ -100,13 +101,13 @@ curl https://bootstrap.pypa.io/get-pip.py | python3
|
|||
ynh_script_progression --message="Restoring the systemd configuration..." --weight=1
|
||||
|
||||
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
|
||||
systemctl enable $app.service
|
||||
systemctl enable $app.service --quiet
|
||||
|
||||
#=================================================
|
||||
# INTEGRATE SERVICE IN YUNOHOST
|
||||
#=================================================
|
||||
|
||||
yunohost service add $app --description "Browse eBook in the web" --log "/var/log/$app/$app.log"
|
||||
yunohost service add $app --description="Browse eBook in the web" --log="/var/log/$app/$app.log"
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE LOGROTATE CONFIGURATION
|
||||
|
@ -124,25 +125,44 @@ chown -R $app:$app /var/log/$app
|
|||
# RESTORE THE DATA DIRECTORY
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Restoring data directory..." --weight=2
|
||||
ynh_script_progression --message="Restoring data directory if required..." --weight=2
|
||||
# The data directory will be restored only if it exists in the backup archive
|
||||
# So only if it was backup previously.
|
||||
|
||||
if [ -d "$YNH_BACKUP_DIR/apps/$app/backup/$calibre_dir" ]
|
||||
then
|
||||
#if [ -d "$YNH_BACKUP_DIR/apps/$app/backup/$calibre_dir" ] && [ ! tail "$calibre_dir" | grep "yunohost.multimedia" ]; then
|
||||
ynh_restore_file --origin_path="$calibre_dir" --not_mandatory
|
||||
else
|
||||
if [ ! -e "$calibre_dir" ]; then
|
||||
ynh_print_info "Create calibre library folder $calibre_dir"
|
||||
mkdir -p $calibre_dir
|
||||
chown -R $app:$app $calibre_dir
|
||||
fi
|
||||
#Check if metadata.db file exists. If not create it (empty library)
|
||||
if [ ! -e "$calibre_dir"/metadata.db ]; then
|
||||
cp -a ../settings/conf/metadata.db.empty $calibre_dir/metadata.db
|
||||
chown $app:$app $calibre_dir/*
|
||||
fi
|
||||
#fi
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE MULTIMEDIA DIR IF NOT EXISTING
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restoring the multimedia directory..." --weight=5
|
||||
ynh_multimedia_build_main_dir
|
||||
ynh_multimedia_addaccess $app
|
||||
|
||||
#=================================================
|
||||
# INITIALIZE DATA IF NOT EXISTING
|
||||
#=================================================
|
||||
|
||||
if [ ! -e "$calibre_dir" ]; then
|
||||
ynh_print_info "Create calibre library folder $calibre_dir"
|
||||
mkdir -p $calibre_dir
|
||||
chown -R $app:$app $calibre_dir
|
||||
fi
|
||||
#Check if metadata.db file exists. If not create it (empty library)
|
||||
if [ ! -e "$calibre_dir"/metadata.db ]; then
|
||||
cp -a ../settings/conf/metadata.db.empty $calibre_dir/metadata.db
|
||||
chown $app:$app $calibre_dir/*
|
||||
fi
|
||||
|
||||
#===================================================
|
||||
# SPECIFIC SETUP
|
||||
#===================================================
|
||||
#Update Imagick policy as per https://github.com/janeczku/calibre-web/wiki/FAQ#what-to-do-if-cover-pictures-are-not-extracted-from-pdf-files
|
||||
ynh_replace_string --match_string="<policy domain="coder" rights="none" pattern="PDF" />" \
|
||||
--replace_string="<policy domain="coder" rights="read" pattern="PDF" />" \
|
||||
--target_file="/etc/ImageMagick-6/policy.xml"
|
||||
|
||||
|
||||
# Remove the option backup_core_only if it's in the settings.yml file
|
||||
ynh_app_setting_delete $app backup_core_only
|
||||
|
||||
|
@ -170,7 +190,7 @@ ynh_systemd_action --service_name=nginx --action=reload
|
|||
#=================================================
|
||||
ynh_script_progression --message="Starting a systemd service..." --weight=2
|
||||
|
||||
ynh_systemd_action --service_name=$app --action="start" -l "server on :$port" -t 30
|
||||
ynh_systemd_action --service_name=$app --action="start" --line_match="Starting Gevent server on" -t 30
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
|
|
|
@ -26,6 +26,10 @@ is_public=$(ynh_app_setting_get $app is_public)
|
|||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
language=$(ynh_app_setting_get $app language)
|
||||
|
||||
#Source common.sh required to be after var initialization as some variables are updated in it that are then used in the script
|
||||
#when initializing the conf file of the app
|
||||
source _common.sh
|
||||
|
||||
#Get settings from database in case it has been changed in the app and save it in settings so that it can be used back afterward
|
||||
calibre_dir=$(sqlite3 $final_path/app.db "SELECT config_calibre_dir FROM settings WHERE ID=1")
|
||||
calibre_dir=${calibre_dir%/}
|
||||
|
@ -34,8 +38,6 @@ ynh_app_setting_set $app calibre_dir $calibre_dir
|
|||
upload=$(sqlite3 $final_path/app.db "SELECT config_uploading FROM settings WHERE ID=1")
|
||||
ynh_app_setting_set $app upload $upload
|
||||
|
||||
source _common.sh
|
||||
|
||||
#=================================================
|
||||
# CHECK VERSION
|
||||
#=================================================
|
||||
|
@ -56,6 +58,7 @@ else #on est encore en 0.6.0
|
|||
current_upstream_app_version='0.6.0'
|
||||
fi
|
||||
|
||||
|
||||
#=================================================
|
||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||
#=================================================
|
||||
|
@ -79,19 +82,23 @@ ynh_script_progression --message="Stopping a systemd service..." --weight=2
|
|||
ynh_systemd_action --service_name=$app --action="stop"
|
||||
|
||||
#=================================================
|
||||
# CHECK THE PATH
|
||||
# ENSURE DOWNWARD COMPATIBILITY
|
||||
#=================================================
|
||||
ynh_script_progression --message="Downward Compatibility checks..." --weight=1
|
||||
#Close unwanted open port in firewall
|
||||
if yunohost firewall list | grep -q "\- $port$"
|
||||
then
|
||||
ynh_script_progression --message="Closing port $port as it shouldn't be open..."
|
||||
yunohost firewall disallow TCP $port 2>&1
|
||||
fi
|
||||
|
||||
# Normalize the URL path syntax
|
||||
path_url=$(ynh_normalize_url_path $path_url)
|
||||
|
||||
#=================================================
|
||||
# STANDARD UPGRADE STEPS
|
||||
#=================================================
|
||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||
#=================================================
|
||||
# If language was set delete it
|
||||
if [ ! -z "$language" ]; then
|
||||
ynh_app_setting_delete --app=$app --key=language
|
||||
fi
|
||||
|
||||
#binaries version is 0.6.0, we need to go throught upgrade to 0.6.6 so that app.db is correctly updated, otherwise database is corrupted
|
||||
#set database settings as per conf file : restart server so that app.db is regenerated, then add new ldap & log settings
|
||||
if version_gt "0.6.6" "$current_upstream_app_version" && [ "$current_upstream_package_version" == "0.6.0" ] && [ "$upgrade_type" == "UPGRADE_APP" ]; then
|
||||
ynh_script_progression --message="Upgrading from $current_upstream_app_version to 0.6.6..." --weight=50
|
||||
ynh_setup_source --dest_dir="$final_path" --source_id="app066"
|
||||
|
@ -102,13 +109,28 @@ if version_gt "0.6.6" "$current_upstream_app_version" && [ "$current_upstream_pa
|
|||
#sleep required on low spec like raspberryPi
|
||||
sleep 2s
|
||||
ynh_systemd_action --service_name=$app --action="stop"
|
||||
conf="\"UPDATE settings SET $(. <(echo -E echo $(<../conf/init_calibre_db_settings))), $(. <(echo -E echo $(<../conf/init_calibre_db_ldap_settings))) WHERE ID=1\""
|
||||
eval sqlite3 $final_path/app.db "$conf"
|
||||
current_upstream_app_version="0.6.6"
|
||||
#remove unwanted entry in settings db
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# STANDARD UPGRADE STEPS
|
||||
#=================================================
|
||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||
#=================================================
|
||||
|
||||
|
||||
|
||||
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
||||
then
|
||||
ynh_script_progression --message="Upgrading source files from $current_upstream_app_version to $new_upstream_package_version..." --weight=10
|
||||
|
||||
#Set settings constant initializer of the app
|
||||
ynh_add_config --template="../sources/patches/app-config_sql.py.patch.src" --destination="../sources/patches/app-config_sql.py.patch"
|
||||
ynh_add_config --template="../sources/patches/app-ub.py.patch.src" --destination="../sources/patches/app-ub.py.patch"
|
||||
ynh_add_config --template="../sources/patches/app-constants.py.patch.src" --destination="../sources/patches/app-constants.py.patch"
|
||||
|
||||
# Download, check integrity, uncompress and patch the source from app.src
|
||||
ynh_setup_source --dest_dir="$final_path"
|
||||
fi
|
||||
|
@ -164,31 +186,13 @@ ynh_script_progression --message="Create Multimedia dir..." --weight=1
|
|||
ynh_multimedia_build_main_dir
|
||||
ynh_multimedia_addaccess $app
|
||||
|
||||
#=================================================
|
||||
#Update database structure
|
||||
#=================================================
|
||||
ynh_script_progression --message="Update database..." --weight=1
|
||||
### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script.
|
||||
### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it.
|
||||
ynh_backup_if_checksum_is_different "$final_path/app.db"
|
||||
#Update Imagick policy as per https://github.com/janeczku/calibre-web/wiki/FAQ#what-to-do-if-cover-pictures-are-not-extracted-from-pdf-files
|
||||
ynh_script_progression --message="Update Imagick policy..." --weight=1
|
||||
|
||||
#set database settings as per conf file : restart server so that app.db is regenerated, then add new ldap & log settings
|
||||
if [ "$current_upstream_app_version" == '0.6.6' ]; then
|
||||
ynh_systemd_action --service_name=$app --action="start" --line_match="server on " --log_path="$final_path/calibre-web.log" -t 30
|
||||
else
|
||||
ynh_systemd_action --service_name=$app --action="start" --line_match="server on :$port" -t 30
|
||||
fi
|
||||
#sleep required on low spec like raspberryPi
|
||||
sleep 2s
|
||||
#remove unwanted calibre-web.log
|
||||
ynh_secure_remove --file="$final_path/calibre-web.log"
|
||||
ynh_systemd_action --service_name=$app --action="stop"
|
||||
ynh_replace_string --match_string="<policy domain="coder" rights="none" pattern="PDF" />" \
|
||||
--replace_string="<policy domain="coder" rights="read" pattern="PDF" />" \
|
||||
--target_file="/etc/ImageMagick-6/policy.xml"
|
||||
|
||||
conf="\"UPDATE settings SET $(. <(echo -E echo $(<../conf/init_calibre_db_settings))), $(. <(echo -E echo $(<../conf/init_calibre_db_ldap_settings))) WHERE ID=1\""
|
||||
eval sqlite3 $final_path/app.db "$conf"
|
||||
|
||||
# Recalculate and store the checksum of the file for the next upgrade.
|
||||
ynh_store_file_checksum "$final_path/app.db"
|
||||
|
||||
#=================================================
|
||||
# SETUP LOGROTATE
|
||||
|
@ -216,6 +220,12 @@ ynh_add_systemd_config
|
|||
# Set permissions on app files
|
||||
chown -R $app: $final_path
|
||||
|
||||
#=================================================
|
||||
# INTEGRATE SERVICE IN YUNOHOST
|
||||
#=================================================
|
||||
|
||||
yunohost service add $app --description="Browse eBook in the web" --log="/var/log/$app/$app.log"
|
||||
|
||||
#=================================================
|
||||
# SETUP SSOWAT
|
||||
#=================================================
|
||||
|
@ -247,11 +257,10 @@ ynh_systemd_action --service_name=nginx --action=reload
|
|||
#=================================================
|
||||
ynh_script_progression --message="Starting a systemd service..." --weight=2
|
||||
|
||||
ynh_systemd_action --service_name=$app --action="start" -l "server on :$port" -t 30
|
||||
ynh_systemd_action --service_name=$app --action="start" --line_match="Starting Gevent server on" -t 30
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Upgrade of $app completed" --last
|
||||
|
||||
ynh_script_progression --message="Upgrade of $app completed" --last
|
15
sources/patches/app-admin.hmtl.patch
Normal file
15
sources/patches/app-admin.hmtl.patch
Normal file
|
@ -0,0 +1,15 @@
|
|||
--- a/cps/templates/admin.html 2021-05-22 14:08:46.000000000 +0200
|
||||
+++ b/cps/templates/admin.html 2021-06-06 12:43:44.886680839 +0200
|
||||
@@ -184,11 +184,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
- {% if feature_support['updater'] %}
|
||||
- <div class="hidden" id="update_error"> <span>{{update_error}}</span></div>
|
||||
- <div class="btn btn-primary" id="check_for_update">{{_('Check for Update')}}</div>
|
||||
- <div class="btn btn-primary hidden" id="perform_update" data-toggle="modal" data-target="#StatusDialog">{{_('Perform Update')}}</div>
|
||||
- {% endif %}
|
||||
+
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,11 +0,0 @@
|
|||
--- a/cps/templates/admin.html 2020-04-18 11:48:34.000000000 +0200
|
||||
+++ b/cps/templates/admin.html 2020-04-18 18:21:39.272422475 +0200
|
||||
@@ -149,8 +149,6 @@
|
||||
</table>
|
||||
|
||||
<div class="hidden" id="update_error"> <span>{{update_error}}</span></div>
|
||||
- <div class="btn btn-default" id="check_for_update">{{_('Check for Update')}}</div>
|
||||
- <div class="btn btn-default hidden" id="perform_update" data-toggle="modal" data-target="#StatusDialog">{{_('Perform Update')}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
56
sources/patches/app-config_sql.py.patch.src
Normal file
56
sources/patches/app-config_sql.py.patch.src
Normal file
|
@ -0,0 +1,56 @@
|
|||
--- a/cps/config_sql.py 2021-06-06 11:06:52.499532119 +0200
|
||||
+++ b/cps/config_sql.py 2021-06-06 12:18:29.420244329 +0200
|
||||
@@ -63,7 +63,7 @@
|
||||
mail_server_type = Column(SmallInteger, default=0)
|
||||
mail_gmail_token = Column(JSON, default={})
|
||||
|
||||
- config_calibre_dir = Column(String)
|
||||
+ config_calibre_dir = Column(String, default='__CALIBRE_DIR__')
|
||||
config_port = Column(Integer, default=constants.DEFAULT_PORT)
|
||||
config_external_port = Column(Integer, default=constants.DEFAULT_PORT)
|
||||
config_certfile = Column(String)
|
||||
@@ -79,11 +79,11 @@
|
||||
config_theme = Column(Integer, default=0)
|
||||
|
||||
config_log_level = Column(SmallInteger, default=logger.DEFAULT_LOG_LEVEL)
|
||||
- config_logfile = Column(String)
|
||||
- config_access_log = Column(SmallInteger, default=0)
|
||||
- config_access_logfile = Column(String)
|
||||
+ config_logfile = Column(String, default='__LOG_FILE__')
|
||||
+ config_access_log = Column(SmallInteger, default=1)
|
||||
+ config_access_logfile = Column(String, default='__ACCESS_LOG_FILE__')
|
||||
|
||||
- config_uploading = Column(SmallInteger, default=0)
|
||||
+ config_uploading = Column(SmallInteger, default=__UPLOAD__)
|
||||
config_anonbrowse = Column(SmallInteger, default=0)
|
||||
config_public_reg = Column(SmallInteger, default=0)
|
||||
config_remote_login = Column(Boolean, default=False)
|
||||
@@ -107,11 +107,11 @@
|
||||
config_goodreads_api_key = Column(String)
|
||||
config_goodreads_api_secret = Column(String)
|
||||
config_register_email = Column(Boolean, default=False)
|
||||
- config_login_type = Column(Integer, default=0)
|
||||
+ config_login_type = Column(Integer, default=1)
|
||||
|
||||
config_kobo_proxy = Column(Boolean, default=False)
|
||||
|
||||
- config_ldap_provider_url = Column(String, default='example.org')
|
||||
+ config_ldap_provider_url = Column(String, default='localhost')
|
||||
config_ldap_port = Column(SmallInteger, default=389)
|
||||
config_ldap_authentication = Column(SmallInteger, default=constants.LDAP_AUTH_SIMPLE)
|
||||
config_ldap_serv_username = Column(String, default='cn=admin,dc=example,dc=org')
|
||||
@@ -120,11 +120,11 @@
|
||||
config_ldap_cacert_path = Column(String, default="")
|
||||
config_ldap_cert_path = Column(String, default="")
|
||||
config_ldap_key_path = Column(String, default="")
|
||||
- config_ldap_dn = Column(String, default='dc=example,dc=org')
|
||||
- config_ldap_user_object = Column(String, default='uid=%s')
|
||||
+ config_ldap_dn = Column(String, default='dc=yunohost,dc=org')
|
||||
+ config_ldap_user_object = Column(String, default='(&(objectClass=posixAccount)(permission=cn=calibreweb.main,ou=permission,dc=yunohost,dc=org)(uid=%s))')
|
||||
config_ldap_member_user_object = Column(String, default='') #
|
||||
config_ldap_openldap = Column(Boolean, default=True)
|
||||
- config_ldap_group_object_filter = Column(String, default='(&(objectclass=posixGroup)(cn=%s))')
|
||||
+ config_ldap_group_object_filter = Column(String, default='(&(objectClass=posixGroup)(permission=cn=%s.main,ou=permission,dc=yunohost,dc=org))')
|
||||
config_ldap_group_members_field = Column(String, default='memberUid')
|
||||
config_ldap_group_name = Column(String, default='calibreweb')
|
||||
|
26
sources/patches/app-constants.py.patch.src
Normal file
26
sources/patches/app-constants.py.patch.src
Normal file
|
@ -0,0 +1,26 @@
|
|||
--- a/cps/constants.py 2021-05-22 14:08:46.000000000 +0200
|
||||
+++ b/cps/constants.py 2021-06-06 11:02:36.060353942 +0200
|
||||
@@ -25,7 +25,7 @@
|
||||
HOME_CONFIG = os.path.isfile(os.path.join(os.path.dirname(os.path.abspath(__file__)), '.HOMEDIR'))
|
||||
|
||||
#In executables updater is not available, so variable is set to False there
|
||||
-UPDATER_AVAILABLE = True
|
||||
+UPDATER_AVAILABLE = False
|
||||
|
||||
# Base dir is parent of current file, necessary if called from different folder
|
||||
if sys.version_info < (3, 0):
|
||||
@@ -127,12 +127,12 @@
|
||||
DEFAULT_MAIL_SERVER = "mail.example.org"
|
||||
|
||||
DEFAULT_PASSWORD = "admin123" # nosec
|
||||
-DEFAULT_PORT = 8083
|
||||
+DEFAULT_PORT = __PORT__
|
||||
env_CALIBRE_PORT = os.environ.get("CALIBRE_PORT", DEFAULT_PORT)
|
||||
try:
|
||||
DEFAULT_PORT = int(env_CALIBRE_PORT)
|
||||
except ValueError:
|
||||
- print('Environment variable CALIBRE_PORT has invalid value (%s), faling back to default (8083)' % env_CALIBRE_PORT)
|
||||
+ print('Environment variable CALIBRE_PORT has invalid value (%s), faling back to default (__PORT__)' % env_CALIBRE_PORT)
|
||||
del env_CALIBRE_PORT
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
--- a/cps/static/js/main.js 2020-04-18 11:48:34.000000000 +0200
|
||||
+++ b/cps/static/js/main.js 2020-04-18 17:39:49.405631791 +0200
|
||||
@@ -308,7 +308,8 @@
|
||||
$.ajax({
|
||||
method:"get",
|
||||
dataType: "json",
|
||||
- url: path + "/../../import_ldap_users",
|
||||
+ url: window.location.pathname + "/../../import_ldap_users",
|
||||
+// url: path + "/../../import_ldap_users",
|
||||
success: function success(data) {
|
||||
$("#spinner2").hide();
|
||||
ResultText = data.text;
|
|
@ -1,34 +0,0 @@
|
|||
--- a/optional-requirements.txt 2020-05-05 20:28:10.000000000 +0200
|
||||
+++ b/optional-requirements.txt 2020-05-10 21:21:53.032894653 +0200
|
||||
@@ -1,17 +1,3 @@
|
||||
-# GDrive Integration
|
||||
-google-api-python-client==1.7.11,<1.8.0
|
||||
-gevent>=1.2.1,<1.6.0
|
||||
-greenlet>=0.4.12,<0.5.0
|
||||
-httplib2>=0.9.2,<0.18.0
|
||||
-oauth2client>=4.0.0,<4.14.0
|
||||
-uritemplate>=3.0.0,<3.1.0
|
||||
-pyasn1-modules>=0.0.8,<0.3.0
|
||||
-pyasn1>=0.1.9,<0.5.0
|
||||
-PyDrive>=1.3.1,<1.4.0
|
||||
-PyYAML>=3.12
|
||||
-rsa==3.4.2,<4.1.0
|
||||
-six>=1.10.0,<1.15.0
|
||||
-
|
||||
# goodreads
|
||||
goodreads>=0.3.2,<0.4.0
|
||||
python-Levenshtein>=0.12.0,<0.13.0
|
||||
@@ -20,12 +6,8 @@
|
||||
python-ldap>=3.0.0,<3.3.0
|
||||
Flask-SimpleLDAP>=1.4.0,<1.5.0
|
||||
|
||||
-#oauth
|
||||
-Flask-Dance>=1.4.0,<3.1.0
|
||||
-SQLAlchemy-Utils>=0.33.5,<0.37.0
|
||||
-
|
||||
# extracting metadata
|
||||
-lxml>=3.8.0,<4.6.0
|
||||
+#lxml>=3.8.0,<4.6.0
|
||||
Pillow>=4.0.0,<7.2.0
|
||||
rarfile>=2.7
|
||||
|
36
sources/patches/app-optional-requirements.txt.patch
Normal file
36
sources/patches/app-optional-requirements.txt.patch
Normal file
|
@ -0,0 +1,36 @@
|
|||
--- a/optional-requirements.txt 2021-05-22 14:08:46.000000000 +0200
|
||||
+++ b/optional-requirements.txt 2021-06-06 10:47:53.012009447 +0200
|
||||
@@ -1,22 +1,3 @@
|
||||
-# GDrive Integration
|
||||
-gevent>20.6.0,<21.2.0
|
||||
-greenlet>=0.4.17,<1.2.0
|
||||
-httplib2>=0.9.2,<0.20.0
|
||||
-oauth2client>=4.0.0,<4.1.4
|
||||
-uritemplate>=3.0.0,<3.1.0
|
||||
-pyasn1-modules>=0.0.8,<0.3.0
|
||||
-pyasn1>=0.1.9,<0.5.0
|
||||
-PyDrive2>=1.3.1,<1.9.0
|
||||
-PyYAML>=3.12
|
||||
-rsa>=3.4.2,<4.8.0
|
||||
-six>=1.10.0,<1.17.0
|
||||
-
|
||||
-# Gdrive and Gmail integration
|
||||
-google-api-python-client>=1.7.11,<2.1.0
|
||||
-
|
||||
-# Gmail
|
||||
-google-auth-oauthlib>=0.4.3,<0.5.0
|
||||
-
|
||||
# goodreads
|
||||
goodreads>=0.3.2,<0.4.0
|
||||
python-Levenshtein>=0.12.0,<0.13.0
|
||||
@@ -25,10 +6,6 @@
|
||||
python-ldap>=3.0.0,<3.4.0
|
||||
Flask-SimpleLDAP>=1.4.0,<1.5.0
|
||||
|
||||
-#oauth
|
||||
-Flask-Dance>=2.0.0,<5.1.0
|
||||
-SQLAlchemy-Utils>=0.33.5,<0.38.0
|
||||
-
|
||||
# extracting metadata
|
||||
lxml>=3.8.0,<4.7.0
|
||||
rarfile>=2.7
|
20
sources/patches/app-ub.py.patch.src
Normal file
20
sources/patches/app-ub.py.patch.src
Normal file
|
@ -0,0 +1,20 @@
|
|||
--- a/cps/ub.py 2021-06-06 10:55:46.704487817 +0200
|
||||
+++ b/cps/ub.py 2021-06-06 12:32:23.867151407 +0200
|
||||
@@ -179,7 +179,7 @@
|
||||
kindle_mail = Column(String(120), default="")
|
||||
shelf = relationship('Shelf', backref='user', lazy='dynamic', order_by='Shelf.name')
|
||||
downloads = relationship('Downloads', backref='user', lazy='dynamic')
|
||||
- locale = Column(String(2), default="en")
|
||||
+ locale = Column(String(2), default="__LANGUAGE__")
|
||||
sidebar_view = Column(Integer, default=1)
|
||||
default_language = Column(String(3), default="all")
|
||||
denied_tags = Column(String, default="")
|
||||
@@ -678,7 +678,7 @@
|
||||
# Generate User admin with admin123 password, and access to everything
|
||||
def create_admin_user(session):
|
||||
user = User()
|
||||
- user.name = "admin"
|
||||
+ user.name = "__ADMIN__"
|
||||
user.role = constants.ADMIN_USER_ROLES
|
||||
user.sidebar_view = constants.ADMIN_USER_SIDEBAR
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
--- a/cps/web.py 2020-05-05 20:28:10.000000000 +0200
|
||||
+++ b/cps/web.py 2020-05-07 08:52:47.151920968 +0200
|
||||
@@ -294,7 +294,10 @@
|
||||
if not config.db_configured and request.endpoint not in (
|
||||
'admin.basic_configuration', 'login') and '/static/' not in request.path:
|
||||
return redirect(url_for('admin.basic_configuration'))
|
||||
-
|
||||
+#Début Modif Yunohost 1/4 - Create LDAP user at login
|
||||
+ if config.config_login_type == constants.LOGIN_LDAP and services.ldap:
|
||||
+ import_ldap_users()
|
||||
+#Fin Modif Yunohost 1/4
|
||||
|
||||
@app.route('/import_ldap_users')
|
||||
def import_ldap_users():
|
||||
@@ -326,7 +329,10 @@
|
||||
log.warning("Could Not Parse LDAP User: %s", user)
|
||||
continue
|
||||
if ub.session.query(ub.User).filter(ub.User.nickname == user.lower()).first():
|
||||
- log.warning("LDAP User: %s Already in Database", user)
|
||||
+# Début Modif Yunohost 2/4 - deactivate warning for existing LDAP user (clog the log)
|
||||
+# log.warning("LDAP User: %s Already in Database", user)
|
||||
+ log.debug("LDAP User: %s Already in Database", user)
|
||||
+#Fin Modif Yunohost 2/4
|
||||
continue
|
||||
user_data = services.ldap.get_object_details(user=user,
|
||||
group=None,
|
||||
@@ -1274,6 +1280,10 @@
|
||||
if not config.db_configured:
|
||||
log.debug(u"Redirect to initial configuration")
|
||||
return redirect(url_for('admin.basic_configuration'))
|
||||
+#Début Modif Yunohost 3/4 - Create LDAP user at Login
|
||||
+ if config.config_login_type == constants.LOGIN_LDAP and services.ldap:
|
||||
+ import_ldap_users()
|
||||
+#Fin Modif Yunohost 3/4
|
||||
if current_user is not None and current_user.is_authenticated:
|
||||
return redirect(url_for('web.index'))
|
||||
if config.config_login_type == constants.LOGIN_LDAP and not services.ldap:
|
||||
@@ -1348,7 +1358,13 @@
|
||||
if feature_support['oauth'] and (config.config_login_type == 2 or config.config_login_type == 3):
|
||||
logout_oauth_user()
|
||||
log.debug(u"User logged out")
|
||||
- return redirect(url_for('web.login'))
|
||||
+#Début Modif Yunohost 4/4 - Redirect to Yunohost at exit
|
||||
+# return redirect(url_for('web.login'))
|
||||
+ if config.config_login_type == constants.LOGIN_LDAP and services.ldap:
|
||||
+ return redirect(request.host_url)
|
||||
+ else:
|
||||
+ return redirect(url_for('web.login'))
|
||||
+#Fin Modif Yunohost 4/4
|
||||
|
||||
|
||||
@web.route('/remote/login')
|
Loading…
Add table
Reference in a new issue