mirror of
https://github.com/YunoHost-Apps/calibreweb_ynh.git
synced 2024-09-03 18:16:20 +02:00
Merge pull request #110 from YunoHost-Apps/testing
Add kepubify / Kobo sync permissions
This commit is contained in:
commit
7db96d25e9
13 changed files with 140 additions and 11 deletions
|
@ -18,8 +18,6 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
|
||||||
Browsing, reading and downloading eBooks using a Calibre database
|
Browsing, reading and downloading eBooks using a Calibre database
|
||||||
|
|
||||||
**Shipped version:** 0.6.19
|
**Shipped version:** 0.6.19
|
||||||
|
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||

|

|
||||||
|
@ -57,6 +55,13 @@ or
|
||||||
chmod o+rw path/to/library
|
chmod o+rw path/to/library
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Kobo Sync
|
||||||
|
|
||||||
|
Calibre-web comes with a [synching feature with a kobo device](https://github.com/janeczku/calibre-web/wiki/Kobo-Integration). You can activate this feature from inside the app in the administration menu. You need to set port 443 as the external server port.
|
||||||
|
A dedicated permission "Kobo sync" is created by default by the app so that you don't need to expose the whole app for synching.
|
||||||
|
|
||||||
|
[Kepubify](https://pgaskin.net/kepubify/) is also set up as the default kepub converter during installation : This means that your whole library will be converted to kepub when creating the sync token for the first time (this will not affect the existing epubs). This can take a long time : For reference, I have around 10K ebooks on my calibre library and the conversion lasted around 3-4hours on a raspberry Pi 4.
|
||||||
|
|
||||||
### OPDS
|
### OPDS
|
||||||
|
|
||||||
For **OPDS** to work, most OPDS-readers will require the app must be set in public mode.
|
For **OPDS** to work, most OPDS-readers will require the app must be set in public mode.
|
||||||
|
|
11
README_fr.md
11
README_fr.md
|
@ -17,9 +17,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour
|
||||||
|
|
||||||
Explorer, lire et télécharger des eBooks à partir d'une base de données Calibre
|
Explorer, lire et télécharger des eBooks à partir d'une base de données Calibre
|
||||||
|
|
||||||
**Version incluse :** 0.6.19
|
**Version incluse :** 0.6.19
|
||||||
|
|
||||||
|
|
||||||
## Captures d'écran
|
## Captures d'écran
|
||||||
|
|
||||||

|

|
||||||
|
@ -57,6 +55,13 @@ ou
|
||||||
chmod o+rw chemin/vers/bibliothèque
|
chmod o+rw chemin/vers/bibliothèque
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Synchronisation Kobo
|
||||||
|
|
||||||
|
Calibre-web possède [une fonction de synchronisation avec les liseuses Kobo](https://github.com/janeczku/calibre-web/wiki/Kobo-Integration). Vous pouvez activer cette fonctionnalité depuis le menu d'administration de l'application. Il faut paramétrer le port 443 comme port externe du serveur.
|
||||||
|
Une permission spécifique "Kobo sync" est créée lors de l'installation de l'application afin de ne pas avoir à exposer l'application entière.
|
||||||
|
|
||||||
|
[Kepubify](https://pgaskin.net/kepubify/) est également installé en tant que convertisseur par défaut vers le format kepub : Cela signifie que l'intégralité de votre bibliothèque sera convertie en format kepub lorsque vous créerez le jeton de synchronisation pour la première fois (ceci n'affecte pas les epubs existant). Cela peut prendre un certain temps : Par exemple, j'ai environ 10K livres dans ma bibliothèque calibre, et la conversion a durée environ 3-4h sur un Raspberry Pi 4 .
|
||||||
|
|
||||||
### OPDS
|
### OPDS
|
||||||
|
|
||||||
Pour que l'**OPDS** fonctionne, la plupart des lecteurs OPDS exigent que l'application soit en accès publique.
|
Pour que l'**OPDS** fonctionne, la plupart des lecteurs OPDS exigent que l'application soit en accès publique.
|
||||||
|
|
4
conf/appkepubify.src.default
Normal file
4
conf/appkepubify.src.default
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
SOURCE_URL=https://github.com/pgaskin/kepubify/releases/download/v4.0.4/kepubify-linux-__MACH__
|
||||||
|
SOURCE_SUM=__SHA256__
|
||||||
|
SOURCE_EXTRACT=false
|
||||||
|
SOURCE_FILENAME=kepubify-linux-__MACH__
|
|
@ -29,6 +29,13 @@ or
|
||||||
chmod o+rw path/to/library
|
chmod o+rw path/to/library
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Kobo Sync
|
||||||
|
|
||||||
|
Calibre-web comes with a [synching feature with a kobo device](https://github.com/janeczku/calibre-web/wiki/Kobo-Integration). You can activate this feature from inside the app in the administration menu. You need to set port 443 as the external server port.
|
||||||
|
A dedicated permission "Kobo sync" is created by default by the app so that you don't need to expose the whole app for synching.
|
||||||
|
|
||||||
|
[Kepubify](https://pgaskin.net/kepubify/) is also set up as the default kepub converter during installation : This means that your whole library will be converted to kepub when creating the sync token for the first time (this will not affect the existing epubs). This can take a long time : For reference, I have around 10K ebooks on my calibre library and the conversion lasted around 3-4hours on a raspberry Pi 4.
|
||||||
|
|
||||||
### OPDS
|
### OPDS
|
||||||
|
|
||||||
For **OPDS** to work, most OPDS-readers will require the app must be set in public mode.
|
For **OPDS** to work, most OPDS-readers will require the app must be set in public mode.
|
||||||
|
|
|
@ -29,6 +29,13 @@ ou
|
||||||
chmod o+rw chemin/vers/bibliothèque
|
chmod o+rw chemin/vers/bibliothèque
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Synchronisation Kobo
|
||||||
|
|
||||||
|
Calibre-web possède [une fonction de synchronisation avec les liseuses Kobo](https://github.com/janeczku/calibre-web/wiki/Kobo-Integration). Vous pouvez activer cette fonctionnalité depuis le menu d'administration de l'application. Il faut paramétrer le port 443 comme port externe du serveur.
|
||||||
|
Une permission spécifique "Kobo sync" est créée lors de l'installation de l'application afin de ne pas avoir à exposer l'application entière.
|
||||||
|
|
||||||
|
[Kepubify](https://pgaskin.net/kepubify/) est également installé en tant que convertisseur par défaut vers le format kepub : Cela signifie que l'intégralité de votre bibliothèque sera convertie en format kepub lorsque vous créerez le jeton de synchronisation pour la première fois (ceci n'affecte pas les epubs existant). Cela peut prendre un certain temps : Par exemple, j'ai environ 10K livres dans ma bibliothèque calibre, et la conversion a durée environ 3-4h sur un Raspberry Pi 4 .
|
||||||
|
|
||||||
### OPDS
|
### OPDS
|
||||||
|
|
||||||
Pour que l'**OPDS** fonctionne, la plupart des lecteurs OPDS exigent que l'application soit en accès publique.
|
Pour que l'**OPDS** fonctionne, la plupart des lecteurs OPDS exigent que l'application soit en accès publique.
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"en": "Browsing, reading and downloading eBooks using a Calibre database",
|
"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"
|
"fr": "Explorer, lire et télécharger des eBooks à partir d'une base de données Calibre"
|
||||||
},
|
},
|
||||||
"version": "0.96.19~ynh1",
|
"version": "0.96.19~ynh5",
|
||||||
"url": "https://github.com/janeczku/calibre-web",
|
"url": "https://github.com/janeczku/calibre-web",
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"version": "0.6.19",
|
"version": "0.6.19",
|
||||||
|
|
|
@ -8,3 +8,35 @@ DOSSIER_MEDIA=/home/yunohost.multimedia
|
||||||
#These var are used in init_calibre_db_settings conf file
|
#These var are used in init_calibre_db_settings conf file
|
||||||
log_file=/var/log/$app/$app.log
|
log_file=/var/log/$app/$app.log
|
||||||
access_log_file=/var/log/$app/$app-access.log
|
access_log_file=/var/log/$app/$app-access.log
|
||||||
|
|
||||||
|
|
||||||
|
mach=`uname -m`
|
||||||
|
|
||||||
|
sha256_32bit=3365a848ce06d43fca8f1999eb69c6c8e0e20a56b6b8658a8466b9726adef0f5
|
||||||
|
sha256_64bit=37d7628d26c5c906f607f24b36f781f306075e7073a6fe7820a751bb60431fc5
|
||||||
|
sha256_arm=07f23275c4e674093443f01a591aa0980b0b87dbb0a10986d5001e9d56b0e1e7
|
||||||
|
sha256_arm64=5a15b8f6f6a96216c69330601bca29638cfee50f7bf48712795cff88ae2d03a3
|
||||||
|
sha256_armv6=7912901dc7b6f51e119f59cfd1f3f8ac2a5c64c42efba9d69ebf2ea8c3a7a2c9
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
case "$mach" in
|
||||||
|
"armv6l" ) mach="arm"
|
||||||
|
sha256=$sha256_arm
|
||||||
|
;;
|
||||||
|
"armv7l" ) mach="arm"
|
||||||
|
sha256=$sha256_arm
|
||||||
|
;;
|
||||||
|
"armv8l" ) mach="arm64"
|
||||||
|
sha256=$sha256_arm64
|
||||||
|
;;
|
||||||
|
"aarch64" ) mach="arm64"
|
||||||
|
sha256=$sha256_arm64
|
||||||
|
;;
|
||||||
|
"x86_64" ) mach="64bit"
|
||||||
|
sha256=$sha256_64bit
|
||||||
|
;;
|
||||||
|
* ) mach="32bit"
|
||||||
|
sha256=$sha256_32bit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
|
@ -45,6 +45,12 @@ ynh_print_info --message="Declaring files to be backed up..."
|
||||||
#This will backup the app.db file at the same time
|
#This will backup the app.db file at the same time
|
||||||
ynh_backup --src_path="$final_path"
|
ynh_backup --src_path="$final_path"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE KEPUBIFY BINARY
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_backup --src_path="/opt/kepubify"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE NGINX CONFIGURATION
|
# BACKUP THE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
|
@ -92,6 +92,11 @@ ynh_add_config --template="../sources/patches/app-constants.py.patch.src" --dest
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
ynh_setup_source "$final_path"
|
ynh_setup_source "$final_path"
|
||||||
|
|
||||||
|
#install kepubify converter
|
||||||
|
ynh_script_progression --message="Installing kepubify..." --weight=1
|
||||||
|
ynh_add_config --template="../conf/appkepubify.src.default" --destination="../conf/appkepubify.src"
|
||||||
|
ynh_setup_source --dest_dir="/opt/kepubify" --source_id="appkepubify"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -179,7 +184,8 @@ ynh_app_setting_set $app calibre_dir $calibre_dir
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Use logrotate to manage application logfile(s)
|
# Use logrotate to manage application logfile(s)
|
||||||
ynh_use_logrotate
|
ynh_use_logrotate --logfile="/var/log/$app/$app.log"
|
||||||
|
ynh_use_logrotate --logfile="/var/log/$app/$app-access.log"
|
||||||
chown -R $app:$app /var/log/$app
|
chown -R $app:$app /var/log/$app
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,6 +222,8 @@ yunohost service add $app --description="Browse eBook in the web" --log="/var/lo
|
||||||
|
|
||||||
chown -R $app: $final_path
|
chown -R $app: $final_path
|
||||||
chmod 740 $final_path
|
chmod 740 $final_path
|
||||||
|
chown -R $app: /opt/kepubify
|
||||||
|
chmod 770 /opt/kepubify/kepubify-linux-$mach
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SSOWAT
|
# SETUP SSOWAT
|
||||||
|
@ -232,6 +240,9 @@ if [ $public_library -eq 0 ]; then
|
||||||
ynh_permission_update --permission "main" --add $admin
|
ynh_permission_update --permission "main" --add $admin
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#Kobo sync permission
|
||||||
|
ynh_permission_create --permission="Kobo sync" --label="Kobo Sync" --url="$domain$path_url/kobo" --allowed="visitors" "all_users" --show_tile="false" --protected="true"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
|
@ -72,6 +72,14 @@ then
|
||||||
ynh_secure_remove --file="$calibre_dir"
|
ynh_secure_remove --file="$calibre_dir"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE KEPUBIFY DIR
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Remove the data directory if --purge option is used
|
||||||
|
ynh_script_progression --message="Removing kepubify directory..." --weight=1
|
||||||
|
ynh_secure_remove --file="/opt/kepubify"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE NGINX CONFIGURATION
|
# REMOVE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
|
@ -69,6 +69,13 @@ ynh_system_user_create --username=$app
|
||||||
ynh_script_progression --message="Restoring the app main directory..." --weight=1
|
ynh_script_progression --message="Restoring the app main directory..." --weight=1
|
||||||
ynh_restore_file --origin_path="$final_path"
|
ynh_restore_file --origin_path="$final_path"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE KEPUBIFY BINARIES
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring Kepubify..." --weight=1
|
||||||
|
ynh_restore_file --origin_path="/opt/kepubify"
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE USER RIGHTS
|
# RESTORE USER RIGHTS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
|
@ -126,6 +126,27 @@ if ynh_legacy_permissions_exists; then
|
||||||
ynh_app_setting_delete --app=$app --key=is_public
|
ynh_app_setting_delete --app=$app --key=is_public
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#Adding kepubify converter
|
||||||
|
if [ -z $(sqlite3 $final_path/app.db "SELECT config_kepubifypath FROM settings") ]; then
|
||||||
|
eval sqlite3 $final_path/app.db "\"UPDATE settings SET config_kepubifypath='/opt/kepubify/kepubify-linux-$mach' WHERE ID=1\""
|
||||||
|
fi
|
||||||
|
if [ ! -d /opt/kepubify ]; then
|
||||||
|
ynh_add_config --template="../conf/appkepubify.src.default" --destination="../conf/appkepubify.src"
|
||||||
|
ynh_setup_source --dest_dir="/opt/kepubify" --source_id="appkepubify"
|
||||||
|
chmod 770 /opt/kepubify/kepubify-linux-$mach
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the permission "kobo_sync" only if it doesn't exist.
|
||||||
|
if ! ynh_permission_exists --permission="Kobo sync"
|
||||||
|
then
|
||||||
|
# API Authorization with dedicated URL
|
||||||
|
ynh_print_warn --message="This version has now a dedicated Kobo sync authorization, please review group and permission"
|
||||||
|
ynh_permission_create --permission="Kobo sync" --label="Kobo Sync" --url="$domain$path_url/kobo" --allowed="visitors" "all_users" --show_tile="false" --protected="true"
|
||||||
|
else
|
||||||
|
##TO BE DELETED - error in testing has led to bad permission settings
|
||||||
|
ynh_permission_delete --permission="Kobo sync"
|
||||||
|
ynh_permission_create --permission="Kobo sync" --label="Kobo Sync" --url="$domain$path_url/kobo" --allowed="visitors" "all_users" --show_tile="false" --protected="true"
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD UPGRADE STEPS
|
# STANDARD UPGRADE STEPS
|
||||||
|
@ -228,7 +249,9 @@ ynh_replace_string --match_string="<policy domain="coder" rights="none" pattern=
|
||||||
|
|
||||||
# Use logrotate to manage app-specific logfile(s)
|
# Use logrotate to manage app-specific logfile(s)
|
||||||
ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
|
ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
|
||||||
ynh_use_logrotate --non-append
|
ynh_use_logrotate --logfile="/var/log/$app/$app.log" --nonappend
|
||||||
|
ynh_use_logrotate --logfile="/var/log/$app/$app-access.log" --nonappend
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -247,6 +270,7 @@ ynh_add_systemd_config
|
||||||
|
|
||||||
# Set permissions on app files
|
# Set permissions on app files
|
||||||
chown -R $app: $final_path
|
chown -R $app: $final_path
|
||||||
|
chown -R $app: /opt/kepubify
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INTEGRATE SERVICE IN YUNOHOST
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
--- a/cps/config_sql.py 2022-08-12 13:48:46.980029500 +0200
|
--- a/cps/config_sql.py 2022-11-10 20:01:25.834187046 +0100
|
||||||
+++ b/cps/config_sql.py 2022-08-12 13:51:56.223434627 +0200
|
+++ b/cps/config_sql.py 2022-11-09 23:48:08.351335088 +0100
|
||||||
@@ -62,7 +62,7 @@
|
@@ -62,7 +62,7 @@
|
||||||
mail_server_type = Column(SmallInteger, default=0)
|
mail_server_type = Column(SmallInteger, default=0)
|
||||||
mail_gmail_token = Column(JSON, default={})
|
mail_gmail_token = Column(JSON, default={})
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
config_ldap_port = Column(SmallInteger, default=389)
|
config_ldap_port = Column(SmallInteger, default=389)
|
||||||
config_ldap_authentication = Column(SmallInteger, default=constants.LDAP_AUTH_SIMPLE)
|
config_ldap_authentication = Column(SmallInteger, default=constants.LDAP_AUTH_SIMPLE)
|
||||||
config_ldap_serv_username = Column(String, default='cn=admin,dc=example,dc=org')
|
config_ldap_serv_username = Column(String, default='cn=admin,dc=example,dc=org')
|
||||||
@@ -122,11 +122,11 @@
|
@@ -122,15 +122,15 @@
|
||||||
config_ldap_cacert_path = Column(String, default="")
|
config_ldap_cacert_path = Column(String, default="")
|
||||||
config_ldap_cert_path = Column(String, default="")
|
config_ldap_cert_path = Column(String, default="")
|
||||||
config_ldap_key_path = Column(String, default="")
|
config_ldap_key_path = Column(String, default="")
|
||||||
|
@ -54,3 +54,16 @@
|
||||||
config_ldap_group_members_field = Column(String, default='memberUid')
|
config_ldap_group_members_field = Column(String, default='memberUid')
|
||||||
config_ldap_group_name = Column(String, default='calibreweb')
|
config_ldap_group_name = Column(String, default='calibreweb')
|
||||||
|
|
||||||
|
- config_kepubifypath = Column(String, default=None)
|
||||||
|
+ config_kepubifypath = Column(String, default='/opt/kepubify/kepubify-linux-__MACH__')
|
||||||
|
config_converterpath = Column(String, default=None)
|
||||||
|
config_calibre = Column(String)
|
||||||
|
config_rarfile_location = Column(String, default=None)
|
||||||
|
@@ -269,6 +269,7 @@
|
||||||
|
def set_from_dictionary(self, dictionary, field, convertor=None, default=None, encode=None):
|
||||||
|
"""Possibly updates a field of this object.
|
||||||
|
The new value, if present, is grabbed from the given dictionary, and optionally passed through a convertor.
|
||||||
|
+
|
||||||
|
:returns: `True` if the field has changed value
|
||||||
|
"""
|
||||||
|
new_value = dictionary.get(field, default)
|
||||||
|
|
Loading…
Add table
Reference in a new issue