mirror of
https://github.com/YunoHost-Apps/kimai2_ynh.git
synced 2024-09-03 19:26:26 +02:00
Apply example_ynh
This commit is contained in:
parent
6e9043c774
commit
bfa98b2287
20 changed files with 1231 additions and 630 deletions
55
README.md
55
README.md
|
@ -1,23 +1,26 @@
|
||||||
# Kimai 2 app for YunoHost
|
# Kimai2 app for YunoHost
|
||||||
|
|
||||||
[](https://ci-apps.yunohost.org/jenkins/job/kimai2%20%28Community%29/lastBuild/consoleFull)
|
[](https://dash.yunohost.org/appci/app/kimai2)
|
||||||
[](https://install-app.yunohost.org/?app=kimai2)<br>
|
[](https://install-app.yunohost.org/?app=kimai2)
|
||||||
|
|
||||||
Shipped Version: **0.8.1 (pre-release)**
|
> *This package allow you to install kimai2 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.*
|
||||||
**Please note that this app will install PHP 7.2**
|
|
||||||
|
|
||||||
- [YunoHost project](https://yunohost.org)
|
|
||||||
- [Kimai 2](https://v2.kimai.org)
|
|
||||||
- [Kimai 2 source code at Github](https://github.com/kevinpapst/kimai2)
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
|
## Overview
|
||||||
This is the reloaded version of the open source timetracker Kimai. Right now its in an early development phase, its usable but some advanced features from Kimai v1 are missing by now.
|
This is the reloaded version of the open source timetracker Kimai. Right now its in an early development phase, its usable but some advanced features from Kimai v1 are missing by now.
|
||||||
|
|
||||||
Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE).
|
Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE).
|
||||||
|
https://github.com/kevinpapst/kimai2
|
||||||
|
|
||||||
## Installation
|
Shipped Version: **0.8.1 (pre-release)**
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Demo
|
||||||
|
|
||||||
|
* [Official demo](https://www.kimai.org/demo/)
|
||||||
|
|
||||||
### Guidelines
|
### Guidelines
|
||||||
|
|
||||||
|
@ -31,3 +34,29 @@ Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic i
|
||||||
|
|
||||||
$ sudo yunohost app install https://github.com/YunoHost-Apps/kimai2_ynh
|
$ sudo yunohost app install https://github.com/YunoHost-Apps/kimai2_ynh
|
||||||
1. Login details will be sent to the admin email.
|
1. Login details will be sent to the admin email.
|
||||||
|
|
||||||
|
#### Supported architectures
|
||||||
|
|
||||||
|
* x86-64b - [](https://ci-apps.yunohost.org/ci/apps/kimai2/)
|
||||||
|
* ARMv8-A - [](https://ci-apps-arm.yunohost.org/ci/apps/kimai2/)
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
* Report a bug: https://github.com/YunoHost-Apps/kimai2_ynh/issues
|
||||||
|
* App website: https://www.kimai.org/
|
||||||
|
* Upstream app repository: https://github.com/kevinpapst/kimai2
|
||||||
|
* YunoHost website: https://yunohost.org/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Developers info
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/kimai2_ynh/tree/testing).
|
||||||
|
|
||||||
|
To try the testing branch, please proceed like that.
|
||||||
|
```
|
||||||
|
sudo yunohost app install https://github.com/YunoHost-Apps/kimai2_ynh/tree/testing --debug
|
||||||
|
or
|
||||||
|
sudo yunohost app upgrade kimai2 -u https://github.com/YunoHost-Apps/kimai2_ynh/tree/testing --debug
|
||||||
|
```
|
||||||
|
|
|
@ -20,22 +20,13 @@
|
||||||
upgrade=1
|
upgrade=1
|
||||||
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=0
|
port_already_use=0
|
||||||
change_url=0
|
change_url=0
|
||||||
;;; 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
|
|
||||||
# No ldap support implimented by core app yet
|
|
||||||
Level 4=na
|
|
||||||
# Level 5:
|
|
||||||
Level 5=auto
|
Level 5=auto
|
||||||
Level 6=auto
|
|
||||||
Level 7=auto
|
|
||||||
Level 8=0
|
|
||||||
Level 9=0
|
|
||||||
Level 10=0
|
|
||||||
;;; Options
|
;;; Options
|
||||||
Email=anmol@datamol.org
|
Email=anmol@datamol.org
|
||||||
Notification=change
|
Notification=change
|
||||||
|
|
|
@ -2,10 +2,6 @@
|
||||||
# Copy this file to .env file for development, create environment variables when deploying to production
|
# Copy this file to .env file for development, create environment variables when deploying to production
|
||||||
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
||||||
|
|
||||||
# KIMAI DEFAULT ENV VARS
|
|
||||||
DATABASE_PREFIX=kimai2_
|
|
||||||
MAILER_FROM=admin@__DOMAIN__
|
|
||||||
|
|
||||||
###> symfony/framework-bundle ###
|
###> symfony/framework-bundle ###
|
||||||
APP_ENV=prod
|
APP_ENV=prod
|
||||||
APP_SECRET=__RANDOM_KEY__
|
APP_SECRET=__RANDOM_KEY__
|
||||||
|
@ -17,13 +13,23 @@ APP_SECRET=__RANDOM_KEY__
|
||||||
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
||||||
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data/kimai.sqlite"
|
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data/kimai.sqlite"
|
||||||
# Configure your db driver and server_version in config/packages/doctrine.yaml
|
# Configure your db driver and server_version in config/packages/doctrine.yaml
|
||||||
|
DATABASE_PREFIX=kimai2_
|
||||||
DATABASE_URL=mysql://__DB_USER__:__DB_PASSWORD__@127.0.0.1:3306/__DB_NAME__
|
DATABASE_URL=mysql://__DB_USER__:__DB_PASSWORD__@127.0.0.1:3306/__DB_NAME__
|
||||||
# DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite
|
# DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite
|
||||||
###< doctrine/doctrine-bundle ###
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
###> symfony/swiftmailer-bundle ###
|
###> nelmio/cors-bundle ###
|
||||||
# For Gmail as a transport, use: "gmail://username:password@localhost"
|
CORS_ALLOW_ORIGIN=^https?://localhost(:[0-9]+)?$
|
||||||
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
|
###< nelmio/cors-bundle ###
|
||||||
# Delivery is disabled by default via "null://localhost"
|
|
||||||
|
### Email configuration
|
||||||
|
# SMTP: smtp://localhost:25?encryption=&auth_mode=
|
||||||
|
# Google: gmail://username:password@default
|
||||||
|
# Amazon: ses://ACCESS_KEY:SECRET_KEY@default?region=eu-west-1
|
||||||
|
# Mailchimp: mandrill://KEY@default
|
||||||
|
# Mailgun: mailgun://KEY:DOMAIN@default
|
||||||
|
# Postmark: postmark://ID@default
|
||||||
|
# Sendgrid: sendgrid://KEY@default
|
||||||
|
# Disable emails: null://null
|
||||||
MAILER_URL=smtp://localhost:25?encryption=&auth_mode=
|
MAILER_URL=smtp://localhost:25?encryption=&auth_mode=
|
||||||
###< symfony/swiftmailer-bundle ###
|
MAILER_FROM=admin@__DOMAIN__
|
|
@ -2,10 +2,6 @@
|
||||||
# Copy this file to .env file for development, create environment variables when deploying to production
|
# Copy this file to .env file for development, create environment variables when deploying to production
|
||||||
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
||||||
|
|
||||||
# KIMAI DEFAULT ENV VARS
|
|
||||||
DATABASE_PREFIX=kimai2_
|
|
||||||
MAILER_FROM=admin@__DOMAIN__
|
|
||||||
|
|
||||||
###> symfony/framework-bundle ###
|
###> symfony/framework-bundle ###
|
||||||
APP_ENV=prod
|
APP_ENV=prod
|
||||||
APP_SECRET=__RANDOM_KEY__
|
APP_SECRET=__RANDOM_KEY__
|
||||||
|
@ -18,12 +14,22 @@ APP_SECRET=__RANDOM_KEY__
|
||||||
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data/kimai.sqlite"
|
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data/kimai.sqlite"
|
||||||
# Configure your db driver and server_version in config/packages/doctrine.yaml
|
# Configure your db driver and server_version in config/packages/doctrine.yaml
|
||||||
# DATABASE_URL=mysql://__DB_USER__:__DB_PASSWORD__@127.0.0.1:3306/__DB_NAME__
|
# DATABASE_URL=mysql://__DB_USER__:__DB_PASSWORD__@127.0.0.1:3306/__DB_NAME__
|
||||||
|
DATABASE_PREFIX=kimai2_
|
||||||
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite
|
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite
|
||||||
###< doctrine/doctrine-bundle ###
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
###> symfony/swiftmailer-bundle ###
|
###> nelmio/cors-bundle ###
|
||||||
# For Gmail as a transport, use: "gmail://username:password@localhost"
|
CORS_ALLOW_ORIGIN=^https?://localhost(:[0-9]+)?$
|
||||||
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
|
###< nelmio/cors-bundle ###
|
||||||
# Delivery is disabled by default via "null://localhost"
|
|
||||||
|
### Email configuration
|
||||||
|
# SMTP: smtp://localhost:25?encryption=&auth_mode=
|
||||||
|
# Google: gmail://username:password@default
|
||||||
|
# Amazon: ses://ACCESS_KEY:SECRET_KEY@default?region=eu-west-1
|
||||||
|
# Mailchimp: mandrill://KEY@default
|
||||||
|
# Mailgun: mailgun://KEY:DOMAIN@default
|
||||||
|
# Postmark: postmark://ID@default
|
||||||
|
# Sendgrid: sendgrid://KEY@default
|
||||||
|
# Disable emails: null://null
|
||||||
MAILER_URL=smtp://localhost:25?encryption=&auth_mode=
|
MAILER_URL=smtp://localhost:25?encryption=&auth_mode=
|
||||||
###< symfony/swiftmailer-bundle ###
|
MAILER_FROM=admin@__DOMAIN__
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
SOURCE_URL=https://github.com/kevinpapst/kimai2/archive/0.8.1.tar.gz
|
SOURCE_URL=https://github.com/kevinpapst/kimai2/releases/download/1.8/kimai-release-1.8.zip
|
||||||
SOURCE_SUM=6f156bf510f9fec540e49128392dbd2f9f569a2de6d9aed7174e4044bde39b2b
|
SOURCE_SUM=c4de84b78102d30e858746f107839fe4144c80a31bbfb84e8476f95258be1c0c
|
||||||
SOURCE_SUM_PRG=sha256sum
|
SOURCE_SUM_PRG=sha256sum
|
||||||
SOURCE_FORMAT=tar.gz
|
SOURCE_FORMAT=zip
|
||||||
SOURCE_IN_SUBDIR=true
|
SOURCE_IN_SUBDIR=false
|
||||||
SOURCE_FILENAME=
|
SOURCE_FILENAME=
|
||||||
|
|
157
conf/local.yaml
157
conf/local.yaml
|
@ -1,3 +1,160 @@
|
||||||
|
security:
|
||||||
|
providers:
|
||||||
|
chain_provider:
|
||||||
|
chain:
|
||||||
|
providers: [kimai_ldap]
|
||||||
|
firewalls:
|
||||||
|
secured_area:
|
||||||
|
kimai_ldap: ~
|
||||||
kimai:
|
kimai:
|
||||||
user:
|
user:
|
||||||
registration: __REGISTRATION__
|
registration: __REGISTRATION__
|
||||||
|
ldap:
|
||||||
|
# more infos about the connection params can be found at:
|
||||||
|
# https://docs.laminas.dev/laminas-ldap/api/
|
||||||
|
connection:
|
||||||
|
# The default hostname of the LDAP server (mandatory setting).
|
||||||
|
# You can connect to multiple servers by setting their URLs like this:
|
||||||
|
# host: "ldap://ldap.example.local ldap://ldap2.example.local"
|
||||||
|
# host: "ldaps://ldap.example.local ldaps://ldap2.example.local"
|
||||||
|
host: 127.0.0.1
|
||||||
|
|
||||||
|
# Default port for your LDAP port server
|
||||||
|
# default: 389
|
||||||
|
#port: 389
|
||||||
|
|
||||||
|
# Whether or not the LDAP client should use SSL encrypted transport.
|
||||||
|
# The useSsl and useStartTls options are mutually exclusive.
|
||||||
|
# default: false
|
||||||
|
#useSsl: false
|
||||||
|
|
||||||
|
# Enable TLS negotiation (should be favoured over useSsl).
|
||||||
|
# The useSsl and useStartTls options are mutually exclusive.
|
||||||
|
# default: false
|
||||||
|
#useStartTls: false
|
||||||
|
|
||||||
|
# The default credentials username (your service account). Some servers
|
||||||
|
# require that this is given in DN form.
|
||||||
|
# It must be given in DN form if the LDAP server requires
|
||||||
|
# a DN to bind and binding should be possible with simple usernames.
|
||||||
|
# default: empty
|
||||||
|
#username:
|
||||||
|
|
||||||
|
# Password for the username (service-account) above
|
||||||
|
# default: empty
|
||||||
|
#password:
|
||||||
|
|
||||||
|
# LDAP search filter to find the user (%s will be replaced by the username).
|
||||||
|
# Should be set, to be compatible with your object structure.
|
||||||
|
# You don not need to set this filter, unless you have a very special setup
|
||||||
|
# or use Microsofts Active directory.
|
||||||
|
#
|
||||||
|
# Defaults:
|
||||||
|
# - if bindRequiresDn is false: (&(objectClass=user)(sAMAccountName=%s))
|
||||||
|
# - if bindRequiresDn is true: (&%filter%(uid=%s))
|
||||||
|
# - %filter% = empty
|
||||||
|
# accountFilterFormat = (&(usernameAttribute=%s))
|
||||||
|
# - %filter% = (&(objectClass=posixAccount))
|
||||||
|
# accountFilterFormat = (&(objectClass=posixAccount))(&(usernameAttribute=%s))
|
||||||
|
#
|
||||||
|
# %filter% is the "filter" configuration defined below in the "user" section
|
||||||
|
#accountFilterFormat: (&(objectClass=inetOrgPerson)(uid=%s))
|
||||||
|
|
||||||
|
# If true, this instructs Kimai to retrieve the DN for the account,
|
||||||
|
# used to bind if the username is not already in DN form.
|
||||||
|
# default: true
|
||||||
|
#bindRequiresDn: true
|
||||||
|
|
||||||
|
# If set to true, this option indicates to the LDAP client that
|
||||||
|
# referrals should be followed, default: false
|
||||||
|
#optReferrals: false
|
||||||
|
|
||||||
|
# for the next options please refer to:
|
||||||
|
# https://docs.laminas.dev/laminas-ldap/api/
|
||||||
|
#allowEmptyPassword: false
|
||||||
|
#tryUsernameSplit:
|
||||||
|
#networkTimeout:
|
||||||
|
#accountCanonicalForm: 3
|
||||||
|
#accountDomainName: HOST
|
||||||
|
#accountDomainNameShort: HOST
|
||||||
|
|
||||||
|
user:
|
||||||
|
# baseDn to query for users (mandatory setting).
|
||||||
|
baseDn: ou=users, dc=yunohost, dc=org
|
||||||
|
|
||||||
|
# Field used to match the login username in your LDAP.
|
||||||
|
# If "bindRequiresDn: false" is set, the username is used in "bind".
|
||||||
|
# Otherwise a search is executed to find the users "dn" by finding the user
|
||||||
|
# via this attribute with his "baseDn" and the "filter" below.
|
||||||
|
# default: uid
|
||||||
|
usernameAttribute: uid
|
||||||
|
|
||||||
|
# LDAP search base filter to find the user / the users DN.
|
||||||
|
# Do NOT include the rule (&(usernameAttribute=%s)), it will be appended
|
||||||
|
# automatically. The result of the search filter must return 1 result only.
|
||||||
|
# default: empty (results in (&(uid=%s)) with default usernameAttribute)
|
||||||
|
filter: (&(objectClass=inetOrgPerson))
|
||||||
|
|
||||||
|
# LDAP search base filter to find the user attributes.
|
||||||
|
# This is used for a slightly different query than the one above, which is
|
||||||
|
# used to query the users DN only.
|
||||||
|
# AD users might have too many results (Exchange activesync devices
|
||||||
|
# attributes) and therefor an incompatible result structure if not changed.
|
||||||
|
# See https://github.com/kevinpapst/kimai2/issues/875
|
||||||
|
# default: (objectClass=*)
|
||||||
|
#attributesFilter: (objectClass=Person)
|
||||||
|
|
||||||
|
# Configure the mapping between LDAP attributes and user entity
|
||||||
|
# The ldap_attr must be given in lowercase!
|
||||||
|
attributes:
|
||||||
|
# The following 2 rules are automatically prepended and can be overwritten.
|
||||||
|
# Username is set to the value of the configured "usernameAttribute" field
|
||||||
|
- { ldap_attr: "usernameAttribute", user_method: setUsername }
|
||||||
|
# Only applied if you don't configure a mapping for setEmail()
|
||||||
|
- { ldap_attr: "usernameAttribute", user_method: setEmail }
|
||||||
|
# An example which will set the display name in Kimai from the
|
||||||
|
# value of the "common name" field in your LDAP
|
||||||
|
- { ldap_attr: cn, user_method: setAlias }
|
||||||
|
|
||||||
|
# You can comment the following section, if you don't want to manage
|
||||||
|
# user roles in Kimai via LDAP groups. If you want to use the group
|
||||||
|
# sync, you have to set at least the "role.baseDn" config.
|
||||||
|
# default: deactivated as "role.baseDn" is empty by default
|
||||||
|
role:
|
||||||
|
# baseDn to query for groups, MUST be set to activate the "group import"
|
||||||
|
# default: empty (deactivated)
|
||||||
|
baseDn: ou=groups, dc=kimai, dc=org
|
||||||
|
|
||||||
|
# Filter to query user groups, all results will be matched against
|
||||||
|
# the configured "groups" mapping below.
|
||||||
|
# The full search filter will ALWAYS be generated like this:
|
||||||
|
# (&%filter(userDnAttribute=valueOfUsernameAttribute))
|
||||||
|
# The following example rule will be expanded to (for user "foo"):
|
||||||
|
# (&(&(objectClass=groupOfNames))(member=foo))
|
||||||
|
# default: empty
|
||||||
|
filter: (&(objectClass=groupOfNames))
|
||||||
|
|
||||||
|
# The following field is taken from the LDAP user entry and its
|
||||||
|
# value is used in the filter above as "valueOfUsernameAttribute".
|
||||||
|
# The attribute must be given in lowercase!
|
||||||
|
# The example below uses "posix group style memberUid".
|
||||||
|
# default: dn
|
||||||
|
#usernameAttribute: uid
|
||||||
|
|
||||||
|
# Field that holds the group name, which will be used to map the
|
||||||
|
# LDAP groups with Kimai roles (see groups mapping below).
|
||||||
|
# default: cn
|
||||||
|
#nameAttribute: cn
|
||||||
|
|
||||||
|
# Field that holds the users dn in your LDAP group definition.
|
||||||
|
# Value of this configuration is used in the filter (see above).
|
||||||
|
# default: member
|
||||||
|
#userDnAttribute: member
|
||||||
|
|
||||||
|
# Convert LDAP group name (nameAttribute) to Kimai role
|
||||||
|
# You will very likely have to define mappings, unless your groups
|
||||||
|
# are called "teamlead", "admin" or "super_admin"
|
||||||
|
#groups:
|
||||||
|
# - { ldap_value: group1, role: ROLE_TEAMLEAD }
|
||||||
|
# - { ldap_value: kimai_admin, role: ROLE_ADMIN }
|
||||||
|
|
||||||
|
|
8
conf/message
Normal file
8
conf/message
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
__APP__ was successfully installed :)
|
||||||
|
|
||||||
|
Please open your __APP__ domain: https://__DOMAIN____PATH_URL__
|
||||||
|
|
||||||
|
The admin username is: __ADMIN_EMAIL__
|
||||||
|
The admin password is: __ADMIN_PASS__
|
||||||
|
|
||||||
|
If you facing any issue or want to improve the app, please open a new issue on the project page: https://github.com/YunoHost-Apps/kimai2_yn
|
|
@ -1,22 +1,34 @@
|
||||||
|
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
||||||
location ^~ __PATH__ {
|
location ^~ __PATH__ {
|
||||||
|
|
||||||
|
# Path to source
|
||||||
alias __FINALPATH__/public/;
|
alias __FINALPATH__/public/;
|
||||||
try_files $uri $uri/ @kimai;
|
|
||||||
index index.php index.htm index.html;
|
# Force usage of https
|
||||||
# Force https
|
|
||||||
if ($scheme = http) {
|
if ($scheme = http) {
|
||||||
rewrite ^ https://$server_name$request_uri? permanent;
|
rewrite ^ https://$server_name$request_uri? permanent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
index index.php index.htm index.html;
|
||||||
|
|
||||||
|
# Common parameter to increase upload size limit in conjunction with dedicated php-fpm file
|
||||||
|
#client_max_body_size 50M;
|
||||||
|
|
||||||
|
try_files $uri $uri/ @kimai;
|
||||||
location ~ \.php {
|
location ~ \.php {
|
||||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||||
fastcgi_pass unix:/var/run/php7.2-fpm-__NAME__.sock;
|
fastcgi_pass unix:/var/run/php/php7.3-fpm-__NAME__.sock;
|
||||||
|
|
||||||
fastcgi_index index.php;
|
fastcgi_index index.php;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
fastcgi_param REMOTE_USER $remote_user;
|
fastcgi_param REMOTE_USER $remote_user;
|
||||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
# Include SSOWAT user panel.
|
||||||
|
include conf.d/yunohost_panel.conf.inc;
|
||||||
|
}
|
||||||
|
|
||||||
location @kimai {
|
location @kimai {
|
||||||
rewrite /(.*)$ /index.php?/$1 last;
|
rewrite /(.*)$ /index.php?/$1 last;
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
; Start a new pool named 'www'.
|
; Start a new pool named 'www'.
|
||||||
; the variable $pool can we used in any directive and will be replaced by the
|
; the variable $pool can be used in any directive and will be replaced by the
|
||||||
; pool name ('www' here)
|
; pool name ('www' here)
|
||||||
[__NAMETOCHANGE__]
|
[__NAMETOCHANGE__]
|
||||||
|
|
||||||
; Per pool prefix
|
; Per pool prefix
|
||||||
; It only applies on the following directives:
|
; It only applies on the following directives:
|
||||||
|
; - 'access.log'
|
||||||
; - 'slowlog'
|
; - 'slowlog'
|
||||||
; - 'listen' (unixsocket)
|
; - 'listen' (unixsocket)
|
||||||
; - 'chroot'
|
; - 'chroot'
|
||||||
|
@ -24,17 +25,19 @@ group = __USER__
|
||||||
|
|
||||||
; The address on which to accept FastCGI requests.
|
; The address on which to accept FastCGI requests.
|
||||||
; Valid syntaxes are:
|
; Valid syntaxes are:
|
||||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
|
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
|
||||||
; a specific port;
|
; a specific port;
|
||||||
; 'port' - to listen on a TCP socket to all addresses on a
|
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
|
||||||
; specific port;
|
; a specific port;
|
||||||
|
; 'port' - to listen on a TCP socket to all addresses
|
||||||
|
; (IPv6 and IPv4-mapped) on a specific port;
|
||||||
; '/path/to/unix/socket' - to listen on a unix socket.
|
; '/path/to/unix/socket' - to listen on a unix socket.
|
||||||
; Note: This value is mandatory.
|
; Note: This value is mandatory.
|
||||||
listen = /var/run/php7.2-fpm-__NAMETOCHANGE__.sock
|
listen = /var/run/php/php7.3-fpm-__NAMETOCHANGE__.sock
|
||||||
|
|
||||||
; Set listen(2) backlog. A value of '-1' means unlimited.
|
; Set listen(2) backlog.
|
||||||
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
|
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
|
||||||
;listen.backlog = 128
|
;listen.backlog = 511
|
||||||
|
|
||||||
; Set permissions for unix socket, if one is used. In Linux, read/write
|
; Set permissions for unix socket, if one is used. In Linux, read/write
|
||||||
; permissions must be set in order to allow connections from a web server. Many
|
; permissions must be set in order to allow connections from a web server. Many
|
||||||
|
@ -44,8 +47,13 @@ listen = /var/run/php7.2-fpm-__NAMETOCHANGE__.sock
|
||||||
listen.owner = www-data
|
listen.owner = www-data
|
||||||
listen.group = www-data
|
listen.group = www-data
|
||||||
;listen.mode = 0660
|
;listen.mode = 0660
|
||||||
|
; When POSIX Access Control Lists are supported you can set them using
|
||||||
|
; these options, value is a comma separated list of user/group names.
|
||||||
|
; When set, listen.owner and listen.group are ignored
|
||||||
|
;listen.acl_users =
|
||||||
|
;listen.acl_groups =
|
||||||
|
|
||||||
; List of ipv4 addresses of FastCGI clients which are allowed to connect.
|
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
|
||||||
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
|
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
|
||||||
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
|
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
|
||||||
; must be separated by a comma. If this value is left blank, connections will be
|
; must be separated by a comma. If this value is left blank, connections will be
|
||||||
|
@ -59,7 +67,13 @@ listen.group = www-data
|
||||||
; - The pool processes will inherit the master process priority
|
; - The pool processes will inherit the master process priority
|
||||||
; unless it specified otherwise
|
; unless it specified otherwise
|
||||||
; Default Value: no set
|
; Default Value: no set
|
||||||
; priority = -19
|
; process.priority = -19
|
||||||
|
|
||||||
|
; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user
|
||||||
|
; or group is differrent than the master process user. It allows to create process
|
||||||
|
; core dump and ptrace the process for the pool user.
|
||||||
|
; Default Value: no
|
||||||
|
; process.dumpable = yes
|
||||||
|
|
||||||
; Choose how the process manager will control the number of child processes.
|
; Choose how the process manager will control the number of child processes.
|
||||||
; Possible Values:
|
; Possible Values:
|
||||||
|
@ -215,7 +229,7 @@ pm.max_requests = 500
|
||||||
; last request memory: 0
|
; last request memory: 0
|
||||||
;
|
;
|
||||||
; Note: There is a real-time FPM status monitoring sample web page available
|
; Note: There is a real-time FPM status monitoring sample web page available
|
||||||
; It's available in: ${prefix}/share/fpm/status.html
|
; It's available in: /usr/share/php/7.3/fpm/status.html
|
||||||
;
|
;
|
||||||
; Note: The value must start with a leading slash (/). The value can be
|
; Note: The value must start with a leading slash (/). The value can be
|
||||||
; anything, but it may not be a good idea to use the .php extension or it
|
; anything, but it may not be a good idea to use the .php extension or it
|
||||||
|
@ -275,7 +289,7 @@ pm.max_requests = 500
|
||||||
; - %{megabytes}M
|
; - %{megabytes}M
|
||||||
; - %{mega}M
|
; - %{mega}M
|
||||||
; %n: pool name
|
; %n: pool name
|
||||||
; %o: ouput header
|
; %o: output header
|
||||||
; it must be associated with embraces to specify the name of the header:
|
; it must be associated with embraces to specify the name of the header:
|
||||||
; - %{Content-Type}o
|
; - %{Content-Type}o
|
||||||
; - %{X-Powered-By}o
|
; - %{X-Powered-By}o
|
||||||
|
@ -291,9 +305,13 @@ pm.max_requests = 500
|
||||||
; %t: server time the request was received
|
; %t: server time the request was received
|
||||||
; it can accept a strftime(3) format:
|
; it can accept a strftime(3) format:
|
||||||
; %d/%b/%Y:%H:%M:%S %z (default)
|
; %d/%b/%Y:%H:%M:%S %z (default)
|
||||||
|
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
|
||||||
|
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
|
||||||
; %T: time the log has been written (the request has finished)
|
; %T: time the log has been written (the request has finished)
|
||||||
; it can accept a strftime(3) format:
|
; it can accept a strftime(3) format:
|
||||||
; %d/%b/%Y:%H:%M:%S %z (default)
|
; %d/%b/%Y:%H:%M:%S %z (default)
|
||||||
|
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
|
||||||
|
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
|
||||||
; %u: remote user
|
; %u: remote user
|
||||||
;
|
;
|
||||||
; Default: "%R - %u %t \"%m %r\" %s"
|
; Default: "%R - %u %t \"%m %r\" %s"
|
||||||
|
@ -340,7 +358,7 @@ request_terminate_timeout = 1d
|
||||||
; Chdir to this directory at the start.
|
; Chdir to this directory at the start.
|
||||||
; Note: relative path can be used.
|
; Note: relative path can be used.
|
||||||
; Default Value: current directory or / when chroot
|
; Default Value: current directory or / when chroot
|
||||||
chdir = __FINALPATH__
|
chdir = __FINALPATH__/public
|
||||||
|
|
||||||
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
||||||
; stderr will be redirected to /dev/null according to FastCGI specs.
|
; stderr will be redirected to /dev/null according to FastCGI specs.
|
||||||
|
@ -349,13 +367,22 @@ chdir = __FINALPATH__
|
||||||
; Default Value: no
|
; Default Value: no
|
||||||
catch_workers_output = yes
|
catch_workers_output = yes
|
||||||
|
|
||||||
|
; Clear environment in FPM workers
|
||||||
|
; Prevents arbitrary environment variables from reaching FPM worker processes
|
||||||
|
; by clearing the environment in workers before env vars specified in this
|
||||||
|
; pool configuration are added.
|
||||||
|
; Setting to "no" will make all environment variables available to PHP code
|
||||||
|
; via getenv(), $_ENV and $_SERVER.
|
||||||
|
; Default Value: yes
|
||||||
|
;clear_env = no
|
||||||
|
|
||||||
; Limits the extensions of the main script FPM will allow to parse. This can
|
; Limits the extensions of the main script FPM will allow to parse. This can
|
||||||
; prevent configuration mistakes on the web server side. You should only limit
|
; prevent configuration mistakes on the web server side. You should only limit
|
||||||
; FPM to .php extensions to prevent malicious users to use other extensions to
|
; FPM to .php extensions to prevent malicious users to use other extensions to
|
||||||
; exectute php code.
|
; execute php code.
|
||||||
; Note: set an empty value to allow all extensions.
|
; Note: set an empty value to allow all extensions.
|
||||||
; Default Value: .php
|
; Default Value: .php
|
||||||
;security.limit_extensions = .php .php3 .php4 .php5
|
;security.limit_extensions = .php .php3 .php4 .php5 .php7
|
||||||
|
|
||||||
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
||||||
; the current environment.
|
; the current environment.
|
||||||
|
@ -391,3 +418,13 @@ catch_workers_output = yes
|
||||||
;php_admin_flag[log_errors] = on
|
;php_admin_flag[log_errors] = on
|
||||||
;php_admin_value[memory_limit] = 32M
|
;php_admin_value[memory_limit] = 32M
|
||||||
|
|
||||||
|
; Common values to change to increase file upload limit
|
||||||
|
; php_admin_value[upload_max_filesize] = 50M
|
||||||
|
; php_admin_value[post_max_size] = 50M
|
||||||
|
; php_admin_flag[mail.add_x_header] = Off
|
||||||
|
|
||||||
|
; Other common parameters
|
||||||
|
; php_admin_value[max_execution_time] = 600
|
||||||
|
; php_admin_value[max_input_time] = 300
|
||||||
|
; php_admin_value[memory_limit] = 256M
|
||||||
|
; php_admin_flag[short_open_tag] = On
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"de": "Eine web-basierte Mehrbenutzer-Zeiterfassung mit Rechnungsdruck mit Unterstützung für mobile Endgeräte",
|
"de": "Eine web-basierte Mehrbenutzer-Zeiterfassung mit Rechnungsdruck mit Unterstützung für mobile Endgeräte",
|
||||||
"cs": "Víceuživatelská webová aplikace pro sledování času s podporou mobilních zařízení"
|
"cs": "Víceuživatelská webová aplikace pro sledování času s podporou mobilních zařízení"
|
||||||
},
|
},
|
||||||
"version": "0.8.1",
|
"version": "0.8.1~ynh1",
|
||||||
"url": "https://v2.kimai.org",
|
"url": "https://v2.kimai.org",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
|
@ -17,12 +17,12 @@
|
||||||
"url": "datamol.org"
|
"url": "datamol.org"
|
||||||
},
|
},
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"yunohost": ">= 2.7.2"
|
"yunohost": ">= 3.5"
|
||||||
},
|
},
|
||||||
"multi_instance": true,
|
"multi_instance": true,
|
||||||
"services": [
|
"services": [
|
||||||
"nginx",
|
"nginx",
|
||||||
"php7.2-fpm",
|
"php7.0-fpm",
|
||||||
"mysql"
|
"mysql"
|
||||||
],
|
],
|
||||||
"arguments": {
|
"arguments": {
|
||||||
|
@ -49,6 +49,17 @@
|
||||||
},
|
},
|
||||||
"example": "johndoe"
|
"example": "johndoe"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "is_public",
|
||||||
|
"type": "boolean",
|
||||||
|
"ask": {
|
||||||
|
"en": "Is it a public application?",
|
||||||
|
"fr": "Est-ce une application publique ?",
|
||||||
|
"de": "Ist dies eine öffentliche Applikation?",
|
||||||
|
"cs": "Je tato aplikace veřejná?"
|
||||||
|
},
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "database",
|
"name": "database",
|
||||||
"ask": {
|
"ask": {
|
||||||
|
@ -70,17 +81,6 @@
|
||||||
"cs": "Mohou se noví uživatelé registrovat?"
|
"cs": "Mohou se noví uživatelé registrovat?"
|
||||||
},
|
},
|
||||||
"default": false
|
"default": false
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "is_public",
|
|
||||||
"type": "boolean",
|
|
||||||
"ask": {
|
|
||||||
"en": "Is it a public application?",
|
|
||||||
"fr": "Est-ce une application publique ?",
|
|
||||||
"de": "Ist dies eine öffentliche Applikation?",
|
|
||||||
"cs": "Je tato aplikace veřejná?"
|
|
||||||
},
|
|
||||||
"default": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
18
pull_request_template.md
Normal file
18
pull_request_template.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
## Problem
|
||||||
|
- *Description of why you made this PR*
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
- *And how do you fix that problem*
|
||||||
|
|
||||||
|
## PR Status
|
||||||
|
- [ ] Code finished.
|
||||||
|
- [ ] Tested with Package_check.
|
||||||
|
- [ ] Fix or enhancement tested.
|
||||||
|
- [ ] Upgrade from last version tested.
|
||||||
|
- [ ] Can be reviewed and tested.
|
||||||
|
|
||||||
|
## Package_check results
|
||||||
|
---
|
||||||
|
*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results*
|
||||||
|
|
||||||
|
[/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/kimai2_ynh%20PR-NUM-%20(USERNAME)/)
|
|
@ -1,207 +1,22 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# ============= FUTURE YUNOHOST HELPER =============
|
#=================================================
|
||||||
# Delete a file checksum from the app settings
|
# COMMON VARIABLES
|
||||||
#
|
#=================================================
|
||||||
# $app should be defined when calling this helper
|
|
||||||
#
|
|
||||||
# usage: ynh_remove_file_checksum file
|
|
||||||
# | arg: file - The file for which the checksum will be deleted
|
|
||||||
ynh_delete_file_checksum () {
|
|
||||||
local checksum_setting_name=checksum_${1//[\/ ]/_} # Replace all '/' and ' ' by '_'
|
|
||||||
ynh_app_setting_delete $app $checksum_setting_name
|
|
||||||
}
|
|
||||||
|
|
||||||
|
# dependencies used by the app
|
||||||
|
pkg_dependencies=""
|
||||||
|
|
||||||
# Create a dedicated php-fpm config
|
extra_pkg_dependencies="php7.3-mbstring php7.3-gd php7.3-intl php7.3-pdo php7.3-xml php7.3-zip php7.3-xsl php7.3-ldap php7.3-mysql php7.3-sqlite3 php7.3-ctype php7.3-iconv php7.3-json php7.3-cli php7.3-simplexml php7.3-tokenizer"
|
||||||
#
|
|
||||||
# usage: ynh_add_fpm_config
|
|
||||||
ynh_add_fpm7.2_config () {
|
|
||||||
# Configure PHP-FPM 7.2 by default
|
|
||||||
local fpm_config_dir="/etc/php/7.2/fpm"
|
|
||||||
local fpm_service="php7.2-fpm"
|
|
||||||
ynh_app_setting_set $app fpm_config_dir "$fpm_config_dir"
|
|
||||||
ynh_app_setting_set $app fpm_service "$fpm_service"
|
|
||||||
finalphpconf="$fpm_config_dir/pool.d/$app.conf"
|
|
||||||
ynh_backup_if_checksum_is_different "$finalphpconf"
|
|
||||||
sudo cp ../conf/php-fpm.conf "$finalphpconf"
|
|
||||||
ynh_replace_string "__NAMETOCHANGE__" "$app" "$finalphpconf"
|
|
||||||
ynh_replace_string "__FINALPATH__" "$final_path" "$finalphpconf"
|
|
||||||
ynh_replace_string "__USER__" "$app" "$finalphpconf"
|
|
||||||
sudo chown root: "$finalphpconf"
|
|
||||||
ynh_store_file_checksum "$finalphpconf"
|
|
||||||
|
|
||||||
if [ -e "../conf/php-fpm.ini" ]
|
#=================================================
|
||||||
then
|
# PERSONAL HELPERS
|
||||||
finalphpini="$fpm_config_dir/conf.d/20-$app.ini"
|
#=================================================
|
||||||
ynh_backup_if_checksum_is_different "$finalphpini"
|
|
||||||
sudo cp ../conf/php-fpm.ini "$finalphpini"
|
|
||||||
sudo chown root: "$finalphpini"
|
|
||||||
ynh_store_file_checksum "$finalphpini"
|
|
||||||
fi
|
|
||||||
sudo systemctl reload $fpm_service
|
|
||||||
}
|
|
||||||
|
|
||||||
# Remove the dedicated php-fpm config
|
#=================================================
|
||||||
#
|
# EXPERIMENTAL HELPERS
|
||||||
# usage: ynh_remove_fpm7.2_config
|
#=================================================
|
||||||
ynh_remove_fpm7.2_config () {
|
|
||||||
local fpm_config_dir=$(ynh_app_setting_get $app fpm_config_dir)
|
|
||||||
local fpm_service=$(ynh_app_setting_get $app fpm_service)
|
|
||||||
ynh_secure_remove "$fpm_config_dir/pool.d/$app.conf"
|
|
||||||
ynh_secure_remove "$fpm_config_dir/conf.d/20-$app.ini" 2>&1
|
|
||||||
sudo systemctl reload $fpm_service
|
|
||||||
}
|
|
||||||
|
|
||||||
# Execute a command as another user
|
#=================================================
|
||||||
# usage: exec_as USER COMMAND [ARG ...]
|
# FUTURE OFFICIAL HELPERS
|
||||||
exec_as() {
|
#=================================================
|
||||||
local USER=$1
|
|
||||||
shift 1
|
|
||||||
|
|
||||||
if [[ $USER = $(whoami) ]]; then
|
|
||||||
eval $@
|
|
||||||
else
|
|
||||||
# use sudo twice to be root and be allowed to use another user
|
|
||||||
sudo sudo -u "$USER" $@
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Composer helpers
|
|
||||||
#
|
|
||||||
|
|
||||||
# Execute a composer command from a given directory
|
|
||||||
# usage: composer_exec AS_USER WORKDIR COMMAND [ARG ...]
|
|
||||||
exec_composer() {
|
|
||||||
local WORKDIR=$1
|
|
||||||
shift 1
|
|
||||||
|
|
||||||
COMPOSER_HOME="${WORKDIR}/.composer" \
|
|
||||||
sudo /usr/bin/php7.2 "${WORKDIR}/composer.phar" $@ \
|
|
||||||
-d "${WORKDIR}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Install and initialize Composer in the given directory
|
|
||||||
# usage: init_composer DESTDIR [AS_USER]
|
|
||||||
init_composer() {
|
|
||||||
local DESTDIR=$1
|
|
||||||
local AS_USER=${2:-admin}
|
|
||||||
|
|
||||||
# install composer
|
|
||||||
curl -sS https://getcomposer.org/installer \
|
|
||||||
| COMPOSER_HOME="${DESTDIR}/.composer" \
|
|
||||||
sudo /usr/bin/php7.2 -- --install-dir="$DESTDIR" \
|
|
||||||
|| ynh_die "Unable to install Composer"
|
|
||||||
|
|
||||||
# update dependencies to create composer.lock
|
|
||||||
exec_composer "$DESTDIR" install --no-dev --optimize-autoloader \
|
|
||||||
|| ynh_die "Unable to update Kimai2 core dependencies"
|
|
||||||
}
|
|
||||||
|
|
||||||
sudo_path () {
|
|
||||||
sudo env "PATH=$PATH" $@
|
|
||||||
}
|
|
||||||
|
|
||||||
# Install and initialize Composer for upgrade script in the given directory
|
|
||||||
# usage: init_composer DESTDIR [AS_USER]
|
|
||||||
init_symfony_update() {
|
|
||||||
local DESTDIR=$1
|
|
||||||
local AS_USER=${2:-admin}
|
|
||||||
|
|
||||||
# install composer for upgrade script
|
|
||||||
curl -sS https://getcomposer.org/installer \
|
|
||||||
| COMPOSER_HOME="${DESTDIR}/.composer" \
|
|
||||||
sudo /usr/bin/php7.2 -- --install-dir="$DESTDIR" \
|
|
||||||
|| ynh_die "Unable to install Composer"
|
|
||||||
|
|
||||||
# update symfony
|
|
||||||
exec_composer "$DESTDIR" update symfony/flex --no-plugins --no-scripts \
|
|
||||||
|| ynh_die "Unable to update symfony for Kimai2"
|
|
||||||
}
|
|
||||||
|
|
||||||
sudo_path () {
|
|
||||||
sudo env "PATH=$PATH" $@
|
|
||||||
}
|
|
||||||
#
|
|
||||||
# php7.2 helpers
|
|
||||||
#
|
|
||||||
|
|
||||||
ynh_install_php7 () {
|
|
||||||
|
|
||||||
ynh_package_update
|
|
||||||
ynh_package_install apt-transport-https --no-install-recommends
|
|
||||||
|
|
||||||
wget -q -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
|
|
||||||
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.list
|
|
||||||
|
|
||||||
ynh_package_update
|
|
||||||
ynh_install_app_dependencies php7.2 php7.2-zip php7.2-fpm php7.2-mysql php7.2-xml php7.2-intl php7.2-mbstring php7.2-gd php7.2-curl php7.2-bcmath php7.2-opcache php7.2-sqlite3
|
|
||||||
|
|
||||||
sudo update-alternatives --install /usr/bin/php php /usr/bin/php5 70
|
|
||||||
}
|
|
||||||
|
|
||||||
ynh_remove_php7 () {
|
|
||||||
sudo rm -f /etc/apt/sources.list.d/php7.list
|
|
||||||
sudo apt-key del 4096R/89DF5277
|
|
||||||
sudo apt-key del 2048R/11A06851
|
|
||||||
ynh_remove_app_dependencies php7.2 php7.2-zip php7.2-fpm php7.2-mysql php7.2-xml php7.2-intl php7.2-mbstring php7.2-gd php7.2-curl php7.2-bcmath php7.2-opcache php7.2-sqlite3
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Send an email to inform the administrator
|
|
||||||
#
|
|
||||||
# usage: ynh_send_readme_to_admin app_message [recipients]
|
|
||||||
# | arg: app_message - The message to send to the administrator.
|
|
||||||
# | arg: recipients - The recipients of this email. Use spaces to separate multiples recipients. - default: root
|
|
||||||
# example: "root admin@domain"
|
|
||||||
# If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you
|
|
||||||
# example: "root admin@domain user1 user2"
|
|
||||||
ynh_send_readme_to_admin() {
|
|
||||||
local app_message="${1:-...No specific information...}"
|
|
||||||
local recipients="${2:-root}"
|
|
||||||
|
|
||||||
# Retrieve the email of users
|
|
||||||
find_mails () {
|
|
||||||
local list_mails="$1"
|
|
||||||
local mail
|
|
||||||
local recipients=" "
|
|
||||||
# Read each mail in argument
|
|
||||||
for mail in $list_mails
|
|
||||||
do
|
|
||||||
# Keep root or a real email address as it is
|
|
||||||
if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@"
|
|
||||||
then
|
|
||||||
recipients="$recipients $mail"
|
|
||||||
else
|
|
||||||
# But replace an user name without a domain after by its email
|
|
||||||
if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null)
|
|
||||||
then
|
|
||||||
recipients="$recipients $mail"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "$recipients"
|
|
||||||
}
|
|
||||||
recipients=$(find_mails "$recipients")
|
|
||||||
|
|
||||||
local mail_subject="☁️🆈🅽🅷☁️: \`$app\` was just installed!"
|
|
||||||
|
|
||||||
local mail_message="This is an automated message from your beloved YunoHost server.
|
|
||||||
Specific information for the application $app.
|
|
||||||
$app_message
|
|
||||||
---
|
|
||||||
Automatic diagnosis data from YunoHost
|
|
||||||
$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')"
|
|
||||||
|
|
||||||
# Define binary to use for mail command
|
|
||||||
if [ -e /usr/bin/bsd-mailx ]
|
|
||||||
then
|
|
||||||
local mail_bin=/usr/bin/bsd-mailx
|
|
||||||
else
|
|
||||||
local mail_bin=/usr/bin/mail.mailutils
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Send the email to the recipients
|
|
||||||
echo "$mail_message" | $mail_bin -a "Content-Type: text/plain; charset=UTF-8" -s "$mail_subject" "$recipients"
|
|
||||||
}
|
|
||||||
|
|
|
@ -6,17 +6,18 @@
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
if [ ! -e _common.sh ]; then
|
#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
||||||
# Get the _common.sh file if it's not in the current directory
|
source ../settings/scripts/_common.sh
|
||||||
cp ../settings/scripts/_common.sh ./_common.sh
|
|
||||||
chmod a+rx _common.sh
|
|
||||||
fi
|
|
||||||
source _common.sh
|
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MANAGE SCRIPT FAILURE
|
# MANAGE SCRIPT FAILURE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Managing script failure..."
|
||||||
|
|
||||||
|
ynh_clean_setup () {
|
||||||
|
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,39 +25,49 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD 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)
|
||||||
database=$(ynh_app_setting_get $app database)
|
database=$(ynh_app_setting_get --app=$app --key=database)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD BACKUP STEPS
|
# STANDARD BACKUP STEPS
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE APP MAIN DIR
|
# BACKUP THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="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 --message="Backing up nginx web server configuration..."
|
||||||
|
|
||||||
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
|
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE PHP-FPM CONFIGURATION
|
# BACKUP THE PHP-FPM CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Backing up php-fpm configuration..."
|
||||||
|
|
||||||
ynh_backup "/etc/php/7.2/fpm/pool.d/$app.conf"
|
ynh_backup --src_path="/etc/php/7.3/fpm/pool.d/$app.conf"
|
||||||
|
|
||||||
if [ "$database" = "mysql" ]; then
|
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE MYSQL DATABASE
|
# BACKUP THE MYSQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_mysql_dump_db "$db_name" > db.sql
|
if [ "$database" = "mysql" ]; then
|
||||||
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
|
ynh_mysql_dump_db --database="$db_name" > db.sql
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."
|
||||||
|
|
226
scripts/install
226
scripts/install
|
@ -7,234 +7,208 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_add_extra_apt_repos__3
|
||||||
|
source ynh_install_php__3
|
||||||
|
source ynh_send_readme_to_admin__2
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MANAGE SCRIPT FAILURE
|
# MANAGE SCRIPT FAILURE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Managing script failure..."
|
||||||
|
|
||||||
|
ynh_clean_setup () {
|
||||||
|
read -p "key"
|
||||||
|
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
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Retrieving arguments from the manifest..."
|
||||||
|
|
||||||
domain=$YNH_APP_ARG_DOMAIN
|
domain=$YNH_APP_ARG_DOMAIN
|
||||||
path_url="/"
|
path_url="/"
|
||||||
admin=$YNH_APP_ARG_ADMIN
|
admin=$YNH_APP_ARG_ADMIN
|
||||||
is_public=$YNH_APP_ARG_IS_PUBLIC
|
is_public=$YNH_APP_ARG_IS_PUBLIC
|
||||||
admin_pass=$(ynh_string_random 24)
|
|
||||||
random_key=$(ynh_string_random 32)
|
|
||||||
registration=$YNH_APP_ARG_REGISTRATION
|
registration=$YNH_APP_ARG_REGISTRATION
|
||||||
database=$YNH_APP_ARG_DATABASE
|
database=$YNH_APP_ARG_DATABASE
|
||||||
|
admin_pass=$(ynh_string_random 24)
|
||||||
|
random_key=$(ynh_string_random 32)
|
||||||
|
admin_email=$(ynh_user_get_info $admin 'mail')
|
||||||
|
|
||||||
# This is a multi-instance app, meaning it can be installed several times independently
|
|
||||||
# The id of the app as stated in the manifest is available as $YNH_APP_ID
|
|
||||||
# The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...)
|
|
||||||
# The app instance name is available as $YNH_APP_INSTANCE_NAME
|
|
||||||
# - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample
|
|
||||||
# - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2
|
|
||||||
# - ynhexample__{N} for the subsequent installations, with N=3,4, ...
|
|
||||||
# The app instance name is probably what you are interested the most, since this is
|
|
||||||
# guaranteed to be unique. This is a good unique identifier to define installation path,
|
|
||||||
# db names, ...
|
|
||||||
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 --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
|
|
||||||
path_url=$(ynh_normalize_url_path $path_url)
|
|
||||||
|
|
||||||
# Check web path availability
|
|
||||||
ynh_webpath_available $domain $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
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STORE SETTINGS FROM MANIFEST
|
# STORE SETTINGS FROM MANIFEST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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 path $path_url
|
ynh_app_setting_set --app=$app --key=path --value=$path_url
|
||||||
ynh_app_setting_set $app admin $admin
|
ynh_app_setting_set --app=$app --key=admin --value=$admin
|
||||||
ynh_app_setting_set $app is_public $is_public
|
ynh_app_setting_set --app=$app --key=is_public --value=$is_public
|
||||||
ynh_app_setting_set $app random_key $random_key
|
ynh_app_setting_set --app=$app --key=random_key --value=$random_key
|
||||||
ynh_app_setting_set $app registration $registration
|
ynh_app_setting_set --app=$app --key=registration --value=$registration
|
||||||
ynh_app_setting_set $app database $database
|
ynh_app_setting_set --app=$app --key=database --value=$database
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD MODIFICATIONS
|
# STANDARD MODIFICATIONS
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL DEPENDENCIES
|
# INSTALL PHP7.3
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_install_php7
|
if [ "$(lsb_release --codename --short)" = "buster" ]; then
|
||||||
|
pkg_dependencies="$pkg_dependencies $extra_pkg_dependencies"
|
||||||
|
else
|
||||||
|
ynh_print_info --message="Installing PHP7.3..."
|
||||||
|
ynh_install_php --phpversion="7.3" --package="$extra_pkg_dependencies"
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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 --message="Configuring nginx web server..."
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
# Create a dedicated nginx config
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
if [ "$path_url" != "/" ]
|
|
||||||
then
|
|
||||||
ynh_replace_string "^#sub_path_only" "" "/etc/nginx/conf.d/$domain.d/$app.conf"
|
|
||||||
fi
|
|
||||||
ynh_store_file_checksum "/etc/nginx/conf.d/$domain.d/$app.conf"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Configuring system user..."
|
||||||
|
|
||||||
# Create a system user
|
# Create a system user
|
||||||
ynh_system_user_create $app
|
ynh_system_user_create --username=$app
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# PHP-FPM 7.2 CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# Create a dedicated php-fpm7.2 config
|
|
||||||
ynh_add_fpm7.2_config
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC SETUP
|
# SPECIFIC SETUP
|
||||||
#=================================================
|
#=================================================
|
||||||
|
# CONFIGURE KIMAI 2
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Configuring Kimai 2..."
|
||||||
|
|
||||||
# GET THE ADMIN EMAIL
|
# Configure registration
|
||||||
email=$(ynh_user_get_info $admin 'mail')
|
sudo cp ../conf/local.yaml $final_path/config/packages/local.yaml
|
||||||
|
|
||||||
# COPY LOCAL.YAML
|
|
||||||
sudo cp ../conf/local.yaml $final_path/config/packages/local.yaml
|
|
||||||
|
|
||||||
if [ $registration -eq 1 ]
|
if [ $registration -eq 1 ]
|
||||||
then
|
then
|
||||||
|
|
||||||
# MODIFY LOCAL.YAML
|
|
||||||
ynh_replace_string "__REGISTRATION__" "true" "$final_path/config/packages/local.yaml"
|
ynh_replace_string "__REGISTRATION__" "true" "$final_path/config/packages/local.yaml"
|
||||||
fi
|
else
|
||||||
|
|
||||||
if [ $registration -eq 0 ]
|
|
||||||
then
|
|
||||||
# MODIFY LOCAL.YAML
|
|
||||||
ynh_replace_string "__REGISTRATION__" "false" "$final_path/config/packages/local.yaml"
|
ynh_replace_string "__REGISTRATION__" "false" "$final_path/config/packages/local.yaml"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# CHECK WHICH DATABASE TO USE
|
env_conf=$final_path/.env
|
||||||
|
# Configure environement
|
||||||
if [ "$database" = "mysql" ]; then
|
if [ "$database" = "mysql" ]; then
|
||||||
# setup application config
|
# setup application config
|
||||||
sudo cp ../conf/.env $final_path/.env
|
sudo cp ../conf/.env.mysql $env_conf
|
||||||
#=================================================
|
db_name=$(ynh_sanitize_dbid $app)
|
||||||
# CREATE A MYSQL DATABASE
|
ynh_app_setting_set $app db_name $db_name
|
||||||
#=================================================
|
ynh_mysql_setup_db $db_name $db_name
|
||||||
|
|
||||||
### Use these lines if you need a database for the application.
|
ynh_replace_string "__RANDOM_KEY__" "$random_key" "$env_conf"
|
||||||
### `ynh_mysql_setup_db` will create a database, an associated user and a ramdom password.
|
ynh_replace_string "__DOMAIN__" "$domain" "$env_conf"
|
||||||
### The password will be stored as 'mysqlpwd' into the app settings,
|
ynh_replace_string "__DB_PASSWORD__" "$db_pwd" "$env_conf"
|
||||||
### and will be available as $db_pwd
|
ynh_replace_string "__DB_USER__" "$db_name" "$env_conf"
|
||||||
### If you're not using these lines:
|
ynh_replace_string "__DB_NAME__" "$db_name" "$env_conf"
|
||||||
### - Remove the section "BACKUP THE MYSQL DATABASE" in the backup script
|
|
||||||
### - Remove also the section "REMOVE THE MYSQL DATABASE" in the remove script
|
|
||||||
### - As well as the section "RESTORE THE MYSQL DATABASE" in the restore script
|
|
||||||
|
|
||||||
db_name=$(ynh_sanitize_dbid $app)
|
|
||||||
ynh_app_setting_set $app db_name $db_name
|
|
||||||
ynh_mysql_setup_db $db_name $db_name
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# MODIFY A CONFIG FILE
|
|
||||||
#=================================================
|
|
||||||
ynh_replace_string "__RANDOM_KEY__" "$random_key" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DOMAIN__" "$domain" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DB_PASSWORD__" "$db_pwd" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DB_USER__" "$db_name" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DB_NAME__" "$db_name" "$final_path/.env"
|
|
||||||
else
|
else
|
||||||
# setup application config
|
# setup application config
|
||||||
sudo cp ../conf/.env.sqlite $final_path/.env
|
sudo cp ../conf/.env.sqlite $env_conf
|
||||||
|
ynh_replace_string "__RANDOM_KEY__" "$random_key" "$env_conf"
|
||||||
#=================================================
|
ynh_replace_string "__DOMAIN__" "$domain" "$env_conf"
|
||||||
# MODIFY A CONFIG FILE
|
|
||||||
#=================================================
|
|
||||||
ynh_replace_string "__RANDOM_KEY__" "$random_key" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DOMAIN__" "$domain" "$final_path/.env"
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# COMPOSR AND SPECIFIC INSTALL FOR THE APP
|
#=================================================
|
||||||
init_composer $final_path
|
# BUILD KIMAI 2
|
||||||
cd $final_path && sudo /usr/bin/php7.2 bin/console doctrine:schema:create
|
#=================================================
|
||||||
cd $final_path && sudo /usr/bin/php7.2 bin/console cache:warmup --env=prod
|
ynh_print_info --message="Building Kimai 2..."
|
||||||
cd $final_path && sudo /usr/bin/php7.2 bin/console kimai:create-user "$admin" "$email" ROLE_SUPER_ADMIN "$admin_pass"
|
|
||||||
cd $final_path && sudo /usr/bin/php7.2 bin/console doctrine:migrations:version --add --all -n
|
|
||||||
|
|
||||||
|
pushd "$final_path"
|
||||||
|
php7.3 bin/console kimai:install -n
|
||||||
|
popd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP APPLICATION
|
# STORE THE CONFIG FILE CHECKSUM
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# Set right permissions
|
|
||||||
chown -R $app: $final_path
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# STORE THE CHECKSUM OF THE CONFIG FILE
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Storing the config file checksum..."
|
||||||
|
|
||||||
# Calculate and store the config file checksum into the app settings
|
# Calculate and store the config file checksum into the app settings
|
||||||
ynh_store_file_checksum "$final_path/.env"
|
ynh_store_file_checksum --file="$env_conf"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC FINALIZATION
|
||||||
|
#=================================================
|
||||||
|
# PHP-FPM CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Configuring php-fpm..."
|
||||||
|
|
||||||
|
# Create a dedicated php-fpm config
|
||||||
|
ynh_add_fpm_config --phpversion="7.3"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SECURE FILES AND DIRECTORIES
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Securing files and directories..."
|
||||||
|
|
||||||
|
# Set permissions to app files
|
||||||
|
chown -R $app: $final_path
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SSOWAT
|
# SETUP SSOWAT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Configuring SSOwat..."
|
||||||
|
|
||||||
if [ $is_public -eq 0 ]
|
|
||||||
then # Remove the public access
|
|
||||||
ynh_app_setting_delete $app skipped_uris
|
|
||||||
fi
|
|
||||||
# Make app public if necessary
|
# Make app public if necessary
|
||||||
if [ $is_public -eq 1 ]
|
if [ $is_public -eq 1 ]
|
||||||
then
|
then
|
||||||
# unprotected_uris allows SSO credentials to be passed anyway.
|
# unprotected_uris allows SSO credentials to be passed anyway.
|
||||||
ynh_app_setting_set $app unprotected_uris "/"
|
ynh_app_setting_set --app=$app --key=unprotected_uris --value="/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
systemctl reload php7.2-fpm
|
ynh_print_info --message="Reloading nginx web server..."
|
||||||
systemctl reload nginx
|
|
||||||
# Set default php to php5 or php7.0
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
if [ "$(lsb_release --codename --short)" = "jessie" ]; then
|
|
||||||
update-alternatives --set php /usr/bin/php5
|
|
||||||
else
|
|
||||||
update-alternatives --set php /usr/bin/php7.0
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SEND A README FOR THE ADMIN
|
# SEND A README FOR THE ADMIN
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Sending a readme for the admin..."
|
||||||
|
|
||||||
message=" $app was successfully installed :)
|
ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="../conf/message"
|
||||||
|
ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="../conf/message"
|
||||||
|
ynh_replace_string --match_string="__PATH_URL__" --replace_string="$path_url" --target_file="../conf/message"
|
||||||
|
ynh_replace_string --match_string="__ADMIN_EMAIL__" --replace_string="$admin_email" --target_file="../conf/message"
|
||||||
|
ynh_replace_string --match_string="__ADMIN_PASS__" --replace_string="$admin_pass" --target_file="../conf/message"
|
||||||
|
|
||||||
Please open https://$domain$path_url
|
ynh_send_readme_to_admin --app_message="../conf/message" --recipients=$admin_email --type='install'
|
||||||
|
|
||||||
The admin username is: $email
|
#=================================================
|
||||||
Here is the admin password: $admin_pass
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
If you facing any issue or want to improve the app, please open a new issue on the project page: https://github.com/YunoHost-Apps/kimai2_ynh"
|
ynh_print_info --message="Installation of $app completed"
|
||||||
|
|
||||||
ynh_send_readme_to_admin "$message"
|
|
||||||
|
|
|
@ -7,61 +7,80 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_add_extra_apt_repos__3
|
||||||
|
source ynh_install_php__3
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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)
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
database=$(ynh_app_setting_get $app database)
|
database=$(ynh_app_setting_get --app=$app --key=database)
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD REMOVE
|
# STANDARD REMOVE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
# REMOVE THE MYSQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
if [ "$database" = "mysql" ]; then
|
||||||
|
ynh_print_info --message="Removing the MySQL database..."
|
||||||
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
|
db_user=$db_name
|
||||||
|
# Remove a database if it exists, along with the associated user
|
||||||
|
ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name
|
||||||
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE PHP
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
if [ "$(lsb_release --codename --short)" != "buster" ]; then
|
||||||
|
ynh_print_info --message="Removing php..."
|
||||||
|
ynh_remove_php
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE APP MAIN DIR
|
# REMOVE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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 --message="Removing nginx web server configuration..."
|
||||||
|
|
||||||
# Remove the dedicated nginx config
|
# Remove the dedicated nginx config
|
||||||
ynh_remove_nginx_config
|
ynh_remove_nginx_config
|
||||||
|
|
||||||
if [ "$database" = "mysql" ]; then
|
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
|
||||||
db_user=$db_name
|
|
||||||
#=================================================
|
|
||||||
# REMOVE THE MYSQL DATABASE
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# Remove a database if it exists, along with the associated user
|
|
||||||
ynh_mysql_remove_db $db_user $db_name
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE PHP-FPM CONFIGURATION
|
# REMOVE PHP-FPM CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Removing php-fpm configuration..."
|
||||||
|
|
||||||
# Remove the dedicated php-fpm config
|
# Remove the dedicated php-fpm config
|
||||||
ynh_remove_fpm7.2_config
|
ynh_remove_fpm_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE DEDICATED USER
|
# REMOVE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Removing the dedicated system user..."
|
||||||
|
|
||||||
# Delete a system user
|
# Delete a system user
|
||||||
ynh_system_user_delete $app
|
ynh_system_user_delete --username=$app
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_print_info --message="Removal of $app completed"
|
||||||
|
|
108
scripts/restore
108
scripts/restore
|
@ -6,110 +6,122 @@
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
if [ ! -e _common.sh ]; then
|
#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
||||||
# Get the _common.sh file if it's not in the current directory
|
source ../settings/scripts/_common.sh
|
||||||
cp ../settings/scripts/_common.sh ./_common.sh
|
source ../settings/scripts/ynh_add_extra_apt_repos__3
|
||||||
chmod a+rx _common.sh
|
source ../settings/scripts/ynh_install_php__3
|
||||||
fi
|
|
||||||
source _common.sh
|
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MANAGE SCRIPT FAILURE
|
# MANAGE SCRIPT FAILURE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Managing script failure..."
|
||||||
|
|
||||||
|
ynh_clean_setup () {
|
||||||
|
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
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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)
|
||||||
database=$(ynh_app_setting_get $app database)
|
database=$(ynh_app_setting_get --app=$app --key=database)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE RESTORED
|
# CHECK IF THE APP CAN BE RESTORED
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# Define and install dependencies
|
|
||||||
ynh_install_php7
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE NGINX CONFIGURATION
|
# RESTORE THE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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 --message="Restoring the app main directory..."
|
||||||
|
|
||||||
ynh_restore_file "$final_path"
|
ynh_restore_file --origin_path="$final_path"
|
||||||
|
|
||||||
if [ "$database" = "mysql" ]; then
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE MYSQL DATABASE
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
db_pwd=$(ynh_app_setting_get $app mysqlpwd)
|
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
|
||||||
ynh_mysql_setup_db $db_name $db_name $db_pwd
|
|
||||||
ynh_mysql_connect_as $db_name $db_pwd $db_name < ./db.sql
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RECREATE THE DEDICATED USER
|
# RECREATE THE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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 USER RIGHTS
|
# RESTORE USER RIGHTS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Restoring user rights..."
|
||||||
|
|
||||||
# Restore permissions on app files
|
# Restore permissions on app files
|
||||||
chown -R $app: $final_path
|
chown -R $app: $final_path
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE PHP-FPM CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_restore_file "/etc/php/7.2/fpm/pool.d/$app.conf"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC RESTORATION
|
# SPECIFIC RESTORATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
# REINSTALL PHP7.3
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
if [ "$(lsb_release --codename --short)" = "buster" ]; then
|
||||||
|
pkg_dependencies="$pkg_dependencies $extra_pkg_dependencies"
|
||||||
|
else
|
||||||
|
ynh_print_info --message="Reinstalling PHP7.3..."
|
||||||
|
ynh_install_php --phpversion="7.3" --package="$extra_pkg_dependencies"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE MYSQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
if [ "$database" = "mysql" ]; then
|
||||||
|
ynh_print_info --message="Restoring the MySQL database..."
|
||||||
|
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
|
||||||
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
|
db_user=$db_name
|
||||||
|
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
|
||||||
|
ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql
|
||||||
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE PHP-FPM CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Restoring PHP-FPM configuration..."
|
||||||
|
|
||||||
|
ynh_restore_file --origin_path="/etc/php/7.3/fpm/pool.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX AND PHP-FPM
|
# RELOAD NGINX AND PHP-FPM
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Reloading nginx web server and php-fpm..."
|
||||||
|
|
||||||
systemctl reload php7.2-fpm
|
ynh_systemd_action --service_name=php7.3-fpm --action=reload
|
||||||
systemctl reload nginx
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
# Set default php to php5 or php7.0
|
|
||||||
if [ "$(lsb_release --codename --short)" == "jessie" ]; then
|
#=================================================
|
||||||
update-alternatives --set php /usr/bin/php5
|
# END OF SCRIPT
|
||||||
else
|
#=================================================
|
||||||
update-alternatives --set php /usr/bin/php7.0
|
|
||||||
fi
|
ynh_print_info --message="Restoration completed for $app"
|
||||||
|
|
274
scripts/upgrade
274
scripts/upgrade
|
@ -7,45 +7,57 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_add_extra_apt_repos__3
|
||||||
|
source ynh_install_php__3
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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)
|
||||||
admin=$(ynh_app_setting_get $app admin)
|
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
||||||
is_public=$(ynh_app_setting_get $app is_public)
|
is_public=$(ynh_app_setting_get --app=$app --key=is_public)
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
random_key=$(ynh_app_setting_get $app random_key)
|
database=$(ynh_app_setting_get $app database)
|
||||||
|
random_key=$(ynh_app_setting_get --app=$app --key=random_key)
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# CHECK VERSION
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Checking version..."
|
||||||
|
|
||||||
|
upgrade_type=$(ynh_check_app_version_changed)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# ENSURE DOWNWARD COMPATIBILITY
|
# ENSURE DOWNWARD COMPATIBILITY
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Ensuring downward compatibility..."
|
||||||
|
|
||||||
# Fix is_public as a boolean value
|
# 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
|
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 doesn't exist, create it
|
# If final_path doesn't exist, create it
|
||||||
if [ -z $final_path ]; then
|
if [ -z "$final_path" ]; then
|
||||||
final_path=/var/www/$app
|
final_path=/var/www/$app
|
||||||
ynh_app_setting_set $app final_path $final_path
|
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --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
|
||||||
|
@ -56,187 +68,169 @@ ynh_clean_setup () {
|
||||||
# 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
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# CHECK THE PATH
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# Normalize the URL path syntax
|
|
||||||
path_url=$(ynh_normalize_url_path $path_url)
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# INSTALL DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_install_php7
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD UPGRADE STEPS
|
# STANDARD UPGRADE STEPS
|
||||||
|
#=================================================
|
||||||
|
# UPGRADE PHP7.3
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
if [ "$(lsb_release --codename --short)" = "buster" ]; then
|
||||||
|
pkg_dependencies="$pkg_dependencies $extra_pkg_dependencies"
|
||||||
|
else
|
||||||
|
if [ "$(ynh_app_setting_get --app=$app --key=php_version)" != "7.3" ]; then
|
||||||
|
ynh_print_info --message="Upgrading PHP7.3..."
|
||||||
|
ynh_remove_fpm_config
|
||||||
|
ynh_remove_app_dependencies
|
||||||
|
ynh_remove_php
|
||||||
|
ynh_install_php --phpversion="7.3" --package="$extra_pkg_dependencies"
|
||||||
|
else
|
||||||
|
ynh_install_php --phpversion="7.3" --package="$extra_pkg_dependencies"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Download, check integrity, uncompress and patch the source from app.src and do required installation for update
|
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
||||||
|
|
||||||
# version before upgrade
|
|
||||||
old_ver=`sudo yunohost app info $app --output-as plain | ynh_get_plain_key version`
|
|
||||||
|
|
||||||
#version check for 0.3
|
|
||||||
version=`cd /var/www/$app && bin/console kimai:version --short 2> /dev/null || sed -n 's/^future-release=//p' .github_changelog_generator`
|
|
||||||
|
|
||||||
# Uncompress latest sources
|
|
||||||
# Create a temporary directory
|
|
||||||
tmpdir="$(mktemp -d)"
|
|
||||||
# Backup the config file in the temp dir
|
|
||||||
if [ -f $final_path/config/packages/local.yaml ]; then
|
|
||||||
cp -af "$final_path/config/packages/local.yaml" "$tmpdir/."
|
|
||||||
fi
|
|
||||||
if [ -d $final_path/var/invoices ]; then
|
|
||||||
cp -af "$final_path/var/invoices" "$tmpdir/."
|
|
||||||
fi
|
|
||||||
if [ -f $final_path/var/data/kimai.sqlite ]; then
|
|
||||||
cp -a "$final_path/var/data/kimai.sqlite" "$tmpdir/."
|
|
||||||
ynh_app_setting_set $app database "sqlite"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
ynh_setup_source "$final_path"
|
|
||||||
|
|
||||||
# If the version is 0.3, symfony update is required
|
|
||||||
if [ "$version" = "0.3" ]
|
|
||||||
then
|
then
|
||||||
ynh_secure_remove "$final_path"
|
ynh_print_info --message="Upgrading source files..."
|
||||||
ynh_setup_source "$final_path"
|
|
||||||
init_symfony_update $final_path
|
# Create a temporary directory and backup config
|
||||||
fi
|
tmpdir="$(mktemp -d)"
|
||||||
ynh_secure_remove "$final_path"
|
if [ -f $final_path/config/packages/local.yaml ]; then
|
||||||
ynh_setup_source "$final_path"
|
cp -af "$final_path/config/packages/local.yaml" "$tmpdir/."
|
||||||
if [ -f $tmpdir/local.yaml ]; then
|
fi
|
||||||
cp -af "$tmpdir/local.yaml" "$final_path/config/packages/."
|
if [ -d $final_path/var/invoices ]; then
|
||||||
fi
|
cp -af "$final_path/var/invoices" "$tmpdir/."
|
||||||
if [ -d $tmpdir/invoices ]; then
|
fi
|
||||||
cp -af "$tmpdir/invoices" "$final_path/var/."
|
if [ -f $final_path/var/data/kimai.sqlite ]; then
|
||||||
fi
|
cp -a "$final_path/var/data/kimai.sqlite" "$tmpdir/."
|
||||||
if [ -f $tmpdir/kimai.sqlite ]; then
|
ynh_app_setting_set $app database "sqlite"
|
||||||
sudo cp -af "$tmpdir/kimai.sqlite" "$final_path/var/data/."
|
fi
|
||||||
|
|
||||||
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
|
ynh_setup_source --dest_dir="$final_path"
|
||||||
|
|
||||||
|
# Restore config
|
||||||
|
if [ -f $tmpdir/local.yaml ]; then
|
||||||
|
cp -af "$tmpdir/local.yaml" "$final_path/config/packages/."
|
||||||
|
fi
|
||||||
|
if [ -d $tmpdir/invoices ]; then
|
||||||
|
cp -af "$tmpdir/invoices" "$final_path/var/."
|
||||||
|
fi
|
||||||
|
if [ -f $tmpdir/kimai.sqlite ]; then
|
||||||
|
sudo cp -af "$tmpdir/kimai.sqlite" "$final_path/var/data/."
|
||||||
|
fi
|
||||||
|
|
||||||
|
ynh_secure_remove --file="$tmpdir"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo rm -Rf "$tmpdir"
|
|
||||||
database=$(ynh_app_setting_get $app database)
|
|
||||||
if [ "$database" = "mysql" ]; then
|
|
||||||
# setup application config
|
|
||||||
sudo cp ../conf/.env $final_path/.env
|
|
||||||
|
|
||||||
# GET DATABASE SETTINGS
|
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
|
||||||
db_pwd=$(ynh_app_setting_get $app mysqlpwd)
|
|
||||||
#=================================================
|
|
||||||
# MODIFY A CONFIG FILE
|
|
||||||
#=================================================
|
|
||||||
ynh_replace_string "__RANDOM_KEY__" "$random_key" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DOMAIN__" "$domain" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DB_PASSWORD__" "$db_pwd" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DB_USER__" "$db_name" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DB_NAME__" "$db_name" "$final_path/.env"
|
|
||||||
else
|
|
||||||
# setup application config
|
|
||||||
sudo cp ../conf/.env.sqlite $final_path/.env
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# MODIFY A CONFIG FILE
|
|
||||||
#=================================================
|
|
||||||
ynh_replace_string "__RANDOM_KEY__" "$random_key" "$final_path/.env"
|
|
||||||
ynh_replace_string "__DOMAIN__" "$domain" "$final_path/.env"
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
# COMPOSR AND SPECIFIC INSTALL FOR THE APP
|
|
||||||
init_composer $final_path
|
|
||||||
(
|
|
||||||
cd $final_path && sudo /usr/bin/php7.2 bin/console cache:clear --env=prod
|
|
||||||
cd $final_path && sudo /usr/bin/php7.2 bin/console cache:warmup --env=prod
|
|
||||||
cd $final_path && sudo /usr/bin/php7.2 bin/console doctrine:migrations:migrate -n
|
|
||||||
|
|
||||||
# convert-timezone script has a problem running non-interactively (-n) on 0.8.1
|
|
||||||
# fix it here
|
|
||||||
sed -i "s/, \$amount));/, \$amount), 'y');/" /var/www/$app/src/Command/ConvertTimezoneCommand.php
|
|
||||||
|
|
||||||
# call convert-timezone script when upgrading from < 0.8 verions
|
|
||||||
# fixes timezone issue: https://github.com/kevinpapst/kimai2/pull/372
|
|
||||||
if `dpkg --compare-versions $old_ver "lt" "0.8"`
|
|
||||||
then
|
|
||||||
cd $final_path && sudo /usr/bin/php7.2 bin/console kimai:convert-timezone -n
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Upgrading nginx web server configuration..."
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
# Create a dedicated nginx config
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
if [ "$path_url" != "/" ]
|
|
||||||
then
|
|
||||||
ynh_replace_string "^#sub_path_only" "" "/etc/nginx/conf.d/$domain.d/$app.conf"
|
|
||||||
fi
|
|
||||||
ynh_store_file_checksum "/etc/nginx/conf.d/$domain.d/$app.conf"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Making sure dedicated system user exists..."
|
||||||
|
|
||||||
# Create a system user
|
# Create a dedicated user (if not existing)
|
||||||
ynh_system_user_create $app
|
ynh_system_user_create --username=$app
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# PHP-FPM 7.2 CONFIGURATION
|
# PHP-FPM CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Upgrading php-fpm configuration..."
|
||||||
|
|
||||||
# Create a dedicated php-fpm7.1 config
|
# Create a dedicated php-fpm config
|
||||||
ynh_add_fpm7.2_config
|
ynh_add_fpm_config --phpversion="7.3"
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC UPGRADE
|
# SPECIFIC UPGRADE
|
||||||
#=================================================
|
#=================================================
|
||||||
# ...
|
# CONFIGURE KIMAI 2
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Configuring Kimai 2..."
|
||||||
|
|
||||||
|
env_conf=$final_path/.env
|
||||||
|
|
||||||
# Verify the checksum and backup the file if it's different
|
# Verify the checksum and backup the file if it's different
|
||||||
ynh_backup_if_checksum_is_different "$final_path/.env"
|
ynh_backup_if_checksum_is_different "$env_conf"
|
||||||
|
|
||||||
|
# Configure environement
|
||||||
|
if [ "$database" = "mysql" ]; then
|
||||||
|
# setup application config
|
||||||
|
sudo cp ../conf/.env.mysql $env_conf
|
||||||
|
db_name=$(ynh_sanitize_dbid $app)
|
||||||
|
ynh_app_setting_set $app db_name $db_name
|
||||||
|
ynh_mysql_setup_db $db_name $db_name
|
||||||
|
|
||||||
|
ynh_replace_string "__RANDOM_KEY__" "$random_key" "$env_conf"
|
||||||
|
ynh_replace_string "__DOMAIN__" "$domain" "$env_conf"
|
||||||
|
ynh_replace_string "__DB_PASSWORD__" "$db_pwd" "$env_conf"
|
||||||
|
ynh_replace_string "__DB_USER__" "$db_name" "$env_conf"
|
||||||
|
ynh_replace_string "__DB_NAME__" "$db_name" "$env_conf"
|
||||||
|
else
|
||||||
|
# setup application config
|
||||||
|
sudo cp ../conf/.env.sqlite $env_conf
|
||||||
|
ynh_replace_string "__RANDOM_KEY__" "$random_key" "$env_conf"
|
||||||
|
ynh_replace_string "__DOMAIN__" "$domain" "$env_conf"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# UPGRADE KIMAI 2
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Upgrading Kimai 2..."
|
||||||
|
|
||||||
|
pushd "$final_path"
|
||||||
|
php7.3 bin/console kimai:update
|
||||||
|
popd
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# STORE THE CONFIG FILE CHECKSUM
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Storing the config file checksum..."
|
||||||
|
|
||||||
|
|
||||||
# Recalculate and store the config file checksum into the app settings
|
# Recalculate and store the config file checksum into the app settings
|
||||||
ynh_store_file_checksum "$final_path/.env"
|
ynh_store_file_checksum "$env_conf"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# SECURE FILES AND DIRECTORIES
|
# SECURE FILES AND DIRECTORIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Securing files and directories..."
|
||||||
|
|
||||||
# Set right permissions
|
# Set permissions on app files
|
||||||
chown -R $app: $final_path
|
chown -R $app: $final_path
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SSOWAT
|
# SETUP SSOWAT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info --message="Upgrading SSOwat configuration..."
|
||||||
|
|
||||||
if [ $is_public -eq 0 ]
|
|
||||||
then # Remove the public access
|
|
||||||
ynh_app_setting_delete $app skipped_uris
|
|
||||||
fi
|
|
||||||
# Make app public if necessary
|
# Make app public if necessary
|
||||||
if [ $is_public -eq 1 ]
|
if [ $is_public -eq 1 ]
|
||||||
then
|
then
|
||||||
# unprotected_uris allows SSO credentials to be passed anyway
|
# unprotected_uris allows SSO credentials to be passed anyway
|
||||||
ynh_app_setting_set $app unprotected_uris "/"
|
ynh_app_setting_set --app=$app --key=unprotected_uris --value="/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
systemctl reload php7.2-fpm
|
ynh_print_info --message="Reloading nginx web server..."
|
||||||
systemctl reload nginx
|
|
||||||
# Set default php to php5 or php7.0
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
if [ "$(lsb_release --codename --short)" == "jessie" ]; then
|
|
||||||
update-alternatives --set php /usr/bin/php5
|
#=================================================
|
||||||
else
|
# END OF SCRIPT
|
||||||
update-alternatives --set php /usr/bin/php7.0
|
#=================================================
|
||||||
fi
|
|
||||||
|
ynh_print_info --message="Upgrade of $app completed"
|
||||||
|
|
294
scripts/ynh_add_extra_apt_repos__3
Normal file
294
scripts/ynh_add_extra_apt_repos__3
Normal file
|
@ -0,0 +1,294 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Pin a repository.
|
||||||
|
#
|
||||||
|
# usage: ynh_pin_repo --package=packages --pin=pin_filter [--priority=priority_value] [--name=name] [--append]
|
||||||
|
# | arg: -p, --package - Packages concerned by the pin. Or all, *.
|
||||||
|
# | arg: -i, --pin - Filter for the pin.
|
||||||
|
# | arg: -p, --priority - Priority for the pin
|
||||||
|
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||||
|
# | arg: -a, --append - Do not overwrite existing files.
|
||||||
|
#
|
||||||
|
# See https://manpages.debian.org/stretch/apt/apt_preferences.5.en.html for information about pinning.
|
||||||
|
#
|
||||||
|
ynh_pin_repo () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=pirna
|
||||||
|
declare -Ar args_array=( [p]=package= [i]=pin= [r]=priority= [n]=name= [a]=append )
|
||||||
|
local package
|
||||||
|
local pin
|
||||||
|
local priority
|
||||||
|
local name
|
||||||
|
local append
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
package="${package:-*}"
|
||||||
|
priority=${priority:-50}
|
||||||
|
name="${name:-$app}"
|
||||||
|
append=${append:-0}
|
||||||
|
|
||||||
|
if [ $append -eq 1 ]
|
||||||
|
then
|
||||||
|
append="tee -a"
|
||||||
|
else
|
||||||
|
append="tee"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "/etc/apt/preferences.d"
|
||||||
|
echo "Package: $package
|
||||||
|
Pin: $pin
|
||||||
|
Pin-Priority: $priority" \
|
||||||
|
| $append "/etc/apt/preferences.d/$name"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add a repository.
|
||||||
|
#
|
||||||
|
# usage: ynh_add_repo --uri=uri --suite=suite --component=component [--name=name] [--append]
|
||||||
|
# | arg: -u, --uri - Uri of the repository.
|
||||||
|
# | arg: -s, --suite - Suite of the repository.
|
||||||
|
# | arg: -c, --component - Component of the repository.
|
||||||
|
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||||
|
# | arg: -a, --append - Do not overwrite existing files.
|
||||||
|
#
|
||||||
|
# Example for a repo like deb http://forge.yunohost.org/debian/ stretch stable
|
||||||
|
# uri suite component
|
||||||
|
# ynh_add_repo --uri=http://forge.yunohost.org/debian/ --suite=stretch --component=stable
|
||||||
|
#
|
||||||
|
ynh_add_repo () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=uscna
|
||||||
|
declare -Ar args_array=( [u]=uri= [s]=suite= [c]=component= [n]=name= [a]=append )
|
||||||
|
local uri
|
||||||
|
local suite
|
||||||
|
local component
|
||||||
|
local name
|
||||||
|
local append
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
name="${name:-$app}"
|
||||||
|
append=${append:-0}
|
||||||
|
|
||||||
|
if [ $append -eq 1 ]
|
||||||
|
then
|
||||||
|
append="tee -a"
|
||||||
|
else
|
||||||
|
append="tee"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "/etc/apt/sources.list.d"
|
||||||
|
# Add the new repo in sources.list.d
|
||||||
|
echo "deb $uri $suite $component" \
|
||||||
|
| $append "/etc/apt/sources.list.d/$name.list"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add an extra repository correctly, pin it and get the key.
|
||||||
|
#
|
||||||
|
# usage: ynh_install_extra_repo --repo="repo" [--key=key_url] [--priority=priority_value] [--name=name] [--append]
|
||||||
|
# | arg: -r, --repo - Complete url of the extra repository.
|
||||||
|
# | arg: -k, --key - url to get the public key.
|
||||||
|
# | arg: -p, --priority - Priority for the pin
|
||||||
|
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||||
|
# | arg: -a, --append - Do not overwrite existing files.
|
||||||
|
ynh_install_extra_repo () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=rkpna
|
||||||
|
declare -Ar args_array=( [r]=repo= [k]=key= [p]=priority= [n]=name= [a]=append )
|
||||||
|
local repo
|
||||||
|
local key
|
||||||
|
local priority
|
||||||
|
local name
|
||||||
|
local append
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
name="${name:-$app}"
|
||||||
|
append=${append:-0}
|
||||||
|
key=${key:-0}
|
||||||
|
priority=${priority:-}
|
||||||
|
|
||||||
|
if [ $append -eq 1 ]
|
||||||
|
then
|
||||||
|
append="--append"
|
||||||
|
wget_append="tee -a"
|
||||||
|
else
|
||||||
|
append=""
|
||||||
|
wget_append="tee"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Split the repository into uri, suite and components.
|
||||||
|
# Remove "deb " at the beginning of the repo.
|
||||||
|
repo="${repo#deb }"
|
||||||
|
|
||||||
|
# Get the uri
|
||||||
|
local uri="$(echo "$repo" | awk '{ print $1 }')"
|
||||||
|
|
||||||
|
# Get the suite
|
||||||
|
local suite="$(echo "$repo" | awk '{ print $2 }')"
|
||||||
|
|
||||||
|
# Get the components
|
||||||
|
local component="${repo##$uri $suite }"
|
||||||
|
|
||||||
|
# Add the repository into sources.list.d
|
||||||
|
ynh_add_repo --uri="$uri" --suite="$suite" --component="$component" --name="$name" $append
|
||||||
|
|
||||||
|
# Pin the new repo with the default priority, so it won't be used for upgrades.
|
||||||
|
# Build $pin from the uri without http and any sub path
|
||||||
|
local pin="${uri#*://}"
|
||||||
|
pin="${pin%%/*}"
|
||||||
|
# Set a priority only if asked
|
||||||
|
if [ -n "$priority" ]
|
||||||
|
then
|
||||||
|
priority="--priority=$priority"
|
||||||
|
fi
|
||||||
|
ynh_pin_repo --package="*" --pin="origin \"$pin\"" $priority --name="$name" $append
|
||||||
|
|
||||||
|
# Get the public key for the repo
|
||||||
|
if [ -n "$key" ]
|
||||||
|
then
|
||||||
|
mkdir -p "/etc/apt/trusted.gpg.d"
|
||||||
|
wget -q "$key" -O - | gpg --dearmor | $wget_append /etc/apt/trusted.gpg.d/$name.gpg > /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update the list of package with the new repo
|
||||||
|
ynh_package_update
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove an extra repository and the assiociated configuration.
|
||||||
|
#
|
||||||
|
# usage: ynh_remove_extra_repo [--name=name]
|
||||||
|
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||||
|
ynh_remove_extra_repo () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=n
|
||||||
|
declare -Ar args_array=( [n]=name= )
|
||||||
|
local name
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
name="${name:-$app}"
|
||||||
|
|
||||||
|
ynh_secure_remove "/etc/apt/sources.list.d/$name.list"
|
||||||
|
ynh_secure_remove "/etc/apt/preferences.d/$name"
|
||||||
|
ynh_secure_remove "/etc/apt/trusted.gpg.d/$name.gpg"
|
||||||
|
ynh_secure_remove "/etc/apt/trusted.gpg.d/$name.asc"
|
||||||
|
|
||||||
|
# Update the list of package to exclude the old repo
|
||||||
|
ynh_package_update
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install packages from an extra repository properly.
|
||||||
|
#
|
||||||
|
# usage: ynh_install_extra_app_dependencies --repo="repo" --package="dep1 dep2" [--key=key_url] [--name=name]
|
||||||
|
# | arg: -r, --repo - Complete url of the extra repository.
|
||||||
|
# | arg: -p, --package - The packages to install from this extra repository
|
||||||
|
# | arg: -k, --key - url to get the public key.
|
||||||
|
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||||
|
ynh_install_extra_app_dependencies () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=rpkn
|
||||||
|
declare -Ar args_array=( [r]=repo= [p]=package= [k]=key= [n]=name= )
|
||||||
|
local repo
|
||||||
|
local package
|
||||||
|
local key
|
||||||
|
local name
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
name="${name:-$app}"
|
||||||
|
key=${key:-0}
|
||||||
|
|
||||||
|
# Set a key only if asked
|
||||||
|
if [ -n "$key" ]
|
||||||
|
then
|
||||||
|
key="--key=$key"
|
||||||
|
fi
|
||||||
|
# Add an extra repository for those packages
|
||||||
|
ynh_install_extra_repo --repo="$repo" $key --priority=995 --name=$name
|
||||||
|
|
||||||
|
# Install requested dependencies from this extra repository.
|
||||||
|
ynh_add_app_dependencies --package="$package"
|
||||||
|
|
||||||
|
# Remove this extra repository after packages are installed
|
||||||
|
ynh_remove_extra_repo --name=$app
|
||||||
|
}
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# patched version of ynh_install_app_dependencies to be used with ynh_add_app_dependencies
|
||||||
|
|
||||||
|
# Define and install dependencies with a equivs control file
|
||||||
|
# This helper can/should only be called once per app
|
||||||
|
#
|
||||||
|
# usage: ynh_install_app_dependencies dep [dep [...]]
|
||||||
|
# | arg: dep - the package name to install in dependence
|
||||||
|
# You can give a choice between some package with this syntax : "dep1|dep2"
|
||||||
|
# Example : ynh_install_app_dependencies dep1 dep2 "dep3|dep4|dep5"
|
||||||
|
# This mean in the dependence tree : dep1 & dep2 & (dep3 | dep4 | dep5)
|
||||||
|
#
|
||||||
|
# Requires YunoHost version 2.6.4 or higher.
|
||||||
|
ynh_install_app_dependencies () {
|
||||||
|
local dependencies=$@
|
||||||
|
dependencies="$(echo "$dependencies" | sed 's/\([^\<=\>]\)\ \([^(]\)/\1, \2/g')"
|
||||||
|
dependencies=${dependencies//|/ | }
|
||||||
|
local manifest_path="../manifest.json"
|
||||||
|
if [ ! -e "$manifest_path" ]; then
|
||||||
|
manifest_path="../settings/manifest.json" # Into the restore script, the manifest is not at the same place
|
||||||
|
fi
|
||||||
|
|
||||||
|
local version=$(grep '\"version\": ' "$manifest_path" | cut -d '"' -f 4) # Retrieve the version number in the manifest file.
|
||||||
|
if [ ${#version} -eq 0 ]; then
|
||||||
|
version="1.0"
|
||||||
|
fi
|
||||||
|
local dep_app=${app//_/-} # Replace all '_' by '-'
|
||||||
|
|
||||||
|
# Handle specific versions
|
||||||
|
if [[ "$dependencies" =~ [\<=\>] ]]
|
||||||
|
then
|
||||||
|
# Replace version specifications by relationships syntax
|
||||||
|
# https://www.debian.org/doc/debian-policy/ch-relationships.html
|
||||||
|
# Sed clarification
|
||||||
|
# [^(\<=\>] ignore if it begins by ( or < = >. To not apply twice.
|
||||||
|
# [\<=\>] matches < = or >
|
||||||
|
# \+ matches one or more occurence of the previous characters, for >= or >>.
|
||||||
|
# [^,]\+ matches all characters except ','
|
||||||
|
# Ex: package>=1.0 will be replaced by package (>= 1.0)
|
||||||
|
dependencies="$(echo "$dependencies" | sed 's/\([^(\<=\>]\)\([\<=\>]\+\)\([^,]\+\)/\1 (\2 \3)/g')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat > /tmp/${dep_app}-ynh-deps.control << EOF # Make a control file for equivs-build
|
||||||
|
Section: misc
|
||||||
|
Priority: optional
|
||||||
|
Package: ${dep_app}-ynh-deps
|
||||||
|
Version: ${version}
|
||||||
|
Depends: ${dependencies}
|
||||||
|
Architecture: all
|
||||||
|
Description: Fake package for $app (YunoHost app) dependencies
|
||||||
|
This meta-package is only responsible of installing its dependencies.
|
||||||
|
EOF
|
||||||
|
ynh_package_install_from_equivs /tmp/${dep_app}-ynh-deps.control \
|
||||||
|
|| ynh_die --message="Unable to install dependencies" # Install the fake package and its dependencies
|
||||||
|
rm /tmp/${dep_app}-ynh-deps.control
|
||||||
|
ynh_app_setting_set --app=$app --key=apt_dependencies --value="$dependencies"
|
||||||
|
}
|
||||||
|
|
||||||
|
ynh_add_app_dependencies () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=pr
|
||||||
|
declare -Ar args_array=( [p]=package= [r]=replace)
|
||||||
|
local package
|
||||||
|
local replace
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
replace=${replace:-0}
|
||||||
|
|
||||||
|
local current_dependencies=""
|
||||||
|
if [ $replace -eq 0 ]
|
||||||
|
then
|
||||||
|
local dep_app=${app//_/-} # Replace all '_' by '-'
|
||||||
|
if ynh_package_is_installed --package="${dep_app}-ynh-deps"
|
||||||
|
then
|
||||||
|
current_dependencies="$(dpkg-query --show --showformat='${Depends}' ${dep_app}-ynh-deps) "
|
||||||
|
fi
|
||||||
|
|
||||||
|
current_dependencies=${current_dependencies// | /|}
|
||||||
|
fi
|
||||||
|
|
||||||
|
ynh_install_app_dependencies "${current_dependencies}${package}"
|
||||||
|
}
|
78
scripts/ynh_install_php__3
Normal file
78
scripts/ynh_install_php__3
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Install another version of php.
|
||||||
|
#
|
||||||
|
# usage: ynh_install_php --phpversion=phpversion [--package=packages]
|
||||||
|
# | arg: -v, --phpversion - Version of php to install. Can be one of 7.1, 7.2 or 7.3
|
||||||
|
# | arg: -p, --package - Additionnal php packages to install
|
||||||
|
ynh_install_php () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=vp
|
||||||
|
declare -Ar args_array=( [v]=phpversion= [p]=package= )
|
||||||
|
local phpversion
|
||||||
|
local package
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
package=${package:-}
|
||||||
|
|
||||||
|
# Store php_version into the config of this app
|
||||||
|
ynh_app_setting_set $app php_version $phpversion
|
||||||
|
|
||||||
|
if [ "$phpversion" == "7.0" ]
|
||||||
|
then
|
||||||
|
ynh_die "Do not use ynh_install_php to install php7.0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Store the ID of this app and the version of php requested for it
|
||||||
|
echo "$YNH_APP_INSTANCE_NAME:$phpversion" | tee --append "/etc/php/ynh_app_version"
|
||||||
|
|
||||||
|
# Add an extra repository for those packages
|
||||||
|
ynh_install_extra_repo --repo="https://packages.sury.org/php/ $(lsb_release -sc) main" --key="https://packages.sury.org/php/apt.gpg" --priority=995 --name=extra_php_version
|
||||||
|
|
||||||
|
# Install requested dependencies from this extra repository.
|
||||||
|
# Install php-fpm first, otherwise php will install apache as a dependency.
|
||||||
|
ynh_add_app_dependencies --package="php${phpversion}-fpm"
|
||||||
|
ynh_add_app_dependencies --package="php$phpversion php${phpversion}-common $package"
|
||||||
|
|
||||||
|
# Set php7.0 back as the default version for php-cli.
|
||||||
|
update-alternatives --set php /usr/bin/php7.0
|
||||||
|
|
||||||
|
# Pin this extra repository after packages are installed to prevent sury of doing shit
|
||||||
|
ynh_pin_repo --package="*" --pin="origin \"packages.sury.org\"" 200 --name=extra_php_version
|
||||||
|
ynh_pin_repo --package="php7.0*" --pin="origin \"packages.sury.org\"" 600 --name=extra_php_version --append
|
||||||
|
|
||||||
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
|
yunohost service add php${phpversion}-fpm --log "/var/log/php${phpversion}-fpm.log"
|
||||||
|
}
|
||||||
|
|
||||||
|
ynh_remove_php () {
|
||||||
|
# Get the version of php used by this app
|
||||||
|
local phpversion=$(ynh_app_setting_get $app php_version)
|
||||||
|
|
||||||
|
if [ "$phpversion" == "7.0" ] || [ -z "$phpversion" ]
|
||||||
|
then
|
||||||
|
if [ "$phpversion" == "7.0" ]
|
||||||
|
then
|
||||||
|
ynh_print_err "Do not use ynh_remove_php to install php7.0"
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove the line for this app
|
||||||
|
sed --in-place "/$YNH_APP_INSTANCE_NAME:$phpversion/d" "/etc/php/ynh_app_version"
|
||||||
|
|
||||||
|
# If no other app uses this version of php, remove it.
|
||||||
|
if ! grep --quiet "$phpversion" "/etc/php/ynh_app_version"
|
||||||
|
then
|
||||||
|
# Purge php dependences for this version.
|
||||||
|
ynh_package_autopurge "php$phpversion php${phpversion}-fpm php${phpversion}-common"
|
||||||
|
# Remove the service from the admin panel
|
||||||
|
yunohost service remove php${phpversion}-fpm
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If no other app uses alternate php versions, remove the extra repo for php
|
||||||
|
if [ ! -s "/etc/php/ynh_app_version" ]
|
||||||
|
then
|
||||||
|
ynh_secure_remove /etc/php/ynh_app_version
|
||||||
|
fi
|
||||||
|
}
|
140
scripts/ynh_send_readme_to_admin__2
Normal file
140
scripts/ynh_send_readme_to_admin__2
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Send an email to inform the administrator
|
||||||
|
#
|
||||||
|
# usage: ynh_send_readme_to_admin --app_message=app_message [--recipients=recipients] [--type=type]
|
||||||
|
# | arg: -m --app_message= - The file with the content to send to the administrator.
|
||||||
|
# | arg: -r, --recipients= - The recipients of this email. Use spaces to separate multiples recipients. - default: root
|
||||||
|
# example: "root admin@domain"
|
||||||
|
# If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you
|
||||||
|
# example: "root admin@domain user1 user2"
|
||||||
|
# | arg: -t, --type= - Type of mail, could be 'backup', 'change_url', 'install', 'remove', 'restore', 'upgrade'
|
||||||
|
ynh_send_readme_to_admin() {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
declare -Ar args_array=( [m]=app_message= [r]=recipients= [t]=type= )
|
||||||
|
local app_message
|
||||||
|
local recipients
|
||||||
|
local type
|
||||||
|
# Manage arguments with getopts
|
||||||
|
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
app_message="${app_message:-}"
|
||||||
|
recipients="${recipients:-root}"
|
||||||
|
type="${type:-install}"
|
||||||
|
|
||||||
|
# Get the value of admin_mail_html
|
||||||
|
admin_mail_html=$(ynh_app_setting_get $app admin_mail_html)
|
||||||
|
admin_mail_html="${admin_mail_html:-0}"
|
||||||
|
|
||||||
|
# Retrieve the email of users
|
||||||
|
find_mails () {
|
||||||
|
local list_mails="$1"
|
||||||
|
local mail
|
||||||
|
local recipients=" "
|
||||||
|
# Read each mail in argument
|
||||||
|
for mail in $list_mails
|
||||||
|
do
|
||||||
|
# Keep root or a real email address as it is
|
||||||
|
if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@"
|
||||||
|
then
|
||||||
|
recipients="$recipients $mail"
|
||||||
|
else
|
||||||
|
# But replace an user name without a domain after by its email
|
||||||
|
if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null)
|
||||||
|
then
|
||||||
|
recipients="$recipients $mail"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "$recipients"
|
||||||
|
}
|
||||||
|
recipients=$(find_mails "$recipients")
|
||||||
|
|
||||||
|
# Subject base
|
||||||
|
local mail_subject="☁️🆈🅽🅷☁️: \`$app\`"
|
||||||
|
|
||||||
|
# Adapt the subject according to the type of mail required.
|
||||||
|
if [ "$type" = "backup" ]; then
|
||||||
|
mail_subject="$mail_subject has just been backup."
|
||||||
|
elif [ "$type" = "change_url" ]; then
|
||||||
|
mail_subject="$mail_subject has just been moved to a new URL!"
|
||||||
|
elif [ "$type" = "remove" ]; then
|
||||||
|
mail_subject="$mail_subject has just been removed!"
|
||||||
|
elif [ "$type" = "restore" ]; then
|
||||||
|
mail_subject="$mail_subject has just been restored!"
|
||||||
|
elif [ "$type" = "upgrade" ]; then
|
||||||
|
mail_subject="$mail_subject has just been upgraded!"
|
||||||
|
else # install
|
||||||
|
mail_subject="$mail_subject has just been installed!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local mail_message="This is an automated message from your beloved YunoHost server.
|
||||||
|
|
||||||
|
Specific information for the application $app.
|
||||||
|
|
||||||
|
$(if [ -n "$app_message" ]
|
||||||
|
then
|
||||||
|
cat "$app_message"
|
||||||
|
else
|
||||||
|
echo "...No specific information..."
|
||||||
|
fi)
|
||||||
|
|
||||||
|
---
|
||||||
|
Automatic diagnosis data from YunoHost
|
||||||
|
|
||||||
|
__PRE_TAG1__$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')__PRE_TAG2__"
|
||||||
|
|
||||||
|
# Store the message into a file for further modifications.
|
||||||
|
echo "$mail_message" > mail_to_send
|
||||||
|
|
||||||
|
# If a html email is required. Apply html tags to the message.
|
||||||
|
if [ "$admin_mail_html" -eq 1 ]
|
||||||
|
then
|
||||||
|
# Insert 'br' tags at each ending of lines.
|
||||||
|
ynh_replace_string "$" "<br>" mail_to_send
|
||||||
|
|
||||||
|
# Insert starting HTML tags
|
||||||
|
sed --in-place '1s@^@<!DOCTYPE html>\n<html>\n<head></head>\n<body>\n@' mail_to_send
|
||||||
|
|
||||||
|
# Keep tabulations
|
||||||
|
ynh_replace_string " " "\ \ " mail_to_send
|
||||||
|
ynh_replace_string "\t" "\ \ " mail_to_send
|
||||||
|
|
||||||
|
# Insert url links tags
|
||||||
|
ynh_replace_string "__URL_TAG1__\(.*\)__URL_TAG2__\(.*\)__URL_TAG3__" "<a href=\"\2\">\1</a>" mail_to_send
|
||||||
|
|
||||||
|
# Insert pre tags
|
||||||
|
ynh_replace_string "__PRE_TAG1__" "<pre>" mail_to_send
|
||||||
|
ynh_replace_string "__PRE_TAG2__" "<\pre>" mail_to_send
|
||||||
|
|
||||||
|
# Insert finishing HTML tags
|
||||||
|
echo -e "\n</body>\n</html>" >> mail_to_send
|
||||||
|
|
||||||
|
# Otherwise, remove tags to keep a plain text.
|
||||||
|
else
|
||||||
|
# Remove URL tags
|
||||||
|
ynh_replace_string "__URL_TAG[1,3]__" "" mail_to_send
|
||||||
|
ynh_replace_string "__URL_TAG2__" ": " mail_to_send
|
||||||
|
|
||||||
|
# Remove PRE tags
|
||||||
|
ynh_replace_string "__PRE_TAG[1-2]__" "" mail_to_send
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Define binary to use for mail command
|
||||||
|
if [ -e /usr/bin/bsd-mailx ]
|
||||||
|
then
|
||||||
|
local mail_bin=/usr/bin/bsd-mailx
|
||||||
|
else
|
||||||
|
local mail_bin=/usr/bin/mail.mailutils
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$admin_mail_html" -eq 1 ]
|
||||||
|
then
|
||||||
|
content_type="text/html"
|
||||||
|
else
|
||||||
|
content_type="text/plain"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Send the email to the recipients
|
||||||
|
cat mail_to_send | $mail_bin -a "Content-Type: $content_type; charset=UTF-8" -s "$mail_subject" "$recipients"
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue