mirror of
https://github.com/YunoHost-Apps/pihole_ynh.git
synced 2024-09-03 20:05:58 +02:00
commit
de8ab448d6
22 changed files with 1009 additions and 1300 deletions
44
CHANGELOG.md
Normal file
44
CHANGELOG.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
Changelog
|
||||
=========
|
||||
|
||||
## Unreleased
|
||||
- Nothing for now...
|
||||
|
||||
## [3.3.1~ynh6](https://github.com/YunoHost-Apps/pihole_ynh/pull/51) - 2020-03-29
|
||||
|
||||
#### Added
|
||||
* [Add a changelog](https://github.com/YunoHost-Apps/pihole_ynh/pull/51/commits/7299718e45d115a9b22b1eeb59b37028a731b616)
|
||||
|
||||
#### Changed
|
||||
- [Update to last standard](https://github.com/YunoHost-Apps/pihole_ynh/pull/51/commits/9294176a2d243d68b3095d0037466814d8efdcd5)
|
||||
- [Update helpers](https://github.com/YunoHost-Apps/pihole_ynh/pull/51/commits/3be3dbca2fb0ec2887b7962aa5dcce4276ab31ce)
|
||||
- [Use toml for actions and config-panel](https://github.com/YunoHost-Apps/pihole_ynh/pull/51/commits/b1ec989d2a74f6cefaf97eb1ed59dd6b9fc82bcf)
|
||||
* [use scalable phpfpm](https://github.com/YunoHost-Apps/pihole_ynh/pull/51/commits/1bf6783e334cd1260f418d641d29e8e11c7e6edc)
|
||||
- [Update to last standard](https://github.com/YunoHost-Apps/pihole_ynh/pull/51/commits/a719095dc51c8c7af8a6f34f75c92a08f45e0012)
|
||||
|
||||
|
||||
## [3.3.1~ynh5](https://github.com/YunoHost-Apps/pihole_ynh/pull/39) - 2019-02-03
|
||||
|
||||
#### Added
|
||||
- [Add progression bar](https://github.com/YunoHost-Apps/pihole_ynh/pull/39/commits/887e6fcc79bfd71fbd8a97b59f912ef029f90cdf)
|
||||
* [Changelog & html email](https://github.com/YunoHost-Apps/pihole_ynh/pull/39/commits/2229f7817327ceb2d2ca41310493a5483fb94ef9)
|
||||
|
||||
#### Changed
|
||||
- [Update php and nginx conf files to php7](https://github.com/YunoHost-Apps/pihole_ynh/pull/39/commits/65d1ba63fcaffba347ab01d690d9ced08837a69b)
|
||||
|
||||
|
||||
## [3.3.1~ynh4](https://github.com/YunoHost-Apps/pihole_ynh/pull/36) - 2019-01-24
|
||||
|
||||
#### Fixed
|
||||
- [Fix #37 for post_domain_add](https://github.com/YunoHost-Apps/pihole_ynh/pull/38/commits/d34d953efbc93e3d3e4547e3d8585a35c1eb8751)
|
||||
|
||||
## [3.3.1~ynh4](https://github.com/YunoHost-Apps/pihole_ynh/pull/36) - 2019-01-21
|
||||
|
||||
#### Added
|
||||
- [Advertise config-panel and actions](https://github.com/YunoHost-Apps/pihole_ynh/pull/36/commits/a4a720a9e8bae6a6d4e43a860c71c9e8947fafea)
|
||||
|
||||
#### Fixed
|
||||
- [Fix install issue](https://github.com/YunoHost-Apps/pihole_ynh/pull/36/commits/3b7e0608c42402433888f9129e8c9dacbb9f4797)
|
||||
|
||||
#### Changed
|
||||
- [Update to last standart](https://github.com/YunoHost-Apps/pihole_ynh/pull/36/commits/0478648b332e312d980becea48e8381b01133c7b)
|
|
@ -1,6 +1,6 @@
|
|||
# Pi-hole for YunoHost
|
||||
|
||||
[](https://dash.yunohost.org/appci/app/pihole)
|
||||
[](https://dash.yunohost.org/appci/app/pihole)  
|
||||
[](https://install-app.yunohost.org/?app=pihole)
|
||||
|
||||
*[Lire ce readme en français.](./README_fr.md)*
|
||||
|
@ -39,9 +39,9 @@ Use the admin panel of your Pi-hole to configure this app. You may also need to
|
|||
|
||||
#### Supported architectures
|
||||
|
||||
* x86-64b - [](https://ci-apps.yunohost.org/ci/apps/pihole/)
|
||||
* ARMv8-A - [](https://ci-apps-arm.yunohost.org/ci/apps/pihole/)
|
||||
* Jessie x86-64b - [](https://ci-stretch.nohost.me/ci/apps/pihole/)
|
||||
* x86-64b - [](https://ci-apps.yunohost.org/ci/apps/pihole/)
|
||||
* ARMv8-A - [](https://ci-apps-arm.yunohost.org/ci/apps/pihole/)
|
||||
* Jessie x86-64b - [](https://ci-stretch.nohost.me/ci/apps/pihole/)
|
||||
|
||||
## Limitations
|
||||
|
||||
|
@ -54,6 +54,7 @@ Use the admin panel of your Pi-hole to configure this app. You may also need to
|
|||
|
||||
* Report a bug: https://github.com/YunoHost-Apps/pihole_ynh/issues
|
||||
* Pi-hole website: https://pi-hole.net/
|
||||
* Pi-hole repository: https://github.com/pi-hole/pi-hole/
|
||||
* YunoHost website: https://yunohost.org/
|
||||
|
||||
---
|
||||
|
|
13
README_fr.md
13
README_fr.md
|
@ -1,6 +1,6 @@
|
|||
# Pi-hole pour YunoHost
|
||||
|
||||
[](https://dash.yunohost.org/appci/app/pihole)
|
||||
[](https://dash.yunohost.org/appci/app/pihole)  
|
||||
[](https://install-app.yunohost.org/?app=pihole)
|
||||
|
||||
*[Read this readme in english.](./README.md)*
|
||||
|
@ -23,11 +23,11 @@ Aucune démo pour cette application.
|
|||
|
||||
## Configuration
|
||||
|
||||
Utiliser le panneau d'administration de votre Pi-hole pour configurer cette application.
|
||||
Utiliser le panneau d'administration de votre Pi-hole pour configurer cette application. Vous devrez peut-être aussi suivre le [guide de post-installation] (https://docs.pi-hole.net/main/post-install/) pour configurer Pi-hole en tant que *serveur DNS* ou *serveur DHCP*.
|
||||
|
||||
## Documentation
|
||||
|
||||
* Documentation officielle: Impossible à trouver
|
||||
* Documentation officielle: https://docs.pi-hole.net/
|
||||
* Pi-hole en tant que serveur DHCP: [dhcp.md](./dhcp.md)
|
||||
* Documentation YunoHost: Il n'y a pas d'autre documentation, n'hésitez pas à contribuer.
|
||||
|
||||
|
@ -39,9 +39,9 @@ Utiliser le panneau d'administration de votre Pi-hole pour configurer cette appl
|
|||
|
||||
#### Architectures supportées.
|
||||
|
||||
* x86-64b - [](https://ci-apps.yunohost.org/ci/apps/pihole/)
|
||||
* ARMv8-A - [](https://ci-apps-arm.yunohost.org/ci/apps/pihole/)
|
||||
* Jessie x86-64b - [](https://ci-stretch.nohost.me/ci/apps/pihole/)
|
||||
* x86-64b - [](https://ci-apps.yunohost.org/ci/apps/pihole/)
|
||||
* ARMv8-A - [](https://ci-apps-arm.yunohost.org/ci/apps/pihole/)
|
||||
* Jessie x86-64b - [](https://ci-stretch.nohost.me/ci/apps/pihole/)
|
||||
|
||||
## Limitations
|
||||
|
||||
|
@ -54,6 +54,7 @@ Utiliser le panneau d'administration de votre Pi-hole pour configurer cette appl
|
|||
|
||||
* Reporter un bug: https://github.com/YunoHost-Apps/pihole_ynh/issues
|
||||
* Site de Pi-hole: https://pi-hole.net/
|
||||
* Dépôt de Pi-hole: https://github.com/pi-hole/pi-hole/
|
||||
* Site de YunoHost: https://yunohost.org/
|
||||
|
||||
---
|
||||
|
|
22
actions.json
22
actions.json
|
@ -1,22 +0,0 @@
|
|||
[{
|
||||
"id": "reset_default_setupvars",
|
||||
"name": "Reset the config file and restore a default one.",
|
||||
"command": "/bin/bash scripts/actions/reset_default_config \"setupVars.conf\"",
|
||||
"user": "root",
|
||||
"accepted_return_codes": [0],
|
||||
"description": {
|
||||
"en": "Reset the config file setupVars.conf.",
|
||||
"fr": "Réinitialise le fichier de configuration setupVars.conf."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "reset_default_ftl",
|
||||
"name": "Reset the config file and restore a default one.",
|
||||
"command": "/bin/bash scripts/actions/reset_default_config \"pihole-FTL.conf\"",
|
||||
"user": "root",
|
||||
"accepted_return_codes": [0],
|
||||
"description": {
|
||||
"en": "Reset the config file pihole-FTL.conf.",
|
||||
"fr": "Réinitialise le fichier de configuration pihole-FTL.conf."
|
||||
}
|
||||
}]
|
17
actions.toml
Normal file
17
actions.toml
Normal file
|
@ -0,0 +1,17 @@
|
|||
[reset_default_setupvars]
|
||||
name = "Reset the config file and restore a default one."
|
||||
command = "/bin/bash scripts/actions/reset_default_config \"setupVars.conf\""
|
||||
# user = "root" # optional
|
||||
# cwd = "/" # optional
|
||||
# accepted_return_codes = [0, 1, 2, 3] # optional
|
||||
accepted_return_codes = [0]
|
||||
description = "Reset the config file setupVars.conf."
|
||||
|
||||
[reset_default_ftl]
|
||||
name = "Reset the config file and restore a default one."
|
||||
command = "/bin/bash scripts/actions/reset_default_config \"pihole-FTL.conf\""
|
||||
# user = "root" # optional
|
||||
# cwd = "/" # optional
|
||||
# accepted_return_codes = [0, 1, 2, 3] # optional
|
||||
accepted_return_codes = [0]
|
||||
description = "Reset the config file pihole-FTL.conf."
|
|
@ -1,5 +1,4 @@
|
|||
;; Test complet
|
||||
auto_remove=1
|
||||
; Manifest
|
||||
domain="domain.tld" (DOMAIN)
|
||||
path="/path" (PATH)
|
||||
|
@ -16,24 +15,13 @@
|
|||
upgrade=1 from_commit=d79ec131b3038ff4695c3317b5d3ee4eda9c8932
|
||||
backup_restore=1
|
||||
multi_instance=0
|
||||
incorrect_path=1
|
||||
port_already_use=1 (4711)
|
||||
change_url=1
|
||||
;;; Levels
|
||||
Level 1=auto
|
||||
Level 2=auto
|
||||
Level 3=auto
|
||||
# Level 4:
|
||||
Level 4=na
|
||||
Level 5=auto
|
||||
Level 6=auto
|
||||
Level 7=auto
|
||||
Level 8=0
|
||||
Level 9=0
|
||||
Level 10=0
|
||||
;;; Options
|
||||
Email=
|
||||
Notification=down
|
||||
Notification=change
|
||||
;;; Upgrade options
|
||||
; commit=d79ec131b3038ff4695c3317b5d3ee4eda9c8932
|
||||
name= Stretch fix
|
||||
|
|
|
@ -1,22 +1,27 @@
|
|||
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
||||
location __PATH__/ {
|
||||
alias __FINALPATH__/;
|
||||
|
||||
if ($scheme = http) {
|
||||
rewrite ^ https://$server_name$request_uri? permanent;
|
||||
}
|
||||
index index.html index.php ;
|
||||
try_files $uri $uri/ index.php;
|
||||
location ~ [^/]\.php(/|$) {
|
||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||
fastcgi_pass unix:/var/run/php/php7.0-fpm-__NAME__.sock;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
fastcgi_param REMOTE_USER $remote_user;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||
}
|
||||
# Path to source
|
||||
alias __FINALPATH__/;
|
||||
|
||||
# Include SSOWAT user panel.
|
||||
include conf.d/yunohost_panel.conf.inc;
|
||||
# Force usage of https
|
||||
if ($scheme = http) {
|
||||
rewrite ^ https://$server_name$request_uri? permanent;
|
||||
}
|
||||
|
||||
index index.html index.php ;
|
||||
|
||||
try_files $uri $uri/ index.php;
|
||||
location ~ [^/]\.php(/|$) {
|
||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||
fastcgi_pass unix:/var/run/php/php7.0-fpm-__NAME__.sock;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
fastcgi_param REMOTE_USER $remote_user;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||
}
|
||||
|
||||
# Include SSOWAT user panel.
|
||||
include conf.d/yunohost_panel.conf.inc;
|
||||
}
|
||||
|
|
|
@ -1,422 +0,0 @@
|
|||
; Start a new pool named 'www'.
|
||||
; the variable $pool can be used in any directive and will be replaced by the
|
||||
; pool name ('www' here)
|
||||
[__NAMETOCHANGE__]
|
||||
|
||||
; Per pool prefix
|
||||
; It only applies on the following directives:
|
||||
; - 'access.log'
|
||||
; - 'slowlog'
|
||||
; - 'listen' (unixsocket)
|
||||
; - 'chroot'
|
||||
; - 'chdir'
|
||||
; - 'php_values'
|
||||
; - 'php_admin_values'
|
||||
; When not set, the global prefix (or /usr) applies instead.
|
||||
; Note: This directive can also be relative to the global prefix.
|
||||
; Default Value: none
|
||||
;prefix = /path/to/pools/$pool
|
||||
|
||||
; Unix user/group of processes
|
||||
; Note: The user is mandatory. If the group is not set, the default user's group
|
||||
; will be used.
|
||||
user = __USER__
|
||||
group = __USER__
|
||||
|
||||
; The address on which to accept FastCGI requests.
|
||||
; Valid syntaxes are:
|
||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
|
||||
; a specific port;
|
||||
; 'port' - to listen on a TCP socket to all addresses on a
|
||||
; specific port;
|
||||
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
|
||||
; 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.
|
||||
; Note: This value is mandatory.
|
||||
listen = /var/run/php/php7.0-fpm-__NAMETOCHANGE__.sock
|
||||
|
||||
; Set listen(2) backlog.
|
||||
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
|
||||
;listen.backlog = 511
|
||||
|
||||
; 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
|
||||
; BSD-derived systems allow connections regardless of permissions.
|
||||
; Default Values: user and group are set as the running user
|
||||
; mode is set to 0660
|
||||
listen.owner = www-data
|
||||
listen.group = www-data
|
||||
;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 addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
|
||||
; 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
|
||||
; must be separated by a comma. If this value is left blank, connections will be
|
||||
; accepted from any ip address.
|
||||
; Default Value: any
|
||||
;listen.allowed_clients = 127.0.0.1
|
||||
|
||||
; Specify the nice(2) priority to apply to the pool processes (only if set)
|
||||
; The value can vary from -19 (highest priority) to 20 (lower priority)
|
||||
; Note: - It will only work if the FPM master process is launched as root
|
||||
; - The pool processes will inherit the master process priority
|
||||
; unless it specified otherwise
|
||||
; Default Value: no set
|
||||
; 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.
|
||||
; Possible Values:
|
||||
; static - a fixed number (pm.max_children) of child processes;
|
||||
; dynamic - the number of child processes are set dynamically based on the
|
||||
; following directives. With this process management, there will be
|
||||
; always at least 1 children.
|
||||
; pm.max_children - the maximum number of children that can
|
||||
; be alive at the same time.
|
||||
; pm.start_servers - the number of children created on startup.
|
||||
; pm.min_spare_servers - the minimum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is less than this
|
||||
; number then some children will be created.
|
||||
; pm.max_spare_servers - the maximum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is greater than this
|
||||
; number then some children will be killed.
|
||||
; ondemand - no children are created at startup. Children will be forked when
|
||||
; new requests will connect. The following parameter are used:
|
||||
; pm.max_children - the maximum number of children that
|
||||
; can be alive at the same time.
|
||||
; pm.process_idle_timeout - The number of seconds after which
|
||||
; an idle process will be killed.
|
||||
; Note: This value is mandatory.
|
||||
pm = dynamic
|
||||
|
||||
; The number of child processes to be created when pm is set to 'static' and the
|
||||
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
|
||||
; This value sets the limit on the number of simultaneous requests that will be
|
||||
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
|
||||
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
|
||||
; CGI. The below defaults are based on a server without much resources. Don't
|
||||
; forget to tweak pm.* to fit your needs.
|
||||
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
|
||||
; Note: This value is mandatory.
|
||||
pm.max_children = 10
|
||||
|
||||
; The number of child processes created on startup.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
|
||||
pm.start_servers = 2
|
||||
|
||||
; The desired minimum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.min_spare_servers = 1
|
||||
|
||||
; The desired maximum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.max_spare_servers = 3
|
||||
|
||||
; The number of seconds after which an idle process will be killed.
|
||||
; Note: Used only when pm is set to 'ondemand'
|
||||
; Default Value: 10s
|
||||
;pm.process_idle_timeout = 10s;
|
||||
|
||||
; The number of requests each child process should execute before respawning.
|
||||
; This can be useful to work around memory leaks in 3rd party libraries. For
|
||||
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
|
||||
; Default Value: 0
|
||||
; pm.max_requests = 500
|
||||
|
||||
; The URI to view the FPM status page. If this value is not set, no URI will be
|
||||
; recognized as a status page. It shows the following informations:
|
||||
; pool - the name of the pool;
|
||||
; process manager - static, dynamic or ondemand;
|
||||
; start time - the date and time FPM has started;
|
||||
; start since - number of seconds since FPM has started;
|
||||
; accepted conn - the number of request accepted by the pool;
|
||||
; listen queue - the number of request in the queue of pending
|
||||
; connections (see backlog in listen(2));
|
||||
; max listen queue - the maximum number of requests in the queue
|
||||
; of pending connections since FPM has started;
|
||||
; listen queue len - the size of the socket queue of pending connections;
|
||||
; idle processes - the number of idle processes;
|
||||
; active processes - the number of active processes;
|
||||
; total processes - the number of idle + active processes;
|
||||
; max active processes - the maximum number of active processes since FPM
|
||||
; has started;
|
||||
; max children reached - number of times, the process limit has been reached,
|
||||
; when pm tries to start more children (works only for
|
||||
; pm 'dynamic' and 'ondemand');
|
||||
; Value are updated in real time.
|
||||
; Example output:
|
||||
; pool: www
|
||||
; process manager: static
|
||||
; start time: 01/Jul/2011:17:53:49 +0200
|
||||
; start since: 62636
|
||||
; accepted conn: 190460
|
||||
; listen queue: 0
|
||||
; max listen queue: 1
|
||||
; listen queue len: 42
|
||||
; idle processes: 4
|
||||
; active processes: 11
|
||||
; total processes: 15
|
||||
; max active processes: 12
|
||||
; max children reached: 0
|
||||
;
|
||||
; By default the status page output is formatted as text/plain. Passing either
|
||||
; 'html', 'xml' or 'json' in the query string will return the corresponding
|
||||
; output syntax. Example:
|
||||
; http://www.foo.bar/status
|
||||
; http://www.foo.bar/status?json
|
||||
; http://www.foo.bar/status?html
|
||||
; http://www.foo.bar/status?xml
|
||||
;
|
||||
; By default the status page only outputs short status. Passing 'full' in the
|
||||
; query string will also return status for each pool process.
|
||||
; Example:
|
||||
; http://www.foo.bar/status?full
|
||||
; http://www.foo.bar/status?json&full
|
||||
; http://www.foo.bar/status?html&full
|
||||
; http://www.foo.bar/status?xml&full
|
||||
; The Full status returns for each process:
|
||||
; pid - the PID of the process;
|
||||
; state - the state of the process (Idle, Running, ...);
|
||||
; start time - the date and time the process has started;
|
||||
; start since - the number of seconds since the process has started;
|
||||
; requests - the number of requests the process has served;
|
||||
; request duration - the duration in µs of the requests;
|
||||
; request method - the request method (GET, POST, ...);
|
||||
; request URI - the request URI with the query string;
|
||||
; content length - the content length of the request (only with POST);
|
||||
; user - the user (PHP_AUTH_USER) (or '-' if not set);
|
||||
; script - the main script called (or '-' if not set);
|
||||
; last request cpu - the %cpu the last request consumed
|
||||
; it's always 0 if the process is not in Idle state
|
||||
; because CPU calculation is done when the request
|
||||
; processing has terminated;
|
||||
; last request memory - the max amount of memory the last request consumed
|
||||
; it's always 0 if the process is not in Idle state
|
||||
; because memory calculation is done when the request
|
||||
; processing has terminated;
|
||||
; If the process is in Idle state, then informations are related to the
|
||||
; last request the process has served. Otherwise informations are related to
|
||||
; the current request being served.
|
||||
; Example output:
|
||||
; ************************
|
||||
; pid: 31330
|
||||
; state: Running
|
||||
; start time: 01/Jul/2011:17:53:49 +0200
|
||||
; start since: 63087
|
||||
; requests: 12808
|
||||
; request duration: 1250261
|
||||
; request method: GET
|
||||
; request URI: /test_mem.php?N=10000
|
||||
; content length: 0
|
||||
; user: -
|
||||
; script: /home/fat/web/docs/php/test_mem.php
|
||||
; last request cpu: 0.00
|
||||
; last request memory: 0
|
||||
;
|
||||
; Note: There is a real-time FPM status monitoring sample web page available
|
||||
; It's available in: /usr/share/php/7.0/fpm/status.html
|
||||
;
|
||||
; 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
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;pm.status_path = /status
|
||||
|
||||
; The ping URI to call the monitoring page of FPM. If this value is not set, no
|
||||
; URI will be recognized as a ping page. This could be used to test from outside
|
||||
; that FPM is alive and responding, or to
|
||||
; - create a graph of FPM availability (rrd or such);
|
||||
; - remove a server from a group if it is not responding (load balancing);
|
||||
; - trigger alerts for the operating team (24/7).
|
||||
; 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
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;ping.path = /ping
|
||||
|
||||
; This directive may be used to customize the response of a ping request. The
|
||||
; response is formatted as text/plain with a 200 response code.
|
||||
; Default Value: pong
|
||||
;ping.response = pong
|
||||
|
||||
; The access log file
|
||||
; Default: not set
|
||||
;access.log = log/$pool.access.log
|
||||
|
||||
; The access log format.
|
||||
; The following syntax is allowed
|
||||
; %%: the '%' character
|
||||
; %C: %CPU used by the request
|
||||
; it can accept the following format:
|
||||
; - %{user}C for user CPU only
|
||||
; - %{system}C for system CPU only
|
||||
; - %{total}C for user + system CPU (default)
|
||||
; %d: time taken to serve the request
|
||||
; it can accept the following format:
|
||||
; - %{seconds}d (default)
|
||||
; - %{miliseconds}d
|
||||
; - %{mili}d
|
||||
; - %{microseconds}d
|
||||
; - %{micro}d
|
||||
; %e: an environment variable (same as $_ENV or $_SERVER)
|
||||
; it must be associated with embraces to specify the name of the env
|
||||
; variable. Some exemples:
|
||||
; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
|
||||
; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
|
||||
; %f: script filename
|
||||
; %l: content-length of the request (for POST request only)
|
||||
; %m: request method
|
||||
; %M: peak of memory allocated by PHP
|
||||
; it can accept the following format:
|
||||
; - %{bytes}M (default)
|
||||
; - %{kilobytes}M
|
||||
; - %{kilo}M
|
||||
; - %{megabytes}M
|
||||
; - %{mega}M
|
||||
; %n: pool name
|
||||
; %o: output header
|
||||
; it must be associated with embraces to specify the name of the header:
|
||||
; - %{Content-Type}o
|
||||
; - %{X-Powered-By}o
|
||||
; - %{Transfert-Encoding}o
|
||||
; - ....
|
||||
; %p: PID of the child that serviced the request
|
||||
; %P: PID of the parent of the child that serviced the request
|
||||
; %q: the query string
|
||||
; %Q: the '?' character if query string exists
|
||||
; %r: the request URI (without the query string, see %q and %Q)
|
||||
; %R: remote IP address
|
||||
; %s: status (response code)
|
||||
; %t: server time the request was received
|
||||
; it can accept a strftime(3) format:
|
||||
; %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)
|
||||
; it can accept a strftime(3) format:
|
||||
; %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
|
||||
;
|
||||
; Default: "%R - %u %t \"%m %r\" %s"
|
||||
; access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
|
||||
|
||||
; The log file for slow requests
|
||||
; Default Value: not set
|
||||
; Note: slowlog is mandatory if request_slowlog_timeout is set
|
||||
; slowlog = log/$pool.log.slow
|
||||
|
||||
; The timeout for serving a single request after which a PHP backtrace will be
|
||||
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_slowlog_timeout = 0
|
||||
|
||||
; The timeout for serving a single request after which the worker process will
|
||||
; be killed. This option should be used when the 'max_execution_time' ini option
|
||||
; does not stop script execution for some reason. A value of '0' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
request_terminate_timeout = 1d
|
||||
|
||||
; Set open file descriptor rlimit.
|
||||
; Default Value: system defined value
|
||||
;rlimit_files = 1024
|
||||
|
||||
; Set max core size rlimit.
|
||||
; Possible Values: 'unlimited' or an integer greater or equal to 0
|
||||
; Default Value: system defined value
|
||||
;rlimit_core = 0
|
||||
|
||||
; Chroot to this directory at the start. This value must be defined as an
|
||||
; absolute path. When this value is not set, chroot is not used.
|
||||
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
|
||||
; of its subdirectories. If the pool prefix is not set, the global prefix
|
||||
; will be used instead.
|
||||
; Note: chrooting is a great security feature and should be used whenever
|
||||
; possible. However, all PHP paths will be relative to the chroot
|
||||
; (error_log, sessions.save_path, ...).
|
||||
; Default Value: not set
|
||||
;chroot =
|
||||
|
||||
; Chdir to this directory at the start.
|
||||
; Note: relative path can be used.
|
||||
; Default Value: current directory or / when chroot
|
||||
chdir = __FINALPATH__
|
||||
|
||||
; 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.
|
||||
; Note: on highloaded environement, this can cause some delay in the page
|
||||
; process time (several ms).
|
||||
; Default Value: no
|
||||
;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
|
||||
; 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
|
||||
; execute php code.
|
||||
; Note: set an empty value to allow all extensions.
|
||||
; Default Value: .php
|
||||
;security.limit_extensions = .php .php3 .php4 .php5 .php7
|
||||
|
||||
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
||||
; the current environment.
|
||||
; Default Value: clean env
|
||||
;env[HOSTNAME] = $HOSTNAME
|
||||
;env[PATH] = /usr/local/bin:/usr/bin:/bin
|
||||
;env[TMP] = /tmp
|
||||
;env[TMPDIR] = /tmp
|
||||
;env[TEMP] = /tmp
|
||||
|
||||
; Additional php.ini defines, specific to this pool of workers. These settings
|
||||
; overwrite the values previously defined in the php.ini. The directives are the
|
||||
; same as the PHP SAPI:
|
||||
; php_value/php_flag - you can set classic ini defines which can
|
||||
; be overwritten from PHP call 'ini_set'.
|
||||
; php_admin_value/php_admin_flag - these directives won't be overwritten by
|
||||
; PHP call 'ini_set'
|
||||
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
|
||||
|
||||
; Defining 'extension' will load the corresponding shared extension from
|
||||
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
|
||||
; overwrite previously defined php.ini values, but will append the new value
|
||||
; instead.
|
||||
|
||||
; Note: path INI options can be relative and will be expanded with the prefix
|
||||
; (pool, global or /usr)
|
||||
|
||||
; Default Value: nothing is defined by default except the values in php.ini and
|
||||
; specified at startup with the -d argument
|
||||
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
|
||||
;php_flag[display_errors] = off
|
||||
;php_admin_value[error_log] = /var/log/fpm-php.www.log
|
||||
;php_admin_flag[log_errors] = on
|
||||
;php_admin_value[memory_limit] = 32M
|
|
@ -1,52 +0,0 @@
|
|||
{
|
||||
"name": "PiHole configuration panel",
|
||||
"version": "0.1",
|
||||
"panel": [{
|
||||
"name": "PiHole configuration",
|
||||
"id": "main",
|
||||
"sections": [{
|
||||
"name": "Overwriting config files",
|
||||
"id": "overwrite_files",
|
||||
"options": [{
|
||||
"name": "Overwrite the config file setupVars.conf ?",
|
||||
"help": "If the file is overwritten, a backup will be created.",
|
||||
"id": "overwrite_setupvars",
|
||||
"type": "bool",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"name": "Overwrite the config file pihole-FTL.conf ?",
|
||||
"help": "If the file is overwritten, a backup will be created.",
|
||||
"id": "overwrite_ftl",
|
||||
"type": "bool",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"name": "Overwrite the nginx config file ?",
|
||||
"help": "If the file is overwritten, a backup will be created.",
|
||||
"id": "overwrite_nginx",
|
||||
"type": "bool",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"name": "Overwrite the php-fpm config file ?",
|
||||
"help": "If the file is overwritten, a backup will be created.",
|
||||
"id": "overwrite_phpfpm",
|
||||
"type": "bool",
|
||||
"default": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"name": "Global configuration",
|
||||
"id": "global_config",
|
||||
"options": [{
|
||||
"name": "Send HTML email to admin ?",
|
||||
"help": "Allow app scripts to send HTML mails instead of plain text.",
|
||||
"id": "email_type",
|
||||
"type": "bool",
|
||||
"default": true
|
||||
}]
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
64
config_panel.toml
Normal file
64
config_panel.toml
Normal file
|
@ -0,0 +1,64 @@
|
|||
version = "0.1"
|
||||
name = "PiHole configuration panel"
|
||||
|
||||
[main]
|
||||
name = "PiHole configuration"
|
||||
|
||||
[main.overwrite_files]
|
||||
name = "Overwriting config files"
|
||||
|
||||
[main.overwrite_files.overwrite_setupvars]
|
||||
ask = "Overwrite the config file setupVars.conf ?"
|
||||
type = "boolean"
|
||||
default = true
|
||||
help = "If the file is overwritten, a backup will be created."
|
||||
|
||||
[main.overwrite_files.overwrite_ftl]
|
||||
ask = "Overwrite the config file pihole-FTL.conf ?"
|
||||
type = "boolean"
|
||||
default = true
|
||||
help = "If the file is overwritten, a backup will be created."
|
||||
|
||||
[main.overwrite_files.overwrite_nginx]
|
||||
ask = "Overwrite the nginx config file ?"
|
||||
type = "boolean"
|
||||
default = true
|
||||
help = "If the file is overwritten, a backup will be created."
|
||||
|
||||
[main.overwrite_files.overwrite_phpfpm]
|
||||
ask = "Overwrite the php-fpm config file ?"
|
||||
type = "boolean"
|
||||
default = true
|
||||
help = "If the file is overwritten, a backup will be created."
|
||||
|
||||
|
||||
[main.global_config]
|
||||
name = "Global configuration"
|
||||
|
||||
[main.global_config.email_type]
|
||||
ask = "Send HTML email to admin ?"
|
||||
type = "boolean"
|
||||
default = true
|
||||
help = "Allow app scripts to send HTML mails instead of plain text."
|
||||
|
||||
|
||||
[main.php_fpm_config]
|
||||
name = "PHP-FPM configuration"
|
||||
|
||||
[main.php_fpm_config.footprint]
|
||||
ask = "Memory footprint of the service ?"
|
||||
choices = ["low", "medium", "high", "specific"]
|
||||
default = "low"
|
||||
help = "low <= 20Mb per pool. medium between 20Mb and 40Mb per pool. high > 40Mb per pool.<br>Use specific to set a value with the following option."
|
||||
|
||||
[main.php_fpm_config.free_footprint]
|
||||
ask = "Memory footprint of the service ?"
|
||||
type = "number"
|
||||
default = "0"
|
||||
help = "Free field to specify exactly the footprint in Mb if you don't want to use one of the three previous values."
|
||||
|
||||
[main.php_fpm_config.usage]
|
||||
ask = "Expected usage of the service ?"
|
||||
choices = ["low", "medium", "high"]
|
||||
default = "low"
|
||||
help = "low: Personal usage, behind the sso. No RAM footprint when not used, but the impact on the processor can be high if many users are using the service.<br>medium: Low usage, few people or/and publicly accessible. Low RAM footprint, medium processor footprint when used.<br>high: High usage, frequently visited website. High RAM footprint, but lower on processor usage and quickly responding."
|
|
@ -6,7 +6,7 @@
|
|||
"en": "Network-wide ad blocking via your own DNS server.",
|
||||
"fr": "Filtrage publicitaire sur l'ensemble du réseau via votre propre serveur DNS."
|
||||
},
|
||||
"version": "3.3.1~ynh5",
|
||||
"version": "3.3.1~ynh6",
|
||||
"url": "https://pi-hole.net/",
|
||||
"license": "EUPL-1.2",
|
||||
"maintainer": {
|
||||
|
@ -14,7 +14,7 @@
|
|||
"email": "maniackc_dev@crudelis.fr"
|
||||
},
|
||||
"requirements": {
|
||||
"yunohost": ">= 3.4"
|
||||
"yunohost": ">= 3.6"
|
||||
},
|
||||
"multi_instance": false,
|
||||
"services": [
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
#=================================================
|
||||
# PERSONAL HELPERS
|
||||
#=================================================
|
||||
|
||||
#=================================================
|
||||
# BACKUP
|
||||
#=================================================
|
||||
|
@ -27,25 +31,12 @@ CHECK_SIZE () { # Vérifie avant chaque backup que l'espace est suffisant
|
|||
#=================================================
|
||||
|
||||
IS_PACKAGE_CHECK () {
|
||||
return $(env | grep -c container=lxc)
|
||||
}
|
||||
|
||||
#=================================================
|
||||
# BOOLEAN CONVERTER
|
||||
#=================================================
|
||||
|
||||
bool_to_01 () {
|
||||
local var="$1"
|
||||
[ "$var" = "true" ] && var=1
|
||||
[ "$var" = "false" ] && var=0
|
||||
echo "$var"
|
||||
}
|
||||
|
||||
bool_to_true_false () {
|
||||
local var="$1"
|
||||
[ "$var" = "1" ] && var=true
|
||||
[ "$var" = "0" ] && var=false
|
||||
echo "$var"
|
||||
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
@ -129,359 +120,6 @@ ynh_multimedia_addaccess () {
|
|||
usermod -a -G multimedia $user_name
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
||||
# Create a dedicated fail2ban config (jail and filter conf files)
|
||||
#
|
||||
# usage: ynh_add_fail2ban_config log_file filter [max_retry [ports]]
|
||||
# | arg: -l, --logpath= - Log file to be checked by fail2ban
|
||||
# | arg: -r, --failregex= - Failregex to be looked for by fail2ban
|
||||
# | arg: -m, --max_retry= - Maximum number of retries allowed before banning IP address - default: 3
|
||||
# | arg: -p, --ports= - Ports blocked for a banned IP address - default: http,https
|
||||
ynh_add_fail2ban_config () {
|
||||
# Declare an array to define the options of this helper.
|
||||
declare -Ar args_array=( [l]=logpath= [r]=failregex= [m]=max_retry= [p]=ports= )
|
||||
local logpath
|
||||
local failregex
|
||||
local max_retry
|
||||
local ports
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
max_retry=${max_retry:-3}
|
||||
ports=${ports:-http,https}
|
||||
|
||||
test -n "$logpath" || ynh_die "ynh_add_fail2ban_config expects a logfile path as first argument and received nothing."
|
||||
test -n "$failregex" || ynh_die "ynh_add_fail2ban_config expects a failure regex as second argument and received nothing."
|
||||
|
||||
finalfail2banjailconf="/etc/fail2ban/jail.d/$app.conf"
|
||||
finalfail2banfilterconf="/etc/fail2ban/filter.d/$app.conf"
|
||||
ynh_backup_if_checksum_is_different "$finalfail2banjailconf" 1
|
||||
ynh_backup_if_checksum_is_different "$finalfail2banfilterconf" 1
|
||||
|
||||
tee $finalfail2banjailconf <<EOF
|
||||
[$app]
|
||||
enabled = true
|
||||
port = $ports
|
||||
filter = $app
|
||||
logpath = $logpath
|
||||
maxretry = $max_retry
|
||||
EOF
|
||||
|
||||
tee $finalfail2banfilterconf <<EOF
|
||||
[INCLUDES]
|
||||
before = common.conf
|
||||
[Definition]
|
||||
failregex = $failregex
|
||||
ignoreregex =
|
||||
EOF
|
||||
|
||||
ynh_store_file_checksum "$finalfail2banjailconf"
|
||||
ynh_store_file_checksum "$finalfail2banfilterconf"
|
||||
|
||||
if [ "$(lsb_release --codename --short)" != "jessie" ]; then
|
||||
systemctl reload fail2ban
|
||||
else
|
||||
systemctl restart fail2ban
|
||||
fi
|
||||
local fail2ban_error="$(journalctl -u fail2ban | tail -n50 | grep "WARNING.*$app.*")"
|
||||
if [ -n "$fail2ban_error" ]
|
||||
then
|
||||
echo "[ERR] Fail2ban failed to load the jail for $app" >&2
|
||||
echo "WARNING${fail2ban_error#*WARNING}" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
# Remove the dedicated fail2ban config (jail and filter conf files)
|
||||
#
|
||||
# usage: ynh_remove_fail2ban_config
|
||||
ynh_remove_fail2ban_config () {
|
||||
ynh_secure_remove "/etc/fail2ban/jail.d/$app.conf"
|
||||
ynh_secure_remove "/etc/fail2ban/filter.d/$app.conf"
|
||||
if [ "$(lsb_release --codename --short)" != "jessie" ]; then
|
||||
systemctl reload fail2ban
|
||||
else
|
||||
systemctl restart fail2ban
|
||||
fi
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
||||
# Read the value of a key in a ynh manifest file
|
||||
#
|
||||
# usage: ynh_read_manifest manifest key
|
||||
# | arg: -m, --manifest= - Path of the manifest to read
|
||||
# | arg: -k, --key= - Name of the key to find
|
||||
ynh_read_manifest () {
|
||||
# Declare an array to define the options of this helper.
|
||||
declare -Ar args_array=( [m]=manifest= [k]=manifest_key= )
|
||||
local manifest
|
||||
local manifest_key
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
|
||||
python3 -c "import sys, json;print(json.load(open('$manifest', encoding='utf-8'))['$manifest_key'])"
|
||||
}
|
||||
|
||||
# Read the upstream version from the manifest
|
||||
# The version number in the manifest is defined by <upstreamversion>~ynh<packageversion>
|
||||
# For example : 4.3-2~ynh3
|
||||
# This include the number before ~ynh
|
||||
# In the last example it return 4.3-2
|
||||
#
|
||||
# usage: ynh_app_upstream_version [-m manifest]
|
||||
# | arg: -m, --manifest= - Path of the manifest to read
|
||||
ynh_app_upstream_version () {
|
||||
declare -Ar args_array=( [m]=manifest= )
|
||||
local manifest
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
|
||||
manifest="${manifest:-../manifest.json}"
|
||||
if [ ! -e "$manifest" ]; then
|
||||
manifest="../settings/manifest.json" # Into the restore script, the manifest is not at the same place
|
||||
fi
|
||||
version_key=$(ynh_read_manifest --manifest="$manifest" --manifest_key="version")
|
||||
echo "${version_key/~ynh*/}"
|
||||
}
|
||||
|
||||
# Read package version from the manifest
|
||||
# The version number in the manifest is defined by <upstreamversion>~ynh<packageversion>
|
||||
# For example : 4.3-2~ynh3
|
||||
# This include the number after ~ynh
|
||||
# In the last example it return 3
|
||||
#
|
||||
# usage: ynh_app_package_version [-m manifest]
|
||||
# | arg: -m, --manifest= - Path of the manifest to read
|
||||
ynh_app_package_version () {
|
||||
declare -Ar args_array=( [m]=manifest= )
|
||||
local manifest
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
|
||||
manifest="${manifest:-../manifest.json}"
|
||||
if [ ! -e "$manifest" ]; then
|
||||
manifest="../settings/manifest.json" # Into the restore script, the manifest is not at the same place
|
||||
fi
|
||||
version_key=$(ynh_read_manifest --manifest="$manifest" --manifest_key="version")
|
||||
echo "${version_key/*~ynh/}"
|
||||
}
|
||||
|
||||
# Checks the app version to upgrade with the existing app version and returns:
|
||||
# - UPGRADE_APP if the upstream app version has changed
|
||||
# - UPGRADE_PACKAGE if only the YunoHost package has changed
|
||||
#
|
||||
## It stops the current script without error if the package is up-to-date
|
||||
#
|
||||
# This helper should be used to avoid an upgrade of an app, or the upstream part
|
||||
# of it, when it's not needed
|
||||
#
|
||||
# To force an upgrade, even if the package is up to date,
|
||||
# you have to set the variable YNH_FORCE_UPGRADE before.
|
||||
# example: sudo YNH_FORCE_UPGRADE=1 yunohost app upgrade MyApp
|
||||
#
|
||||
# usage: ynh_check_app_version_changed
|
||||
ynh_check_app_version_changed () {
|
||||
local force_upgrade=${YNH_FORCE_UPGRADE:-0}
|
||||
local package_check=${PACKAGE_CHECK_EXEC:-0}
|
||||
|
||||
# By default, upstream app version has changed
|
||||
local return_value="UPGRADE_APP"
|
||||
|
||||
local current_version=$(ynh_read_manifest --manifest="/etc/yunohost/apps/$YNH_APP_INSTANCE_NAME/manifest.json" --manifest_key="version" || echo 1.0)
|
||||
local current_upstream_version="$(ynh_app_upstream_version --manifest="/etc/yunohost/apps/$YNH_APP_INSTANCE_NAME/manifest.json")"
|
||||
local update_version=$(ynh_read_manifest --manifest="../manifest.json" --manifest_key="version" || echo 1.0)
|
||||
local update_upstream_version="$(ynh_app_upstream_version)"
|
||||
|
||||
if [ "$current_version" == "$update_version" ] ; then
|
||||
# Complete versions are the same
|
||||
if [ "$force_upgrade" != "0" ]
|
||||
then
|
||||
echo "Upgrade forced by YNH_FORCE_UPGRADE." >&2
|
||||
unset YNH_FORCE_UPGRADE
|
||||
elif [ "$package_check" != "0" ]
|
||||
then
|
||||
echo "Upgrade forced for package check." >&2
|
||||
else
|
||||
ynh_die "Up-to-date, nothing to do" 0
|
||||
fi
|
||||
elif [ "$current_upstream_version" == "$update_upstream_version" ] ; then
|
||||
# Upstream versions are the same, only YunoHost package versions differ
|
||||
return_value="UPGRADE_PACKAGE"
|
||||
fi
|
||||
echo $return_value
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
||||
# Start (or other actions) a service, print a log in case of failure and optionnaly wait until the service is completely started
|
||||
#
|
||||
# usage: ynh_systemd_action [-n service_name] [-a action] [ [-l "line to match"] [-p log_path] [-t timeout] [-e length] ]
|
||||
# | arg: -n, --service_name= - Name of the service to reload. Default : $app
|
||||
# | arg: -a, --action= - Action to perform with systemctl. Default: start
|
||||
# | arg: -l, --line_match= - Line to match - The line to find in the log to attest the service have finished to boot.
|
||||
# If not defined it don't wait until the service is completely started.
|
||||
# | arg: -p, --log_path= - Log file - Path to the log file. Default : /var/log/$app/$app.log
|
||||
# | arg: -t, --timeout= - Timeout - The maximum time to wait before ending the watching. Default : 300 seconds.
|
||||
# | arg: -e, --length= - Length of the error log : Default : 20
|
||||
ynh_systemd_action() {
|
||||
# Declare an array to define the options of this helper.
|
||||
declare -Ar args_array=( [n]=service_name= [a]=action= [l]=line_match= [p]=log_path= [t]=timeout= [e]=length= )
|
||||
local service_name
|
||||
local action
|
||||
local line_match
|
||||
local length
|
||||
local log_path
|
||||
local timeout
|
||||
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
|
||||
local service_name="${service_name:-$app}"
|
||||
local action=${action:-start}
|
||||
local log_path="${log_path:-/var/log/$service_name/$service_name.log}"
|
||||
local length=${length:-20}
|
||||
local timeout=${timeout:-300}
|
||||
|
||||
# Start to read the log
|
||||
if [[ -n "${line_match:-}" ]]
|
||||
then
|
||||
local templog="$(mktemp)"
|
||||
# Following the starting of the app in its log
|
||||
if [ "$log_path" == "systemd" ] ; then
|
||||
# Read the systemd journal
|
||||
journalctl -u $service_name -f --since=-45 > "$templog" &
|
||||
else
|
||||
# Read the specified log file
|
||||
tail -F -n0 "$log_path" > "$templog" &
|
||||
fi
|
||||
# Get the PID of the tail command
|
||||
local pid_tail=$!
|
||||
fi
|
||||
|
||||
echo "${action^} the service $service_name" >&2
|
||||
systemctl $action $service_name \
|
||||
|| ( journalctl --lines=$length -u $service_name >&2 \
|
||||
; test -n "$log_path" && echo "--" && tail --lines=$length "$log_path" >&2 \
|
||||
; false )
|
||||
|
||||
# Start the timeout and try to find line_match
|
||||
if [[ -n "${line_match:-}" ]]
|
||||
then
|
||||
local i=0
|
||||
for i in $(seq 1 $timeout)
|
||||
do
|
||||
# Read the log until the sentence is found, that means the app finished to start. Or run until the timeout
|
||||
if grep --quiet "$line_match" "$templog"
|
||||
then
|
||||
echo "The service $service_name has correctly started." >&2
|
||||
break
|
||||
fi
|
||||
echo -n "." >&2
|
||||
sleep 1
|
||||
done
|
||||
if [ $i -eq $timeout ]
|
||||
then
|
||||
echo "The service $service_name didn't fully started before the timeout." >&2
|
||||
echo "Please find here an extract of the end of the log of the service $service_name:"
|
||||
journalctl --lines=$length -u $service_name >&2
|
||||
test -n "$log_path" && echo "--" && tail --lines=$length "$log_path" >&2
|
||||
fi
|
||||
|
||||
echo ""
|
||||
ynh_clean_check_starting
|
||||
fi
|
||||
}
|
||||
|
||||
# Clean temporary process and file used by ynh_check_starting
|
||||
# (usually used in ynh_clean_setup scripts)
|
||||
#
|
||||
# usage: ynh_clean_check_starting
|
||||
ynh_clean_check_starting () {
|
||||
# Stop the execution of tail.
|
||||
kill -s 15 $pid_tail 2>&1
|
||||
ynh_secure_remove "$templog" 2>&1
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
||||
# Print a message as INFO and show progression during an app script
|
||||
#
|
||||
# usage: ynh_script_progression --message=message [--weight=weight] [--time]
|
||||
# | arg: -m, --message= - The text to print
|
||||
# | arg: -w, --weight= - The weight for this progression. This value is 1 by default. Use a bigger value for a longer part of the script.
|
||||
# | arg: -t, --time= - Print the execution time since the last call to this helper. Especially usefull to define weights.
|
||||
# | arg: -l, --last= - Use for the last call of the helper, to fill te progression bar.
|
||||
increment_progression=0
|
||||
previous_weight=0
|
||||
# Define base_time when the file is sourced
|
||||
base_time=$(date +%s)
|
||||
ynh_script_progression () {
|
||||
# Declare an array to define the options of this helper.
|
||||
declare -Ar args_array=( [m]=message= [w]=weight= [t]=time [l]=last )
|
||||
local message
|
||||
local weight
|
||||
local time
|
||||
local last
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
weight=${weight:-1}
|
||||
time=${time:-0}
|
||||
last=${last:-0}
|
||||
|
||||
# Get execution time since the last $base_time
|
||||
local exec_time=$(( $(date +%s) - $base_time ))
|
||||
base_time=$(date +%s)
|
||||
|
||||
# Get the number of occurrences of 'ynh_script_progression' in the script. Except those are commented.
|
||||
local helper_calls="$(grep --count "^[^#]*ynh_script_progression" $0)"
|
||||
# Get the number of call with a weight value
|
||||
local weight_calls=$(grep --perl-regexp --count "^[^#]*ynh_script_progression.*(--weight|-w )" $0)
|
||||
|
||||
# Get the weight of each occurrences of 'ynh_script_progression' in the script using --weight
|
||||
local weight_valuesA="$(grep --perl-regexp "^[^#]*ynh_script_progression.*--weight" $0 | sed 's/.*--weight[= ]\([[:digit:]].*\)/\1/g')"
|
||||
# Get the weight of each occurrences of 'ynh_script_progression' in the script using -w
|
||||
local weight_valuesB="$(grep --perl-regexp "^[^#]*ynh_script_progression.*-w " $0 | sed 's/.*-w[= ]\([[:digit:]].*\)/\1/g')"
|
||||
# Each value will be on a different line.
|
||||
# Remove each 'end of line' and replace it by a '+' to sum the values.
|
||||
local weight_values=$(( $(echo "$weight_valuesA" | tr '\n' '+') + $(echo "$weight_valuesB" | tr '\n' '+') 0 ))
|
||||
|
||||
# max_progression is a total number of calls to this helper.
|
||||
# Less the number of calls with a weight value.
|
||||
# Plus the total of weight values
|
||||
local max_progression=$(( $helper_calls - $weight_calls + $weight_values ))
|
||||
|
||||
# Increment each execution of ynh_script_progression in this script by the weight of the previous call.
|
||||
increment_progression=$(( $increment_progression + $previous_weight ))
|
||||
# Store the weight of the current call in $previous_weight for next call
|
||||
previous_weight=$weight
|
||||
|
||||
# Set the scale of the progression bar
|
||||
local scale=20
|
||||
# progress_string(1,2) should have the size of the scale.
|
||||
local progress_string1="####################"
|
||||
local progress_string0="...................."
|
||||
|
||||
# Reduce $increment_progression to the size of the scale
|
||||
if [ $last -eq 0 ]
|
||||
then
|
||||
local effective_progression=$(( $increment_progression * $scale / $max_progression ))
|
||||
# If last is specified, fill immediately the progression_bar
|
||||
else
|
||||
local effective_progression=$scale
|
||||
fi
|
||||
|
||||
# Build $progression_bar from progress_string(1,2) according to $effective_progression
|
||||
local progression_bar="${progress_string1:0:$effective_progression}${progress_string0:0:$(( $scale - $effective_progression ))}"
|
||||
|
||||
local print_exec_time=""
|
||||
if [ $time -eq 1 ]
|
||||
then
|
||||
print_exec_time=" [$(date +%Hh%Mm,%Ss --date="0 + $exec_time sec")]"
|
||||
fi
|
||||
|
||||
ynh_print_info "[$progression_bar] > ${message}${print_exec_time}"
|
||||
}
|
||||
|
||||
#=================================================
|
||||
# EXPERIMENTAL HELPERS
|
||||
#=================================================
|
||||
|
@ -660,6 +298,8 @@ ynh_maintenance_mode_ON () {
|
|||
domain=$(ynh_app_setting_get $app domain)
|
||||
fi
|
||||
|
||||
mkdir -p /var/www/html/
|
||||
|
||||
# Create an html to serve as maintenance notice
|
||||
echo "<!DOCTYPE html>
|
||||
<html>
|
||||
|
@ -730,128 +370,381 @@ ynh_maintenance_mode_OFF () {
|
|||
|
||||
#=================================================
|
||||
|
||||
# Download and check integrity of a file from app.src_file
|
||||
# Create a changelog for an app after an upgrade from the file CHANGELOG.md.
|
||||
#
|
||||
# The file conf/app.src_file need to contains:
|
||||
# usage: ynh_app_changelog [--format=markdown/html/plain] [--output=changelog_file] --changelog=changelog_source]
|
||||
# | arg: -f --format= - Format in which the changelog will be printed
|
||||
# markdown: Default format.
|
||||
# html: Turn urls into html format.
|
||||
# plain: Plain text changelog
|
||||
# | arg: -o --output= - Output file for the changelog file (Default ./changelog)
|
||||
# | arg: -c --changelog= - CHANGELOG.md source (Default ../CHANGELOG.md)
|
||||
#
|
||||
# FILE_URL=Address to download the file
|
||||
# FILE_SUM=Control sum
|
||||
# # (Optional) Program to check the integrity (sha256sum, md5sum...)
|
||||
# # default: sha256
|
||||
# FILE_SUM_PRG=sha256
|
||||
# # (Optionnal) Name of the local archive (offline setup support)
|
||||
# # default: Name of the downloaded file.
|
||||
# FILENAME=example.deb
|
||||
#
|
||||
# usage: ynh_download_file --dest_dir="/destination/directory" [--source_id=myfile]
|
||||
# | arg: -d, --dest_dir= - Directory where to download the file
|
||||
# | arg: -s, --source_id= - Name of the source file 'app.src_file' if it isn't '$app'
|
||||
ynh_download_file () {
|
||||
# Declare an array to define the options of this helper.
|
||||
declare -Ar args_array=( [d]=dest_dir= [s]=source_id= )
|
||||
local dest_dir
|
||||
local source_id
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
# The changelog is printed into the file ./changelog and ./changelog_lite
|
||||
ynh_app_changelog () {
|
||||
# Declare an array to define the options of this helper.
|
||||
local legacy_args=foc
|
||||
declare -Ar args_array=( [f]=format= [o]=output= [c]=changelog= )
|
||||
local format
|
||||
local output
|
||||
local changelog
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
format=${format:-markdown}
|
||||
output=${output:-changelog}
|
||||
changelog=${changelog:-../CHANGELOG.md}
|
||||
|
||||
source_id=${source_id:-app} # If the argument is not given, source_id equals "$app"
|
||||
local original_changelog="$changelog"
|
||||
local temp_changelog="changelog_temp"
|
||||
local final_changelog="$output"
|
||||
|
||||
# Load value from configuration file (see above for a small doc about this file
|
||||
# format)
|
||||
local src_file="$YNH_CWD/../conf/${source_id}.src_file"
|
||||
# If the src_file doesn't exist, use the backup path instead, with a "settings" directory
|
||||
if [ ! -e "$src_file" ]
|
||||
then
|
||||
src_file="$YNH_CWD/../settings/conf/${source_id}.src_file"
|
||||
fi
|
||||
local file_url=$(grep 'FILE_URL=' "$src_file" | cut -d= -f2-)
|
||||
local file_sum=$(grep 'FILE_SUM=' "$src_file" | cut -d= -f2-)
|
||||
local file_sumprg=$(grep 'FILE_SUM_PRG=' "$src_file" | cut -d= -f2-)
|
||||
local filename=$(grep 'FILENAME=' "$src_file" | cut -d= -f2-)
|
||||
if [ ! -n "$original_changelog" ]
|
||||
then
|
||||
echo "No changelog available..." > "$final_changelog"
|
||||
echo "No changelog available..." > "${final_changelog}_lite"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Default value
|
||||
file_sumprg=${file_sumprg:-sha256sum}
|
||||
if [ "$filename" = "" ] ; then
|
||||
filename="$(basename "$file_url")"
|
||||
fi
|
||||
local local_src="/opt/yunohost-apps-src/${YNH_APP_ID}/${filename}"
|
||||
local current_version=$(ynh_read_manifest --manifest="/etc/yunohost/apps/$YNH_APP_INSTANCE_NAME/manifest.json" --manifest_key="version")
|
||||
local update_version=$(ynh_read_manifest --manifest="../manifest.json" --manifest_key="version")
|
||||
|
||||
if test -e "$local_src"
|
||||
then # Use the local source file if it is present
|
||||
cp $local_src $filename
|
||||
else # If not, download the source
|
||||
local out=`wget -nv -O $filename $file_url 2>&1` || ynh_print_err $out
|
||||
fi
|
||||
# Get the line of the version to update to into the changelog
|
||||
local update_version_line=$(grep --max-count=1 --line-number "^## \[$update_version" "$original_changelog" | cut -d':' -f1)
|
||||
# If there's no entry for this version yet into the changelog
|
||||
# Get the first available version
|
||||
if [ -z "$update_version_line" ]
|
||||
then
|
||||
update_version_line=$(grep --max-count=1 --line-number "^##" "$original_changelog" | cut -d':' -f1)
|
||||
fi
|
||||
|
||||
# Check the control sum
|
||||
echo "${file_sum} ${filename}" | ${file_sumprg} -c --status \
|
||||
|| ynh_die "Corrupt file"
|
||||
# Get the length of the complete changelog.
|
||||
local changelog_length=$(wc --lines "$original_changelog" | awk '{print $1}')
|
||||
# Cut the file before the version to update to.
|
||||
tail --lines=$(( $changelog_length - $update_version_line + 1 )) "$original_changelog" > "$temp_changelog"
|
||||
|
||||
# Create the destination directory, if it's not already.
|
||||
mkdir -p "$dest_dir"
|
||||
# Get the length of the troncated changelog.
|
||||
changelog_length=$(wc --lines "$temp_changelog" | awk '{print $1}')
|
||||
# Get the line of the current version into the changelog
|
||||
# Keep only the last line found
|
||||
local current_version_line=$(grep --line-number "^## \[$current_version" "$temp_changelog" | cut -d':' -f1 | tail --lines=1)
|
||||
# If there's no entry for this version into the changelog
|
||||
# Get the last available version
|
||||
if [ -z "$current_version_line" ]
|
||||
then
|
||||
current_version_line=$(grep --line-number "^##" "$original_changelog" | cut -d':' -f1 | tail --lines=1)
|
||||
fi
|
||||
# Cut the file before the current version.
|
||||
# Then grep the previous version into the changelog to get the line number of the previous version
|
||||
local previous_version_line=$(tail --lines=$(( $changelog_length - $current_version_line )) \
|
||||
"$temp_changelog" | grep --max-count=1 --line-number "^## " | cut -d':' -f1)
|
||||
# If there's no previous version into the changelog
|
||||
# Go until the end of the changelog
|
||||
if [ -z "$previous_version_line" ]
|
||||
then
|
||||
previous_version_line=$changelog_length
|
||||
fi
|
||||
|
||||
# Move the file to its destination
|
||||
mv $filename $dest_dir
|
||||
# Cut the file after the previous version to keep only the changelog between the current version and the version to update to.
|
||||
head --lines=$(( $current_version_line + $previous_version_line - 1 )) "$temp_changelog" | tee "$final_changelog"
|
||||
|
||||
if [ "$format" = "html" ]
|
||||
then
|
||||
# Replace markdown links by html links
|
||||
ynh_replace_string --match_string="\[\(.*\)\](\(.*\)))" --replace_string="<a href=\"\2\">\1</a>)" --target_file="$final_changelog"
|
||||
ynh_replace_string --match_string="\[\(.*\)\](\(.*\))" --replace_string="<a href=\"\2\">\1</a>" --target_file="$final_changelog"
|
||||
elif [ "$format" = "plain" ]
|
||||
then
|
||||
# Change title format.
|
||||
ynh_replace_string --match_string="^##.*\[\(.*\)\](\(.*\)) - \(.*\)$" --replace_string="## \1 (\3) - \2" --target_file="$final_changelog"
|
||||
# Change modifications lines format.
|
||||
ynh_replace_string --match_string="^\([-*]\).*\[\(.*\)\]\(.*\)" --replace_string="\1 \2 \3" --target_file="$final_changelog"
|
||||
fi
|
||||
# else markdown. As the file is already in markdown, nothing to do.
|
||||
|
||||
# Keep only important changes into the changelog
|
||||
# Remove all minor changes
|
||||
sed '/^-/d' "$final_changelog" > "${final_changelog}_lite"
|
||||
# Remove all blank lines (to keep a clear workspace)
|
||||
sed --in-place '/^$/d' "${final_changelog}_lite"
|
||||
# Add a blank line at the end
|
||||
echo "" >> "${final_changelog}_lite"
|
||||
|
||||
# Clean titles if there's no significative changes
|
||||
local line
|
||||
local previous_line=""
|
||||
while read line <&3
|
||||
do
|
||||
if [ -n "$previous_line" ]
|
||||
then
|
||||
# Remove the line if it's a title or a blank line, and the previous one was a title as well.
|
||||
if ( [ "${line:0:1}" = "#" ] || [ ${#line} -eq 0 ] ) && [ "${previous_line:0:1}" = "#" ]
|
||||
then
|
||||
ynh_replace_special_string --match_string="${previous_line//[/.}" --replace_string="" --target_file="${final_changelog}_lite"
|
||||
fi
|
||||
fi
|
||||
previous_line="$line"
|
||||
done 3< "${final_changelog}_lite"
|
||||
|
||||
# Remove all blank lines again
|
||||
sed --in-place '/^$/d' "${final_changelog}_lite"
|
||||
|
||||
# Restore changelog format with blank lines
|
||||
ynh_replace_string --match_string="^##.*" --replace_string="\n\n&\n" --target_file="${final_changelog}_lite"
|
||||
# Remove the 2 first blank lines
|
||||
sed --in-place '1,2d' "${final_changelog}_lite"
|
||||
# Add a blank line at the end
|
||||
echo "" >> "${final_changelog}_lite"
|
||||
|
||||
# If changelog are empty, add an info
|
||||
if [ $(wc --words "$final_changelog" | awk '{print $1}') -eq 0 ]
|
||||
then
|
||||
echo "No changes from the changelog..." > "$final_changelog"
|
||||
fi
|
||||
if [ $(wc --words "${final_changelog}_lite" | awk '{print $1}') -eq 0 ]
|
||||
then
|
||||
echo "No significative changes from the changelog..." > "${final_changelog}_lite"
|
||||
fi
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
||||
# Create a changelog for an app after an upgrade.
|
||||
# Check the amount of available RAM
|
||||
#
|
||||
# The changelog is printed into the file ./changelog for the time of the upgrade.
|
||||
#
|
||||
# In order to create a changelog, ynh_app_changelog will get info from /etc/yunohost/apps/$app/status.json
|
||||
# In order to find the current commit use by the app.
|
||||
# The remote repository, and the branch.
|
||||
# The changelog will be only the commits since the current revision.
|
||||
#
|
||||
# Because of the need of those info, ynh_app_changelog works only
|
||||
# with apps that have been installed from a list.
|
||||
#
|
||||
# usage: ynh_app_changelog
|
||||
ynh_app_changelog () {
|
||||
get_value_from_settings ()
|
||||
{
|
||||
local value="$1"
|
||||
# Extract a value from the status.json file of an installed app.
|
||||
# usage: ynh_check_ram [--required=RAM required in Mb] [--no_swap|--only_swap] [--free_ram]
|
||||
# | arg: -r, --required= - Amount of RAM required in Mb. The helper will return 0 is there's enough RAM, or 1 otherwise.
|
||||
# If --required isn't set, the helper will print the amount of RAM, in Mb.
|
||||
# | arg: -s, --no_swap - Ignore swap
|
||||
# | arg: -o, --only_swap - Ignore real RAM, consider only swap.
|
||||
# | arg: -f, --free_ram - Count only free RAM, not the total amount of RAM available.
|
||||
ynh_check_ram () {
|
||||
# Declare an array to define the options of this helper.
|
||||
declare -Ar args_array=( [r]=required= [s]=no_swap [o]=only_swap [f]=free_ram )
|
||||
local required
|
||||
local no_swap
|
||||
local only_swap
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
required=${required:-}
|
||||
no_swap=${no_swap:-0}
|
||||
only_swap=${only_swap:-0}
|
||||
|
||||
grep "$value\": \"" /etc/yunohost/apps/$app/status.json | sed "s/.*$value\": \"\([^\"]*\).*/\1/"
|
||||
}
|
||||
local total_ram=$(vmstat --stats --unit M | grep "total memory" | awk '{print $1}')
|
||||
local total_swap=$(vmstat --stats --unit M | grep "total swap" | awk '{print $1}')
|
||||
local total_ram_swap=$(( total_ram + total_swap ))
|
||||
|
||||
local current_revision="$(get_value_from_settings revision)"
|
||||
local repo="$(get_value_from_settings url)"
|
||||
local branch="$(get_value_from_settings branch)"
|
||||
# ynh_app_changelog works only with an app installed from a list.
|
||||
if [ -z "$current_revision" ] || [ -z "$repo" ] || [ -z "$branch" ]
|
||||
local free_ram=$(vmstat --stats --unit M | grep "free memory" | awk '{print $1}')
|
||||
local free_swap=$(vmstat --stats --unit M | grep "free swap" | awk '{print $1}')
|
||||
local free_ram_swap=$(( free_ram + free_swap ))
|
||||
|
||||
# Use the total amount of ram
|
||||
local ram=$total_ram_swap
|
||||
if [ $free_ram -eq 1 ]
|
||||
then
|
||||
ynh_print_warn "Unable to build the changelog..."
|
||||
touch changelog
|
||||
return 0
|
||||
# Use the total amount of free ram
|
||||
ram=$free_ram_swap
|
||||
if [ $no_swap -eq 1 ]
|
||||
then
|
||||
# Use only the amount of free ram
|
||||
ram=$free_ram
|
||||
elif [ $only_swap -eq 1 ]
|
||||
then
|
||||
# Use only the amount of free swap
|
||||
ram=$free_swap
|
||||
fi
|
||||
else
|
||||
if [ $no_swap -eq 1 ]
|
||||
then
|
||||
# Use only the amount of free ram
|
||||
ram=$total_ram
|
||||
elif [ $only_swap -eq 1 ]
|
||||
then
|
||||
# Use only the amount of free swap
|
||||
ram=$total_swap
|
||||
fi
|
||||
fi
|
||||
|
||||
# Fetch the history of the repository, without cloning it
|
||||
mkdir git_history
|
||||
(cd git_history
|
||||
ynh_exec_warn_less git init
|
||||
ynh_exec_warn_less git remote add -f origin $repo
|
||||
# Get the line of the current commit of the installed app in the history.
|
||||
local line_to_head=$(git log origin/$branch --pretty=oneline | grep --line-number "$current_revision" | cut -d':' -f1)
|
||||
# Cut the history before the current commit, to keep only newer commits.
|
||||
# Then use sed to reorganise each lines and have a nice list of commits since the last upgrade.
|
||||
# This list is redirected into the file changelog
|
||||
git log origin/$branch --pretty=oneline | head --lines=$(($line_to_head-1)) | sed 's/^\([[:alnum:]]*\)\(.*\)/*(\1) -> \2/g' > ../changelog)
|
||||
# Remove 'Merge pull request' commits
|
||||
sed -i '/Merge pull request #[[:digit:]]* from/d' changelog
|
||||
# As well as conflict resolving commits
|
||||
sed -i '/Merge branch .* into/d' changelog
|
||||
if [ -n "$required" ]
|
||||
then
|
||||
# Return 1 if the amount of ram isn't enough.
|
||||
if [ $ram -lt $required ]
|
||||
then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
|
||||
# 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}"
|
||||
|
||||
# If a html email is required. Apply html to the changelog.
|
||||
if [ "$admin_mail_html" -eq 1 ]
|
||||
then
|
||||
sed -in-place "s@\*(\([[:alnum:]]*\)) -> \(.*\)@* __URL_TAG1__\2__URL_TAG2__${repo}/commit/\1__URL_TAG3__@g" changelog
|
||||
fi
|
||||
# If no RAM is required, return the amount of available ram.
|
||||
else
|
||||
echo $ram
|
||||
fi
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
||||
# Define the values to configure php-fpm
|
||||
#
|
||||
# usage: ynh_get_scalable_phpfpm --usage=usage --footprint=footprint [--print]
|
||||
# | arg: -f, --footprint - Memory footprint of the service (low/medium/high).
|
||||
# low - Less than 20Mb of ram by pool.
|
||||
# medium - Between 20Mb and 40Mb of ram by pool.
|
||||
# high - More than 40Mb of ram by pool.
|
||||
# Or specify exactly the footprint, the load of the service as Mb by pool instead of having a standard value.
|
||||
# To have this value, use the following command and stress the service.
|
||||
# watch -n0.5 ps -o user,cmd,%cpu,rss -u APP
|
||||
#
|
||||
# | arg: -u, --usage - Expected usage of the service (low/medium/high).
|
||||
# low - Personal usage, behind the sso.
|
||||
# medium - Low usage, few people or/and publicly accessible.
|
||||
# high - High usage, frequently visited website.
|
||||
#
|
||||
# | arg: -p, --print - Print the result
|
||||
#
|
||||
#
|
||||
#
|
||||
# The footprint of the service will be used to defined the maximum footprint we can allow, which is half the maximum RAM.
|
||||
# So it will be used to defined 'pm.max_children'
|
||||
# A lower value for the footprint will allow more children for 'pm.max_children'. And so for
|
||||
# 'pm.start_servers', 'pm.min_spare_servers' and 'pm.max_spare_servers' which are defined from the
|
||||
# value of 'pm.max_children'
|
||||
# NOTE: 'pm.max_children' can't exceed 4 times the number of processor's cores.
|
||||
#
|
||||
# The usage value will defined the way php will handle the children for the pool.
|
||||
# A value set as 'low' will set the process manager to 'ondemand'. Children will start only if the
|
||||
# service is used, otherwise no child will stay alive. This config gives the lower footprint when the
|
||||
# service is idle. But will use more proc since it has to start a child as soon it's used.
|
||||
# Set as 'medium', the process manager will be at dynamic. If the service is idle, a number of children
|
||||
# equal to pm.min_spare_servers will stay alive. So the service can be quick to answer to any request.
|
||||
# The number of children can grow if needed. The footprint can stay low if the service is idle, but
|
||||
# not null. The impact on the proc is a little bit less than 'ondemand' as there's always a few
|
||||
# children already available.
|
||||
# Set as 'high', the process manager will be set at 'static'. There will be always as many children as
|
||||
# 'pm.max_children', the footprint is important (but will be set as maximum a quarter of the maximum
|
||||
# RAM) but the impact on the proc is lower. The service will be quick to answer as there's always many
|
||||
# children ready to answer.
|
||||
ynh_get_scalable_phpfpm () {
|
||||
local legacy_args=ufp
|
||||
# Declare an array to define the options of this helper.
|
||||
declare -Ar args_array=( [u]=usage= [f]=footprint= [p]=print )
|
||||
local usage
|
||||
local footprint
|
||||
local print
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
# Set all characters as lowercase
|
||||
footprint=${footprint,,}
|
||||
usage=${usage,,}
|
||||
print=${print:-0}
|
||||
|
||||
if [ "$footprint" = "low" ]
|
||||
then
|
||||
footprint=20
|
||||
elif [ "$footprint" = "medium" ]
|
||||
then
|
||||
footprint=35
|
||||
elif [ "$footprint" = "high" ]
|
||||
then
|
||||
footprint=50
|
||||
fi
|
||||
|
||||
# Define the way the process manager handle child processes.
|
||||
if [ "$usage" = "low" ]
|
||||
then
|
||||
php_pm=ondemand
|
||||
elif [ "$usage" = "medium" ]
|
||||
then
|
||||
php_pm=dynamic
|
||||
elif [ "$usage" = "high" ]
|
||||
then
|
||||
php_pm=static
|
||||
else
|
||||
ynh_die --message="Does not recognize '$usage' as an usage value."
|
||||
fi
|
||||
|
||||
# Get the total of RAM available, except swap.
|
||||
local max_ram=$(ynh_check_ram --no_swap)
|
||||
|
||||
less0() {
|
||||
# Do not allow value below 1
|
||||
if [ $1 -le 0 ]
|
||||
then
|
||||
echo 1
|
||||
else
|
||||
echo $1
|
||||
fi
|
||||
}
|
||||
|
||||
# Define pm.max_children
|
||||
# The value of pm.max_children is the total amount of ram divide by 2 and divide again by the footprint of a pool for this app.
|
||||
# So if php-fpm start the maximum of children, it won't exceed half of the ram.
|
||||
php_max_children=$(( $max_ram / 2 / $footprint ))
|
||||
# If process manager is set as static, use half less children.
|
||||
# Used as static, there's always as many children as the value of pm.max_children
|
||||
if [ "$php_pm" = "static" ]
|
||||
then
|
||||
php_max_children=$(( $php_max_children / 2 ))
|
||||
fi
|
||||
php_max_children=$(less0 $php_max_children)
|
||||
|
||||
# To not overload the proc, limit the number of children to 4 times the number of cores.
|
||||
local core_number=$(nproc)
|
||||
local max_proc=$(( $core_number * 4 ))
|
||||
if [ $php_max_children -gt $max_proc ]
|
||||
then
|
||||
php_max_children=$max_proc
|
||||
fi
|
||||
|
||||
if [ "$php_pm" = "dynamic" ]
|
||||
then
|
||||
# Define pm.start_servers, pm.min_spare_servers and pm.max_spare_servers for a dynamic process manager
|
||||
php_min_spare_servers=$(( $php_max_children / 8 ))
|
||||
php_min_spare_servers=$(less0 $php_min_spare_servers)
|
||||
|
||||
php_max_spare_servers=$(( $php_max_children / 2 ))
|
||||
php_max_spare_servers=$(less0 $php_max_spare_servers)
|
||||
|
||||
php_start_servers=$(( $php_min_spare_servers + ( $php_max_spare_servers - $php_min_spare_servers ) /2 ))
|
||||
php_start_servers=$(less0 $php_start_servers)
|
||||
else
|
||||
php_min_spare_servers=0
|
||||
php_max_spare_servers=0
|
||||
php_start_servers=0
|
||||
fi
|
||||
|
||||
if [ $print -eq 1 ]
|
||||
then
|
||||
ynh_debug --message="Footprint=${footprint}Mb by pool."
|
||||
ynh_debug --message="Process manager=$php_pm"
|
||||
ynh_debug --message="Max RAM=${max_ram}Mb"
|
||||
if [ "$php_pm" != "static" ]; then
|
||||
ynh_debug --message="\nMax estimated footprint=$(( $php_max_children * $footprint ))"
|
||||
ynh_debug --message="Min estimated footprint=$(( $php_min_spare_servers * $footprint ))"
|
||||
fi
|
||||
if [ "$php_pm" = "dynamic" ]; then
|
||||
ynh_debug --message="Estimated average footprint=$(( $php_max_spare_servers * $footprint ))"
|
||||
elif [ "$php_pm" = "static" ]; then
|
||||
ynh_debug --message="Estimated footprint=$(( $php_max_children * $footprint ))"
|
||||
fi
|
||||
ynh_debug --message="\nRaw php-fpm values:"
|
||||
ynh_debug --message="pm.max_children = $php_max_children"
|
||||
if [ "$php_pm" = "dynamic" ]; then
|
||||
ynh_debug --message="pm.start_servers = $php_start_servers"
|
||||
ynh_debug --message="pm.min_spare_servers = $php_min_spare_servers"
|
||||
ynh_debug --message="pm.max_spare_servers = $php_max_spare_servers"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
||||
# Execute a command as another user
|
||||
# usage: exec_as USER COMMAND [ARG ...]
|
||||
exec_as() {
|
||||
local USER=$1
|
||||
shift 1
|
||||
|
||||
if [[ $USER = $(whoami) ]]; then
|
||||
eval "$@"
|
||||
else
|
||||
sudo -u "$USER" "$@"
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Dependencies
|
||||
app_depencencies="sqlite idn2"
|
||||
# dhcpcd5 has been removed because it can cause some problems with the internet connection.
|
||||
if [ "$(ynh_debian_release)" != "jessie" ]; then
|
||||
app_depencencies="$app_depencencies php-sqlite3"
|
||||
else
|
||||
app_depencencies="$app_depencencies php5-sqlite"
|
||||
fi
|
||||
app_depencencies="sqlite idn2 php7.0-sqlite3"
|
||||
|
|
132
scripts/_ynh_add_fpm_config
Normal file
132
scripts/_ynh_add_fpm_config
Normal file
|
@ -0,0 +1,132 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Create a dedicated php-fpm config
|
||||
#
|
||||
# usage 1: ynh_add_fpm_config [--phpversion=7.X] [--use_template]
|
||||
# | arg: -v, --phpversion - Version of php to use.
|
||||
# | arg: -t, --use_template - Use this helper in template mode.
|
||||
#
|
||||
# -----------------------------------------------------------------------------
|
||||
#
|
||||
# usage 2: ynh_add_fpm_config [--phpversion=7.X] --usage=usage --footprint=footprint
|
||||
# | arg: -v, --phpversion - Version of php to use.#
|
||||
# | arg: -f, --footprint - Memory footprint of the service (low/medium/high).
|
||||
# low - Less than 20Mb of ram by pool.
|
||||
# medium - Between 20Mb and 40Mb of ram by pool.
|
||||
# high - More than 40Mb of ram by pool.
|
||||
# Or specify exactly the footprint, the load of the service as Mb by pool instead of having a standard value.
|
||||
# To have this value, use the following command and stress the service.
|
||||
# watch -n0.5 ps -o user,cmd,%cpu,rss -u APP
|
||||
#
|
||||
# | arg: -u, --usage - Expected usage of the service (low/medium/high).
|
||||
# low - Personal usage, behind the sso.
|
||||
# medium - Low usage, few people or/and publicly accessible.
|
||||
# high - High usage, frequently visited website.
|
||||
#
|
||||
# Requires YunoHost version 2.7.2 or higher.
|
||||
ynh_add_fpm_config () {
|
||||
# Declare an array to define the options of this helper.
|
||||
local legacy_args=vtuf
|
||||
declare -Ar args_array=( [v]=phpversion= [t]=use_template [u]=usage= [f]=footprint= )
|
||||
local phpversion
|
||||
local use_template
|
||||
local usage
|
||||
local footprint
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
# The default behaviour is to use the template.
|
||||
use_template="${use_template:-1}"
|
||||
usage="${usage:-}"
|
||||
footprint="${footprint:-}"
|
||||
if [ -n "$usage" ] || [ -n "$footprint" ]; then
|
||||
use_template=0
|
||||
fi
|
||||
|
||||
# Configure PHP-FPM 7.0 by default
|
||||
phpversion="${phpversion:-7.0}"
|
||||
|
||||
local fpm_config_dir="/etc/php/$phpversion/fpm"
|
||||
local fpm_service="php${phpversion}-fpm"
|
||||
# Configure PHP-FPM 5 on Debian Jessie
|
||||
if [ "$(ynh_get_debian_release)" == "jessie" ]; then
|
||||
fpm_config_dir="/etc/php5/fpm"
|
||||
fpm_service="php5-fpm"
|
||||
fi
|
||||
ynh_app_setting_set --app=$app --key=fpm_config_dir --value="$fpm_config_dir"
|
||||
ynh_app_setting_set --app=$app --key=fpm_service --value="$fpm_service"
|
||||
finalphpconf="$fpm_config_dir/pool.d/$app.conf"
|
||||
ynh_backup_if_checksum_is_different --file="$finalphpconf"
|
||||
|
||||
if [ $use_template -eq 1 ]
|
||||
then
|
||||
# Usage 1, use the template in ../conf/php-fpm.conf
|
||||
sudo cp ../conf/php-fpm.conf "$finalphpconf"
|
||||
ynh_replace_string --match_string="__NAMETOCHANGE__" --replace_string="$app" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string="__USER__" --replace_string="$app" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string="__PHPVERSION__" --replace_string="$phpversion" --target_file="$finalphpconf"
|
||||
|
||||
else
|
||||
# Store settings
|
||||
ynh_app_setting_set --app=$app --key=fpm_footprint --value=$footprint
|
||||
ynh_app_setting_set --app=$app --key=fpm_usage --value=$usage
|
||||
|
||||
# Usage 2, generate a php-fpm config file with ynh_get_scalable_phpfpm
|
||||
ynh_get_scalable_phpfpm --usage=$usage --footprint=$footprint
|
||||
|
||||
# Copy the default file
|
||||
sudo cp "$fpm_config_dir/pool.d/www.conf" "$finalphpconf"
|
||||
|
||||
# Replace standard variables into the default file
|
||||
ynh_replace_string --match_string="^\[www\]" --replace_string="[$app]" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*listen = .*" --replace_string="listen = /var/run/php/php7.0-fpm-$app.sock" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string="^user = .*" --replace_string="user = $app" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string="^group = .*" --replace_string="group = $app" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*chdir = .*" --replace_string="chdir = $final_path" --target_file="$finalphpconf"
|
||||
|
||||
# Configure fpm children
|
||||
ynh_replace_string --match_string=".*pm = .*" --replace_string="pm = $php_pm" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*pm.max_children = .*" --replace_string="pm.max_children = $php_max_children" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*pm.max_requests = .*" --replace_string="pm.max_requests = 500" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*request_terminate_timeout = .*" --replace_string="request_terminate_timeout = 1d" --target_file="$finalphpconf"
|
||||
if [ "$php_pm" = "dynamic" ]
|
||||
then
|
||||
ynh_replace_string --match_string=".*pm.start_servers = .*" --replace_string="pm.start_servers = $php_start_servers" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*pm.min_spare_servers = .*" --replace_string="pm.min_spare_servers = $php_min_spare_servers" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*pm.max_spare_servers = .*" --replace_string="pm.max_spare_servers = $php_max_spare_servers" --target_file="$finalphpconf"
|
||||
elif [ "$php_pm" = "ondemand" ]
|
||||
then
|
||||
ynh_replace_string --match_string=".*pm.process_idle_timeout = .*" --replace_string="pm.process_idle_timeout = 10s" --target_file="$finalphpconf"
|
||||
fi
|
||||
|
||||
# Comment unused parameters
|
||||
if [ "$php_pm" != "dynamic" ]
|
||||
then
|
||||
ynh_replace_string --match_string=".*\(pm.start_servers = .*\)" --replace_string=";\1" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*\(pm.min_spare_servers = .*\)" --replace_string=";\1" --target_file="$finalphpconf"
|
||||
ynh_replace_string --match_string=".*\(pm.max_spare_servers = .*\)" --replace_string=";\1" --target_file="$finalphpconf"
|
||||
fi
|
||||
if [ "$php_pm" != "ondemand" ]
|
||||
then
|
||||
ynh_replace_string --match_string=".*\(pm.process_idle_timeout = .*\)" --replace_string=";\1" --target_file="$finalphpconf"
|
||||
fi
|
||||
|
||||
# Concatene the extra config.
|
||||
if [ -e ../conf/extra_php-fpm.conf ]; then
|
||||
cat ../conf/extra_php-fpm.conf >> "$finalphpconf"
|
||||
fi
|
||||
fi
|
||||
sudo chown root: "$finalphpconf"
|
||||
ynh_store_file_checksum --file="$finalphpconf"
|
||||
|
||||
if [ -e "../conf/php-fpm.ini" ]
|
||||
then
|
||||
echo "Packagers ! Please do not use a separate php ini file, merge your directives in the pool file instead." >&2
|
||||
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
|
||||
ynh_systemd_action --service_name=$fpm_service --action=reload
|
||||
}
|
|
@ -12,10 +12,10 @@ source /usr/share/yunohost/helpers
|
|||
#=================================================
|
||||
# RETRIEVE ARGUMENTS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Retrieve arguments from the manifest"
|
||||
|
||||
app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID}
|
||||
query_logging=$(ynh_app_setting_get $app query_logging)
|
||||
|
||||
query_logging=$(ynh_app_setting_get --app=$app --key=query_logging)
|
||||
|
||||
#=================================================
|
||||
# SORT OUT THE CONFIG FILE TO HANDLE
|
||||
|
@ -34,10 +34,10 @@ fi
|
|||
#=================================================
|
||||
# RESET THE CONFIG FILE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reset the config file $config_file" --weight=9
|
||||
ynh_script_progression --message="Resetting the config file $config_file..." --weight=9
|
||||
|
||||
# Verify the checksum and backup the file if it's different
|
||||
ynh_backup_if_checksum_is_different "$config_file"
|
||||
ynh_backup_if_checksum_is_different --file="$config_file"
|
||||
|
||||
if [ "$file" = "setupVars.conf" ]
|
||||
then
|
||||
|
@ -46,7 +46,7 @@ then
|
|||
main_iface=$(ip route | grep --max-count=1 default | awk '{print $5;}')
|
||||
echo "PIHOLE_INTERFACE=$main_iface" > "$config_file"
|
||||
echo "IPV4_ADDRESS=127.0.0.1" >> "$config_file"
|
||||
echo "IPV6_ADDRESS=" >> "$config_file"
|
||||
echo "IPV6_ADDRESS=::1" >> "$config_file"
|
||||
echo "PIHOLE_DNS_1=" >> "$config_file"
|
||||
echo "PIHOLE_DNS_2=" >> "$config_file"
|
||||
if [ $query_logging -eq 1 ]; then
|
||||
|
@ -62,14 +62,14 @@ then
|
|||
# Get the default file and overwrite the current config
|
||||
cp /etc/yunohost/apps/$app/conf/pihole-FTL.conf "$config_file"
|
||||
|
||||
ynh_script_progression --message="Restart PiHole" --weight=2
|
||||
ynh_script_progression --message="Restarting PiHole..." --weight=2
|
||||
|
||||
# Restart pihole-FTL
|
||||
ynh_systemd_action --action=restart --service_name=pihole-FTL
|
||||
fi
|
||||
|
||||
# Calculate and store the config file checksum into the app settings
|
||||
ynh_store_file_checksum "$config_file"
|
||||
ynh_store_file_checksum --file="$config_file"
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
|
|
|
@ -19,84 +19,84 @@ ynh_abort_if_errors
|
|||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Load settings" --weight=2
|
||||
ynh_script_progression --message="Loading installation settings..." --weight=2
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
path_url=$(ynh_app_setting_get $app path)
|
||||
domain=$(ynh_app_setting_get $app domain)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
|
||||
#=================================================
|
||||
# STANDARD BACKUP STEPS
|
||||
#=================================================
|
||||
# BACKUP THE MAIN APP DIRECTORIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backup the app main directories" --weight=5
|
||||
ynh_script_progression --message="Backing up the main app directory..." --weight=5
|
||||
|
||||
CHECK_SIZE "$final_path"
|
||||
ynh_backup "$final_path"
|
||||
ynh_backup --src_path="$final_path"
|
||||
|
||||
CHECK_SIZE "/etc/.pihole"
|
||||
ynh_backup "/etc/.pihole"
|
||||
ynh_backup --src_path="/etc/.pihole"
|
||||
|
||||
CHECK_SIZE "/etc/pihole"
|
||||
ynh_backup "/etc/pihole"
|
||||
ynh_backup --src_path="/etc/pihole"
|
||||
|
||||
CHECK_SIZE "/opt/pihole"
|
||||
ynh_backup "/opt/pihole"
|
||||
ynh_backup --src_path="/opt/pihole"
|
||||
|
||||
#=================================================
|
||||
# BACKUP NGINX CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backup nginx configuration"
|
||||
ynh_script_progression --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 PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backup php-fpm configuration"
|
||||
ynh_script_progression --message="Backing up php-fpm configuration..."
|
||||
|
||||
ynh_backup "/etc/php/7.0/fpm/pool.d/$app.conf"
|
||||
ynh_backup --src_path="/etc/php/7.0/fpm/pool.d/$app.conf"
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC BACKUP
|
||||
#=================================================
|
||||
# BACKUP CRON FILE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backup cron file"
|
||||
ynh_script_progression --message="Backing up cron file..."
|
||||
|
||||
ynh_backup "/etc/cron.d/pihole"
|
||||
ynh_backup --src_path="/etc/cron.d/pihole"
|
||||
|
||||
#=================================================
|
||||
# BACKUP SPECIFIC FILES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backup specific files"
|
||||
ynh_script_progression --message="Backing specific files..."
|
||||
|
||||
ynh_backup "/usr/local/bin/pihole"
|
||||
ynh_backup "/etc/bash_completion.d/pihole"
|
||||
ynh_backup --src_path="/usr/local/bin/pihole"
|
||||
ynh_backup --src_path="/etc/bash_completion.d/pihole"
|
||||
|
||||
ynh_backup "/etc/sudoers.d/pihole"
|
||||
ynh_backup --src_path="/etc/sudoers.d/pihole"
|
||||
|
||||
ynh_backup "/etc/init.d/pihole-FTL"
|
||||
ynh_backup "/usr/bin/pihole-FTL"
|
||||
ynh_backup --src_path="/etc/init.d/pihole-FTL"
|
||||
ynh_backup --src_path="/usr/bin/pihole-FTL"
|
||||
|
||||
ynh_backup "/etc/dnsmasq.d/01-pihole.conf"
|
||||
ynh_backup --src_path="/etc/dnsmasq.d/01-pihole.conf"
|
||||
if test -e "/etc/dnsmasq.d/02-pihole-dhcp.conf"; then
|
||||
ynh_backup "/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
ynh_backup --src_path="/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
fi
|
||||
if test -e "/etc/dnsmasq.d/03-pihole-wildcard.conf"; then
|
||||
ynh_backup "/etc/dnsmasq.d/03-pihole-wildcard.conf"
|
||||
ynh_backup --src_path="/etc/dnsmasq.d/03-pihole-wildcard.conf"
|
||||
fi
|
||||
if test -e "/etc/dnsmasq.d/04-pihole-static-dhcp.conf"; then
|
||||
ynh_backup "/etc/dnsmasq.d/04-pihole-static-dhcp.conf"
|
||||
ynh_backup --src_path="/etc/dnsmasq.d/04-pihole-static-dhcp.conf"
|
||||
fi
|
||||
|
||||
ynh_backup "/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app"
|
||||
ynh_backup --src_path="/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app"
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Backup completed" --last
|
||||
ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last
|
||||
|
|
|
@ -12,7 +12,6 @@ source /usr/share/yunohost/helpers
|
|||
#=================================================
|
||||
# RETRIEVE ARGUMENTS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Retrieve arguments from the manifest"
|
||||
|
||||
old_domain=$YNH_APP_OLD_DOMAIN
|
||||
old_path=$YNH_APP_OLD_PATH
|
||||
|
@ -25,24 +24,31 @@ app=$YNH_APP_INSTANCE_NAME
|
|||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Load settings" --weight=2
|
||||
ynh_script_progression --message="Loading installation settings..." --weight=2
|
||||
|
||||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
|
||||
#=================================================
|
||||
# CHECK THE SYNTAX OF THE PATHS
|
||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||
#=================================================
|
||||
ynh_script_progression --message="Check the syntax of the paths"
|
||||
ynh_script_progression --message="Backing up the app before changing its url (may take a while)..." --weight=11
|
||||
|
||||
test -n "$old_path" || old_path="/"
|
||||
test -n "$new_path" || new_path="/"
|
||||
new_path=$(ynh_normalize_url_path $new_path)
|
||||
old_path=$(ynh_normalize_url_path $old_path)
|
||||
# Backup the current version of the app
|
||||
ynh_backup_before_upgrade
|
||||
ynh_clean_setup () {
|
||||
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location.
|
||||
ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
||||
|
||||
# restore it if the upgrade fails
|
||||
ynh_restore_upgradebackup
|
||||
}
|
||||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
#=================================================
|
||||
# ACTIVATE MAINTENANCE MODE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Activate maintenance mode"
|
||||
ynh_script_progression --message="Activating maintenance mode..."
|
||||
|
||||
path_url=$old_path
|
||||
domain=$old_domain
|
||||
|
@ -64,19 +70,12 @@ then
|
|||
change_path=1
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# MANAGE FAILURE OF THE SCRIPT
|
||||
#=================================================
|
||||
|
||||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
#=================================================
|
||||
# STANDARD MODIFICATIONS
|
||||
#=================================================
|
||||
# MODIFY URL IN NGINX CONF
|
||||
#=================================================
|
||||
ynh_script_progression --message="Modify url in nginx configuration" --weight=4
|
||||
ynh_script_progression --message="Updating nginx web server configuration..." --weight=4
|
||||
|
||||
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
|
||||
|
||||
|
@ -84,15 +83,12 @@ nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
|
|||
if [ $change_path -eq 1 ]
|
||||
then
|
||||
# Make a backup of the original nginx config file if modified
|
||||
ynh_backup_if_checksum_is_different "$nginx_conf_path"
|
||||
ynh_backup_if_checksum_is_different --file="$nginx_conf_path"
|
||||
|
||||
# Set global variables for nginx helper
|
||||
domain="$old_domain"
|
||||
path_url="$new_path"
|
||||
|
||||
# Store path_url setting
|
||||
ynh_app_setting_set $app path_url "$path_url"
|
||||
|
||||
# Create a dedicated nginx config
|
||||
ynh_add_nginx_config
|
||||
fi
|
||||
|
@ -101,11 +97,11 @@ fi
|
|||
if [ $change_domain -eq 1 ]
|
||||
then
|
||||
# Delete file checksum for the old conf file location
|
||||
ynh_delete_file_checksum "$nginx_conf_path"
|
||||
ynh_delete_file_checksum --file="$nginx_conf_path"
|
||||
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
|
||||
|
||||
# Store file checksum for the new config file location
|
||||
ynh_store_file_checksum "/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
||||
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
|
@ -113,14 +109,14 @@ fi
|
|||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reload nginx"
|
||||
ynh_script_progression --message="Reloading nginx web server..."
|
||||
|
||||
ynh_systemd_action --action=reload --service_name=nginx
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
|
||||
#=================================================
|
||||
# DEACTIVE MAINTENANCE MODE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Disable maintenance mode" --weight=5
|
||||
ynh_script_progression --message="Disabling maintenance mode..." --weight=5
|
||||
|
||||
path_url=$old_path
|
||||
domain=$old_domain
|
||||
|
@ -130,4 +126,4 @@ ynh_maintenance_mode_OFF
|
|||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Change of url completed" --last
|
||||
ynh_script_progression --message="Change of URL completed for $app" --last
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
source _ynh_add_fpm_config
|
||||
|
||||
#=================================================
|
||||
# RETRIEVE ARGUMENTS
|
||||
|
@ -27,44 +28,65 @@ app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID}
|
|||
# Otherwise, keep the value from the app config.
|
||||
|
||||
# Overwrite setupVars.conf file
|
||||
old_overwrite_setupvars="$(ynh_app_setting_get $app overwrite_setupvars)"
|
||||
old_overwrite_setupvars=$(bool_to_true_false $old_overwrite_setupvars)
|
||||
old_overwrite_setupvars="$(ynh_app_setting_get --app=$app --key=overwrite_setupvars)"
|
||||
overwrite_setupvars="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_SETUPVARS:-$old_overwrite_setupvars}"
|
||||
|
||||
# Overwrite pihole-FTL.conf file
|
||||
old_overwrite_ftl="$(ynh_app_setting_get $app overwrite_ftl)"
|
||||
old_overwrite_ftl=$(bool_to_true_false $old_overwrite_ftl)
|
||||
old_overwrite_ftl="$(ynh_app_setting_get --app=$app --key=overwrite_ftl)"
|
||||
overwrite_ftl="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_FTL:-$old_overwrite_ftl}"
|
||||
|
||||
# Overwrite nginx configuration
|
||||
old_overwrite_nginx="$(ynh_app_setting_get $app overwrite_nginx)"
|
||||
old_overwrite_nginx=$(bool_to_true_false $old_overwrite_nginx)
|
||||
old_overwrite_nginx="$(ynh_app_setting_get --app=$app --key=overwrite_nginx)"
|
||||
overwrite_nginx="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX:-$old_overwrite_nginx}"
|
||||
|
||||
# Overwrite php-fpm configuration
|
||||
old_overwrite_phpfpm="$(ynh_app_setting_get $app overwrite_phpfpm)"
|
||||
old_overwrite_phpfpm=$(bool_to_true_false $old_overwrite_phpfpm)
|
||||
old_overwrite_phpfpm="$(ynh_app_setting_get --app=$app --key=overwrite_phpfpm)"
|
||||
overwrite_phpfpm="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM:-$old_overwrite_phpfpm}"
|
||||
|
||||
|
||||
# Type of admin mail configuration
|
||||
old_admin_mail_html="$(ynh_app_setting_get $app admin_mail_html)"
|
||||
old_admin_mail_html=$(bool_to_true_false $old_admin_mail_html)
|
||||
old_admin_mail_html="$(ynh_app_setting_get --app=$app --key=admin_mail_html)"
|
||||
admin_mail_html="${YNH_CONFIG_MAIN_GLOBAL_CONFIG_EMAIL_TYPE:-$old_admin_mail_html}"
|
||||
|
||||
|
||||
# Footprint for php-fpm
|
||||
old_fpm_footprint="$(ynh_app_setting_get --app=$app --key=fpm_footprint)"
|
||||
fpm_footprint="${YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FOOTPRINT:-$old_fpm_footprint}"
|
||||
|
||||
# Free footprint value for php-fpm
|
||||
# Check if fpm_footprint is an integer
|
||||
if [ "$fpm_footprint" -eq "$fpm_footprint" ] 2> /dev/null
|
||||
then
|
||||
# If fpm_footprint is an integer, that's a numeric value for the footprint
|
||||
old_free_footprint=$fpm_footprint
|
||||
fpm_footprint=specific
|
||||
else
|
||||
old_free_footprint=0
|
||||
fi
|
||||
free_footprint="${YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FREE_FOOTPRINT:-$old_free_footprint}"
|
||||
|
||||
# Usage for php-fpm
|
||||
old_fpm_usage="$(ynh_app_setting_get --app=$app --key=fpm_usage)"
|
||||
fpm_usage="${YNH_CONFIG_MAIN_PHP_FPM_CONFIG_USAGE:-$old_fpm_usage}"
|
||||
|
||||
#=================================================
|
||||
# SHOW_CONFIG FUNCTION FOR 'SHOW' COMMAND
|
||||
#=================================================
|
||||
|
||||
show_config() {
|
||||
# here you are supposed to read some config file/database/other then print the values
|
||||
# echo "YNH_CONFIG_${PANEL_ID}_${SECTION_ID}_${OPTION_ID}=value"
|
||||
# ynh_return "YNH_CONFIG_${PANEL_ID}_${SECTION_ID}_${OPTION_ID}=value"
|
||||
|
||||
echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_SETUPVARS=$overwrite_setupvars"
|
||||
echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_FTL=$overwrite_ftl"
|
||||
echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX=$overwrite_nginx"
|
||||
echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM=$overwrite_phpfpm"
|
||||
ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_SETUPVARS=$overwrite_setupvars"
|
||||
ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_FTL=$overwrite_ftl"
|
||||
ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX=$overwrite_nginx"
|
||||
ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM=$overwrite_phpfpm"
|
||||
|
||||
echo "YNH_CONFIG_MAIN_GLOBAL_CONFIG_EMAIL_TYPE=$admin_mail_html"
|
||||
ynh_return "YNH_CONFIG_MAIN_GLOBAL_CONFIG_EMAIL_TYPE=$admin_mail_html"
|
||||
|
||||
ynh_return "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FOOTPRINT=$fpm_footprint"
|
||||
ynh_return "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FREE_FOOTPRINT=$free_footprint"
|
||||
ynh_return "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_USAGE=$fpm_usage"
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
@ -72,22 +94,46 @@ show_config() {
|
|||
#=================================================
|
||||
|
||||
apply_config() {
|
||||
|
||||
#=================================================
|
||||
# MODIFY OVERWRITTING SETTINGS
|
||||
#=================================================
|
||||
|
||||
# Set overwrite_setupvars
|
||||
overwrite_setupvars=$(bool_to_01 $overwrite_setupvars)
|
||||
ynh_app_setting_set $app overwrite_setupvars "$overwrite_setupvars"
|
||||
ynh_app_setting_set --app=$app --key=overwrite_setupvars --value="$overwrite_setupvars"
|
||||
# Set overwrite_ftl
|
||||
overwrite_ftl=$(bool_to_01 $overwrite_ftl)
|
||||
ynh_app_setting_set $app overwrite_ftl "$overwrite_ftl"
|
||||
ynh_app_setting_set --app=$app --key=overwrite_ftl --value="$overwrite_ftl"
|
||||
# Set overwrite_nginx
|
||||
overwrite_nginx=$(bool_to_01 $overwrite_nginx)
|
||||
ynh_app_setting_set $app overwrite_nginx "$overwrite_nginx"
|
||||
ynh_app_setting_set --app=$app --key=overwrite_nginx --value="$overwrite_nginx"
|
||||
# Set overwrite_phpfpm
|
||||
overwrite_phpfpm=$(bool_to_01 $overwrite_phpfpm)
|
||||
ynh_app_setting_set $app overwrite_phpfpm "$overwrite_phpfpm"
|
||||
ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value="$overwrite_phpfpm"
|
||||
|
||||
#=================================================
|
||||
# MODIFY EMAIL SETTING
|
||||
#=================================================
|
||||
|
||||
# Set admin_mail_html
|
||||
admin_mail_html=$(bool_to_01 $admin_mail_html)
|
||||
ynh_app_setting_set $app admin_mail_html "$admin_mail_html"
|
||||
ynh_app_setting_set --app=$app --key=admin_mail_html --value="$admin_mail_html"
|
||||
|
||||
#=================================================
|
||||
# RECONFIGURE PHP-FPM
|
||||
#=================================================
|
||||
|
||||
if [ "$fpm_usage" != "$old_fpm_usage" ] || [ "$fpm_footprint" != "$old_fpm_footprint" ] || [ "$free_footprint" != "$old_free_footprint" ]
|
||||
then
|
||||
# If fpm_footprint is set to 'specific', use $free_footprint value.
|
||||
if [ "$fpm_footprint" = "specific" ]
|
||||
then
|
||||
fpm_footprint=$free_footprint
|
||||
fi
|
||||
|
||||
if [ "$fpm_footprint" != "0" ]
|
||||
then
|
||||
ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint
|
||||
else
|
||||
ynh_print_err --message="When selecting 'specific', you have to set a footprint value into the field below."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
|
129
scripts/install
129
scripts/install
|
@ -8,6 +8,7 @@
|
|||
|
||||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
source _ynh_add_fpm_config
|
||||
# Load common variables for all scripts.
|
||||
source _variables
|
||||
|
||||
|
@ -21,7 +22,6 @@ ynh_abort_if_errors
|
|||
#=================================================
|
||||
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
||||
#=================================================
|
||||
ynh_script_progression --message="Retrieve arguments from the manifest"
|
||||
|
||||
domain=$YNH_APP_ARG_DOMAIN
|
||||
path_url=$YNH_APP_ARG_PATH
|
||||
|
@ -34,50 +34,47 @@ app=$YNH_APP_INSTANCE_NAME
|
|||
#=================================================
|
||||
# CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Check if the app can be installed"
|
||||
ynh_script_progression --message="Validating installation parameters..." --weight=2
|
||||
|
||||
final_path=/var/www/$app
|
||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
||||
|
||||
# Normalize the url path syntax
|
||||
path_url=$(ynh_normalize_url_path $path_url)
|
||||
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
|
||||
|
||||
# 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
|
||||
#=================================================
|
||||
ynh_script_progression --message="Store settings from manifest" --weight=3
|
||||
ynh_script_progression --message="Storing installation settings..." --weight=3
|
||||
|
||||
ynh_app_setting_set $app domain $domain
|
||||
ynh_app_setting_set $app path $path_url
|
||||
ynh_app_setting_set $app admin $admin
|
||||
ynh_app_setting_set $app query_logging $query_logging
|
||||
ynh_app_setting_set $app enable_dhcp $enable_dhcp
|
||||
ynh_app_setting_set --app=$app --key=domain --value=$domain
|
||||
ynh_app_setting_set --app=$app --key=path --value=$path_url
|
||||
ynh_app_setting_set --app=$app --key=admin --value=$admin
|
||||
ynh_app_setting_set --app=$app --key=query_logging --value=$query_logging
|
||||
ynh_app_setting_set --app=$app --key=enable_dhcp --value=$enable_dhcp
|
||||
|
||||
ynh_app_setting_set $app overwrite_setupvars "1"
|
||||
ynh_app_setting_set $app overwrite_ftl "1"
|
||||
ynh_app_setting_set $app overwrite_nginx "1"
|
||||
ynh_app_setting_set $app overwrite_phpfpm "1"
|
||||
ynh_app_setting_set $app admin_mail_html "1"
|
||||
ynh_app_setting_set --app=$app --key=overwrite_setupvars --value=1
|
||||
ynh_app_setting_set --app=$app --key=overwrite_ftl --value=1
|
||||
ynh_app_setting_set --app=$app --key=overwrite_nginx --value=1
|
||||
ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value=1
|
||||
ynh_app_setting_set --app=$app --key=admin_mail_html --value=1
|
||||
|
||||
#=================================================
|
||||
# STANDARD MODIFICATIONS
|
||||
#=================================================
|
||||
# FIND AND OPEN A PORT
|
||||
#=================================================
|
||||
ynh_script_progression --message="Find and open a free port" --weight=12
|
||||
ynh_script_progression --message="Configuring firewall..." --weight=12
|
||||
|
||||
# Find a free port
|
||||
port=$(ynh_find_port 4711)
|
||||
port=$(ynh_find_port --port=4711)
|
||||
if [ $port -gt 4720 ]
|
||||
then
|
||||
ynh_die "The ports 4711 to 4720 are already in use. Pi-hole can't works on another port. Please try to free one of this ports."
|
||||
ynh_die --message="The ports 4711 to 4720 are already in use. Pi-hole can't works on another port. Please try to free one of this ports."
|
||||
fi
|
||||
# Open this port
|
||||
ynh_exec_fully_quiet yunohost firewall allow --no-upnp TCP $port
|
||||
ynh_app_setting_set $app port $port
|
||||
ynh_app_setting_set --app=$app --key=port --value=$port
|
||||
|
||||
# Disable the port 53 for upnp
|
||||
ynh_exec_fully_quiet yunohost firewall disallow Both 53 --no-reload
|
||||
|
@ -86,26 +83,26 @@ ynh_exec_fully_quiet yunohost firewall allow Both 53 --no-upnp
|
|||
#=================================================
|
||||
# INSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Install dependencies" --weight=12
|
||||
ynh_script_progression --message="Installing dependencies..." --weight=12
|
||||
|
||||
ynh_install_app_dependencies $app_depencencies
|
||||
|
||||
#=================================================
|
||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Download, check and unpack source" --weight=4
|
||||
ynh_script_progression --message="Setting up source files..." --weight=4
|
||||
|
||||
ynh_app_setting_set $app final_path $final_path
|
||||
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||
# Make a copy of local pihole repository (for Gravity)
|
||||
pihole_local_repo="/etc/.pihole"
|
||||
ynh_setup_source "$pihole_local_repo"
|
||||
ynh_setup_source --dest_dir="$pihole_local_repo"
|
||||
# Install admin dashboard
|
||||
ynh_setup_source "$final_path" admin_dashboard
|
||||
ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard
|
||||
|
||||
#=================================================
|
||||
# NGINX CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configure nginx" --weight=2
|
||||
ynh_script_progression --message="Configuring nginx web server..." --weight=2
|
||||
|
||||
# Create a dedicated nginx config
|
||||
ynh_add_nginx_config
|
||||
|
@ -113,25 +110,25 @@ ynh_add_nginx_config
|
|||
#=================================================
|
||||
# CREATE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Create a dedicated user" --weight=2
|
||||
ynh_script_progression --message="Configuring system user..." --weight=2
|
||||
|
||||
# Create a dedicated system user
|
||||
ynh_system_user_create $app
|
||||
ynh_system_user_create --username=$app
|
||||
|
||||
#=================================================
|
||||
# PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configure php-fpm" --weight=2
|
||||
ynh_script_progression --message="Configuring php-fpm..." --weight=2
|
||||
|
||||
# Create a dedicated php-fpm config
|
||||
ynh_add_fpm_config
|
||||
ynh_add_fpm_config --usage=low --footprint=low
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC SETUP
|
||||
#=================================================
|
||||
# CREATE DIRECTORIES AND POPULATE THEM
|
||||
#=================================================
|
||||
ynh_script_progression --message="Create and populate directories"
|
||||
ynh_script_progression --message="Creating and populating directories..."
|
||||
|
||||
pihole_storage="/etc/pihole"
|
||||
mkdir -p "$pihole_storage"
|
||||
|
@ -150,7 +147,7 @@ cp -a "$pihole_local_repo/advanced/Scripts/COL_TABLE" "$pihole_dir/"
|
|||
#=================================================
|
||||
# COPY PI-HOLE MAIN SCRIPT
|
||||
#=================================================
|
||||
ynh_script_progression --message="Copy Pi-Hole main script"
|
||||
ynh_script_progression --message="Copying Pi-Hole main script..."
|
||||
|
||||
cp -a "$pihole_local_repo/pihole" /usr/local/bin/
|
||||
cp -a "$pihole_local_repo/advanced/bash-completion/pihole" /etc/bash_completion.d/pihole
|
||||
|
@ -184,21 +181,21 @@ sed -i "/# su #/d;" "$pihole_storage/logrotate"
|
|||
#=================================================
|
||||
# INSTALLATION OF PIHOLE-FTL
|
||||
#=================================================
|
||||
ynh_script_progression --message="Install PiHole-FTL" --weight=30
|
||||
ynh_script_progression --message="Installing PiHole-FTL..." --weight=30
|
||||
|
||||
# Get the source of Pi-Hole-FTL
|
||||
FTL_temp_path=$(mktemp -d)
|
||||
ynh_setup_source "$FTL_temp_path" FTL
|
||||
ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL
|
||||
|
||||
# Instead of downloading a binary file, we're going to compile it
|
||||
( cd "$FTL_temp_path"
|
||||
ynh_exec_warn_less make
|
||||
ynh_exec_warn_less make install )
|
||||
ynh_secure_remove "$FTL_temp_path"
|
||||
ynh_secure_remove --file="$FTL_temp_path"
|
||||
|
||||
cp "../conf/pihole-FTL.conf" "$pihole_storage"
|
||||
# Calculate and store the config file checksum into the app settings
|
||||
ynh_store_file_checksum "$pihole_storage/pihole-FTL.conf"
|
||||
ynh_store_file_checksum --file="$pihole_storage/pihole-FTL.conf"
|
||||
|
||||
cp -a $pihole_local_repo/advanced/pihole-FTL.service /etc/init.d/pihole-FTL
|
||||
chmod +x /etc/init.d/pihole-FTL
|
||||
|
@ -214,7 +211,7 @@ setupVars="$pihole_storage/setupVars.conf"
|
|||
main_iface=$(ip route | grep --max-count=1 default | awk '{print $5;}')
|
||||
echo "PIHOLE_INTERFACE=$main_iface" > $setupVars
|
||||
echo "IPV4_ADDRESS=127.0.0.1" >> $setupVars
|
||||
echo "IPV6_ADDRESS=" >> $setupVars
|
||||
echo "IPV6_ADDRESS=::1" >> $setupVars
|
||||
echo "PIHOLE_DNS_1=" >> $setupVars
|
||||
echo "PIHOLE_DNS_2=" >> $setupVars
|
||||
if [ $query_logging -eq 1 ]; then
|
||||
|
@ -226,42 +223,42 @@ echo "QUERY_LOGGING=$query_logging" >> $setupVars
|
|||
echo "INSTALL_WEB=true" >> $setupVars
|
||||
|
||||
# Calculate and store the config file checksum into the app settings
|
||||
ynh_store_file_checksum "$setupVars"
|
||||
ynh_store_file_checksum --file="$setupVars"
|
||||
|
||||
#=================================================
|
||||
# SET UP DNSMASQ CONFIG
|
||||
#=================================================
|
||||
ynh_script_progression --message="Set up Dnsmasq config" --weight=2
|
||||
ynh_script_progression --message="Setting up Dnsmasq config..." --weight=2
|
||||
|
||||
ynh_systemd_action --action=stop --service_name=dnsmasq
|
||||
|
||||
pihole_dnsmasq_config="/etc/dnsmasq.d/01-pihole.conf"
|
||||
cp "$pihole_local_repo/advanced/01-pihole.conf" $pihole_dnsmasq_config
|
||||
# Use dns from /etc/resolv.dnsmasq.conf
|
||||
ynh_replace_string "@DNS1@" "" $pihole_dnsmasq_config
|
||||
ynh_replace_string "@DNS2@" "" $pihole_dnsmasq_config
|
||||
ynh_replace_string "^no-resolv" "#no-resolv" $pihole_dnsmasq_config
|
||||
ynh_replace_string --match_string="@DNS1@" --replace_string="" --target_file=$pihole_dnsmasq_config
|
||||
ynh_replace_string --match_string="@DNS2@" --replace_string="" --target_file=$pihole_dnsmasq_config
|
||||
ynh_replace_string --match_string="^no-resolv" --replace_string="#no-resolv" --target_file=$pihole_dnsmasq_config
|
||||
|
||||
ynh_replace_string "@INT@" "$main_iface" $pihole_dnsmasq_config
|
||||
ynh_replace_string --match_string="@INT@" --replace_string="$main_iface" --target_file=$pihole_dnsmasq_config
|
||||
if [ "$query_logging" = "true" ]; then
|
||||
ynh_replace_string "^#log-queries" "log-queries" $pihole_dnsmasq_config
|
||||
ynh_replace_string --match_string="^#log-queries" --replace_string="log-queries" --target_file=$pihole_dnsmasq_config
|
||||
else
|
||||
ynh_replace_string "^log-queries" "#log-queries" $pihole_dnsmasq_config
|
||||
ynh_replace_string --match_string="^log-queries" --replace_string="#log-queries" --target_file=$pihole_dnsmasq_config
|
||||
fi
|
||||
|
||||
# Fix a too recent option for our dnsmasq version.
|
||||
ynh_replace_string "log-queries=extra" "log-queries" $pihole_dnsmasq_config
|
||||
ynh_replace_string --match_string="log-queries=extra" --replace_string="log-queries" --target_file=$pihole_dnsmasq_config
|
||||
|
||||
# Calculate and store the config file checksum into the app settings
|
||||
ynh_store_file_checksum "$pihole_dnsmasq_config"
|
||||
ynh_store_file_checksum --file="$pihole_dnsmasq_config"
|
||||
|
||||
# To prevent any conflict with the original dnsmasq config, comment cache-size in the original config.
|
||||
ynh_replace_string "^cache-size=" "#pihole# cache-size=" /etc/dnsmasq.conf
|
||||
ynh_replace_string --match_string="^cache-size=" --replace_string="#pihole# cache-size=" --target_file=/etc/dnsmasq.conf
|
||||
|
||||
#=================================================
|
||||
# CONFIGURE DNS FOR THE LOCAL DOMAINS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configure dns for the local domains" --weight=7
|
||||
ynh_script_progression --message="Configuring dns for the local domains..." --weight=7
|
||||
|
||||
# Find the IP associated to the network interface
|
||||
localipv4=$(ip address | grep "${main_iface}\$" | awk '{print $2;}' | cut -d/ -f1)
|
||||
|
@ -270,7 +267,7 @@ localipv4=$(ip address | grep "${main_iface}\$" | awk '{print $2;}' | cut -d/ -f
|
|||
while read perdomain
|
||||
do
|
||||
# Comment domain resolution in /etc/hosts on 127.0.0.1, because they can interfere with the local network resolution.
|
||||
ynh_replace_string "^127.0.0.1.*$perdomain" "#Commented by pihole# &" /etc/hosts
|
||||
ynh_replace_string --match_string="^127.0.0.1.*$perdomain" --replace_string="#Commented by pihole# &" --target_file=/etc/hosts
|
||||
|
||||
# And add a resolution on the local IP instead
|
||||
grep -q "^$localipv4.*$perdomain" /etc/hosts || \
|
||||
|
@ -283,7 +280,7 @@ done <<< "$(yunohost domain list | grep "\." | sed 's/.*: \|.*- //')"
|
|||
|
||||
if [ $enable_dhcp -eq 1 ]
|
||||
then
|
||||
ynh_script_progression --message="Enable dhcp server"
|
||||
ynh_script_progression --message="Enabling dhcp server..."
|
||||
max_dhcp_range=250
|
||||
dhcp_range=100
|
||||
# Define the dhcp range from the current ip
|
||||
|
@ -304,9 +301,9 @@ then
|
|||
cp "../conf/02-pihole-dhcp.conf" "/etc/dnsmasq.d/"
|
||||
|
||||
# And set the config
|
||||
ynh_replace_string "__A_RANGE__" "$ip_beginning_part.$a_range" "/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
ynh_replace_string "__B_RANGE__" "$ip_beginning_part.$b_range" "/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
ynh_replace_string "__GATEWAY__" "$gateway" "/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
ynh_replace_string --match_string="__A_RANGE__" --replace_string="$ip_beginning_part.$a_range" --target_file="/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
ynh_replace_string --match_string="__B_RANGE__" --replace_string="$ip_beginning_part.$b_range" --target_file="/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
ynh_replace_string --match_string="__GATEWAY__" --replace_string="$gateway" --target_file="/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
|
||||
# Set a static ip for the server.
|
||||
echo "dhcp-host=$hw_adress,$localipv4" > "/etc/dnsmasq.d/04-pihole-static-dhcp.conf"
|
||||
|
@ -318,7 +315,7 @@ ynh_exec_fully_quiet yunohost firewall allow UDP 67 --no-upnp
|
|||
#=================================================
|
||||
# RESTART DNSMASQ
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restart Dnsmasq" --time --weight=2
|
||||
ynh_script_progression --message="Restarting Dnsmasq..." --weight=2
|
||||
|
||||
ynh_systemd_action --action=restart --service_name=dnsmasq
|
||||
|
||||
|
@ -328,12 +325,12 @@ ynh_systemd_action --action=restart --service_name=dnsmasq
|
|||
|
||||
cp $pihole_local_repo/advanced/pihole.cron /etc/cron.d/pihole
|
||||
# Remove git usage for version. Which fails because we use here a release instead of master.
|
||||
ynh_replace_string ".*updatechecker.*" "#&" /etc/cron.d/pihole
|
||||
ynh_replace_string --match_string=".*updatechecker.*" --replace_string="#&" --target_file=/etc/cron.d/pihole
|
||||
|
||||
#=================================================
|
||||
# BUILD THE LISTS WITH GRAVITY
|
||||
#=================================================
|
||||
ynh_script_progression --message="Build the lists with Gravity" --weight=7
|
||||
ynh_script_progression --message="Building the lists with Gravity..." --weight=7
|
||||
|
||||
cp "$pihole_local_repo/adlists.default" "$pihole_storage/adlists.default"
|
||||
ynh_exec_warn_less /opt/pihole/gravity.sh
|
||||
|
@ -341,7 +338,7 @@ ynh_exec_warn_less /opt/pihole/gravity.sh
|
|||
#=================================================
|
||||
# START PIHOLE-FTL
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restart PiHole-FTL" --weight=2
|
||||
ynh_script_progression --message="Restarting PiHole-FTL..." --weight=2
|
||||
|
||||
ynh_systemd_action --action=restart --service_name=pihole-FTL
|
||||
|
||||
|
@ -357,21 +354,21 @@ cp ../conf/dnsmasq_regenconf_hook /usr/share/yunohost/hooks/conf_regen/50-dnsmas
|
|||
# ADVERTISE SERVICE IN ADMIN PANEL
|
||||
#=================================================
|
||||
|
||||
yunohost service add pihole-FTL --log "/var/log/pihole-FTL.log"
|
||||
yunohost service add pihole-FTL --description "PiHole backend service" --log "/var/log/pihole-FTL.log"
|
||||
|
||||
#=================================================
|
||||
# RESTRAIN THE ACCESS TO THE ADMIN ONLY
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restrain the access to the admin only" --weight=2
|
||||
ynh_script_progression --message="Restraining the access to the admin only..." --weight=2
|
||||
|
||||
yunohost app addaccess --users=$admin $app
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reload nginx" --weight=4
|
||||
ynh_script_progression --message="Reloading nginx web server..." --weight=3
|
||||
|
||||
ynh_systemd_action --action=reload --service_name=nginx
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
|
||||
#=================================================
|
||||
# SEND A README FOR THE ADMIN
|
||||
|
@ -395,10 +392,10 @@ You can also find some specific actions for this app by using the experimental _
|
|||
|
||||
If you're facing an issue or want to improve this app, please open a new issue in this __URL_TAG1__project__URL_TAG2__https://github.com/YunoHost-Apps/pihole_ynh__URL_TAG3__." > mail_to_send
|
||||
|
||||
ynh_send_readme_to_admin --app_message="mail_to_send" --recipients="$admin" --type="install"
|
||||
ynh_send_readme_to_admin --app_message="mail_to_send" --recipients="$admin" --type=install
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Installation completed" --last
|
||||
ynh_script_progression --message="Installation of $app completed" --last
|
||||
|
|
|
@ -12,12 +12,12 @@ source /usr/share/yunohost/helpers
|
|||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Load settings" --weight=2
|
||||
ynh_script_progression --message="Loading installation settings..." --weight=2
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
domain=$(ynh_app_setting_get $app domain)
|
||||
port=$(ynh_app_setting_get $app port)
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||
|
||||
#=================================================
|
||||
# STANDARD REMOVE
|
||||
|
@ -26,9 +26,9 @@ port=$(ynh_app_setting_get $app port)
|
|||
#=================================================
|
||||
|
||||
# Check if the service is declared in YunoHost
|
||||
if yunohost service status | grep -q pihole-FTL
|
||||
if ynh_exec_fully_quiet yunohost service status pihole-FTL
|
||||
then
|
||||
ynh_print_info "Remove pihole-FTL service" >&2
|
||||
ynh_script_progression --message="Removing pihole-FTL service..." --weight=2
|
||||
yunohost service remove pihole-FTL
|
||||
fi
|
||||
|
||||
|
@ -44,7 +44,7 @@ rm -f "/etc/init.d/pihole-FTL" "/usr/bin/pihole-FTL" "/var/run/pihole-FTL.pid" "
|
|||
#=================================================
|
||||
# REMOVE DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Remove dependencies" --weight=7
|
||||
ynh_script_progression --message="Removing dependencies..." --weight=7
|
||||
|
||||
# Remove metapackage and its dependencies
|
||||
ynh_remove_app_dependencies
|
||||
|
@ -52,21 +52,21 @@ ynh_remove_app_dependencies
|
|||
#=================================================
|
||||
# REMOVE THE DIRECTORIES OF THE APP
|
||||
#=================================================
|
||||
ynh_script_progression --message="Remove app main directories"
|
||||
ynh_script_progression --message="Removing app main directory..."
|
||||
|
||||
# Remove storage directory
|
||||
ynh_secure_remove "/etc/pihole"
|
||||
ynh_secure_remove --file="/etc/pihole"
|
||||
# Remove app directory
|
||||
ynh_secure_remove "/opt/pihole"
|
||||
ynh_secure_remove --file="/opt/pihole"
|
||||
# Remove admin panel directory
|
||||
ynh_secure_remove "/var/www/pihole"
|
||||
ynh_secure_remove --file="/var/www/pihole"
|
||||
# Remove local clone of the repository
|
||||
ynh_secure_remove "/etc/.pihole"
|
||||
ynh_secure_remove --file="/etc/.pihole"
|
||||
|
||||
#=================================================
|
||||
# REMOVE NGINX CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Remove nginx configuration"
|
||||
ynh_script_progression --message="Removing nginx web server configuration..."
|
||||
|
||||
# Remove the dedicated nginx config
|
||||
ynh_remove_nginx_config
|
||||
|
@ -74,7 +74,7 @@ ynh_remove_nginx_config
|
|||
#=================================================
|
||||
# REMOVE PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Remove php-fpm configuration" --weight=2
|
||||
ynh_script_progression --message="Removing php-fpm configuration..." --weight=2
|
||||
|
||||
# Remove the dedicated php-fpm config
|
||||
ynh_remove_fpm_config
|
||||
|
@ -82,17 +82,17 @@ ynh_remove_fpm_config
|
|||
#=================================================
|
||||
# CLOSE PORTS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Close ports" --weight=13
|
||||
ynh_script_progression --message="Closing port $port et 67..." --weight=13
|
||||
|
||||
if yunohost firewall list | grep -q "\- $port$"
|
||||
then
|
||||
ynh_print_info "Close port $port" >&2
|
||||
ynh_print_info "Close port $port"
|
||||
ynh_exec_quiet yunohost firewall disallow TCP $port
|
||||
fi
|
||||
|
||||
if yunohost firewall list | grep -q "\- 67$"
|
||||
then
|
||||
ynh_print_info "Close port 67" >&2
|
||||
ynh_print_info "Close port 67"
|
||||
ynh_exec_quiet yunohost firewall disallow UDP 67
|
||||
fi
|
||||
|
||||
|
@ -102,35 +102,35 @@ fi
|
|||
# REMOVE CRON FILE
|
||||
#=================================================
|
||||
|
||||
ynh_secure_remove "/etc/cron.d/pihole"
|
||||
ynh_secure_remove --file="/etc/cron.d/pihole"
|
||||
|
||||
#=================================================
|
||||
# REMOVE OTHER FILES
|
||||
#=================================================
|
||||
|
||||
# Remove logs
|
||||
ynh_secure_remove "/var/log/pihole.log"
|
||||
ynh_secure_remove "/var/log/pihole-FTL.log"
|
||||
ynh_secure_remove --file="/var/log/pihole.log"
|
||||
ynh_secure_remove --file="/var/log/pihole-FTL.log"
|
||||
|
||||
# Remove main script
|
||||
ynh_secure_remove "/usr/local/bin/pihole"
|
||||
ynh_secure_remove "/etc/bash_completion.d/pihole"
|
||||
ynh_secure_remove --file="/usr/local/bin/pihole"
|
||||
ynh_secure_remove --file="/etc/bash_completion.d/pihole"
|
||||
|
||||
# Remove sudoer file
|
||||
ynh_secure_remove "/etc/sudoers.d/pihole"
|
||||
ynh_secure_remove --file="/etc/sudoers.d/pihole"
|
||||
|
||||
#=================================================
|
||||
# REMOVE DNSMASQ CONFIG
|
||||
#=================================================
|
||||
ynh_script_progression --message="Remove Dnsmasq config" --weight=2
|
||||
ynh_script_progression --message="Removing Dnsmasq config..." --weight=2
|
||||
|
||||
ynh_systemd_action --action=stop --service_name=dnsmasq
|
||||
rm -f "/etc/dnsmasq.d/01-pihole.conf"
|
||||
rm -f "/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
rm -f "/etc/dnsmasq.d/03-pihole-wildcard.conf"
|
||||
rm -f "/etc/dnsmasq.d/04-pihole-static-dhcp.conf"
|
||||
ynh_secure_remove --file="/etc/dnsmasq.d/01-pihole.conf"
|
||||
ynh_secure_remove --file="/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
ynh_secure_remove --file="/etc/dnsmasq.d/03-pihole-wildcard.conf"
|
||||
ynh_secure_remove --file="/etc/dnsmasq.d/04-pihole-static-dhcp.conf"
|
||||
|
||||
ynh_replace_string "#pihole# " "" /etc/dnsmasq.conf
|
||||
ynh_replace_string --match_string="#pihole# " --replace_string="" --target_file=/etc/dnsmasq.conf
|
||||
|
||||
#=================================================
|
||||
# CLEAN /etc/hosts
|
||||
|
@ -138,7 +138,7 @@ ynh_replace_string "#pihole# " "" /etc/dnsmasq.conf
|
|||
ynh_script_progression --message="Clean /etc/hosts"
|
||||
|
||||
# Uncomment lines in /etc/hosts
|
||||
sed -i "s/#Commented by pihole# //g" /etc/hosts
|
||||
ynh_replace_string --match_string="#Commented by pihole# " --replace_string="" --target_file=/etc/hosts
|
||||
|
||||
# And remove extra lines, added by PiHole
|
||||
sed -i "/#Added by pihole#/d" /etc/hosts
|
||||
|
@ -146,7 +146,7 @@ sed -i "/#Added by pihole#/d" /etc/hosts
|
|||
#=================================================
|
||||
# RESTART DNSMASQ
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restart Dnsmasq"
|
||||
ynh_script_progression --message="Restarting Dnsmasq..."
|
||||
|
||||
ynh_systemd_action --action=restart --service_name=dnsmasq
|
||||
|
||||
|
@ -154,19 +154,19 @@ ynh_systemd_action --action=restart --service_name=dnsmasq
|
|||
# REMOVE CONF_REGEN HOOK
|
||||
#=================================================
|
||||
|
||||
ynh_secure_remove /usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app
|
||||
ynh_secure_remove --file=/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALISATION
|
||||
#=================================================
|
||||
# REMOVE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Remove the dedicated user" --weight=2
|
||||
ynh_script_progression --message="Removing the dedicated system user..." --weight=2
|
||||
|
||||
ynh_system_user_delete $app
|
||||
ynh_system_user_delete --username=$app
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Deletion completed" --last
|
||||
ynh_script_progression --message="Removal of $app completed" --last
|
||||
|
|
|
@ -21,29 +21,30 @@ ynh_abort_if_errors
|
|||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Load settings" --weight=2
|
||||
ynh_script_progression --message="Loading settings..." --weight=2
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
domain=$(ynh_app_setting_get $app domain)
|
||||
path_url=$(ynh_app_setting_get $app path)
|
||||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
enable_dhcp=$(ynh_app_setting_get $app enable_dhcp)
|
||||
admin=$(ynh_app_setting_get $app admin)
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
enable_dhcp=$(ynh_app_setting_get --app=$app --key=enable_dhcp)
|
||||
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
||||
|
||||
#=================================================
|
||||
# CHECK IF THE APP CAN BE RESTORED
|
||||
#=================================================
|
||||
ynh_script_progression --message="Validating restoration parameters..."
|
||||
|
||||
ynh_webpath_available $domain $path_url \
|
||||
|| ynh_die "Path not available: ${domain}${path_url}"
|
||||
ynh_webpath_available --domain=$domain --path_url=$path_url \
|
||||
|| ynh_die --message="Path not available: ${domain}${path_url}"
|
||||
test ! -d $final_path \
|
||||
|| ynh_die "There is already a directory: $final_path "
|
||||
|| ynh_die --message="There is already a directory: $final_path "
|
||||
|
||||
#=================================================
|
||||
# ACTIVATE MAINTENANCE MODE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Activate maintenance mode" --weight=2
|
||||
ynh_script_progression --message="Activating maintenance mode..." --weight=2
|
||||
|
||||
ynh_maintenance_mode_ON
|
||||
|
||||
|
@ -53,28 +54,28 @@ ynh_maintenance_mode_ON
|
|||
# RESTORE 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 MAIN DIRECTORIES OF THE APP
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restore the app main directories"
|
||||
ynh_script_progression --message="Restoring the app main directory..."
|
||||
|
||||
ynh_restore_file "$final_path"
|
||||
ynh_restore_file --origin_path="$final_path"
|
||||
|
||||
ynh_restore_file "/etc/.pihole"
|
||||
ynh_restore_file --origin_path="/etc/.pihole"
|
||||
|
||||
ynh_restore_file "/etc/pihole"
|
||||
ynh_restore_file --origin_path="/etc/pihole"
|
||||
|
||||
ynh_restore_file "/opt/pihole"
|
||||
ynh_restore_file --origin_path="/opt/pihole"
|
||||
|
||||
#=================================================
|
||||
# RECREATE THE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Recreate the dedicated user" --weight=2
|
||||
ynh_script_progression --message="Recreating the dedicated system user..." --weight=2
|
||||
|
||||
# Create the dedicated user (if not existing)
|
||||
ynh_system_user_create $app
|
||||
ynh_system_user_create --username=$app
|
||||
|
||||
#=================================================
|
||||
# RESTORE USER RIGHTS
|
||||
|
@ -89,14 +90,14 @@ chown root: -R "/etc/pihole/logrotate"
|
|||
# RESTORE THE PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
ynh_restore_file "/etc/php/7.0/fpm/pool.d/$app.conf"
|
||||
ynh_restore_file --origin_path="/etc/php/7.0/fpm/pool.d/$app.conf"
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC RESTORE
|
||||
#=================================================
|
||||
# REINSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reinstall dependencies" --weight=12
|
||||
ynh_script_progression --message="Reinstalling dependencies..." --weight=12
|
||||
|
||||
ynh_install_app_dependencies $app_depencencies
|
||||
|
||||
|
@ -104,13 +105,13 @@ ynh_install_app_dependencies $app_depencencies
|
|||
# ADVERTISE SERVICE IN ADMIN PANEL
|
||||
#=================================================
|
||||
|
||||
yunohost service add pihole-FTL --log "/var/log/pihole-FTL.log"
|
||||
yunohost service add pihole-FTL --description "PiHole backend service" --log "/var/log/pihole-FTL.log"
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE CRON FILE
|
||||
#=================================================
|
||||
|
||||
ynh_restore_file "/etc/cron.d/pihole"
|
||||
ynh_restore_file --origin_path="/etc/cron.d/pihole"
|
||||
|
||||
#=================================================
|
||||
# RECREATE LOG FILES
|
||||
|
@ -124,40 +125,40 @@ chown $dnsmasq_user:root /var/log/pihole.log
|
|||
#=================================================
|
||||
# RESTORE SPECIFIC FILES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restore specific files"
|
||||
ynh_script_progression --message="Restoring specific files..."
|
||||
|
||||
ynh_restore_file "/usr/local/bin/pihole"
|
||||
ynh_restore_file "/etc/bash_completion.d/pihole"
|
||||
ynh_restore_file --origin_path="/usr/local/bin/pihole"
|
||||
ynh_restore_file --origin_path="/etc/bash_completion.d/pihole"
|
||||
|
||||
ynh_restore_file "/etc/sudoers.d/pihole"
|
||||
ynh_restore_file --origin_path="/etc/sudoers.d/pihole"
|
||||
|
||||
ynh_restore_file "/etc/init.d/pihole-FTL"
|
||||
ynh_restore_file "/usr/bin/pihole-FTL"
|
||||
ynh_restore_file --origin_path="/etc/init.d/pihole-FTL"
|
||||
ynh_restore_file --origin_path="/usr/bin/pihole-FTL"
|
||||
|
||||
ynh_restore_file "/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app"
|
||||
ynh_restore_file --origin_path="/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app"
|
||||
|
||||
#=================================================
|
||||
# RESTORE DNSMASQ CONFIG
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restore Dnsmasq config"
|
||||
ynh_script_progression --message="Restoring Dnsmasq config..."
|
||||
|
||||
ynh_systemd_action --action=stop --service_name=dnsmasq
|
||||
|
||||
ynh_restore_file "/etc/dnsmasq.d/01-pihole.conf"
|
||||
ynh_restore_file --origin_path="/etc/dnsmasq.d/01-pihole.conf"
|
||||
test -e "${YNH_APP_BACKUP_DIR}/etc/dnsmasq.d/02-pihole-dhcp.conf" && \
|
||||
ynh_restore_file "/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
ynh_restore_file --origin_path="/etc/dnsmasq.d/02-pihole-dhcp.conf"
|
||||
test -e "${YNH_APP_BACKUP_DIR}/etc/dnsmasq.d/03-pihole-wildcard.conf" && \
|
||||
ynh_restore_file "/etc/dnsmasq.d/03-pihole-wildcard.conf"
|
||||
ynh_restore_file --origin_path="/etc/dnsmasq.d/03-pihole-wildcard.conf"
|
||||
test -e "${YNH_APP_BACKUP_DIR}/etc/dnsmasq.d/04-pihole-static-dhcp.conf" && \
|
||||
ynh_restore_file "/etc/dnsmasq.d/04-pihole-static-dhcp.conf"
|
||||
ynh_restore_file --origin_path="/etc/dnsmasq.d/04-pihole-static-dhcp.conf"
|
||||
|
||||
# To prevent any conflict with the original dnsmasq config, comment cache-size in the original config.
|
||||
ynh_replace_string "^cache-size=" "#pihole# cache-size=" /etc/dnsmasq.conf
|
||||
ynh_replace_string --match_string="^cache-size=" --replace_string="#pihole# cache-size=" --target_file=/etc/dnsmasq.conf
|
||||
|
||||
#=================================================
|
||||
# CONFIGURE DNS FOR THE LOCAL DOMAINS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configure dns for the local domains" --weight=2
|
||||
ynh_script_progression --message="Configuring dns for the local domains..." --weight=2
|
||||
|
||||
# Get the default network interface
|
||||
main_iface=$(ip route | grep --max-count=1 default | awk '{print $5;}')
|
||||
|
@ -168,7 +169,7 @@ localipv4=$(ip address | grep "${main_iface}\$" | awk '{print $2;}' | cut -d/ -f
|
|||
while read perdomain
|
||||
do
|
||||
# Comment domain resolution in /etc/hosts on 127.0.0.1, because they can interfere with the local network resolution.
|
||||
sed -i "s/^127.0.0.1.*$perdomain/#Commented by pihole# &/g" /etc/hosts
|
||||
ynh_replace_string --match_string="^127.0.0.1.*$perdomain" --replace_string="#Commented by pihole# &" --target_file=/etc/hosts
|
||||
|
||||
# And add a resolution on the local IP instead
|
||||
grep -q "^$localipv4.*$perdomain" /etc/hosts || \
|
||||
|
@ -178,7 +179,7 @@ done <<< "$(yunohost domain list | grep "\." | sed 's/.*: \|.*- //')"
|
|||
#=================================================
|
||||
# RESTART DNSMASQ
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restart Dnsmasq"
|
||||
ynh_script_progression --message="Restarting Dnsmasq..."
|
||||
|
||||
ynh_systemd_action --action=restart --service_name=dnsmasq
|
||||
|
||||
|
@ -189,16 +190,16 @@ ynh_systemd_action --action=restart --service_name=dnsmasq
|
|||
setupVars="/etc/pihole/setupVars.conf"
|
||||
|
||||
echo "PIHOLE_INTERFACE=$main_iface" > $setupVars
|
||||
ynh_replace_string "^PIHOLE_INTERFACE=.*" "PIHOLE_INTERFACE=$main_iface" $setupVars
|
||||
ynh_replace_string "^IPV4_ADDRESS=.*" "IPV4_ADDRESS=127.0.0.1" $setupVars
|
||||
ynh_replace_string --match_string="^PIHOLE_INTERFACE=.*" --replace_string="PIHOLE_INTERFACE=$main_iface" --target_file=$setupVars
|
||||
ynh_replace_string --match_string="^IPV4_ADDRESS=.*" --replace_string="IPV4_ADDRESS=127.0.0.1" --target_file=$setupVars
|
||||
|
||||
# Recalculate and store the checksum of the file for the next upgrade.
|
||||
ynh_store_file_checksum "$setupVars"
|
||||
ynh_store_file_checksum --file="$setupVars"
|
||||
|
||||
#=================================================
|
||||
# START PIHOLE-FTL
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restart PiHole-FTL" --weight=2
|
||||
ynh_script_progression --message="Restarting PiHole-FTL..." --weight=2
|
||||
|
||||
ynh_exec_warn_less systemctl enable pihole-FTL
|
||||
ynh_systemd_action --action=restart --service_name=pihole-FTL
|
||||
|
@ -208,7 +209,7 @@ ynh_systemd_action --action=restart --service_name=pihole-FTL
|
|||
#=================================================
|
||||
# RELOAD NGINX AND PHP-FPM
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reload nginx and php-fpm"
|
||||
ynh_script_progression --message="Reloading nginx web server and php-fpm..."
|
||||
|
||||
ynh_systemd_action --action=reload --service_name=php7.0-fpm
|
||||
ynh_systemd_action --action=reload --service_name=nginx
|
||||
|
@ -216,7 +217,7 @@ ynh_systemd_action --action=reload --service_name=nginx
|
|||
#=================================================
|
||||
# DEACTIVE MAINTENANCE MODE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Disable maintenance mode" --weight=4
|
||||
ynh_script_progression --message="Disabling maintenance mode..." --weight=4
|
||||
|
||||
ynh_maintenance_mode_OFF
|
||||
|
||||
|
@ -242,10 +243,10 @@ You can also find some specific actions for this app by using the experimental _
|
|||
|
||||
If you're facing an issue or want to improve this app, please open a new issue in this __URL_TAG1__project__URL_TAG2__https://github.com/YunoHost-Apps/pihole_ynh__URL_TAG3__." > mail_to_send
|
||||
|
||||
ynh_send_readme_to_admin --app_message="mail_to_send" --recipients="$admin" --type="restore"
|
||||
ynh_send_readme_to_admin --app_message="mail_to_send" --recipients="$admin" --type=restore
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Restoration completed" --last
|
||||
ynh_script_progression --message="Restoration completed for $app" --last
|
||||
|
|
116
scripts/upgrade
116
scripts/upgrade
|
@ -8,27 +8,32 @@
|
|||
|
||||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
source _ynh_add_fpm_config
|
||||
# Load common variables for all scripts.
|
||||
source _variables
|
||||
|
||||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Load settings" --weight=3
|
||||
ynh_script_progression --message="Loading installation settings..." --weight=3
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
domain=$(ynh_app_setting_get $app domain)
|
||||
path_url=$(ynh_app_setting_get $app path)
|
||||
admin=$(ynh_app_setting_get $app admin)
|
||||
query_logging=$(ynh_app_setting_get $app query_logging)
|
||||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
enable_dhcp=$(ynh_app_setting_get $app enable_dhcp)
|
||||
port=$(ynh_app_setting_get $app port)
|
||||
overwrite_setupvars=$(ynh_app_setting_get $app overwrite_setupvars)
|
||||
overwrite_ftl=$(ynh_app_setting_get $app overwrite_ftl)
|
||||
overwrite_nginx=$(ynh_app_setting_get $app overwrite_nginx)
|
||||
overwrite_phpfpm=$(ynh_app_setting_get $app overwrite_phpfpm)
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
||||
query_logging=$(ynh_app_setting_get --app=$app --key=query_logging)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
enable_dhcp=$(ynh_app_setting_get --app=$app --key=enable_dhcp)
|
||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||
|
||||
overwrite_setupvars=$(ynh_app_setting_get --app=$app --key=overwrite_setupvars)
|
||||
overwrite_ftl=$(ynh_app_setting_get --app=$app --key=overwrite_ftl)
|
||||
overwrite_nginx=$(ynh_app_setting_get --app=$app --key=overwrite_nginx)
|
||||
overwrite_phpfpm=$(ynh_app_setting_get --app=$app --key=overwrite_phpfpm)
|
||||
|
||||
fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint)
|
||||
fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage)
|
||||
|
||||
#=================================================
|
||||
# CHECK VERSION
|
||||
|
@ -39,36 +44,48 @@ upgrade_type=$(ynh_check_app_version_changed)
|
|||
#=================================================
|
||||
# ENSURE DOWNWARD COMPATIBILITY
|
||||
#=================================================
|
||||
ynh_script_progression --message="Ensure downward compatibility"
|
||||
ynh_script_progression --message="Ensuring downward compatibility..."
|
||||
|
||||
# If overwrite_setupvars doesn't exist, create it
|
||||
if [ -z "$overwrite_setupvars" ]; then
|
||||
overwrite_setupvars=1
|
||||
ynh_app_setting_set $app overwrite_setupvars $overwrite_setupvars
|
||||
ynh_app_setting_set --app=$app --key=overwrite_setupvars --value=$overwrite_setupvars
|
||||
fi
|
||||
|
||||
# If overwrite_ftl doesn't exist, create it
|
||||
if [ -z "$overwrite_ftl" ]; then
|
||||
overwrite_ftl=1
|
||||
ynh_app_setting_set $app overwrite_ftl $overwrite_ftl
|
||||
ynh_app_setting_set --app=$app --key=overwrite_ftl --value=$overwrite_ftl
|
||||
fi
|
||||
|
||||
# If overwrite_nginx doesn't exist, create it
|
||||
if [ -z "$overwrite_nginx" ]; then
|
||||
overwrite_nginx=1
|
||||
ynh_app_setting_set $app overwrite_nginx $overwrite_nginx
|
||||
ynh_app_setting_set --app=$app --key=overwrite_nginx --value=$overwrite_nginx
|
||||
fi
|
||||
|
||||
# If overwrite_phpfpm doesn't exist, create it
|
||||
if [ -z "$overwrite_phpfpm" ]; then
|
||||
overwrite_phpfpm=1
|
||||
ynh_app_setting_set $app overwrite_phpfpm $overwrite_phpfpm
|
||||
ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value=$overwrite_phpfpm
|
||||
fi
|
||||
|
||||
# If fpm_footprint doesn't exist, create it
|
||||
if [ -z "$fpm_footprint" ]; then
|
||||
fpm_footprint=low
|
||||
ynh_app_setting_set --app=$app --key=fpm_footprint --value=$fpm_footprint
|
||||
fi
|
||||
|
||||
# If fpm_usage doesn't exist, create it
|
||||
if [ -z "$fpm_usage" ]; then
|
||||
fpm_usage=low
|
||||
ynh_app_setting_set --app=$app --key=fpm_usage --value=$fpm_usage
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backup the app before upgrading" --weight=7
|
||||
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=7
|
||||
|
||||
# Backup the current version of the app
|
||||
ynh_backup_before_upgrade
|
||||
|
@ -84,12 +101,12 @@ ynh_abort_if_errors
|
|||
#=================================================
|
||||
|
||||
# Normalize the URL path syntax
|
||||
path_url=$(ynh_normalize_url_path $path_url)
|
||||
path_url=$(ynh_normalize_url_path --path_url=$path_url)
|
||||
|
||||
#=================================================
|
||||
# ACTIVATE MAINTENANCE MODE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Activate maintenance mode"
|
||||
ynh_script_progression --message="Activating maintenance mode..."
|
||||
|
||||
ynh_maintenance_mode_ON
|
||||
|
||||
|
@ -98,7 +115,7 @@ ynh_maintenance_mode_ON
|
|||
#=================================================
|
||||
# INSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Upgrade dependencies" --weight=6
|
||||
ynh_script_progression --message="Upgrading dependencies..." --weight=6
|
||||
|
||||
ynh_install_app_dependencies $app_depencencies
|
||||
|
||||
|
@ -109,11 +126,11 @@ ynh_install_app_dependencies $app_depencencies
|
|||
pihole_local_repo="/etc/.pihole"
|
||||
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
||||
then
|
||||
ynh_script_progression --message="Download, check and unpack source" --weight=4
|
||||
ynh_script_progression --message="Upgrading source files..." --weight=4
|
||||
# Update the local copy pihole repository (for Gravity)
|
||||
ynh_setup_source "$pihole_local_repo"
|
||||
ynh_setup_source --dest_dir="$pihole_local_repo"
|
||||
# Update admin dashboard
|
||||
ynh_setup_source "$final_path" admin_dashboard
|
||||
ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
|
@ -123,7 +140,7 @@ fi
|
|||
# Overwrite the nginx configuration only if it's allowed
|
||||
if [ $overwrite_nginx -eq 1 ]
|
||||
then
|
||||
ynh_script_progression --message="Reconfigure nginx" --weight=2
|
||||
ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2
|
||||
# Create a dedicated nginx config
|
||||
ynh_add_nginx_config
|
||||
fi
|
||||
|
@ -131,10 +148,10 @@ fi
|
|||
#=================================================
|
||||
# CREATE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Create a dedicated user"
|
||||
ynh_script_progression --message="Making sure dedicated system user exists..."
|
||||
|
||||
# Create a dedicated user (if not existing)
|
||||
ynh_system_user_create $app
|
||||
ynh_system_user_create --username=$app
|
||||
|
||||
#=================================================
|
||||
# PHP-FPM CONFIGURATION
|
||||
|
@ -143,9 +160,9 @@ ynh_system_user_create $app
|
|||
# Overwrite the php-fpm configuration only if it's allowed
|
||||
if [ $overwrite_phpfpm -eq 1 ]
|
||||
then
|
||||
ynh_script_progression --message="Reconfigure php-fpm" --weight=3
|
||||
ynh_script_progression --message="Upgrading php-fpm configuration..." --weight=3
|
||||
# Create a dedicated php-fpm config
|
||||
ynh_add_fpm_config
|
||||
ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
|
@ -164,7 +181,7 @@ cp -a "$pihole_local_repo/advanced/Scripts/COL_TABLE" "$pihole_dir/"
|
|||
#=================================================
|
||||
# COPY PI-HOLE MAIN SCRIPT
|
||||
#=================================================
|
||||
ynh_script_progression --message="Copy Pi-Hole main script"
|
||||
ynh_script_progression --message="Copying Pi-Hole main script..."
|
||||
|
||||
cp -a "$pihole_local_repo/pihole" /usr/local/bin/
|
||||
cp -a "$pihole_local_repo/advanced/bash-completion/pihole" /etc/bash_completion.d/pihole
|
||||
|
@ -190,7 +207,7 @@ sed -i "/# su #/d;" "$pihole_storage/logrotate"
|
|||
#=================================================
|
||||
# UPDATE PIHOLE-FTL
|
||||
#=================================================
|
||||
ynh_script_progression --message="Upgrade PiHole-FTL" --weight=35
|
||||
ynh_script_progression --message="Upgrading PiHole-FTL..." --weight=35
|
||||
|
||||
ynh_systemd_action --action=stop --service_name=pihole-FTL
|
||||
|
||||
|
@ -198,23 +215,23 @@ if [ "$upgrade_type" == "UPGRADE_APP" ]
|
|||
then
|
||||
# Get the source of Pi-Hole-FTL
|
||||
FTL_temp_path=$(mktemp -d)
|
||||
ynh_setup_source "$FTL_temp_path" FTL
|
||||
ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL
|
||||
|
||||
# Instead of downloading a binary file, we're going to compile it
|
||||
( cd "$FTL_temp_path"
|
||||
ynh_exec_warn_less make
|
||||
ynh_exec_warn_less make install )
|
||||
ynh_secure_remove "$FTL_temp_path"
|
||||
ynh_secure_remove --file="$FTL_temp_path"
|
||||
fi
|
||||
|
||||
# Overwrite pihole-FTL config file only if it's allowed
|
||||
if [ $overwrite_ftl -eq 1 ]
|
||||
then
|
||||
# Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script.
|
||||
ynh_backup_if_checksum_is_different "$pihole_storage/pihole-FTL.conf"
|
||||
ynh_backup_if_checksum_is_different --file="$pihole_storage/pihole-FTL.conf"
|
||||
cp "../conf/pihole-FTL.conf" "$pihole_storage"
|
||||
# Recalculate and store the checksum of the file for the next upgrade.
|
||||
ynh_store_file_checksum "$pihole_storage/pihole-FTL.conf"
|
||||
ynh_store_file_checksum --file="$pihole_storage/pihole-FTL.conf"
|
||||
fi
|
||||
|
||||
cp -a $pihole_local_repo/advanced/pihole-FTL.service /etc/init.d/pihole-FTL
|
||||
|
@ -231,13 +248,13 @@ setupVars="$pihole_storage/setupVars.conf"
|
|||
if [ $overwrite_setupvars -eq 1 ]
|
||||
then
|
||||
# Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script.
|
||||
ynh_backup_if_checksum_is_different "$setupVars"
|
||||
ynh_backup_if_checksum_is_different --file="$setupVars"
|
||||
|
||||
# Get the default network interface
|
||||
main_iface=$(ip route | grep --max-count=1 default | awk '{print $5;}')
|
||||
echo "PIHOLE_INTERFACE=$main_iface" > $setupVars
|
||||
echo "IPV4_ADDRESS=127.0.0.1" >> $setupVars
|
||||
echo "IPV6_ADDRESS=" >> $setupVars
|
||||
echo "IPV6_ADDRESS=::1" >> $setupVars
|
||||
echo "PIHOLE_DNS_1=" >> $setupVars
|
||||
echo "PIHOLE_DNS_2=" >> $setupVars
|
||||
if [ $query_logging -eq 1 ]; then
|
||||
|
@ -249,7 +266,7 @@ then
|
|||
echo "INSTALL_WEB=true" >> $setupVars
|
||||
|
||||
# Recalculate and store the checksum of the file for the next upgrade.
|
||||
ynh_store_file_checksum "$setupVars"
|
||||
ynh_store_file_checksum --file="$setupVars"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
|
@ -258,12 +275,12 @@ fi
|
|||
|
||||
cp $pihole_local_repo/advanced/pihole.cron /etc/cron.d/pihole
|
||||
# Remove git usage for version. Which fails because we use here a release instead of master.
|
||||
ynh_replace_string ".*updatechecker.*" "#&" /etc/cron.d/pihole
|
||||
ynh_replace_string --match_string=".*updatechecker.*" --replace_string="#&" --target_file=/etc/cron.d/pihole
|
||||
|
||||
#=================================================
|
||||
# START PIHOLE-FTL
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restart PiHole-FTL" --weight=2
|
||||
ynh_script_progression --message="Restarting PiHole-FTL..." --weight=2
|
||||
|
||||
ynh_systemd_action --action=restart --service_name=pihole-FTL
|
||||
|
||||
|
@ -276,14 +293,14 @@ cp ../conf/dnsmasq_regenconf_hook /usr/share/yunohost/hooks/conf_regen/50-dnsmas
|
|||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reload nginx"
|
||||
ynh_script_progression --message="Reloading nginx web server..."
|
||||
|
||||
ynh_systemd_action --action=reload --service_name=nginx
|
||||
|
||||
#=================================================
|
||||
# DEACTIVE MAINTENANCE MODE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Disable maintenance mode" --weight=5
|
||||
ynh_script_progression --message="Disabling maintenance mode..." --weight=5
|
||||
|
||||
ynh_maintenance_mode_OFF
|
||||
|
||||
|
@ -295,7 +312,16 @@ ynh_maintenance_mode_OFF
|
|||
admin_panel="https://$(grep portal_domain /etc/ssowat/conf.json | cut -d'"' -f4)/yunohost/admin/#/apps/$app"
|
||||
|
||||
# Build the changelog
|
||||
ynh_app_changelog || true
|
||||
# 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}"
|
||||
# If a html email is required. Apply html to the changelog.
|
||||
if [ "$admin_mail_html" -eq 1 ]; then
|
||||
format=html
|
||||
else
|
||||
format=plain
|
||||
fi
|
||||
ynh_app_changelog --format=$format
|
||||
|
||||
if [ $enable_dhcp -eq 1 ]
|
||||
then
|
||||
|
@ -317,10 +343,10 @@ If you're facing an issue or want to improve this app, please open a new issue i
|
|||
Changelog since your last upgrade:
|
||||
$(cat changelog)" > mail_to_send
|
||||
|
||||
ynh_send_readme_to_admin --app_message="mail_to_send" --recipients="$admin" --type="upgrade"
|
||||
ynh_send_readme_to_admin --app_message="mail_to_send" --recipients="$admin" --type=upgrade
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Upgrade completed" --last
|
||||
ynh_script_progression --message="Upgrade of $app completed" --last
|
||||
|
|
Loading…
Add table
Reference in a new issue