mirror of
https://github.com/YunoHost-Apps/lufi_ynh.git
synced 2024-09-03 19:36:28 +02:00
commit
6cc9510dd1
16 changed files with 644 additions and 582 deletions
30
README.md
30
README.md
|
@ -1,12 +1,12 @@
|
||||||
# Lufi for YunoHost
|
# Lufi for YunoHost
|
||||||
|
|
||||||
[![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi)
|
[![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi) ![](https://ci-apps.yunohost.org/ci/badges/lufi.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/lufi.maintain.svg)
|
||||||
[![Install lufi with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=lufi)
|
[![Install Lufi with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=lufi)
|
||||||
|
|
||||||
*[Lire ce readme en français.](./README_fr.md)*
|
*[Lire ce readme en français.](./README_fr.md)*
|
||||||
|
|
||||||
> *This package allow you to install lufi quickly and simply on a YunoHost server.
|
> *This package allows you to install Lufi 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.*
|
If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.*
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
It stores files and allows you to download them.
|
It stores files and allows you to download them.
|
||||||
|
@ -28,7 +28,7 @@ The encryption key part of the URL is a anchor (Cf. [Fragment Identifier](https:
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
How to configure this app: a plain file with SSH.
|
How to configure this app: a plain file at `/var/www/lufi/lufi.conf` with SSH.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
@ -36,30 +36,31 @@ How to configure this app: a plain file with SSH.
|
||||||
|
|
||||||
## YunoHost specific features
|
## YunoHost specific features
|
||||||
|
|
||||||
#### Multi-users support
|
#### Multi-user support
|
||||||
|
|
||||||
Are LDAP and HTTP auth supported? **Yes**
|
Are LDAP and HTTP auth supported? **Yes**
|
||||||
Can the app be used by multiple users? **Yes**
|
Can the app be used by multiple users? **Yes**
|
||||||
|
|
||||||
#### Supported architectures
|
#### Supported architectures
|
||||||
|
|
||||||
* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/lufi%20%28Community%29.svg)](https://ci-apps.yunohost.org/ci/apps/lufi/)
|
* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/lufi%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/lufi/)
|
||||||
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/lufi%20%28Community%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/lufi/)
|
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/lufi%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/lufi/)
|
||||||
* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/lufi%20%28Community%29.svg)](https://ci-stretch.nohost.me/ci/apps/lufi/)
|
|
||||||
|
**More info on the documentation page:**
|
||||||
|
https://yunohost.org/packaging_apps
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
|
|
||||||
* Report a bug: https://github.com/YunoHost-Apps/lufi_ynh/issues
|
* Report a bug: https://github.com/YunoHost-Apps/lufi_ynh/issues
|
||||||
* App website: https://framagit.org/fiat-tux/hat-softwares/lufi
|
* Upstream app repository: https://framagit.org/fiat-tux/hat-softwares/lufi
|
||||||
* YunoHost website: https://yunohost.org/
|
* YunoHost website: https://yunohost.org/
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Developers info
|
Developer info
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
**Only if you want to use a testing branch for coding, instead of merging directly into master.**
|
Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/lufi_ynh/tree/testing).
|
||||||
Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/lufi_ynh/tree/testing).
|
|
||||||
|
|
||||||
To try the testing branch, please proceed like that.
|
To try the testing branch, please proceed like that.
|
||||||
```
|
```
|
||||||
|
@ -67,6 +68,3 @@ sudo yunohost app install https://github.com/YunoHost-Apps/lufi_ynh/tree/testing
|
||||||
or
|
or
|
||||||
sudo yunohost app upgrade lufi -u https://github.com/YunoHost-Apps/lufi_ynh/tree/testing --debug
|
sudo yunohost app upgrade lufi -u https://github.com/YunoHost-Apps/lufi_ynh/tree/testing --debug
|
||||||
```
|
```
|
||||||
|
|
||||||
**More information on the documentation page:**
|
|
||||||
https://yunohost.org/packaging_apps
|
|
||||||
|
|
78
README_fr.md
78
README_fr.md
|
@ -1,12 +1,12 @@
|
||||||
# Lufi pour YunoHost
|
# Lufi pour YunoHost
|
||||||
|
|
||||||
[![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi)
|
[![Niveau d'intégration](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi) ![](https://ci-apps.yunohost.org/ci/badges/lufi.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/lufi.maintain.svg)
|
||||||
[![Install lufi with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=lufi)
|
[![Installer Lufi avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=lufi)
|
||||||
|
|
||||||
*[Read this readme in english.](./README.md)*
|
*[Read this readme in english.](./README.md)*
|
||||||
|
|
||||||
> *Ce package vous permet d'installer lufi rapidement et simplement sur un serveur Yunohost.
|
> *Ce package vous permet d'installer Lufi 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.*
|
Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.*
|
||||||
|
|
||||||
## Vue d'ensemble
|
## Vue d'ensemble
|
||||||
Il stocke vos fichiers et vous permet de les télécharger.
|
Il stocke vos fichiers et vous permet de les télécharger.
|
||||||
|
@ -35,29 +35,27 @@ Comment configurer cette application: un fichier brut en SSH.
|
||||||
|
|
||||||
## Caractéristiques spécifiques YunoHost
|
## Caractéristiques spécifiques YunoHost
|
||||||
|
|
||||||
#### Support multi-utilisateurs
|
#### Support multi-utilisateur
|
||||||
|
|
||||||
L'authentification LDAP et HTTP est-elle prise en charge? **Oui**
|
* L'authentification LDAP et HTTP est-elle prise en charge ? **Oui**
|
||||||
L'application peut-elle être utilisée par plusieurs utilisateurs? **Oui**
|
* L'application peut-elle être utilisée par plusieurs utilisateurs ? **Oui**
|
||||||
|
|
||||||
#### Supported architectures
|
#### Architectures supportées
|
||||||
|
|
||||||
* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/lufi%20%28Community%29.svg)](https://ci-apps.yunohost.org/ci/apps/lufi/)
|
* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/lufi%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/lufi/)
|
||||||
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/lufi%20%28Community%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/lufi/)
|
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/lufi%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/lufi/)
|
||||||
* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/lufi%20%28Community%29.svg)](https://ci-stretch.nohost.me/ci/apps/lufi/)
|
|
||||||
|
|
||||||
## Links
|
## Liens
|
||||||
|
|
||||||
* Signaler un bug: https://github.com/YunoHost-Apps/lufi_ynh/issues
|
* Signaler un bug : https://github.com/YunoHost-Apps/lufi_ynh/issues
|
||||||
* Site de l'application: https://framagit.org/fiat-tux/hat-softwares/lufi
|
* Dépôt de l'application principale : https://framagit.org/fiat-tux/hat-softwares/lufi
|
||||||
* Site web YunoHost: https://yunohost.org/
|
* Site web YunoHost : https://yunohost.org/
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Informations pour les développeurs
|
Informations pour les développeurs
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
**Seulement si vous voulez utiliser une branche de test pour le codage, au lieu de fusionner directement dans la banche principale.**
|
|
||||||
Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/lufi_ynh/tree/testing).
|
Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/lufi_ynh/tree/testing).
|
||||||
|
|
||||||
Pour essayer la branche testing, procédez comme suit.
|
Pour essayer la branche testing, procédez comme suit.
|
||||||
|
@ -66,51 +64,3 @@ sudo yunohost app install https://github.com/YunoHost-Apps/lufi_ynh/tree/testing
|
||||||
ou
|
ou
|
||||||
sudo yunohost app upgrade lufi -u https://github.com/YunoHost-Apps/lufi_ynh/tree/testing --debug
|
sudo yunohost app upgrade lufi -u https://github.com/YunoHost-Apps/lufi_ynh/tree/testing --debug
|
||||||
```
|
```
|
||||||
|
|
||||||
**Plus d'informations sur la page de documentation:**
|
|
||||||
https://yunohost.org/packaging_apps
|
|
||||||
|
|
||||||
# Lufi for YunoHost
|
|
||||||
|
|
||||||
[![Latest Version](https://img.shields.io/badge/version-_--_-green.svg?style=flat)](https://github.com/YunoHost-Apps/lufi_ynh/releases)
|
|
||||||
[![Status](https://img.shields.io/badge/status-working-yellow.svg?style=flat)](https://github.com/YunoHost-Apps/lufi_ynh/milestones)
|
|
||||||
[![Dependencies](https://img.shields.io/badge/dependencies-includes-lightgrey.svg?style=flat)](https://github.com/YunoHost-Apps/lufi_ynh#dependencies)
|
|
||||||
[![GitHub license](https://img.shields.io/badge/license-GPLv3-blue.svg?style=flat)](https://raw.githubusercontent.com/YunoHost-Apps/lufi_ynh/master/LICENSE)
|
|
||||||
[![Yunohost version](https://img.shields.io/badge/yunohost-2.4.2_tested-orange.svg?style=flat)](https://github.com/YunoHost/yunohost)
|
|
||||||
[![GitHub issues](https://img.shields.io/github/issues/YunoHost-Apps/lufi_ynh.svg?style=flat)](https://github.com/YunoHost-Apps/lufi_ynh/issues)
|
|
||||||
|
|
||||||
## Lufi c'est quoi ?
|
|
||||||
|
|
||||||
Il stocke vos fichiers et vous permet de les télécharger.
|
|
||||||
|
|
||||||
Est-ce tout? Non. Tous les fichiers sont cryptés par le navigateur! Non chiffré. Ça ne marche pas. L'administrateur de l'instance Lufi ne pourra pas voir quel est votre administrateur réseau ou votre FAI.
|
|
||||||
|
|
||||||
La clé de cryptage est une ancre (voir Fragment Identifier), ce qui signifie que cette partie n'est traitée que par le client et n'atteint pas le serveur. :-)
|
|
||||||
|
|
||||||
Source: [Documentation de Lufi](https://framagit.org/luc/lufi/wikis/home)
|
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
`$ sudo yunohost app install https://github.com/YunoHost-Apps/lufi_ynh.git`
|
|
||||||
|
|
||||||
### Mise à jour
|
|
||||||
|
|
||||||
`$ sudo yunohost app upgrade --verbose lufi -u https://github.com/YunoHost-Apps/lufi_ynh.git`
|
|
||||||
|
|
||||||
## What is Lufi?
|
|
||||||
|
|
||||||
It stores files and allows you to download them.
|
|
||||||
|
|
||||||
Is that all? No. All the files are encrypted by the browser! It means that your files never leave your computer unencrypted. The administrator of the Lufi instance you use will not be able to see what is in your file, neither will your network administrator, or your ISP.
|
|
||||||
|
|
||||||
The encryption key part of the URL is a anchor (Cf. Fragment Identifier), that means this part is only processed client-side and does not reach the server. :-)
|
|
||||||
|
|
||||||
Source: [Lufi documentation](https://framagit.org/luc/lufi/wikis/home)
|
|
||||||
|
|
||||||
### Install
|
|
||||||
|
|
||||||
`$ sudo yunohost app install https://github.com/YunoHost-Apps/lufi_ynh.git`
|
|
||||||
|
|
||||||
### Update
|
|
||||||
|
|
||||||
`$ sudo yunohost app upgrade --verbose lufi -u https://github.com/YunoHost-Apps/lufi_ynh.git`
|
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
; Manifest
|
; Manifest
|
||||||
domain="domain.tld" (DOMAIN)
|
domain="domain.tld" (DOMAIN)
|
||||||
path="/path" (PATH)
|
path="/path" (PATH)
|
||||||
is_public="Yes" (PUBLIC|public=Yes|private=No)
|
|
||||||
max_file_size=100
|
max_file_size=100
|
||||||
|
is_public="Yes" (PUBLIC|public=Yes|private=No)
|
||||||
admin="john" (USER)
|
admin="john" (USER)
|
||||||
; Checks
|
; Checks
|
||||||
pkg_linter=1
|
pkg_linter=1
|
||||||
|
@ -14,20 +14,21 @@
|
||||||
setup_private=1
|
setup_private=1
|
||||||
setup_public=1
|
setup_public=1
|
||||||
upgrade=1
|
upgrade=1
|
||||||
|
# 0.01
|
||||||
upgrade=1 from_commit=1d53901957efcf8861b10efc8d3f081cadd2ba9e
|
upgrade=1 from_commit=1d53901957efcf8861b10efc8d3f081cadd2ba9e
|
||||||
|
# 0.03.5
|
||||||
|
upgrade=1 from_commit=6e05053ee90370e659d16abd9dcd9220e9e497f5
|
||||||
backup_restore=1
|
backup_restore=1
|
||||||
multi_instance=1
|
multi_instance=1
|
||||||
incorrect_path=1
|
# This test is no longer necessary since the version 2.7 (PR: https://github.com/YunoHost/yunohost/pull/304), you can still do it if your app could be installed with this version.
|
||||||
|
# incorrect_path=1
|
||||||
port_already_use=1 (8095)
|
port_already_use=1 (8095)
|
||||||
change_url=1
|
change_url=1
|
||||||
;;; Levels
|
;;; Levels
|
||||||
Level 1=auto
|
# If the level 5 (Package linter) is forced to 1. Please add justifications here.
|
||||||
Level 2=auto
|
|
||||||
Level 3=auto
|
|
||||||
Level 4=1
|
|
||||||
Level 5=auto
|
Level 5=auto
|
||||||
Level 6=auto
|
;;; Upgrade options
|
||||||
Level 7=auto
|
; commit=1d53901957efcf8861b10efc8d3f081cadd2ba9e
|
||||||
Level 8=0
|
name=0.01
|
||||||
Level 9=0
|
; commit=6e05053ee90370e659d16abd9dcd9220e9e497f5
|
||||||
Level 10=0
|
name=0.03.5
|
||||||
|
|
|
@ -3,3 +3,4 @@ SOURCE_SUM=aeb4bb4e7b4d5a7a12a7b8a49578e98c4ef8b6cb606b266b4531767a6ea6debe
|
||||||
SOURCE_SUM_PRG=sha256sum
|
SOURCE_SUM_PRG=sha256sum
|
||||||
SOURCE_FORMAT=tar.gz
|
SOURCE_FORMAT=tar.gz
|
||||||
SOURCE_IN_SUBDIR=true
|
SOURCE_IN_SUBDIR=true
|
||||||
|
SOURCE_FILENAME=
|
||||||
|
|
|
@ -32,6 +32,10 @@
|
||||||
# optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT
|
# optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT
|
||||||
secrets => ['__SECRET__'],
|
secrets => ['__SECRET__'],
|
||||||
|
|
||||||
|
# Name of the instance, displayed next to the logo
|
||||||
|
# optional, default is Lufi
|
||||||
|
#instance_name => 'Lufi',
|
||||||
|
|
||||||
# choose a theme. See the available themes in `themes` directory
|
# choose a theme. See the available themes in `themes` directory
|
||||||
# optional, default is 'default'
|
# optional, default is 'default'
|
||||||
#theme => 'default',
|
#theme => 'default',
|
||||||
|
@ -71,7 +75,7 @@
|
||||||
# optional, default is 0 (no limit)
|
# optional, default is 0 (no limit)
|
||||||
default_delay => 365,
|
default_delay => 365,
|
||||||
|
|
||||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
# Number of days after which the files will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||||
# a warning message will be displayed on homepage
|
# a warning message will be displayed on homepage
|
||||||
# optional, default is 0 (no limit)
|
# optional, default is 0 (no limit)
|
||||||
#max_delay => 0,
|
#max_delay => 0,
|
||||||
|
@ -97,10 +101,38 @@
|
||||||
# optional, no domains allowed by default
|
# optional, no domains allowed by default
|
||||||
#allowed_domains => ['http://1.example.com', 'http://2.example.com'],
|
#allowed_domains => ['http://1.example.com', 'http://2.example.com'],
|
||||||
|
|
||||||
# if set, the shortened URLs will use this domain
|
# Define a path to the upload directory, where the uploaded files will be stored
|
||||||
# optional
|
# You can define it relative to lufi directory or set an absolute path
|
||||||
|
# Remember that it has to be in a directory writable by Lufi user
|
||||||
|
# DO NOT CHANGE THIS IF FILES HAVE BEEN ALREADY UPLOADED: THEY WILL NOT BE DOWNLOADABLE ANYMORE
|
||||||
|
# optional, default is 'files'
|
||||||
|
#upload_dir => 'files',
|
||||||
|
|
||||||
|
# allow to add a password on files, asked before allowing to download files
|
||||||
|
# optional, default is 0
|
||||||
|
allow_pwd_on_files => 1,
|
||||||
|
|
||||||
|
# force all files to be in "Burn after reading mode"
|
||||||
|
# optional, default is 0
|
||||||
|
#force_burn_after_reading => 0,
|
||||||
|
|
||||||
|
# if set, the files' URLs will always use this domain
|
||||||
|
# optional, no default
|
||||||
#fixed_domain => 'example.org',
|
#fixed_domain => 'example.org',
|
||||||
|
|
||||||
|
# abuse reasons
|
||||||
|
# set an integer in the abuse field of a file in the database and it will not be downloadable anymore
|
||||||
|
# the reason will be displayed to the downloader, according to the reasons you will configure here.
|
||||||
|
# optional, no default
|
||||||
|
#abuse => {
|
||||||
|
# 0 => 'Copyright infringment',
|
||||||
|
# 1 => 'Illegal content',
|
||||||
|
#},
|
||||||
|
|
||||||
|
###############
|
||||||
|
# Mail settings
|
||||||
|
###############
|
||||||
|
|
||||||
# Mail configuration
|
# Mail configuration
|
||||||
# See https://metacpan.org/pod/Mojolicious::Plugin::Mail#EXAMPLES
|
# See https://metacpan.org/pod/Mojolicious::Plugin::Mail#EXAMPLES
|
||||||
# Optional, default to sendmail method with no arguments
|
# Optional, default to sendmail method with no arguments
|
||||||
|
@ -114,6 +146,10 @@
|
||||||
# Optional, default to no-reply@lufi.io
|
# Optional, default to no-reply@lufi.io
|
||||||
#mail_sender => 'no-reply@lufi.io',
|
#mail_sender => 'no-reply@lufi.io',
|
||||||
|
|
||||||
|
#############
|
||||||
|
# DB settings
|
||||||
|
#############
|
||||||
|
|
||||||
# choose what database you want to use
|
# choose what database you want to use
|
||||||
# valid choices are sqlite, postgresql and mysql (all lowercase)
|
# valid choices are sqlite, postgresql and mysql (all lowercase)
|
||||||
# optional, default is sqlite
|
# optional, default is sqlite
|
||||||
|
@ -156,12 +192,9 @@
|
||||||
# #max_connections => 5,
|
# #max_connections => 5,
|
||||||
#},
|
#},
|
||||||
|
|
||||||
# define a path to the upload directory, where the uploaded files will be stored
|
#############################################
|
||||||
# you can define it relative to lufi directory or set an absolute path
|
# LDAP settings (authentication and features)
|
||||||
# remember that it has to be in a directory writable by Lufi user
|
#############################################
|
||||||
# DO NOT CHANGE THIS IF FILES HAVE BEEN ALREADY UPLOADED: THEY WILL NOT BE DOWNLOADABLE ANYMORE
|
|
||||||
# optional, default is 'files'
|
|
||||||
#upload_dir => 'files',
|
|
||||||
|
|
||||||
# set `ldap` if you want that only authenticated users can upload files
|
# set `ldap` if you want that only authenticated users can upload files
|
||||||
# please note that everybody can still download files
|
# please note that everybody can still download files
|
||||||
|
@ -181,36 +214,71 @@
|
||||||
__IS_PUBLIC__ #}
|
__IS_PUBLIC__ #}
|
||||||
__IS_PUBLIC__},
|
__IS_PUBLIC__},
|
||||||
|
|
||||||
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
|
||||||
# see 'man htpasswd' to know how to create such file
|
|
||||||
#htpasswd => 'lufi.passwd',
|
|
||||||
|
|
||||||
# if you've set ldap above, the session will last `session_duration` seconds before
|
# if you've set ldap above, the session will last `session_duration` seconds before
|
||||||
# the user needs to reauthenticate
|
# the user needs to reauthenticate
|
||||||
# optional, default is 3600
|
# optional, default is 3600
|
||||||
#session_duration => 3600,
|
#session_duration => 3600,
|
||||||
|
|
||||||
# allow to add a password on files, asked before allowing to download files
|
# If you use `ldap` for authentication, you can map some attributes from LDAP to be able to access them in Lufi
|
||||||
# optional, default is 0
|
# Those attributes will be accessible with:
|
||||||
allow_pwd_on_files => 1,
|
# $c->current_user->{lufi_attribute_name} in Lufi backend files (all that is in `lib` directory)
|
||||||
|
# <%= $self->current_user->{lufi_attribute_name} %> in templates files (in `themes` directory)
|
||||||
# force all files to be in "Burn after reading mode"
|
#
|
||||||
# optional, default is 0
|
# Define the attributes like this: `lufi_attribute_name => 'LDAP_attribute_name'`
|
||||||
#force_burn_after_reading => 0,
|
# Note that you can’t use `username` as a Lufi attribute name: this name is reserved and will contain the login of the user
|
||||||
|
|
||||||
# if set, the files' URLs will always use this domain
|
|
||||||
# optional, no default
|
# optional, no default
|
||||||
#fixed_domain => 'example.org',
|
#ldap_map_attr => {
|
||||||
|
# displayname => 'cn',
|
||||||
# abuse reasons
|
# mail => 'mail'
|
||||||
# set an integer in the abuse field of a file in the database and it will not be downloadable anymore
|
|
||||||
# the reason will be displayed to the downloader, according to the reasons you will configure here.
|
|
||||||
# optional, no default
|
|
||||||
#abuse => {
|
|
||||||
# 0 => 'Copyright infringment',
|
|
||||||
# 1 => 'Illegal content',
|
|
||||||
#},
|
#},
|
||||||
|
|
||||||
|
# When using LDAP authentication, LDAP users can invite people (by mail) to use Lufi to send them files without
|
||||||
|
# being authenticated.
|
||||||
|
# This is where you configure the behavior of the invitations.
|
||||||
|
# You may need to fetch some attributes from LDAP to use some invitations settings. See `ldap_map_attr` above.
|
||||||
|
# optional, no default
|
||||||
|
#invitations => {
|
||||||
|
# # The name of the key set in `ldap_map_attr` (above) that corresponds to the mail of the LDAP user
|
||||||
|
# # optional, default is `mail`
|
||||||
|
# mail_attr => 'mail',
|
||||||
|
# # The `From` header of invitation mail can be the mail of the LDAP user
|
||||||
|
# # Be sure to have a mail system that will correctly send the mail from your users! (DKIM, SPF…)
|
||||||
|
# # To enable this feature, set it to 1
|
||||||
|
# # optional, disabled by default
|
||||||
|
# send_invitation_with_ldap_user_mail => 1,
|
||||||
|
# # The user is able to set an expiration delay for the invitation.
|
||||||
|
# # This expiration delay can’t be more than this setting (in days).
|
||||||
|
# # optional, default is 30 days
|
||||||
|
# max_invitation_expiration_delay => 30,
|
||||||
|
# # Once the guest has submitted his files, he has an additional period of time to submit forgotten files.
|
||||||
|
# # You can set that additional period of time in minutes here.
|
||||||
|
# # To disable that feature, set it to 0 or less
|
||||||
|
# # optional, default is 10 minutes
|
||||||
|
# max_additional_period => 10,
|
||||||
|
# # Lufi follows privacy-by-design, so, by default, no files URLs (with the decode secret) are stored in database.
|
||||||
|
# # However, the concern is different for this case. Storing files URLs makes users able to retrieve the guests’ sent files
|
||||||
|
# # from their `invitations` page.
|
||||||
|
# # Set to 1 to store guests’ files URLs in database
|
||||||
|
# # optional, default is 0 (disabled)
|
||||||
|
# save_files_url_in_db => 0,
|
||||||
|
# # Users can resend the invitation to their guest. This does not extend the invitation’s expiration delay unless you
|
||||||
|
# # set this option to 1.
|
||||||
|
# # optional, default is 0 (disabled)
|
||||||
|
# extend_invitation_expiration_on_resend => 0,
|
||||||
|
#},
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# Htpasswd authentication
|
||||||
|
#########################
|
||||||
|
|
||||||
|
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
||||||
|
# see 'man htpasswd' to know how to create such file
|
||||||
|
#htpasswd => 'lufi.passwd',
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# HTTP Headers settings
|
||||||
|
#######################
|
||||||
|
|
||||||
# Content-Security-Policy header that will be sent by Lufi
|
# Content-Security-Policy header that will be sent by Lufi
|
||||||
# Set to '' to disable CSP header
|
# Set to '' to disable CSP header
|
||||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||||
|
@ -255,11 +323,11 @@
|
||||||
|
|
||||||
# default action when files directory is over max_total_size (used with script/lufi cron watch)
|
# default action when files directory is over max_total_size (used with script/lufi cron watch)
|
||||||
# valid values are 'warn', 'stop-upload' and 'delete'
|
# valid values are 'warn', 'stop-upload' and 'delete'
|
||||||
# please, see readme
|
# Please, see README.md
|
||||||
# optional, default is 'warn'
|
# optional, default is 'warn'
|
||||||
#policy_when_full => 'warn',
|
#policy_when_full => 'warn',
|
||||||
|
|
||||||
# images which are not viewed since delete_no_longer_viewed_files days will be deleted by the cron cleanfiles task
|
# Files which are not viewed since delete_no_longer_viewed_files days will be deleted by the cron cleanfiles task
|
||||||
# if delete_no_longer_viewed_files is not set, the no longer viewed files will NOT be deleted
|
# if delete_no_longer_viewed_files is not set, the no longer viewed files will NOT be deleted
|
||||||
# optional, no default
|
# optional, no default
|
||||||
#delete_no_longer_viewed_files => 90,
|
#delete_no_longer_viewed_files => 90,
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
||||||
location __PATH__/ {
|
location __PATH__/ {
|
||||||
|
|
||||||
if ($scheme = http) {
|
if ($scheme = http) {
|
||||||
rewrite ^ https://$server_name$request_uri? permanent;
|
rewrite ^ https://$server_name$request_uri? permanent;
|
||||||
}
|
}
|
||||||
|
|
46
issue_template.md
Normal file
46
issue_template.md
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us debug, it would be nice to fill the template as much as you can to help us, help you and help us all.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**How to post a meaningful bug report**
|
||||||
|
1. *Read this whole template first.*
|
||||||
|
2. *Determine if you are on the right place:*
|
||||||
|
- *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change url...), you are on the right place!*
|
||||||
|
- *Otherwise, the issue may be due to lufi itself. Refer to its documentation or repository for help.*
|
||||||
|
- *If you have a doubt, post here, we will figure it out together.*
|
||||||
|
3. *Delete the italic comments as you write over them below, and remove this guide.*
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
*A clear and concise description of what the bug is.*
|
||||||
|
|
||||||
|
**Versions**
|
||||||
|
- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...*
|
||||||
|
- YunoHost version: x.x.x
|
||||||
|
- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...*
|
||||||
|
- Are you in a special context or did you perform some particular tweaking on your YunoHost instance ?: *no / yes*
|
||||||
|
- If yes, please explain:
|
||||||
|
- Using, or trying to install package version/branch:
|
||||||
|
- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`*
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
*Steps to reproduce the behavior.*
|
||||||
|
- *If you performed a command from the CLI, the command itself is enough. For example:*
|
||||||
|
```sh
|
||||||
|
sudo yunohost app install lufi
|
||||||
|
```
|
||||||
|
- *If you used the webadmin, please perform the equivalent command from the CLI first.*
|
||||||
|
- *If the error occurs in your browser, explain what you did:*
|
||||||
|
1. *Go to '...'*
|
||||||
|
2. *Click on '....'*
|
||||||
|
3. *Scroll down to '....'*
|
||||||
|
4. *See error*
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.*
|
||||||
|
|
||||||
|
**Logs**
|
||||||
|
*After a failed command, YunoHost makes the log available to you, but also to others, thanks to `yunohost log display [log name] --share`. The actual command, with the correct log name, is displayed at the end of the failed attempt in the CLI. Execute it and copy here the share link it outputs.*
|
||||||
|
*If applicable and useful, add screenshots to help explain your problem.*
|
|
@ -2,9 +2,6 @@
|
||||||
"name": "Lufi",
|
"name": "Lufi",
|
||||||
"id": "lufi",
|
"id": "lufi",
|
||||||
"packaging_format": 1,
|
"packaging_format": 1,
|
||||||
"requirements": {
|
|
||||||
"yunohost": ">= 3.2.2"
|
|
||||||
},
|
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Self hosting files and sharing anonymous application",
|
"en": "Self hosting files and sharing anonymous application",
|
||||||
"fr": "Application d'hébergement et de partage de fichiers anonyme"
|
"fr": "Application d'hébergement et de partage de fichiers anonyme"
|
||||||
|
@ -16,6 +13,9 @@
|
||||||
"name": "frju365, cyp",
|
"name": "frju365, cyp",
|
||||||
"email": "win10@tutanota.com, cyp@rouquin.me"
|
"email": "win10@tutanota.com, cyp@rouquin.me"
|
||||||
},
|
},
|
||||||
|
"requirements": {
|
||||||
|
"yunohost": ">= 3.5"
|
||||||
|
},
|
||||||
"multi_instance": true,
|
"multi_instance": true,
|
||||||
"services": [
|
"services": [
|
||||||
"nginx"
|
"nginx"
|
||||||
|
@ -26,8 +26,8 @@
|
||||||
"name": "domain",
|
"name": "domain",
|
||||||
"type": "domain",
|
"type": "domain",
|
||||||
"ask": {
|
"ask": {
|
||||||
"en": "Choose a domain for Lufi",
|
"en": "Choose a domain name for Lufi",
|
||||||
"fr": "Choisissez un domaine pour Lufi"
|
"fr": "Choisissez un nom de domaine pour Lufi"
|
||||||
},
|
},
|
||||||
"example": "domain.org"
|
"example": "domain.org"
|
||||||
},
|
},
|
||||||
|
|
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*
|
||||||
|
|
||||||
|
[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/lufi_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/lufi_ynh%20PR-NUM-%20(USERNAME)/)
|
|
@ -8,111 +8,13 @@
|
||||||
pkg_dependencies="build-essential libssl-dev libio-socket-ssl-perl liblwp-protocol-https-perl libpq-dev postgresql cpanminus"
|
pkg_dependencies="build-essential libssl-dev libio-socket-ssl-perl liblwp-protocol-https-perl libpq-dev postgresql cpanminus"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# FUTURE OFFICIAL HELPERS
|
# PERSONAL HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Start (or other actions) a service, print a log in case of failure and optionnaly wait until the service is completely started
|
#=================================================
|
||||||
#
|
# EXPERIMENTAL HELPERS
|
||||||
# usage: ynh_systemd_action [-n service_name] [-a action] [ [-l "line to match"] [-p log_path] [-t timeout] [-e length] ]
|
#=================================================
|
||||||
# | arg: -n, --service_name= - Name of the service to start. Default : $app
|
|
||||||
# | arg: -a, --action= - Action to perform with systemctl. Default: start
|
|
||||||
# | arg: -l, --line_match= - Line to match - The line to find in the log to attest the service have finished to boot.
|
|
||||||
# If not defined it don't wait until the service is completely started.
|
|
||||||
# WARNING: When using --line_match, you should always add `ynh_clean_check_starting` into your
|
|
||||||
# `ynh_clean_setup` at the beginning of the script. Otherwise, tail will not stop in case of failure
|
|
||||||
# of the script. The script will then hang forever.
|
|
||||||
# | arg: -p, --log_path= - Log file - Path to the log file. Default : /var/log/$app/$app.log
|
|
||||||
# | arg: -t, --timeout= - Timeout - The maximum time to wait before ending the watching. Default : 300 seconds.
|
|
||||||
# | arg: -e, --length= - Length of the error log : Default : 20
|
|
||||||
ynh_systemd_action() {
|
|
||||||
# Declare an array to define the options of this helper.
|
|
||||||
declare -Ar args_array=( [n]=service_name= [a]=action= [l]=line_match= [p]=log_path= [t]=timeout= [e]=length= )
|
|
||||||
local service_name
|
|
||||||
local action
|
|
||||||
local line_match
|
|
||||||
local length
|
|
||||||
local log_path
|
|
||||||
local timeout
|
|
||||||
|
|
||||||
# Manage arguments with getopts
|
#=================================================
|
||||||
ynh_handle_getopts_args "$@"
|
# FUTURE OFFICIAL HELPERS
|
||||||
|
#=================================================
|
||||||
local service_name="${service_name:-$app}"
|
|
||||||
local action=${action:-start}
|
|
||||||
local log_path="${log_path:-/var/log/$service_name/$service_name.log}"
|
|
||||||
local length=${length:-20}
|
|
||||||
local timeout=${timeout:-300}
|
|
||||||
|
|
||||||
# Start to read the log
|
|
||||||
if [[ -n "${line_match:-}" ]]
|
|
||||||
then
|
|
||||||
local templog="$(mktemp)"
|
|
||||||
# Following the starting of the app in its log
|
|
||||||
if [ "$log_path" == "systemd" ] ; then
|
|
||||||
# Read the systemd journal
|
|
||||||
journalctl --unit=$service_name --follow --since=-0 --quiet > "$templog" &
|
|
||||||
# Get the PID of the journalctl command
|
|
||||||
local pid_tail=$!
|
|
||||||
else
|
|
||||||
# Read the specified log file
|
|
||||||
tail -F -n0 "$log_path" > "$templog" 2>&1 &
|
|
||||||
# Get the PID of the tail command
|
|
||||||
local pid_tail=$!
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
ynh_print_info --message="${action^} the service $service_name"
|
|
||||||
|
|
||||||
# Use reload-or-restart instead of reload. So it wouldn't fail if the service isn't running.
|
|
||||||
if [ "$action" == "reload" ]; then
|
|
||||||
action="reload-or-restart"
|
|
||||||
fi
|
|
||||||
|
|
||||||
systemctl $action $service_name \
|
|
||||||
|| ( journalctl --no-pager --lines=$length -u $service_name >&2 \
|
|
||||||
; test -e "$log_path" && echo "--" >&2 && tail --lines=$length "$log_path" >&2 \
|
|
||||||
; false )
|
|
||||||
|
|
||||||
# Start the timeout and try to find line_match
|
|
||||||
if [[ -n "${line_match:-}" ]]
|
|
||||||
then
|
|
||||||
local i=0
|
|
||||||
for i in $(seq 1 $timeout)
|
|
||||||
do
|
|
||||||
# Read the log until the sentence is found, that means the app finished to start. Or run until the timeout
|
|
||||||
if grep --quiet "$line_match" "$templog"
|
|
||||||
then
|
|
||||||
ynh_print_info --message="The service $service_name has correctly started."
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
if [ $i -eq 3 ]; then
|
|
||||||
echo -n "Please wait, the service $service_name is ${action}ing" >&2
|
|
||||||
fi
|
|
||||||
if [ $i -ge 3 ]; then
|
|
||||||
echo -n "." >&2
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
if [ $i -ge 3 ]; then
|
|
||||||
echo "" >&2
|
|
||||||
fi
|
|
||||||
if [ $i -eq $timeout ]
|
|
||||||
then
|
|
||||||
ynh_print_warn --message="The service $service_name didn't fully started before the timeout."
|
|
||||||
ynh_print_warn --message="Please find here an extract of the end of the log of the service $service_name:"
|
|
||||||
journalctl --no-pager --lines=$length -u $service_name >&2
|
|
||||||
test -e "$log_path" && echo "--" >&2 && tail --lines=$length "$log_path" >&2
|
|
||||||
fi
|
|
||||||
ynh_clean_check_starting
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Clean temporary process and file used by ynh_check_starting
|
|
||||||
# (usually used in ynh_clean_setup scripts)
|
|
||||||
#
|
|
||||||
# usage: ynh_clean_check_starting
|
|
||||||
ynh_clean_check_starting () {
|
|
||||||
# Stop the execution of tail.
|
|
||||||
kill -s 15 $pid_tail 2>&1
|
|
||||||
ynh_secure_remove "$templog" 2>&1
|
|
||||||
}
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
@ -14,8 +15,7 @@ source /usr/share/yunohost/helpers
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_clean_setup () {
|
ynh_clean_setup () {
|
||||||
### Remove this function if there's nothing to clean before calling the remove script.
|
ynh_clean_check_starting
|
||||||
true
|
|
||||||
}
|
}
|
||||||
# Exit if an error occurs during the execution of the script
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
@ -23,62 +23,61 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Loading installation settings..."
|
ynh_print_info --message="Loading installation settings..."
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
domain=$(ynh_app_setting_get $app domain)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD BACKUP STEPS
|
# DECLARE DATA AND CONF FILES TO BACKUP
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_print_info --message="Declaring files to be backed up..."
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE APP MAIN DIR
|
# BACKUP THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Backing up the main app directory..."
|
|
||||||
|
|
||||||
ynh_backup "$final_path"
|
ynh_backup --src_path="$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE NGINX CONFIGURATION
|
# BACKUP THE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Backing up nginx web server configuration..."
|
|
||||||
|
|
||||||
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
|
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# BACKUP THE POSTGRESQL DATABASE
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info "Backing up the PostgreSQL database..."
|
|
||||||
|
|
||||||
ynh_psql_dump_db "$db_name" > db.sql
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC BACKUP
|
# SPECIFIC BACKUP
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP LOGROTATE
|
# BACKUP LOGROTATE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Backing up logrotate configuration..."
|
|
||||||
|
|
||||||
ynh_backup "/etc/logrotate.d/$app"
|
ynh_backup --src_path="/etc/logrotate.d/$app"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP SYSTEMD
|
# BACKUP SYSTEMD
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Backing up systemd configuration..."
|
|
||||||
|
|
||||||
ynh_backup "/etc/systemd/system/$app.service"
|
ynh_backup --src_path="/etc/systemd/system/$app.service"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP CRON
|
# BACKUP A CRON FILE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Backing up cron configuration..."
|
|
||||||
|
|
||||||
ynh_backup "/etc/cron.d/${app}"
|
ynh_backup --src_path="/etc/cron.d/$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE POSTGRESQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Backing up the PostgreSQL database..."
|
||||||
|
|
||||||
|
ynh_psql_dump_db --database="$db_name" > db.sql
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_print_info "Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."
|
ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."
|
||||||
|
|
|
@ -24,28 +24,36 @@ app=$YNH_APP_INSTANCE_NAME
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Loading installation settings..."
|
ynh_script_progression --message="Loading installation settings..."
|
||||||
|
|
||||||
# Needed for helper "ynh_add_nginx_config"
|
# Needed for helper "ynh_add_nginx_config"
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
|
|
||||||
# Needed for lufi conf
|
# Add settings here as needed by your application
|
||||||
port=$(ynh_app_setting_get $app port)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
is_public=$(ynh_app_setting_get $app is_public)
|
is_public=$(ynh_app_setting_get --app=$app --key=is_public)
|
||||||
db_name=$(ynh_app_setting_get "$app" db_name)
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
db_pwd=$(ynh_app_setting_get $app psqlpwd)
|
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
||||||
db_user=$db_name
|
db_user=$db_name
|
||||||
secret=$(ynh_app_setting_get $app secret)
|
secret=$(ynh_app_setting_get --app=$app --key=secret)
|
||||||
max_file_size=$(ynh_app_setting_get $app max_file_size)
|
max_file_size=$(ynh_app_setting_get --app=$app --key=max_file_size)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK THE SYNTAX OF THE PATHS
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up the app before changing its url (may take a while)..."
|
||||||
|
|
||||||
test -n "$old_path" || old_path="/"
|
# Backup the current version of the app
|
||||||
test -n "$new_path" || new_path="/"
|
ynh_backup_before_upgrade
|
||||||
new_path=$(ynh_normalize_url_path $new_path)
|
ynh_clean_setup () {
|
||||||
old_path=$(ynh_normalize_url_path $old_path)
|
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location.
|
||||||
|
ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
||||||
|
|
||||||
|
# restore it if the upgrade fails
|
||||||
|
ynh_restore_upgradebackup
|
||||||
|
}
|
||||||
|
# Exit if an error occurs during the execution of the script
|
||||||
|
ynh_abort_if_errors
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK WHICH PARTS SHOULD BE CHANGED
|
# CHECK WHICH PARTS SHOULD BE CHANGED
|
||||||
|
@ -65,10 +73,17 @@ fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD MODIFICATIONS
|
# STANDARD MODIFICATIONS
|
||||||
|
#=================================================
|
||||||
|
# STOP SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Stopping a systemd service..."
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=$app --action="stop" --log_path="$final_path/log/production.log"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MODIFY URL IN NGINX CONF
|
# MODIFY URL IN NGINX CONF
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Updating nginx web server configuration..."
|
ynh_script_progression --message="Updating nginx web server configuration..."
|
||||||
|
|
||||||
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
|
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
|
||||||
|
|
||||||
|
@ -76,7 +91,7 @@ nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
|
||||||
if [ $change_path -eq 1 ]
|
if [ $change_path -eq 1 ]
|
||||||
then
|
then
|
||||||
# Make a backup of the original nginx config file if modified
|
# Make a backup of the original nginx config file if modified
|
||||||
ynh_backup_if_checksum_is_different "$nginx_conf_path"
|
ynh_backup_if_checksum_is_different --file="$nginx_conf_path"
|
||||||
# Set global variables for nginx helper
|
# Set global variables for nginx helper
|
||||||
domain="$old_domain"
|
domain="$old_domain"
|
||||||
path_url="$new_path"
|
path_url="$new_path"
|
||||||
|
@ -88,49 +103,48 @@ fi
|
||||||
if [ $change_domain -eq 1 ]
|
if [ $change_domain -eq 1 ]
|
||||||
then
|
then
|
||||||
# Delete file checksum for the old conf file location
|
# Delete file checksum for the old conf file location
|
||||||
ynh_delete_file_checksum "$nginx_conf_path"
|
ynh_delete_file_checksum --file="$nginx_conf_path"
|
||||||
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
|
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
|
||||||
# Store file checksum for the new config file location
|
# Store file checksum for the new config file location
|
||||||
ynh_store_file_checksum "/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC MODIFICATIONS
|
# SPECIFIC MODIFICATIONS
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP LUFI
|
# CONFIGURE LUFI
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Configuring lufi..."
|
ynh_script_progression --message="Configuring lufi..."
|
||||||
|
|
||||||
domain="$new_domain"
|
domain="$new_domain"
|
||||||
path_url="$new_path"
|
path_url="$new_path"
|
||||||
|
|
||||||
cp ../conf/lufi.conf.template "${final_path}/lufi.conf"
|
config=${final_path}/lufi.conf
|
||||||
ynh_replace_string "__DOMAIN__" "$domain" "${final_path}/lufi.conf"
|
ynh_backup_if_checksum_is_different --file="$config"
|
||||||
ynh_replace_string "__PATH__" "$path_url" "${final_path}/lufi.conf"
|
cp ../conf/lufi.conf.template "$config"
|
||||||
ynh_replace_string "__PORT__" "$port" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$config"
|
||||||
ynh_replace_string "__DB_NAME__" "$db_name" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file="$config"
|
||||||
ynh_replace_string "__DB_USER__" "$db_user" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$config"
|
||||||
ynh_replace_string "__DB_PWD__" "$db_pwd" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$config"
|
||||||
ynh_replace_string "__MAX_FILE_SIZE__" "$max_file_size" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_user" --target_file="$config"
|
||||||
|
ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$config"
|
||||||
|
ynh_replace_string --match_string="__MAX_FILE_SIZE__" --replace_string="$max_file_size" --target_file="$config"
|
||||||
if [ $max_file_size -eq 0 ]; then # Comment the limitation line if no limit
|
if [ $max_file_size -eq 0 ]; then # Comment the limitation line if no limit
|
||||||
ynh_replace_string "max_file_size" "#max_file_size" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="max_file_size" --replace_string="#max_file_size" --target_file="$config"
|
||||||
fi
|
fi
|
||||||
|
ynh_replace_string --match_string="__SECRET__" --replace_string="$secret" --target_file="$config"
|
||||||
ynh_replace_string "__SECRET__" "$secret" "${final_path}/lufi.conf"
|
|
||||||
if [ $is_public -eq 0 ];
|
if [ $is_public -eq 0 ];
|
||||||
then
|
then
|
||||||
ynh_replace_string "__IS_PUBLIC__" "" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__IS_PUBLIC__" --replace_string="" --target_file="$config"
|
||||||
else
|
else
|
||||||
ynh_replace_string "__IS_PUBLIC__" "#" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__IS_PUBLIC__" --replace_string="#" --target_file="$config"
|
||||||
fi
|
fi
|
||||||
ynh_store_file_checksum "${final_path}/lufi.conf"
|
ynh_store_file_checksum --file="$config"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALISATION
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# UPDATE SSOWAT
|
# UPDATE SSOWAT
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Reconfigure SSOwat"
|
ynh_script_progression --message="Reconfigure SSOwat"
|
||||||
|
|
||||||
ynh_app_setting_set $app unprotected_uris "/"
|
ynh_app_setting_set $app unprotected_uris "/"
|
||||||
if [ $is_public -eq 0 ]
|
if [ $is_public -eq 0 ]
|
||||||
|
@ -141,24 +155,27 @@ then
|
||||||
fi
|
fi
|
||||||
# Modify the domain to be used in a regex
|
# Modify the domain to be used in a regex
|
||||||
domain_regex=$(echo "$domain" | sed 's@-@.@g')
|
domain_regex=$(echo "$domain" | sed 's@-@.@g')
|
||||||
ynh_app_setting_set $app protected_regex "$domain_regex$path_url/stats$","$domain_regex$path_url/manifest.webapp$","$domain_regex$path_url/$","$domain_regex$path_url/d/.*$","$domain_regex$path_url/m/.*$"
|
ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/stats$","$domain_regex$path_url/manifest.webapp$","$domain_regex$path_url/$","$domain_regex$path_url/d/.*$","$domain_regex$path_url/m/.*$"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTART LUFI
|
# GENERIC FINALISATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
ynh_systemd_action -n $app -a reload -l "Creating process id file" -p "$final_path/log/production.log"
|
ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/log/production.log" --line_match="Creating process id file"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Reloading nginx web server..."
|
ynh_script_progression --message="Reloading nginx web server..."
|
||||||
|
|
||||||
systemctl reload nginx
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_print_info "Change of URL completed for $app"
|
ynh_script_progression --message="Change of URL completed for $app"
|
||||||
|
|
186
scripts/install
186
scripts/install
|
@ -15,8 +15,6 @@ source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
ynh_clean_setup () {
|
ynh_clean_setup () {
|
||||||
ynh_clean_check_starting
|
ynh_clean_check_starting
|
||||||
|
|
||||||
true
|
|
||||||
}
|
}
|
||||||
# Exit if an error occurs during the execution of the script
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
@ -27,91 +25,98 @@ ynh_abort_if_errors
|
||||||
|
|
||||||
domain=$YNH_APP_ARG_DOMAIN
|
domain=$YNH_APP_ARG_DOMAIN
|
||||||
path_url=$YNH_APP_ARG_PATH
|
path_url=$YNH_APP_ARG_PATH
|
||||||
is_public=$YNH_APP_ARG_IS_PUBLIC
|
|
||||||
max_file_size=$YNH_APP_ARG_MAX_FILE_SIZE
|
max_file_size=$YNH_APP_ARG_MAX_FILE_SIZE
|
||||||
|
is_public=$YNH_APP_ARG_IS_PUBLIC
|
||||||
|
secret=$(ynh_string_random --length=24)
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Validating installation parameters..."
|
ynh_script_progression --message="Validating installation parameters..."
|
||||||
|
|
||||||
final_path=/var/www/$app
|
final_path=/var/www/$app
|
||||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
|
||||||
|
|
||||||
# Normalize the url path syntax
|
# Normalize the url path syntax
|
||||||
path_url=$(ynh_normalize_url_path $path_url)
|
path_url=$(ynh_normalize_url_path --path_url=$path_url)
|
||||||
|
|
||||||
# Check if max_file_size is a number
|
# Check if max_file_size is a number
|
||||||
if ! [[ $max_file_size =~ "^[\-0-9]+$" ]] && [ $max_file_size -lt 0 ]; then
|
if ! [[ $max_file_size =~ "^[\-0-9]+$" ]] && [ $max_file_size -lt 0 ]; then
|
||||||
ynh_die "Max file must be a number positive or zero"
|
ynh_die --message="Max file must be a number positive or zero"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check web path availability
|
# Check web path availability
|
||||||
ynh_webpath_available $domain $path_url
|
ynh_webpath_available --domain=$domain --path_url=$path_url
|
||||||
# Register (book) web path
|
# Register (book) web path
|
||||||
ynh_webpath_register $app $domain $path_url
|
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# FIND AND OPEN A PORT
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info "Configuring firewall..."
|
|
||||||
|
|
||||||
# Find a free port
|
|
||||||
port=$(ynh_find_port 8095)
|
|
||||||
# Open this port
|
|
||||||
yunohost firewall allow --no-upnp TCP $port 2>&1
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STORE SETTINGS FROM MANIFEST
|
# STORE SETTINGS FROM MANIFEST
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Storing installation settings..."
|
ynh_script_progression --message="Storing installation settings..."
|
||||||
|
|
||||||
ynh_app_setting_set $app domain $domain
|
ynh_app_setting_set --app=$app --key=domain --value=$domain
|
||||||
ynh_app_setting_set $app is_public $is_public
|
ynh_app_setting_set --app=$app --key=path --value=$path_url
|
||||||
ynh_app_setting_set $app port $port
|
ynh_app_setting_set --app=$app --key=is_public --value=$is_public
|
||||||
ynh_app_setting_set $app path $path_url
|
ynh_app_setting_set --app=$app --key=max_file_size --value=$max_file_size
|
||||||
ynh_app_setting_set $app max_file_size $max_file_size
|
ynh_app_setting_set --app=$app --key=secret --value=$secret
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD MODIFICATIONS
|
# STANDARD MODIFICATIONS
|
||||||
|
#=================================================
|
||||||
|
# FIND AND OPEN A PORT
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configuring firewall..."
|
||||||
|
|
||||||
|
# Find an available port
|
||||||
|
port=$(ynh_find_port --port=8095)
|
||||||
|
ynh_app_setting_set --app=$app --key=port --value=$port
|
||||||
|
|
||||||
|
# Optional: Expose this port publicly
|
||||||
|
# (N.B. : you only need to do this if the app actually needs to expose the port publicly.
|
||||||
|
# If you do this and the app doesn't actually need you are CREATING SECURITY HOLES IN THE SERVER !)
|
||||||
|
|
||||||
|
# Open the port
|
||||||
|
# ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL DEPENDENCIES
|
# INSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Installing dependencies..."
|
ynh_script_progression --message="Installing dependencies..."
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
# Install Carton
|
# Install Carton
|
||||||
echo yes | cpanm Carton
|
echo yes | cpanm Carton
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE A POSTGRESQL DATABASE
|
# CREATE A POSTGRESQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Creating a PostgreSQL database..."
|
ynh_script_progression --message="Creating a PostgreSQL database..."
|
||||||
|
|
||||||
# Create postgresql database
|
# Create postgresql database
|
||||||
ynh_psql_test_if_first_run
|
ynh_psql_test_if_first_run
|
||||||
db_name=$(ynh_sanitize_dbid "$app")
|
db_name=$(ynh_sanitize_dbid --db_name=$app)
|
||||||
db_user=$db_name
|
db_user=$db_name
|
||||||
ynh_app_setting_set "$app" db_name "$db_name"
|
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
||||||
# Initialize database and store postgres password for upgrade
|
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name
|
||||||
ynh_psql_setup_db "$db_name" "$db_user"
|
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) # Password created in ynh_psql_setup_db function
|
||||||
db_pwd=$(ynh_app_setting_get $app psqlpwd) # Password created in ynh_psql_setup_db function
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Setting up source files..."
|
ynh_script_progression --message="Setting up source files..."
|
||||||
|
|
||||||
ynh_app_setting_set $app final_path $final_path
|
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||||
# 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 --dest_dir="$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Configuring nginx web server..."
|
ynh_script_progression --message="Configuring nginx web server..."
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
# Create a dedicated nginx config
|
||||||
ynh_add_nginx_config max_file_size
|
ynh_add_nginx_config max_file_size
|
||||||
|
@ -119,85 +124,107 @@ ynh_add_nginx_config max_file_size
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Configuring system user..."
|
ynh_script_progression --message="Configuring system user..."
|
||||||
|
|
||||||
# Create a system user
|
# Create a system user
|
||||||
ynh_system_user_create $app
|
ynh_system_user_create --username=$app
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# Copy and fix variable into lufi config
|
# SPECIFIC SETUP
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Configuring lufi..."
|
# CONFIGURE LUFI
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configuring lufi..."
|
||||||
|
|
||||||
cp ../conf/lufi.conf.template "${final_path}/lufi.conf"
|
config=${final_path}/lufi.conf
|
||||||
ynh_replace_string "__DOMAIN__" "$domain" "${final_path}/lufi.conf"
|
cp ../conf/lufi.conf.template "$config"
|
||||||
ynh_replace_string "__PATH__" "$path_url" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$config"
|
||||||
ynh_replace_string "__PORT__" "$port" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file="$config"
|
||||||
ynh_replace_string "__DB_NAME__" "$db_name" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$config"
|
||||||
ynh_replace_string "__DB_USER__" "$db_user" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$config"
|
||||||
ynh_replace_string "__DB_PWD__" "$db_pwd" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_user" --target_file="$config"
|
||||||
ynh_replace_string "__MAX_FILE_SIZE__" "$max_file_size" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$config"
|
||||||
|
ynh_replace_string --match_string="__MAX_FILE_SIZE__" --replace_string="$max_file_size" --target_file="$config"
|
||||||
if [ $max_file_size -eq 0 ]; then # Comment the limitation line if no limit
|
if [ $max_file_size -eq 0 ]; then # Comment the limitation line if no limit
|
||||||
ynh_replace_string "max_file_size" "#max_file_size" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="max_file_size" --replace_string="#max_file_size" --target_file="$config"
|
||||||
fi
|
fi
|
||||||
|
ynh_replace_string --match_string="__SECRET__" --replace_string="$secret" --target_file="$config"
|
||||||
|
|
||||||
secret=$(ynh_string_random 24)
|
|
||||||
ynh_app_setting_set $app secret $secret
|
|
||||||
ynh_replace_string "__SECRET__" "$secret" "${final_path}/lufi.conf"
|
|
||||||
if [ $is_public -eq 0 ];
|
if [ $is_public -eq 0 ];
|
||||||
then
|
then
|
||||||
ynh_replace_string "__IS_PUBLIC__" "" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__IS_PUBLIC__" --replace_string="" --target_file="$config"
|
||||||
else
|
else
|
||||||
ynh_replace_string "__IS_PUBLIC__" "#" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__IS_PUBLIC__" --replace_string="#" --target_file="$config"
|
||||||
fi
|
fi
|
||||||
ynh_store_file_checksum "${final_path}/lufi.conf"
|
|
||||||
|
ynh_store_file_checksum --file="$config"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# INSTALL LUFI
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Installing lufi..."
|
||||||
|
|
||||||
|
pushd $final_path
|
||||||
|
carton install --deployment --without=sqlite --without=mysql --without=htpasswd --without=test
|
||||||
|
popd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP CRON
|
# SETUP CRON
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Setuping a cron..."
|
||||||
|
|
||||||
cp ../conf/cron_lufi /etc/cron.d/$app
|
cp ../conf/cron_lufi /etc/cron.d/$app
|
||||||
ynh_replace_string "__FINALPATH__" "$final_path/" "/etc/cron.d/$app"
|
ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path/" --target_file="/etc/cron.d/$app"
|
||||||
ynh_replace_string "__USER__" "$app" "/etc/cron.d/$app"
|
ynh_replace_string --match_string="__USER__" --replace_string="$app" --target_file="/etc/cron.d/$app"
|
||||||
chmod +x $final_path/script/lufi
|
chmod +x $final_path/script/lufi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SYSTEMD
|
# SETUP SYSTEMD
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Configuring a systemd service..."
|
ynh_script_progression --message="Configuring a systemd service..."
|
||||||
|
|
||||||
# Create a dedicated systemd config
|
# Create a dedicated systemd config
|
||||||
ynh_add_systemd_config
|
ynh_add_systemd_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# Install lufi's dependencies via carton
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Installing lufi..."
|
# SECURE FILES AND DIRECTORIES
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Securing files and directories..."
|
||||||
|
|
||||||
pushd $final_path
|
# Set permissions to app files
|
||||||
carton install --deployment --without=sqlite --without=mysql --without=htpasswd --without=test
|
chown -R $app:$app $final_path
|
||||||
popd
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP LOGROTATE
|
# SETUP LOGROTATE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Configuring log rotation..."
|
ynh_script_progression --message="Configuring log rotation..."
|
||||||
|
|
||||||
# Use logrotate to manage application logfile(s)
|
# Use logrotate to manage application logfile(s)
|
||||||
ynh_use_logrotate
|
ynh_use_logrotate
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# ADVERTISE SERVICE IN ADMIN PANEL
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Integrating service in YunoHost..."
|
||||||
|
|
||||||
yunohost service add $app --log "$final_path/log/production.log"
|
yunohost service add $app --description "Lufi service" --log "$final_path/log/production.log"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
|
# Start a systemd service
|
||||||
|
ynh_systemd_action --service_name=$app --action="start" --line_match="Creating process id file" --log_path="$final_path/log/production.log"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SSOWAT
|
# SETUP SSOWAT
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Configuring SSOwat..."
|
ynh_script_progression --message="Configuring SSOwat..."
|
||||||
|
|
||||||
ynh_app_setting_set $app unprotected_uris "/"
|
ynh_app_setting_set --app=$app --key=unprotected_uris --value="/"
|
||||||
if [ $is_public -eq 0 ]
|
if [ $is_public -eq 0 ]
|
||||||
then
|
then
|
||||||
if [ "$path_url" == "/" ]; then
|
if [ "$path_url" == "/" ]; then
|
||||||
|
@ -206,33 +233,18 @@ then
|
||||||
fi
|
fi
|
||||||
# Modify the domain to be used in a regex
|
# Modify the domain to be used in a regex
|
||||||
domain_regex=$(echo "$domain" | sed 's@-@.@g')
|
domain_regex=$(echo "$domain" | sed 's@-@.@g')
|
||||||
ynh_app_setting_set $app protected_regex "$domain_regex$path_url/stats$","$domain_regex$path_url/manifest.webapp$","$domain_regex$path_url/$","$domain_regex$path_url/d/.*$","$domain_regex$path_url/m/.*$"
|
ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/stats$","$domain_regex$path_url/manifest.webapp$","$domain_regex$path_url/$","$domain_regex$path_url/d/.*$","$domain_regex$path_url/m/.*$"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Configure owner
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
chown -R $app:$app "$final_path"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Start lufi
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
systemctl enable $app.service
|
|
||||||
ynh_systemd_action -n $app -a start -l "Creating process id file" -p "$final_path/log/production.log"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Reloading nginx web server..."
|
ynh_script_progression --message="Reloading nginx web server..."
|
||||||
|
|
||||||
# Reload Nginx
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
systemctl reload nginx
|
|
||||||
yunohost app ssowatconf
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_print_info "Installation of $app completed"
|
ynh_script_progression --message="Installation of $app completed"
|
||||||
|
|
101
scripts/remove
101
scripts/remove
|
@ -12,63 +12,73 @@ source /usr/share/yunohost/helpers
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Loading installation settings..."
|
ynh_script_progression --message="Loading installation settings..."
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
domain=$(ynh_app_setting_get $app domain)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
port=$(ynh_app_setting_get $app port)
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
|
||||||
db_user=$db_name
|
db_user=$db_name
|
||||||
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD REMOVE
|
# STANDARD REMOVE
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE SERVICE FROM ADMIN PANEL
|
# REMOVE SERVICE INTEGRATION IN YUNOHOST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove a service from the admin panel, added by `yunohost service add`
|
# Remove the service from the list of services known by Yunohost (added from `yunohost service add`)
|
||||||
if yunohost service status | grep -q $app
|
if ynh_exec_warn_less yunohost service status $app >/dev/null
|
||||||
then
|
then
|
||||||
echo "Remove $app service"
|
ynh_script_progression --message="Removing $app service..."
|
||||||
yunohost service remove $app
|
yunohost service remove $app
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STOP AND REMOVE SERVICE
|
# STOP AND REMOVE SERVICE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Stopping and removing the systemd service"
|
ynh_script_progression --message="Stopping and removing the systemd service..."
|
||||||
|
|
||||||
# Remove the dedicated systemd config
|
# Remove the dedicated systemd config
|
||||||
ynh_remove_systemd_config
|
ynh_remove_systemd_config
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE THE POSTGRESQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing the PostgreSQL database..."
|
||||||
|
|
||||||
|
# Remove a database if it exists, along with the associated user
|
||||||
|
ynh_psql_remove_db --db_user="$db_user" --db_name="$db_name"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE DEPENDENCIES
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing dependencies..."
|
||||||
|
|
||||||
|
# Remove metapackage and its dependencies
|
||||||
|
ynh_remove_app_dependencies
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE APP MAIN DIR
|
# REMOVE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Removing app main directory"
|
ynh_script_progression --message="Removing app main directory..."
|
||||||
|
|
||||||
# Remove the app directory securely
|
# Remove the app directory securely
|
||||||
ynh_secure_remove "$final_path"
|
ynh_secure_remove --file="$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE NGINX CONFIGURATION
|
# REMOVE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Removing nginx web server configuration"
|
ynh_script_progression --message="Removing nginx web server configuration..."
|
||||||
|
|
||||||
# Remove the dedicated nginx config
|
# Remove the dedicated nginx config
|
||||||
ynh_remove_nginx_config
|
ynh_remove_nginx_config
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# DELETE LOG
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_secure_remove "/var/log/$app"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE LOGROTATE CONFIGURATION
|
# REMOVE LOGROTATE CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Removing logrotate configuration"
|
ynh_script_progression --message="Removing logrotate configuration..."
|
||||||
|
|
||||||
# Remove the app-specific logrotate config
|
# Remove the app-specific logrotate config
|
||||||
ynh_remove_logrotate
|
ynh_remove_logrotate
|
||||||
|
@ -79,46 +89,39 @@ ynh_remove_logrotate
|
||||||
|
|
||||||
if yunohost firewall list | grep -q "\- $port$"
|
if yunohost firewall list | grep -q "\- $port$"
|
||||||
then
|
then
|
||||||
echo "Close port $port"
|
ynh_script_progression --message="Closing port $port..."
|
||||||
yunohost firewall disallow TCP $port 2>&1
|
ynh_exec_warn_less yunohost firewall disallow TCP $port
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE THE POSTGRESQL DATABASE
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info "Removing the PostgreSQL database"
|
|
||||||
|
|
||||||
ynh_psql_remove_db $db_name $db_user
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info "Removing dependencies"
|
|
||||||
|
|
||||||
# Remove metapackage and its dependencies
|
|
||||||
ynh_remove_app_dependencies
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# REMOVE DEDICATED USER
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info "Removing the dedicated system user"
|
|
||||||
|
|
||||||
# Delete a system user
|
|
||||||
ynh_system_user_delete $app
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC REMOVE
|
# SPECIFIC REMOVE
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE THE CRON FILE
|
# REMOVE THE CRON FILE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing the cron file..."
|
||||||
|
|
||||||
# Remove a cron file
|
# Remove a cron file
|
||||||
ynh_secure_remove "/etc/cron.d/$app"
|
ynh_secure_remove --file="/etc/cron.d/$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE LOG
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing the log file..."
|
||||||
|
|
||||||
|
ynh_secure_remove --file="/var/log/$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC FINALIZATION
|
||||||
|
#=================================================
|
||||||
|
# REMOVE DEDICATED USER
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing the dedicated system user..."
|
||||||
|
|
||||||
|
# Delete a system user
|
||||||
|
ynh_system_user_delete --username=$app
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_print_info "Removal of $app completed"
|
ynh_script_progression --message="Removal of $app completed"
|
||||||
|
|
117
scripts/restore
117
scripts/restore
|
@ -6,6 +6,7 @@
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
@ -15,8 +16,6 @@ source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
ynh_clean_setup () {
|
ynh_clean_setup () {
|
||||||
ynh_clean_check_starting
|
ynh_clean_check_starting
|
||||||
|
|
||||||
true
|
|
||||||
}
|
}
|
||||||
# Exit if an error occurs during the execution of the script
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
@ -24,116 +23,128 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Loading settings..."
|
ynh_script_progression --message="Loading settings..."
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
domain=$(ynh_app_setting_get $app domain)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
path_url=$(ynh_app_setting_get $app path)
|
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
|
db_user=$db_name
|
||||||
|
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE RESTORED
|
# CHECK IF THE APP CAN BE RESTORED
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Validating restoration parameters..."
|
ynh_script_progression --message="Validating restoration parameters..."
|
||||||
|
|
||||||
ynh_webpath_available $domain $path_url \
|
ynh_webpath_available --domain=$domain --path_url=$path_url \
|
||||||
|| ynh_die "Path not available: ${domain}${path_url}"
|
|| ynh_die --message="Path not available: ${domain}${path_url}"
|
||||||
test ! -d $final_path \
|
test ! -d $final_path \
|
||||||
|| ynh_die "There is already a directory: $final_path "
|
|| ynh_die --message="There is already a directory: $final_path "
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD RESTORATION STEPS
|
# STANDARD RESTORATION STEPS
|
||||||
#=================================================
|
|
||||||
# REINSTALL DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info "Reinstalling dependencies..."
|
|
||||||
|
|
||||||
# Define and install dependencies
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
|
||||||
# Install Carton
|
|
||||||
echo yes | cpanm Carton
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE NGINX CONFIGURATION
|
# RESTORE THE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the nginx configuration..."
|
||||||
|
|
||||||
ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
|
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE APP MAIN DIR
|
# RESTORE THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Restoring the app main directory..."
|
ynh_script_progression --message="Restoring the app main directory..."
|
||||||
|
|
||||||
ynh_restore_file "$final_path"
|
ynh_restore_file --origin_path="$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RECREATE THE DEDICATED USER
|
# RECREATE THE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Recreating the dedicated system user..."
|
ynh_script_progression --message="Recreating the dedicated system user..."
|
||||||
|
|
||||||
# Create the dedicated user (if not existing)
|
# Create the dedicated user (if not existing)
|
||||||
ynh_system_user_create $app
|
ynh_system_user_create --username=$app
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE POSTGRESQL DATABASE
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info "Restoring the PostregSQL database..."
|
|
||||||
|
|
||||||
db_pwd=$(ynh_app_setting_get $app psqlpwd)
|
|
||||||
ynh_psql_test_if_first_run
|
|
||||||
ynh_psql_setup_db $db_name $db_name $db_pwd
|
|
||||||
ynh_psql_connect_as $db_name $db_pwd $db_name < ./db.sql
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE USER RIGHTS
|
# RESTORE USER RIGHTS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring user rights..."
|
||||||
|
|
||||||
# Restore permissions on app files
|
# Restore permissions on app files
|
||||||
chown -R $app:$app "$final_path"
|
chown -R $app:$app $final_path
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC RESTORATION
|
# SPECIFIC RESTORATION
|
||||||
|
#=================================================
|
||||||
|
# REINSTALL DEPENDENCIES
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reinstalling dependencies..."
|
||||||
|
|
||||||
|
# Define and install dependencies
|
||||||
|
ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
|
# Install Carton
|
||||||
|
echo yes | cpanm Carton
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE POSTGRESQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the PostregSQL database..."
|
||||||
|
|
||||||
|
ynh_psql_test_if_first_run
|
||||||
|
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
|
||||||
|
ynh_psql_execute_file_as_root --file="./db.sql" --database="$db_name"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE SYSTEMD
|
# RESTORE SYSTEMD
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Restoring the systemd configuration..."
|
ynh_script_progression --message="Restoring the systemd configuration..."
|
||||||
|
|
||||||
ynh_restore_file "/etc/systemd/system/$app.service"
|
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
|
||||||
systemctl enable $app.service
|
systemctl enable $app.service
|
||||||
ynh_systemd_action -n $app -a start -l "Creating process id file" -p "$final_path/log/production.log"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# ADVERTISE SERVICE IN ADMIN PANEL
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Integrating service in YunoHost..."
|
||||||
|
|
||||||
yunohost service add $app --log "$final_path/log/production.log"
|
yunohost service add $app --description "lufi service" --log "$final_path/log/production.log"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/log/production.log" --line_match="Creating process id file"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE CRON FILE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the cron file..."
|
||||||
|
|
||||||
|
ynh_restore_file --origin_path="/etc/cron.d/$app"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE LOGROTATE CONFIGURATION
|
# RESTORE THE LOGROTATE CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the logrotate configuration..."
|
||||||
|
|
||||||
ynh_restore_file "/etc/logrotate.d/$app"
|
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE CRON CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_restore_file "/etc/cron.d/$app"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Reloading nginx web server..."
|
ynh_script_progression --message="Reloading nginx web server..."
|
||||||
|
|
||||||
systemctl reload nginx
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
yunohost app ssowatconf
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_print_info "Restoration completed for $app"
|
ynh_script_progression --message="Restoration completed for $app"
|
||||||
|
|
215
scripts/upgrade
215
scripts/upgrade
|
@ -12,36 +12,46 @@ source /usr/share/yunohost/helpers
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Loading installation settings..."
|
ynh_script_progression --message="Loading installation settings..."
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
domain=$(ynh_app_setting_get $app domain)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
path_url=$(ynh_app_setting_get $app path)
|
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||||
is_public=$(ynh_app_setting_get $app is_public)
|
is_public=$(ynh_app_setting_get --app=$app --key=is_public)
|
||||||
port=$(ynh_app_setting_get $app port)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
secret=$(ynh_app_setting_get $app secret)
|
secret=$(ynh_app_setting_get --app=$app --key=secret)
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
db_user=$db_name
|
db_user=$db_name
|
||||||
db_pwd=$(ynh_app_setting_get $app psqlpwd)
|
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
||||||
max_file_size=$(ynh_app_setting_get $app max_file_size)
|
max_file_size=$(ynh_app_setting_get --app=$app --key=max_file_size)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# FIX OLD THINGS
|
# CHECK VERSION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Checking version..."
|
||||||
|
|
||||||
|
upgrade_type=$(ynh_check_app_version_changed)
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# ENSURE DOWNWARD COMPATIBILITY
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Ensuring downward compatibility..."
|
||||||
|
|
||||||
|
# Fix is_public as a boolean value
|
||||||
if [ "$is_public" = "Yes" ]; then
|
if [ "$is_public" = "Yes" ]; then
|
||||||
ynh_app_setting_set $app is_public 1 # Fixe is_public en booléen
|
ynh_app_setting_set --app=$app --key=is_public --value=1
|
||||||
is_public=1
|
is_public=1
|
||||||
elif [ "$is_public" = "No" ]; then
|
elif [ "$is_public" = "No" ]; then
|
||||||
ynh_app_setting_set $app is_public 0
|
ynh_app_setting_set --app=$app --key=is_public --value=0
|
||||||
is_public=0
|
is_public=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${#final_path}" -eq 0 ]
|
# If final_path doesn't exist, create it
|
||||||
then # Si final_path n'est pas renseigné dans la config yunohost, cas d'ancien script, code final_path en dur
|
if [ -z "$final_path" ]; then
|
||||||
final_path=/var/www/$app
|
final_path=/var/www/$app
|
||||||
|
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$db_pwd" ]; then
|
if [ -z "$db_pwd" ]; then
|
||||||
|
@ -53,12 +63,13 @@ fi
|
||||||
|
|
||||||
if [ -z "$max_file_size" ]; then
|
if [ -z "$max_file_size" ]; then
|
||||||
max_file_size=100 # 100 Mo
|
max_file_size=100 # 100 Mo
|
||||||
|
ynh_app_setting_set --app=$app --key=max_file_size --value=$max_file_size
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Backing up the app before upgrading (may take a while)..."
|
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..."
|
||||||
|
|
||||||
# Backup the current version of the app
|
# Backup the current version of the app
|
||||||
ynh_backup_before_upgrade
|
ynh_backup_before_upgrade
|
||||||
|
@ -72,101 +83,99 @@ ynh_abort_if_errors
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD UPGRADE STEPS
|
# STANDARD UPGRADE STEPS
|
||||||
|
#=================================================
|
||||||
|
# STOP SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Stopping a systemd service..."
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=$app --action="stop" --log_path="$final_path/log/production.log"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Upgrading source files..."
|
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
||||||
|
then
|
||||||
|
ynh_script_progression --message="Upgrading source files..."
|
||||||
|
|
||||||
ynh_setup_source "$final_path"
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
|
ynh_setup_source --dest_dir="$final_path"
|
||||||
#=================================================
|
|
||||||
# CREATE A POSTGRESQL DATABASE IF NEEDED
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
if [ $need_migration_from_sqlite_to_psql -eq 1 ]; then
|
|
||||||
ynh_print_info "Creating a PostgreSQL database..."
|
|
||||||
# Create postgresql database
|
|
||||||
ynh_psql_test_if_first_run
|
|
||||||
db_name=$(ynh_sanitize_dbid "$app")
|
|
||||||
db_user=$db_name
|
|
||||||
ynh_app_setting_set "$app" db_name "$db_name"
|
|
||||||
# Initialize database and store postgres password for upgrade
|
|
||||||
ynh_psql_setup_db "$db_name" "$db_user"
|
|
||||||
db_pwd=$(ynh_app_setting_get $app psqlpwd) # Password created in ynh_psql_setup_db function
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Upgrading nginx web server configuration..."
|
ynh_script_progression --message="Upgrading nginx web server configuration..."
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
# Create a dedicated nginx config
|
||||||
ynh_add_nginx_config max_file_size
|
ynh_add_nginx_config max_file_size
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# UPGRADE DEPENDENCIES
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Upgrading dependencies..."
|
||||||
|
|
||||||
|
ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Making sure dedicated system user exists..."
|
ynh_script_progression --message="Making sure dedicated system user exists..."
|
||||||
|
|
||||||
# Create a dedicated user (if not existing)
|
# Create a dedicated user (if not existing)
|
||||||
ynh_system_user_create $app
|
ynh_system_user_create --username=$app
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC UPGRADE
|
# SPECIFIC UPGRADE
|
||||||
|
#=================================================
|
||||||
|
# CREATE A POSTGRESQL DATABASE IF NEEDED
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
if [ $need_migration_from_sqlite_to_psql -eq 1 ]; then
|
||||||
|
ynh_print_info --message="Creating a PostgreSQL database..."
|
||||||
|
# Create postgresql database
|
||||||
|
ynh_psql_test_if_first_run
|
||||||
|
db_name=$(ynh_sanitize_dbid --db_name=$app)
|
||||||
|
db_user=$db_name
|
||||||
|
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
||||||
|
# Initialize database and store postgres password for upgrade
|
||||||
|
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name
|
||||||
|
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) # Password created in ynh_psql_setup_db function
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP LUFI
|
# SETUP LUFI
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Configuring lufi..."
|
ynh_script_progression --message="Configuring lufi..."
|
||||||
|
|
||||||
cp ../conf/lufi.conf.template "${final_path}/lufi.conf"
|
config=${final_path}/lufi.conf
|
||||||
ynh_replace_string "__DOMAIN__" "$domain" "${final_path}/lufi.conf"
|
ynh_backup_if_checksum_is_different --file="$config"
|
||||||
ynh_replace_string "__PATH__" "$path_url" "${final_path}/lufi.conf"
|
cp ../conf/lufi.conf.template "$config"
|
||||||
ynh_replace_string "__PORT__" "$port" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$config"
|
||||||
ynh_replace_string "__DB_NAME__" "$db_name" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file="$config"
|
||||||
ynh_replace_string "__DB_USER__" "$db_user" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$config"
|
||||||
ynh_replace_string "__DB_PWD__" "$db_pwd" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$config"
|
||||||
ynh_replace_string "__MAX_FILE_SIZE__" "$max_file_size" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_user" --target_file="$config"
|
||||||
|
ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$config"
|
||||||
|
ynh_replace_string --match_string="__MAX_FILE_SIZE__" --replace_string="$max_file_size" --target_file="$config"
|
||||||
if [ $max_file_size -eq 0 ]; then # Comment the limitation line if no limit
|
if [ $max_file_size -eq 0 ]; then # Comment the limitation line if no limit
|
||||||
ynh_replace_string "max_file_size" "#max_file_size" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="max_file_size" --replace_string="#max_file_size" --target_file="$config"
|
||||||
fi
|
fi
|
||||||
|
ynh_replace_string --match_string="__SECRET__" --replace_string="$secret" --target_file="$config"
|
||||||
|
|
||||||
ynh_replace_string "__SECRET__" "$secret" "${final_path}/lufi.conf"
|
|
||||||
if [ $is_public -eq 0 ];
|
if [ $is_public -eq 0 ];
|
||||||
then
|
then
|
||||||
ynh_replace_string "__IS_PUBLIC__" "" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__IS_PUBLIC__" --replace_string="" --target_file="$config"
|
||||||
else
|
else
|
||||||
ynh_replace_string "__IS_PUBLIC__" "#" "${final_path}/lufi.conf"
|
ynh_replace_string --match_string="__IS_PUBLIC__" --replace_string="#" --target_file="$config"
|
||||||
fi
|
fi
|
||||||
ynh_store_file_checksum "${final_path}/lufi.conf"
|
|
||||||
|
ynh_store_file_checksum --file="$config"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP CRON
|
# BUILD LUFI
|
||||||
#=================================================
|
|
||||||
|
|
||||||
cp ../conf/cron_lufi /etc/cron.d/$app
|
|
||||||
ynh_replace_string "__FINALPATH__" "$final_path/" "/etc/cron.d/$app"
|
|
||||||
ynh_replace_string "__USER__" "$app" "/etc/cron.d/$app"
|
|
||||||
chmod +x $final_path/script/lufi
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SECURING FILES AND DIRECTORIES
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
chown -R $app: "$final_path"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SETUP SYSTEMD
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info "Upgrading systemd configuration..."
|
|
||||||
|
|
||||||
# Create a dedicated systemd config
|
|
||||||
ynh_add_systemd_config
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Install lufi's dependencies via carton
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Building Lufi..."
|
||||||
|
|
||||||
pushd $final_path
|
pushd $final_path
|
||||||
# Migrate from SQLite to PostgreSQL
|
# Migrate from SQLite to PostgreSQL
|
||||||
|
@ -181,41 +190,61 @@ if [ $need_migration_from_sqlite_to_psql -eq 1 ]; then
|
||||||
chown -R $app: "$final_path/log/production.log"
|
chown -R $app: "$final_path/log/production.log"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Restart with news parameters
|
|
||||||
ynh_systemd_action -n $app -a restart -l "Creating process id file" -p "$final_path/log/production.log"
|
|
||||||
|
|
||||||
carton exec script/lufi sqliteToOtherDB
|
carton exec script/lufi sqliteToOtherDB
|
||||||
fi
|
fi
|
||||||
|
|
||||||
carton install --deployment --without=sqlite --without=mysql --without=htpasswd --without=test
|
carton install --deployment --without=sqlite --without=mysql --without=htpasswd --without=test
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SETUP CRON
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Setuping cron..."
|
||||||
|
|
||||||
|
cp ../conf/cron_lufi /etc/cron.d/$app
|
||||||
|
ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path/" --target_file="/etc/cron.d/$app"
|
||||||
|
ynh_replace_string --match_string="__USER__" --replace_string="$app" --target_file="/etc/cron.d/$app"
|
||||||
|
chmod +x $final_path/script/lufi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# ADVERTISE SERVICE IN ADMIN PANEL
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Storing the config file checksum..."
|
||||||
|
|
||||||
|
yunohost service add $app --description "lufi service" --log "$final_path/log/production.log"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP LOGROTATE
|
# SETUP LOGROTATE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Upgrading logrotate configuration..."
|
ynh_script_progression --message="Upgrading logrotate configuration..."
|
||||||
|
|
||||||
# Use logrotate to manage app-specific logfile(s)
|
# Use logrotate to manage app-specific logfile(s)
|
||||||
ynh_use_logrotate --non-append
|
ynh_use_logrotate --non-append
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# ADVERTISE SERVICE IN ADMIN PANEL
|
# SETUP SYSTEMD
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Upgrading systemd configuration..."
|
||||||
|
|
||||||
yunohost service add $app --log "$final_path/log/production.log"
|
# Create a dedicated systemd config
|
||||||
|
ynh_add_systemd_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTART LUFI
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
# SECURING FILES AND DIRECTORIES
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Securing files and directories..."
|
||||||
|
|
||||||
ynh_systemd_action -n $app -a reload -l "Creating process id file" -p "$final_path/log/production.log"
|
# Set permissions on app files
|
||||||
|
chown -R $app: $final_path
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SSOWAT
|
# SETUP SSOWAT
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Upgrading SSOwat configuration..."
|
ynh_script_progression --message="Upgrading SSOwat configuration..."
|
||||||
|
|
||||||
ynh_app_setting_set $app unprotected_uris "/"
|
ynh_app_setting_set --app=$app --key=unprotected_uris --value="/"
|
||||||
if [ $is_public -eq 0 ]
|
if [ $is_public -eq 0 ]
|
||||||
then
|
then
|
||||||
if [ "$path_url" == "/" ]; then
|
if [ "$path_url" == "/" ]; then
|
||||||
|
@ -224,19 +253,25 @@ then
|
||||||
fi
|
fi
|
||||||
# Modify the domain to be used in a regex
|
# Modify the domain to be used in a regex
|
||||||
domain_regex=$(echo "$domain" | sed 's@-@.@g')
|
domain_regex=$(echo "$domain" | sed 's@-@.@g')
|
||||||
ynh_app_setting_set $app protected_regex "$domain_regex$path_url/stats$","$domain_regex$path_url/manifest.webapp$","$domain_regex$path_url/$","$domain_regex$path_url/d/.*$","$domain_regex$path_url/m/.*$"
|
ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/stats$","$domain_regex$path_url/manifest.webapp$","$domain_regex$path_url/$","$domain_regex$path_url/d/.*$","$domain_regex$path_url/m/.*$"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=$app --action="restart" --log_path="$final_path/log/production.log" --line_match="Creating process id file"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Reloading nginx web server..."
|
ynh_script_progression --message="Reloading nginx web server..."
|
||||||
|
|
||||||
systemctl reload nginx
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
yunohost app ssowatconf
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_print_info "Upgrade of $app completed"
|
ynh_script_progression --message="Upgrade of $app completed"
|
||||||
|
|
Loading…
Reference in a new issue