1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/strut_ynh.git synced 2024-09-03 20:26:33 +02:00

Merge pull request #37 from YunoHost-Apps/version-2

Version 2
This commit is contained in:
Alexandre Aubin 2023-12-04 22:28:28 +01:00 committed by GitHub
commit d70d093808
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 106 additions and 419 deletions

View file

@ -5,7 +5,8 @@ It shall NOT be edited by hand.
# Strut for YunoHost
[![Integration level](https://dash.yunohost.org/integration/strut.svg)](https://dash.yunohost.org/appci/app/strut) ![Working status](https://ci-apps.yunohost.org/ci/badges/strut.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/strut.maintain.svg)
[![Integration level](https://dash.yunohost.org/integration/strut.svg)](https://dash.yunohost.org/appci/app/strut) ![Working status](https://ci-apps.yunohost.org/ci/badges/strut.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/strut.maintain.svg)
[![Install Strut with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=strut)
*[Lire ce readme en français.](./README_fr.md)*
@ -25,24 +26,11 @@ Strut is a simple, online editor that doesn't even require registration to opera
![Screenshot of Strut](./doc/screenshots/screenshot.gif)
## Disclaimers / important information
## Limitations
No import/export from/to OpenDocument or pptx.
## Additional information
* This package doesn't contained the exact sources of the upstream https://github.com/tantaman/Strut.
Initial Strut software includes Google Analytics and is bind to Imgur to upload images. This kind of trackers or external services are not accepted by the package team of YunoHost. So this trackers are removed from sources, a pull request has been done and merged but has finally be removed from the strut upstream with no explanation. In more, Strut developers don't deliver builded versions. To build a version it needs grunt, that can't be removed easily.
To avoid to take time to build this html/js app, this package setups a builded version of Strut with the patch that remove Google Analytics and Imgur dependencies. It is a build of this version https://github.com/tantaman/Strut/commits/6761b141ee7aa622916e2d23cced84ee95618cce . So it's not the more recent version.
## Documentation and resources
* Official app website: <http://strut.io>
* Upstream app code repository: <https://github.com/MohannadNaj/Strut>
* YunoHost documentation for this app: <https://yunohost.org/app_strut>
* YunoHost Store: <https://apps.yunohost.org/app/strut>
* Report a bug: <https://github.com/YunoHost-Apps/strut_ynh/issues>
## Developer info

View file

@ -5,49 +5,32 @@ It shall NOT be edited by hand.
# Strut pour YunoHost
[![Niveau d'intégration](https://dash.yunohost.org/integration/strut.svg)](https://dash.yunohost.org/appci/app/strut) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/strut.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/strut.maintain.svg)
[![Niveau dintégration](https://dash.yunohost.org/integration/strut.svg)](https://dash.yunohost.org/appci/app/strut) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/strut.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/strut.maintain.svg)
[![Installer Strut avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=strut)
*[Read this readme in english.](./README.md)*
> *Ce package vous permet d'installer Strut rapidement et simplement sur un serveur YunoHost.
Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.*
> *Ce package vous permet dinstaller Strut rapidement et simplement sur un serveur YunoHost.
Si vous navez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment linstaller et en profiter.*
## Vue d'ensemble
Strut est un éditeur WEB de présentations fonctionnant en HTML/JS. Tout se passe en local. Il fonctinne grâce à [impress.js](http://bartaz.github.com/impress.js/#/bored).
## Vue densemble
Strut est un éditeur WEB de présentations fonctionnant en HTML/JS. Tout se passe en local.
**Version incluse :** 20220404~ynh1
**Démo :** http://strut.io/dist/
## Captures d'écran
## Captures décran
![Capture d'écran de Strut](./doc/screenshots/screenshot.gif)
## Avertissements / informations importantes
## Limitations
Pas d'import/export possible depuis ou vers des fichiers OpenDocument ou pptx.
## Information supplémentaires
* Ce package ne contient pas les sources exactes de [la version originale de Strut](https://github.com/tantaman/Strut)
Strut, à l'origine, inclut Google Analytics et est lié à Imgur pour téléverser des images. Ces pisteurs ou services externes ne sont pas acceptés par l'équipe de YunoHost.
Ils sont donc supprimés par rapport aux sources.
Une pull request pour les supprimer de leur côté a été validée et mergée mais finalement supprimée sans explication. De plus, les développeurs de Strut ne fournissent pas le logiciel compilé.
Pour compiler le logiciel, cela nécessite grunt, ce qui ne peut pas être supprimé facilement.
Pour éviter de devoir générer cette application HTML/JS, ce package créé une version compilée de Strut avec le patch qui supprime les dépendances à Google Analytics et Imgur.
Voici la version compilée https://github.com/tantaman/Strut/commits/6761b141ee7aa622916e2d23cced84ee95618cce. Ce n'est pas la version la plus récente.
![Capture décran de Strut](./doc/screenshots/screenshot.gif)
## Documentations et ressources
* Site officiel de l'app : <http://strut.io>
* Dépôt de code officiel de l'app : <https://github.com/MohannadNaj/Strut>
* Documentation YunoHost pour cette app : <https://yunohost.org/app_strut>
* Site officiel de lapp : <http://strut.io>
* Dépôt de code officiel de lapp : <https://github.com/MohannadNaj/Strut>
* YunoHost Store: <https://apps.yunohost.org/app/strut>
* Signaler un bug : <https://github.com/YunoHost-Apps/strut_ynh/issues>
## Informations pour les développeurs
@ -62,4 +45,4 @@ ou
sudo yunohost app upgrade strut -u https://github.com/YunoHost-Apps/strut_ynh/tree/testing --debug
```
**Plus d'infos sur le packaging d'applications :** <https://yunohost.org/packaging_apps>
**Plus dinfos sur le packaging dapplications :** <https://yunohost.org/packaging_apps>

View file

@ -1,24 +0,0 @@
;; Test complet
; Manifest
domain="domain.tld"
path="/path"
is_public=1
; Checks
pkg_linter=1
setup_sub_dir=1
setup_root=1
setup_nourl=0
setup_private=1
setup_public=1
upgrade=1
upgrade=1 from_commit=f6565f66d82fa077d752226f8b8267018f7b91d8
backup_restore=1
multi_instance=1
change_url=1
;;; Options
Email=ljf+ynh-strut@grimaud.me
Notification=down
;;; Upgrade options
; commit=f6565f66d82fa077d752226f8b8267018f7b91d8
name=May 27, 2018
manifest_arg=domain=DOMAIN&path=PATH&is_public=Yes&

View file

@ -1,6 +0,0 @@
SOURCE_URL=https://github.com/MohannadNaj/Strut/archive/467fcb8a6436c84f2acb8ffb31b954d5eb3655b8.tar.gz
SOURCE_SUM=d138ec3116b507d1fc3608f0c8bbb7601a68824403cb20617a80af1906bff3ab
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=strut-20160915-3.tar.gz

View file

@ -2,7 +2,7 @@
location __PATH__/ {
# Path to source
alias __FINALPATH__/ ;
alias __INSTALL_DIR__/;
index index.html;
try_files $uri $uri/ /index.html;

View file

@ -1 +1 @@
Strut est un éditeur WEB de présentations fonctionnant en HTML/JS. Tout se passe en local. Il fonctinne grâce à [impress.js](http://bartaz.github.com/impress.js/#/bored).
Strut est un éditeur WEB de présentations fonctionnant en HTML/JS. Tout se passe en local.

View file

@ -1,48 +0,0 @@
{
"name": "Strut",
"id": "strut",
"packaging_format": 1,
"description": {
"en": "Slide editor for creating impress.js presentations",
"fr": "Éditeur de diapositives permettant de créer des présentations impress.js"
},
"version": "20220404~ynh1",
"url": "http://strut.io",
"upstream": {
"license": "AGPL-3.0",
"website": "http://strut.io",
"demo": "http://strut.io/dist/",
"code": "https://github.com/MohannadNaj/Strut"
},
"license": "AGPL-3.0",
"maintainer": {
"name": "ljf",
"email": "ljf+yunohost@grimaud.me"
},
"requirements": {
"yunohost": ">= 11.0.9"
},
"multi_instance": true,
"services": [
"nginx"
],
"arguments": {
"install" : [
{
"name": "domain",
"type": "domain"
},
{
"name": "path",
"type": "path",
"example": "/strut",
"default": "/strut"
},
{
"name": "is_public",
"type": "boolean",
"default": true
}
]
}
}

51
manifest.toml Normal file
View file

@ -0,0 +1,51 @@
packaging_format = 2
id = "strut"
name = "Strut"
description.en = "Slide editor for creating impress.js presentations"
description.fr = "Éditeur de diapositives permettant de créer des présentations impress.js"
version = "20220404~ynh1"
maintainers = ["ljf"]
[upstream]
license = "AGPL-3.0"
website = "http://strut.io"
demo = "http://strut.io/dist/"
code = "https://github.com/MohannadNaj/Strut"
[integration]
yunohost = ">= 11.2"
architectures = "all"
multi_instance = true
ldap = false
sso = false
disk = "50M"
ram.build = "50M"
ram.runtime = "50M"
[install]
[install.domain]
type = "domain"
[install.path]
type = "path"
default = "/strut"
[install.init_main_permission]
type = "group"
default = "visitors"
[resources]
[resources.sources.main]
url = "https://github.com/MohannadNaj/Strut/archive/467fcb8a6436c84f2acb8ffb31b954d5eb3655b8.tar.gz"
sha256 = "d138ec3116b507d1fc3608f0c8bbb7601a68824403cb20617a80af1906bff3ab"
[resources.system_user]
[resources.install_dir]
[resources.permissions]
main.url = "/"

View file

@ -1 +1,17 @@
#!/bin/bash
#=================================================
# COMMON VARIABLES
#=================================================
#=================================================
# PERSONAL HELPERS
#=================================================
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
#=================================================
# FUTURE OFFICIAL HELPERS
#=================================================

View file

@ -9,23 +9,6 @@
# 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_print_info --message="Loading installation settings..."
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#=================================================
# DECLARE DATA AND CONF FILES TO BACKUP
#=================================================
@ -35,7 +18,7 @@ ynh_print_info --message="Declaring files to be backed up..."
# BACKUP THE APP MAIN DIR
#=================================================
ynh_backup --src_path="$final_path"
ynh_backup --src_path="$install_dir"
#=================================================
# BACKUP THE NGINX CONFIGURATION

View file

@ -8,43 +8,6 @@
# source _common.sh
source /usr/share/yunohost/helpers
ynh_abort_if_errors
#=================================================
# 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)
#=================================================
# 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
@ -53,38 +16,7 @@ fi
#=================================================
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
#=================================================
# GENERIC FINALISATION
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
ynh_change_url_nginx_config
#=================================================
# END OF SCRIPT

View file

@ -9,50 +9,6 @@
# source _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
#=================================================
# RETRIEVE ARGUMENTS FROM THE MANIFEST
#=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
is_public=$YNH_APP_ARG_IS_PUBLIC
app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
ynh_script_progression --message="Validating installation parameters..." --weight=2
final_path=/var/www/$app
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
# Register (book) web path
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=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user..." --weight=1
# Create a system user
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# STANDARD MODIFICATIONS
#=================================================
@ -60,15 +16,17 @@ ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
ynh_script_progression --message="Setting up source files..." --weight=4
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src
# For this app sources are in app subdirectory
tmp_dir=$(mktemp -d)
ynh_setup_source --dest_dir="$tmp_dir"
mv "$tmp_dir/dist" "$final_path"
# Dist is the compiled version. Other directories are source code and tools to build the program
cp -a "$tmp_dir/dist/." "$install_dir/"
ynh_secure_remove --file="$tmp_dir"
# Set permissions on app files
chown -R $app:www-data "$install_dir"
chmod -R 640 "$install_dir"
find "$install_dir" -type d -print0 | xargs -0 chmod 750
#=================================================
# NGINX CONFIGURATION
#=================================================
@ -85,36 +43,7 @@ ynh_add_nginx_config
# Imgur is deactivated on the specific upstream selected, but this text is still here
# Don't use a patch because it's minified js
ynh_replace_string --match_string="are currently uploaded to imgur.*re working on changing this" --replace_string="size is limited" --target_file="$final_path/scripts/amd-app.js"
#=================================================
# GENERIC FINALIZATION
#=================================================
# SECURE FILES AND DIRECTORIES
#=================================================
# Set permissions to app files
chown -R $app:www-data "$final_path"
chmod -R 640 "$final_path"
find "$final_path" -type d -print0 | xargs -0 chmod 750
#=================================================
# SETUP SSOWAT
#=================================================
ynh_script_progression --message="Configuring permissions..." --weight=1
# Make app public if necessary
if [ $is_public -eq 1 ]
then
ynh_permission_update --permission="main" --add="visitors"
fi
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
ynh_replace_string --match_string="are currently uploaded to imgur.*re working on changing this" --replace_string="size is limited" --target_file="$install_dir/scripts/amd-app.js"
#=================================================
# END OF SCRIPT

View file

@ -9,26 +9,6 @@
# source _common.sh
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=$app --key=domain)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#=================================================
# STANDARD REMOVE
#=================================================
# REMOVE APP MAIN DIR
#=================================================
ynh_script_progression --message="Removing app main directory..." --weight=2
# Remove the app directory securely
ynh_secure_remove --file="$final_path"
#=================================================
# REMOVE NGINX CONFIGURATION
#=================================================
@ -37,14 +17,6 @@ ynh_script_progression --message="Removing NGINX web server configuration..."
# Remove the dedicated NGINX config
ynh_remove_nginx_config
#=================================================
# REMOVE DEDICATED USER
#=================================================
ynh_script_progression --message="Removing the dedicated system user..." --weight=1
# Delete a system user
ynh_system_user_delete --username=$app
#=================================================
# END OF SCRIPT
#=================================================

View file

@ -9,32 +9,6 @@
# 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..." --weight=2
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
ynh_script_progression --message="Validating restoration parameters..." --weight=3
test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path "
#=================================================
# STANDARD RESTORATION STEPS
#=================================================
@ -44,29 +18,21 @@ ynh_script_progression --message="Restoring the NGINX web server configuration..
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#=================================================
# RECREATE THE DEDICATED USER
#=================================================
ynh_script_progression --message="Recreating the dedicated system user..." --weight=1
# Create the dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# RESTORE THE APP MAIN DIR
#=================================================
ynh_script_progression --message="Restoring the app main directory..." --weight=1
ynh_restore_file --origin_path="$final_path"
ynh_restore_file --origin_path="$install_dir"
#=================================================
# RESTORE USER RIGHTS
#=================================================
# Restore permissions on app files
chown -R $app:www-data "$final_path"
chmod -R 640 "$final_path"
find "$final_path" -type d -print0 | xargs -0 chmod 750
chown -R $app:www-data "$install_dir"
chmod -R 640 "$install_dir"
find "$install_dir" -type d -print0 | xargs -0 chmod 750
#=================================================
# GENERIC FINALIZATION

View file

@ -9,63 +9,12 @@
# source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=3
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#=================================================
# CHECK VERSION
#=================================================
upgrade_type=$(ynh_check_app_version_changed)
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=6
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
# restore it if the upgrade fails
ynh_restore_upgradebackup
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
# If final_path doesn't exist, create it
if [ -z "$final_path" ]; then
final_path=/var/www/$app
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
fi
# Cleaning legacy permissions
if ynh_legacy_permissions_exists; then
ynh_legacy_permissions_delete_all
ynh_app_setting_delete --app=$app --key=is_public
fi
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
# Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# STANDARD UPGRADE STEPS
#=================================================
@ -82,7 +31,7 @@ then
ynh_setup_source --dest_dir="$tmp_dir"
# Dist is the compiled version. Other directories are source code and tools to build the program
cp -a "$tmp_dir/dist/." "$final_path/"
cp -a "$tmp_dir/dist/." "$install_dir/"
ynh_secure_remove --file="$tmp_dir"
fi
@ -104,7 +53,7 @@ if [ "$upgrade_type" == "UPGRADE_APP" ]
then
# Imgur is deactivated on the specific upstream selected, but this text is still here
# Don't use a patch because it's minified js
ynh_replace_string --match_string="are currently uploaded to imgur.*re working on changing this" --replace_string="size is limited" --target_file="$final_path/scripts/amd-app.js"
ynh_replace_string --match_string="are currently uploaded to imgur.*re working on changing this" --replace_string="size is limited" --target_file="$install_dir/scripts/amd-app.js"
fi
#=================================================
@ -114,16 +63,9 @@ fi
#=================================================
# Set permissions on app files
chown -R $app:www-data "$final_path"
chmod -R 640 "$final_path"
find "$final_path" -type d -print0 | xargs -0 chmod 750
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
chown -R $app:www-data "$install_dir"
chmod -R 640 "$install_dir"
find "$install_dir" -type d -print0 | xargs -0 chmod 750
#=================================================
# END OF SCRIPT

3
tests.toml Normal file
View file

@ -0,0 +1,3 @@
test_format = 1.0
[default]