diff --git a/packaging_apps_helpers.md b/packaging_apps_helpers.md index ce923f41..1f97ff1b 100644 --- a/packaging_apps_helpers.md +++ b/packaging_apps_helpers.md @@ -1,345 +1,435 @@ +

App helpers

-

backend

+ + + +

apt

+ + +
-
-
ynh_use_logrotate
-
Use logrotate to manage the logfile
+
+
ynh_package_is_installed
+
Check either a package is installed or not
-
+

- Usage: ynh_use_logrotate [--logfile=/log/file] [--nonappend] [--specific_user=user/group] + + Usage: ynh_package_is_installed --package=name +

+

Arguments:

    -
  • -l, --logfile : absolute path of logfile
  • -
  • -n, --nonappend : (optional) Replace the config file instead of appending this new config.
  • -
  • -u, --specific_user : run logrotate as the specified user and group. If not specified logrotate is runned as root.
  • + + +
  • -p, --package : the package name to check
  • + +

+ + + +

+ Example: ynh_package_is_installed --package=yunohost && echo "ok" +

+ + +

Details:

- If no --logfile is provided, /var/log/${app} will be used as default.
logfile can be just a directory, or a full path to a logfile :
/parentdir/logdir
/parentdir/logdir/logfile.log

It's possible to use this helper multiple times, each config will be added to
the same logrotate config file. Unless you use the option --non-append

Requires YunoHost version 2.6.4 or higher.

+ Requires YunoHost version 2.2.4 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
+ + +
-
-
ynh_remove_logrotate
-
Remove the app's logrotate config.
+
+
ynh_package_version
+
Get the version of an installed package
-
+

- Usage: ynh_remove_logrotate + + Usage: ynh_package_version --package=name +

+ +

+ Arguments: +

    + + +
  • -p, --package : the package name to get version
  • + + +
+

+ + +

+ Returns: the version or an empty string +

+ + +

+ Example: version=$(ynh_package_version --package=yunohost) +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_package_update
+
Update package index files
+
+
+
+

+ + Usage: ynh_package_update + +

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_package_install
+
Install package(s)
+
+
+
+

+ + Usage: ynh_package_install name [name [...]] + +

+ +

+ Arguments: +

    + + +
  • name : the package name to install
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_package_remove
+
Remove package(s)
+
+
+
+

+ + Usage: ynh_package_remove name [name [...]] + +

+ +

+ Arguments: +

    + + +
  • name : the package name to remove
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_package_autoremove
+
Remove package(s) and their uneeded dependencies
+
+
+
+

+ + Usage: ynh_package_autoremove name [name [...]] + +

+ +

+ Arguments: +

    + + +
  • name : the package name to remove
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_package_autopurge
+
Purge package(s) and their uneeded dependencies
+
+
+
+

+ + Usage: ynh_package_autopurge name [name [...]] + +

+ +

+ Arguments: +

    + + +
  • name : the package name to autoremove and purge
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.7.2 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_install_app_dependencies
+
Define and install dependencies with a equivs control file +This helper can/should only be called once per app
+
+
+
+

+ + Usage: ynh_install_app_dependencies dep [dep [...]] + You can give a choice between some package with this syntax : "dep1|dep2" + Example : ynh_install_app_dependencies dep1 dep2 "dep3|dep4|dep5" + This mean in the dependence tree : dep1 & dep2 & (dep3 | dep4 | dep5) + +

+ +

+ Arguments: +

    + + +
  • dep : the package name to install in dependence
  • + + +
+

+ + + + +

Details:

Requires YunoHost version 2.6.4 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
+ + +
-
-
ynh_add_systemd_config
-
Create a dedicated systemd config
+
+
ynh_remove_app_dependencies
+
Remove fake package and its dependencies
-
+

- Usage: ynh_add_systemd_config [--service=service] [--template=template] -

-

- Arguments: -

    -
  • -s, --service : Service name (optionnal, $app by default)
  • -
  • -t, --template : Name of template file (optionnal, this is 'systemd' by default, meaning ./conf/systemd.service will be used as template)
  • -
+ + Usage: ynh_remove_app_dependencies +

+ + + + +

Details:

- This will use the template ../conf/.service
to generate a systemd config, by replacing the following keywords
with global variables that should be defined before calling
this helper :

__APP__ by $app
__FINALPATH__ by $final_path

Requires YunoHost version 2.7.2 or higher.

+ Dependencies will removed only if no other package need them.

Requires YunoHost version 2.6.4 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
-
-
-
-
ynh_remove_systemd_config
-
Remove the dedicated systemd config
-
-
-
-

- Usage: ynh_remove_systemd_config [--service=service] -

-

- Arguments: -

    -
  • -s, --service : Service name (optionnal, $app by default)
  • -
-

-

- Details: -

- Requires YunoHost version 2.7.2 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_add_nginx_config
-
Create a dedicated nginx config
-
-
-
-

- Usage: ynh_add_nginx_config "list of others variables to replace" -

-

- Arguments: -

    -
  • list : (Optional) list of others variables to replace separated by spaces. For example : 'path_2 port_2 ...'
  • -
-

-

- Details: -

- This will use a template in ../conf/nginx.conf
__PATH__ by $path_url
__DOMAIN__ by $domain
__PORT__ by $port
__NAME__ by $app
__FINALPATH__ by $final_path

And dynamic variables (from the last example) :
__PATH_2__ by $path_2
__PORT_2__ by $port_2

Requires YunoHost version 2.7.2 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_remove_nginx_config
-
Remove the dedicated nginx config
-
-
-
-

- Usage: ynh_remove_nginx_config -

-

- Details: -

- Requires YunoHost version 2.7.2 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_add_fpm_config
-
Create a dedicated php-fpm config
-
-
-
-

- Usage: ynh_add_fpm_config [--phpversion=7.X] -

-

- Arguments: -

    -
  • -v, --phpversion : Version of php to use.
  • -
-

-

- Details: -

- Requires YunoHost version 2.7.2 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_remove_fpm_config
-
Remove the dedicated php-fpm config
-
-
-
-

- Usage: ynh_remove_fpm_config -

-

- Details: -

- Requires YunoHost version 2.7.2 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_add_fail2ban_config
-
Create a dedicated fail2ban config (jail and filter conf files)
-
-
-
-

- Usage: 1: ynh_add_fail2ban_config --logpath=log_file --failregex=filter [--max_retry=max_retry] [--ports=ports] -2: ynh_add_fail2ban_config --use_template [--others_var="list of others variables to replace"] -| for example : 'var_1 var_2 ...' -

-

- Arguments: -

    -
  • -l, --logpath= : Log file to be checked by fail2ban
  • -
  • -r, --failregex= : Failregex to be looked for by fail2ban
  • -
  • -m, --max_retry= : Maximum number of retries allowed before banning IP address - default: 3
  • -
  • -p, --ports= : Ports blocked for a banned IP address - default: http,https
  • -
  • -t, --use_template : Use this helper in template mode
  • -
  • -v, --others_var= : List of others variables to replace separeted by a space
  • -
-

-

- Details: -

- -----------------------------------------------------------------------------

This will use a template in ../conf/f2b_jail.conf and ../conf/f2b_filter.conf
__APP__ by $app

You can dynamically replace others variables by example :
__VAR_1__ by $var_1
__VAR_2__ by $var_2

Generally your template will look like that by example (for synapse):

f2b_jail.conf:
[__APP__]
enabled = true
port = http,https
filter = __APP__
logpath = /var/log/__APP__/logfile.log
maxretry = 3

f2b_filter.conf:
[INCLUDES]
before = common.conf
[Definition]

# Part of regex definition (just used to make more easy to make the global regex)
__synapse_start_line = .? \- synapse\..+ \-

# Regex definition.
failregex = ^%(__synapse_start_line)s INFO \- POST\-(\d+)\- \- \d+ \- Received request\: POST /_matrix/client/r0/login\??%(__synapse_start_line)s INFO \- POST\-\1\- Got login request with identifier: \{u'type': u'm.id.user', u'user'\: u'(.+?)'\}, medium\: None, address: None, user\: u'\5'%(__synapse_start_line)s WARNING \- \- (Attempted to login as @\5\:.+ but they do not exist|Failed password login for user @\5\:.+)$

ignoreregex =

-----------------------------------------------------------------------------

Note about the "failregex" option:
regex to match the password failure messages in the logfile. The
host must be matched by a group named "host". The tag "" can
be used for standard IP/hostname matching and is only an alias for
(?:::f{4,6}:)?(?P[\w\-.^_]+)

You can find some more explainations about how to make a regex here :
https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Filters

Note that the logfile need to exist before to call this helper !!

To validate your regex you can test with this command:
fail2ban-regex /var/log/YOUR_LOG_FILE_PATH /etc/fail2ban/filter.d/YOUR_APP.conf

Requires YunoHost version 3.?.? or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_remove_fail2ban_config
-
Remove the dedicated fail2ban config (jail and filter conf files)
-
-
-
-

- Usage: ynh_remove_fail2ban_config -

-

- Details: -

- Requires YunoHost version 3.?.? or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-

debug

-
-
-
-
ynh_debug
-
Debugger for app packagers
-
-
-
-

- Usage: ynh_debug [--message=message] [--trace=1/0] -

-

- Arguments: -

    -
  • -m, --message= : The text to print
  • -
  • -t, --trace= : Turn on or off the trace of the script. Usefull to trace nonly a small part of a script.
  • -
-

-

- Details: -

- Requires YunoHost version 3.?.? or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_debug_exec
-
Execute a command and print the result as debug
-
-
-
-

- Usage: ynh_debug_exec command to execute -ynh_debug_exec "command to execute | following command" -In case of use of pipes, you have to use double quotes. Otherwise, this helper will be executed with the first command, then be sent to the next pipe. -

-

- Arguments: -

    -
  • command : command to execute
  • -
-

-

- Details: -

- Requires YunoHost version 3.?.? or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-

filesystem

+ + + + +

backup

+ + +
@@ -349,30 +439,60 @@ In case of use of pipes, you have to use double quotes. Otherwise, this helper w

+ Usage: ynh_backup --src_path=src_path [--dest_path=dest_path] [--is_big] [--not_mandatory] +

+

Arguments:

    + +
  • -s, --src_path : file or directory to bind or symlink or copy. it shouldn't be in the backup dir.
  • + + +
  • -d, --dest_path : destination file or directory inside the backup dir
  • + + +
  • -b, --is_big : Indicate data are big (mail, video, image ...)
  • + + +
  • -m, --not_mandatory : Indicate that if the file is missing, the backup can ignore it.
  • + + +
  • arg : Deprecated arg
  • + +

+ + + + +

Details:

Note: this helper could be used in backup hook or in backup script inside an
app package

Details: ynh_backup writes SRC and the relative DEST into a CSV file. And it
creates the parent destination directory

If DEST is ended by a slash it complete this path with the basename of SRC.

Example in the context of a wordpress app

ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
# => This line will be added into CSV file
# "/etc/nginx/conf.d/$domain.d/$app.conf","apps/wordpress/etc/nginx/conf.d/$domain.d/$app.conf"

ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "conf/nginx.conf"
# => "/etc/nginx/conf.d/$domain.d/$app.conf","apps/wordpress/conf/nginx.conf"

ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "conf/"
# => "/etc/nginx/conf.d/$domain.d/$app.conf","apps/wordpress/conf/$app.conf"

ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "conf"
# => "/etc/nginx/conf.d/$domain.d/$app.conf","apps/wordpress/conf"

#Deprecated usages (maintained for retro-compatibility)
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "${backup_dir}/conf/nginx.conf"
# => "/etc/nginx/conf.d/$domain.d/$app.conf","apps/wordpress/conf/nginx.conf"

ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "/conf/"
# => "/etc/nginx/conf.d/$domain.d/$app.conf","apps/wordpress/conf/$app.conf"

Requires YunoHost version 2.4.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -382,20 +502,33 @@ In case of use of pipes, you have to use double quotes. Otherwise, this helper w

+ Usage: ynh_restore +

+ + + + +

Details:

Requires YunoHost version 2.6.4 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -405,38 +538,73 @@ In case of use of pipes, you have to use double quotes. Otherwise, this helper w

+ Usage: ynh_restore_file --origin_path=origin_path [--dest_path=dest_path] [--not_mandatory] +

+

Arguments:

    + +
  • -o, --origin_path : Path where was located the file or the directory before to be backuped or relative path to $YNH_CWD where it is located in the backup archive
  • + + +
  • -d, --dest_path : Path where restore the file or the dir, if unspecified, the destination will be ORIGIN_PATH or if the ORIGIN_PATH doesn't exist in the archive, the destination will be searched into backup.csv
  • + + +
  • -m, --not_mandatory : Indicate that if the file is missing, the restore process can ignore it.
  • + +

+ + + +

Examples:

    + + ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf" +
    + + You can also use relative paths: +
    + + ynh_restore_file "conf/nginx.conf" +
    +

+ +

Details:

Use the registered path in backup_list by ynh_backup to restore the file at
the right place.

If DEST_PATH already exists and is lighter than 500 Mo, a backup will be made in
/home/yunohost.conf/backup/. Otherwise, the existing file is removed.

if apps/wordpress/etc/nginx/conf.d/$domain.d/$app.conf exists, restore it into
/etc/nginx/conf.d/$domain.d/$app.conf
if no, search for a match in the csv (eg: conf/nginx.conf) and restore it into
/etc/nginx/conf.d/$domain.d/$app.conf

Requires YunoHost version 2.6.4 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -446,26 +614,44 @@ In case of use of pipes, you have to use double quotes. Otherwise, this helper w

+ Usage: ynh_store_file_checksum --file=file +

+

Arguments:

    + +
  • -f, --file : The file on which the checksum will performed, then stored.
  • + +

+ + + + +

Details:

$app should be defined when calling this helper

Requires YunoHost version 2.6.4 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -477,29 +663,48 @@ modified config files.

+ Usage: ynh_backup_if_checksum_is_different --file=file +

+

Arguments:

    + +
  • -f, --file : The file on which the checksum test will be perfomed.
  • + +

+ +

Returns: the name of a backup file, or nothing

+ + + +

Details:

$app should be defined when calling this helper

Requires YunoHost version 2.6.4 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -509,902 +714,244 @@ modified config files.

+ Usage: ynh_remove_file_checksum file +

+

Arguments:

    + +
  • -f, --file= : The file for which the checksum will be deleted
  • + +

+ + + + +

Details:

$app should be defined when calling this helper

Requires YunoHost version 3.3.1 or higher.

+

Dude, show me the code !

+
+
+ + +
-
-
ynh_secure_remove
-
Remove a file or a directory securely
+
+
ynh_backup_before_upgrade
+
Make a backup in case of failed upgrade
-
+

- Usage: ynh_secure_remove --file=path_to_remove -

-

- Arguments: -

    -
  • -f, --file : File or directory to remove
  • -
-

-

- Details: -

- Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-

getopts

-

ip

-
-
-
-
ynh_validate_ip
-
Validate an IP address
-
-
-
-

- Usage: ynh_validate_ip --family=family --ip_address=ip_address -

-

- Returns: 0 for valid ip addresses, 1 otherwise -

-

- Example: ynh_validate_ip 4 111.222.333.444 -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_validate_ip4
-
Validate an IPv4 address
-
-
-
-

- Usage: ynh_validate_ip4 --ip_address=ip_address -

-

- Returns: 0 for valid ipv4 addresses, 1 otherwise -

-

- Example: ynh_validate_ip4 111.222.333.444 -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_validate_ip6
-
Validate an IPv6 address
-
-
-
-

- Usage: ynh_validate_ip6 --ip_address=ip_address -

-

- Returns: 0 for valid ipv6 addresses, 1 otherwise -

-

- Example: ynh_validate_ip6 2000:dead:beef::1 -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-

mysql

-
-
-
-
ynh_mysql_connect_as
-
Open a connection as a user
-
-
-
-

- Usage: ynh_mysql_connect_as --user=user --password=password [--database=database] -

-

- Arguments: -

    -
  • -u, --user : the user name to connect as
  • -
  • -p, --password : the user password
  • -
  • -d, --database : the database to connect to
  • -
-

-

- Example: ynh_mysql_connect_as 'user' 'pass' <<< "UPDATE ...;" example: ynh_mysql_connect_as 'user' 'pass' < /path/to/file.sql -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_mysql_execute_as_root
-
Execute a command as root user
-
-
-
-

- Usage: ynh_mysql_execute_as_root --sql=sql [--database=database] -

-

- Arguments: -

    -
  • -s, --sql : the SQL command to execute
  • -
  • -d, --database : the database to connect to
  • -
-

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_mysql_execute_file_as_root
-
Execute a command from a file as root user
-
-
-
-

- Usage: ynh_mysql_execute_file_as_root --file=file [--database=database] -

-

- Arguments: -

    -
  • -f, --file : the file containing SQL commands
  • -
  • -d, --database : the database to connect to
  • -
-

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_mysql_dump_db
-
Dump a database
-
-
-
-

- Usage: ynh_mysql_dump_db --database=database -

-

- Arguments: -

    -
  • -d, --database : the database name to dump
  • -
-

-

- Returns: the mysqldump output -

-

- Example: ynh_mysql_dump_db 'roundcube' > ./dump.sql -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_mysql_user_exists
-
Check if a mysql user exists
-
-
-
-

- Usage: ynh_mysql_user_exists --user=user -

-

- Arguments: -

    -
  • -u, --user : the user for which to check existence
  • -
-

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_mysql_setup_db
-
Create a database, an user and its password. Then store the password in the app's config
-
-
-
-

- Usage: ynh_mysql_setup_db --db_user=user --db_name=name [--db_pwd=pwd] -

-

- Arguments: -

    -
  • -u, --db_user : Owner of the database
  • -
  • -n, --db_name : Name of the database
  • -
  • -p, --db_pwd : Password of the database. If not provided, a password will be generated
  • -
-

-

- Details: -

- After executing this helper, the password of the created database will be available in $db_pwd
It will also be stored as "mysqlpwd" into the app settings.

Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_mysql_remove_db
-
Remove a database if it exists, and the associated user
-
-
-
-

- Usage: ynh_mysql_remove_db --db_user=user --db_name=name -

-

- Arguments: -

    -
  • -u, --db_user : Owner of the database
  • -
  • -n, --db_name : Name of the database
  • -
-

-

- Details: -

- Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_sanitize_dbid
-
Sanitize a string intended to be the name of a database -(More specifically : replace - and . by _)
-
-
-
-

- Usage: ynh_sanitize_dbid --db_name=name -

-

- Arguments: -

    -
  • -n, --db_name : name to correct/sanitize
  • -
-

-

- Returns: the corrected name -

-

- Example: dbname=$(ynh_sanitize_dbid $app) -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-

network

-
-
-
-
ynh_normalize_url_path
-
Normalize the url path syntax
-
-
-
-

- Usage: ynh_normalize_url_path --path_url=path_to_normalize -

-

- Arguments: -

    -
  • -p, --path_url : URL path to normalize before using it
  • -
-

-

- Examples:

    - url_path=$(ynh_normalize_url_path $url_path) -
    - ynh_normalize_url_path example # -> /example -
    - ynh_normalize_url_path /example # -> /example -
    - ynh_normalize_url_path /example/ # -> /example -
    - ynh_normalize_url_path / # -> / -
    -
-

-

- Details: -

- Handle the slash at the beginning of path and its absence at ending
Return a normalized url path

Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_find_port
-
Find a free port and return it
-
-
-
-

- Usage: ynh_find_port --port=begin_port -

-

- Arguments: -

    -
  • -p, --port : port to start to search
  • -
-

-

- Example: port=$(ynh_find_port --port=8080) -

-

- Details: -

- Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_webpath_available
-
Check availability of a web path
-
-
-
-

- Usage: ynh_webpath_available --domain=domain --path_url=path -

-

- Arguments: -

    -
  • -d, --domain : the domain/host of the url
  • -
  • -p, --path_url : the web path to check the availability of
  • -
-

-

- Example: ynh_webpath_available --domain=some.domain.tld --path_url=/coffee -

-

- Details: -

- Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_webpath_register
-
Register/book a web path for an app
-
-
-
-

- Usage: ynh_webpath_register --app=app --domain=domain --path_url=path -

-

- Arguments: -

    -
  • -a, --app : the app for which the domain should be registered
  • -
  • -d, --domain : the domain/host of the web path
  • -
  • -p, --path_url : the web path to be registered
  • -
-

-

- Example: ynh_webpath_register --app=wordpress --domain=some.domain.tld --path_url=/coffee -

-

- Details: -

- Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-

nodejs

-
-
-
-
export
-
N_PREFIX is the directory of n, it needs to be loaded as a environment variable.
-
-
-
-

- Usage: -

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_use_nodejs
-
Load the version of node for an app, and set variables.
-
-
-
-

- Usage: ynh_use_nodejs -

-

- Details: -

- ynh_use_nodejs has to be used in any app scripts before using node for the first time.

2 variables are available:
- $nodejs_path: The absolute path of node for the chosen version.
- $nodejs_version: Just the version number of node for this app. Stored as 'nodejs_version' in settings.yml.
And 2 alias stored in variables:
- $nodejs_use_version: An old variable, not used anymore. Keep here to not break old apps
NB: $PATH will contain the path to node, it has to be propagated to any other shell which needs to use it.
That's means it has to be added to any systemd script.

Requires YunoHost version 2.7.12 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_install_nodejs
-
Install a specific version of nodejs
-
-
-
-

- Usage: ynh_install_nodejs --nodejs_version=nodejs_version - If possible, prefer to use major version number (e.g. 8 instead of 8.10.0). - The crontab will handle the update of minor versions when needed. -

-

- Arguments: -

    -
  • -n, --nodejs_version : Version of node to install.
  • -
-

-

- Details: -

- n (Node version management) uses the PATH variable to store the path of the version of node it is going to use.
That's how it changes the version

ynh_install_nodejs will install the version of node provided as argument by using n.

Requires YunoHost version 2.7.12 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_remove_nodejs
-
Remove the version of node used by the app.
-
-
-
-

- Usage: ynh_remove_nodejs -

-

- Details: -

- This helper will check if another app uses the same version of node,
if not, this version of node will be removed.
If no other app uses node, n will be also removed.

Requires YunoHost version 2.7.12 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-

package

-
-
-
-
ynh_package_is_installed
-
Check either a package is installed or not
-
-
-
-

- Usage: ynh_package_is_installed --package=name -

-

- Arguments: -

    -
  • -p, --package : the package name to check
  • -
-

-

- Example: ynh_package_is_installed --package=yunohost && echo "ok" -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_package_version
-
Get the version of an installed package
-
-
-
-

- Usage: ynh_package_version --package=name -

-

- Arguments: -

    -
  • -p, --package : the package name to get version
  • -
-

-

- Returns: the version or an empty string -

-

- Example: version=$(ynh_package_version --package=yunohost) -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_package_update
-
Update package index files
-
-
-
-

- Usage: ynh_package_update -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_package_install
-
Install package(s)
-
-
-
-

- Usage: ynh_package_install name [name [...]] -

-

- Arguments: -

    -
  • name : the package name to install
  • -
-

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_package_remove
-
Remove package(s)
-
-
-
-

- Usage: ynh_package_remove name [name [...]] -

-

- Arguments: -

    -
  • name : the package name to remove
  • -
-

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_package_autoremove
-
Remove package(s) and their uneeded dependencies
-
-
-
-

- Usage: ynh_package_autoremove name [name [...]] -

-

- Arguments: -

    -
  • name : the package name to remove
  • -
-

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_package_autopurge
-
Purge package(s) and their uneeded dependencies
-
-
-
-

- Usage: ynh_package_autopurge name [name [...]] -

-

- Arguments: -

    -
  • name : the package name to autoremove and purge
  • -
-

+ + Usage: ynh_backup_before_upgrade +ynh_clean_setup () { + ynh_restore_upgradebackup +} +ynh_abort_if_errors + +

+ + + + +

Details:

Requires YunoHost version 2.7.2 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
+ + +
-
-
ynh_install_app_dependencies
-
Define and install dependencies with a equivs control file -This helper can/should only be called once per app
+
+
ynh_restore_upgradebackup
+
Restore a previous backup if the upgrade process failed
-
+

- Usage: ynh_install_app_dependencies dep [dep [...]] - You can give a choice between some package with this syntax : "dep1|dep2" - Example : ynh_install_app_dependencies dep1 dep2 "dep3|dep4|dep5" - This mean in the dependence tree : dep1 & dep2 & (dep3 | dep4 | dep5) + + Usage: ynh_backup_before_upgrade +ynh_clean_setup () { + ynh_restore_upgradebackup +} +ynh_abort_if_errors +

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.7.2 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

fail2ban

+ + + +
+
+
+
ynh_add_fail2ban_config
+
Create a dedicated fail2ban config (jail and filter conf files)
+
+
+
+

+ + Usage: 1: ynh_add_fail2ban_config --logpath=log_file --failregex=filter [--max_retry=max_retry] [--ports=ports] +2: ynh_add_fail2ban_config --use_template [--others_var="list of others variables to replace"] +| for example : 'var_1 var_2 ...' + +

+

Arguments:

    -
  • dep : the package name to install in dependence
  • + + +
  • -l, --logpath= : Log file to be checked by fail2ban
  • + + + +
  • -r, --failregex= : Failregex to be looked for by fail2ban
  • + + + +
  • -m, --max_retry= : Maximum number of retries allowed before banning IP address - default: 3
  • + + + +
  • -p, --ports= : Ports blocked for a banned IP address - default: http,https
  • + + + +
  • -t, --use_template : Use this helper in template mode
  • + + + +
  • -v, --others_var= : List of others variables to replace separeted by a space
  • + +

+ + + + +

Details:

- Requires YunoHost version 2.6.4 or higher.

+ -----------------------------------------------------------------------------

This will use a template in ../conf/f2b_jail.conf and ../conf/f2b_filter.conf
__APP__ by $app

You can dynamically replace others variables by example :
__VAR_1__ by $var_1
__VAR_2__ by $var_2

Generally your template will look like that by example (for synapse):

f2b_jail.conf:
[__APP__]
enabled = true
port = http,https
filter = __APP__
logpath = /var/log/__APP__/logfile.log
maxretry = 3

f2b_filter.conf:
[INCLUDES]
before = common.conf
[Definition]

# Part of regex definition (just used to make more easy to make the global regex)
__synapse_start_line = .? \- synapse\..+ \-

# Regex definition.
failregex = ^%(__synapse_start_line)s INFO \- POST\-(\d+)\- \- \d+ \- Received request\: POST /_matrix/client/r0/login\??%(__synapse_start_line)s INFO \- POST\-\1\- Got login request with identifier: \{u'type': u'm.id.user', u'user'\: u'(.+?)'\}, medium\: None, address: None, user\: u'\5'%(__synapse_start_line)s WARNING \- \- (Attempted to login as @\5\:.+ but they do not exist|Failed password login for user @\5\:.+)$

ignoreregex =

-----------------------------------------------------------------------------

Note about the "failregex" option:
regex to match the password failure messages in the logfile. The
host must be matched by a group named "host". The tag "" can
be used for standard IP/hostname matching and is only an alias for
(?:::f{4,6}:)?(?P[\w\-.^_]+)

You can find some more explainations about how to make a regex here :
https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Filters

Note that the logfile need to exist before to call this helper !!

To validate your regex you can test with this command:
fail2ban-regex /var/log/YOUR_LOG_FILE_PATH /etc/fail2ban/filter.d/YOUR_APP.conf

Requires YunoHost version 3.5.0 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
+ + +
-
-
ynh_remove_app_dependencies
-
Remove fake package and its dependencies
+
+
ynh_remove_fail2ban_config
+
Remove the dedicated fail2ban config (jail and filter conf files)
-
+

- Usage: ynh_remove_app_dependencies + + Usage: ynh_remove_fail2ban_config +

+ + + + +

Details:

- Dependencies will removed only if no other package need them.

Requires YunoHost version 2.6.4 or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
-

print

+ + + + +

getopts

+ + + + +

logging

+ + +
@@ -1415,20 +962,33 @@ usage: ynh_die --message=MSG [--ret_code=RETCODE]

+ Usage: +

+ + + + +

Details:

Requires YunoHost version 2.4.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1438,20 +998,33 @@ usage: ynh_die --message=MSG [--ret_code=RETCODE]

+ Usage: ynh_print_info --message="Some message" +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1461,26 +1034,44 @@ usage: ynh_die --message=MSG [--ret_code=RETCODE]

+ Usage: ynh_print_warn --message="Text to print" +

+

Arguments:

    + +
  • -m, --message : The text to print
  • + +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1490,26 +1081,44 @@ usage: ynh_die --message=MSG [--ret_code=RETCODE]

+ Usage: ynh_print_err --message="Text to print" +

+

Arguments:

    + +
  • -m, --message : The text to print
  • + +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1519,29 +1128,47 @@ usage: ynh_die --message=MSG [--ret_code=RETCODE]

+ Usage: ynh_exec_err command to execute ynh_exec_err "command to execute | following command" In case of use of pipes, you have to use double quotes. Otherwise, this helper will be executed with the first command, then be sent to the next pipe. If the command to execute uses double quotes, they have to be escaped or they will be interpreted and removed. +

+

Arguments:

    + +
  • command : command to execute
  • + +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1551,29 +1178,47 @@ If the command to execute uses double quotes, they have to be escaped or they wi

+ Usage: ynh_exec_warn command to execute ynh_exec_warn "command to execute | following command" In case of use of pipes, you have to use double quotes. Otherwise, this helper will be executed with the first command, then be sent to the next pipe. If the command to execute uses double quotes, they have to be escaped or they will be interpreted and removed. +

+

Arguments:

    + +
  • command : command to execute
  • + +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1583,29 +1228,47 @@ If the command to execute uses double quotes, they have to be escaped or they wi

+ Usage: ynh_exec_warn_less command to execute ynh_exec_warn_less "command to execute | following command" In case of use of pipes, you have to use double quotes. Otherwise, this helper will be executed with the first command, then be sent to the next pipe. If the command to execute uses double quotes, they have to be escaped or they will be interpreted and removed. +

+

Arguments:

    + +
  • command : command to execute
  • + +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1615,29 +1278,47 @@ If the command to execute uses double quotes, they have to be escaped or they wi

+ Usage: ynh_exec_quiet command to execute ynh_exec_quiet "command to execute | following command" In case of use of pipes, you have to use double quotes. Otherwise, this helper will be executed with the first command, then be sent to the next pipe. If the command to execute uses double quotes, they have to be escaped or they will be interpreted and removed. +

+

Arguments:

    + +
  • command : command to execute
  • + +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1647,29 +1328,47 @@ If the command to execute uses double quotes, they have to be escaped or they wi

+ Usage: ynh_exec_fully_quiet command to execute ynh_exec_fully_quiet "command to execute | following command" In case of use of pipes, you have to use double quotes. Otherwise, this helper will be executed with the first command, then be sent to the next pipe. If the command to execute uses double quotes, they have to be escaped or they will be interpreted and removed. +

+

Arguments:

    + +
  • command : command to execute
  • + +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1679,21 +1378,34 @@ If the command to execute uses double quotes, they have to be escaped or they wi

+ Usage: ynh_print_OFF WARNING: You should be careful with this helper, and never forget to use ynh_print_ON as soon as possible to restore the logging. +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1703,20 +1415,33 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_print_ON +

+ + + + +

Details:

Requires YunoHost version 3.2.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1726,30 +1451,1188 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

- Usage: ynh_script_progression --message=message [--weight=weight] [--time] + + Usage: ynh_script_progression --message=message [--weight=weight] [--time] +The execution time is given for the duration since the previous call. So the weight should be applied to this previous call. +

+

Arguments:

    + +
  • -m, --message= : The text to print
  • + + +
  • -w, --weight= : The weight for this progression. This value is 1 by default. Use a bigger value for a longer part of the script.
  • + + +
  • -t, --time= : Print the execution time since the last call to this helper. Especially usefull to define weights.
  • + + +
  • -l, --last= : Use for the last call of the helper, to fill te progression bar.
  • + +

+ + + + +

Details:

- Requires YunoHost version 3.?.? or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
-

psql

+ + + +
+
+
+
ynh_return
+
Return data to the Yunohost core for later processing +(to be used by special hooks like app config panel and core diagnosis)
+
+
+
+

+ + Usage: ynh_return somedata + +

+ + + + + +

+ Details: +

+ Requires YunoHost version 3.6.0 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_debug
+
Debugger for app packagers
+
+
+
+

+ + Usage: ynh_debug [--message=message] [--trace=1/0] + +

+ +

+ Arguments: +

    + + +
  • -m, --message= : The text to print
  • + + + +
  • -t, --trace= : Turn on or off the trace of the script. Usefull to trace nonly a small part of a script.
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 3.5.0 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_debug_exec
+
Execute a command and print the result as debug
+
+
+
+

+ + Usage: ynh_debug_exec command to execute +ynh_debug_exec "command to execute | following command" +In case of use of pipes, you have to use double quotes. Otherwise, this helper will be executed with the first command, then be sent to the next pipe. + +

+ +

+ Arguments: +

    + + +
  • command : command to execute
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 3.5.0 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

logrotate

+ + + +
+
+
+
ynh_use_logrotate
+
Use logrotate to manage the logfile
+
+
+
+

+ + Usage: ynh_use_logrotate [--logfile=/log/file] [--nonappend] [--specific_user=user/group] + +

+ +

+ Arguments: +

    + + +
  • -l, --logfile : absolute path of logfile
  • + + + +
  • -n, --nonappend : (optional) Replace the config file instead of appending this new config.
  • + + + +
  • -u, --specific_user : run logrotate as the specified user and group. If not specified logrotate is runned as root.
  • + + +
+

+ + + + + +

+ Details: +

+ If no --logfile is provided, /var/log/${app} will be used as default.
logfile can be just a directory, or a full path to a logfile :
/parentdir/logdir
/parentdir/logdir/logfile.log

It's possible to use this helper multiple times, each config will be added to
the same logrotate config file. Unless you use the option --non-append

Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_remove_logrotate
+
Remove the app's logrotate config.
+
+
+
+

+ + Usage: ynh_remove_logrotate + +

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

mysql

+ + + +
+
+
+
ynh_mysql_connect_as
+
Open a connection as a user
+
+
+
+

+ + Usage: ynh_mysql_connect_as --user=user --password=password [--database=database] + +

+ +

+ Arguments: +

    + + +
  • -u, --user : the user name to connect as
  • + + + +
  • -p, --password : the user password
  • + + + +
  • -d, --database : the database to connect to
  • + + +
+

+ + + +

+ Example: ynh_mysql_connect_as 'user' 'pass' <<< "UPDATE ...;" example: ynh_mysql_connect_as 'user' 'pass' < /path/to/file.sql +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_mysql_execute_as_root
+
Execute a command as root user
+
+
+
+

+ + Usage: ynh_mysql_execute_as_root --sql=sql [--database=database] + +

+ +

+ Arguments: +

    + + +
  • -s, --sql : the SQL command to execute
  • + + + +
  • -d, --database : the database to connect to
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_mysql_execute_file_as_root
+
Execute a command from a file as root user
+
+
+
+

+ + Usage: ynh_mysql_execute_file_as_root --file=file [--database=database] + +

+ +

+ Arguments: +

    + + +
  • -f, --file : the file containing SQL commands
  • + + + +
  • -d, --database : the database to connect to
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_mysql_dump_db
+
Dump a database
+
+
+
+

+ + Usage: ynh_mysql_dump_db --database=database + +

+ +

+ Arguments: +

    + + +
  • -d, --database : the database name to dump
  • + + +
+

+ + +

+ Returns: the mysqldump output +

+ + +

+ Example: ynh_mysql_dump_db 'roundcube' > ./dump.sql +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_mysql_user_exists
+
Check if a mysql user exists
+
+
+
+

+ + Usage: ynh_mysql_user_exists --user=user + +

+ +

+ Arguments: +

    + + +
  • -u, --user : the user for which to check existence
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_mysql_setup_db
+
Create a database, an user and its password. Then store the password in the app's config
+
+
+
+

+ + Usage: ynh_mysql_setup_db --db_user=user --db_name=name [--db_pwd=pwd] + +

+ +

+ Arguments: +

    + + +
  • -u, --db_user : Owner of the database
  • + + + +
  • -n, --db_name : Name of the database
  • + + + +
  • -p, --db_pwd : Password of the database. If not provided, a password will be generated
  • + + +
+

+ + + + + +

+ Details: +

+ After executing this helper, the password of the created database will be available in $db_pwd
It will also be stored as "mysqlpwd" into the app settings.

Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_mysql_remove_db
+
Remove a database if it exists, and the associated user
+
+
+
+

+ + Usage: ynh_mysql_remove_db --db_user=user --db_name=name + +

+ +

+ Arguments: +

    + + +
  • -u, --db_user : Owner of the database
  • + + + +
  • -n, --db_name : Name of the database
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

network

+ + + +
+
+
+
ynh_find_port
+
Find a free port and return it
+
+
+
+

+ + Usage: ynh_find_port --port=begin_port + +

+ +

+ Arguments: +

    + + +
  • -p, --port : port to start to search
  • + + +
+

+ + + +

+ Example: port=$(ynh_find_port --port=8080) +

+ + + +

+ Details: +

+ Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_validate_ip
+
Validate an IP address
+
+
+
+

+ + Usage: ynh_validate_ip --family=family --ip_address=ip_address + +

+ + +

+ Returns: 0 for valid ip addresses, 1 otherwise +

+ + +

+ Example: ynh_validate_ip 4 111.222.333.444 +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_validate_ip4
+
Validate an IPv4 address
+
+
+
+

+ + Usage: ynh_validate_ip4 --ip_address=ip_address + +

+ + +

+ Returns: 0 for valid ipv4 addresses, 1 otherwise +

+ + +

+ Example: ynh_validate_ip4 111.222.333.444 +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_validate_ip6
+
Validate an IPv6 address
+
+
+
+

+ + Usage: ynh_validate_ip6 --ip_address=ip_address + +

+ + +

+ Returns: 0 for valid ipv6 addresses, 1 otherwise +

+ + +

+ Example: ynh_validate_ip6 2000:dead:beef::1 +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

nginx

+ + + +
+
+
+
ynh_add_nginx_config
+
Create a dedicated nginx config
+
+
+
+

+ + Usage: ynh_add_nginx_config "list of others variables to replace" + +

+ +

+ Arguments: +

    + + +
  • list : (Optional) list of others variables to replace separated by spaces. For example : 'path_2 port_2 ...'
  • + + +
+

+ + + + + +

+ Details: +

+ This will use a template in ../conf/nginx.conf
__PATH__ by $path_url
__DOMAIN__ by $domain
__PORT__ by $port
__NAME__ by $app
__FINALPATH__ by $final_path

And dynamic variables (from the last example) :
__PATH_2__ by $path_2
__PORT_2__ by $port_2

Requires YunoHost version 2.7.2 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_remove_nginx_config
+
Remove the dedicated nginx config
+
+
+
+

+ + Usage: ynh_remove_nginx_config + +

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.7.2 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

nodejs

+ + + +
+
+
+
export
+
N_PREFIX is the directory of n, it needs to be loaded as a environment variable.
+
+
+
+

+ + Usage: + +

+ + + + + +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_use_nodejs
+
Load the version of node for an app, and set variables.
+
+
+
+

+ + Usage: ynh_use_nodejs + +

+ + + + + +

+ Details: +

+ ynh_use_nodejs has to be used in any app scripts before using node for the first time.

2 variables are available:
- $nodejs_path: The absolute path of node for the chosen version.
- $nodejs_version: Just the version number of node for this app. Stored as 'nodejs_version' in settings.yml.
And 2 alias stored in variables:
- $nodejs_use_version: An old variable, not used anymore. Keep here to not break old apps
NB: $PATH will contain the path to node, it has to be propagated to any other shell which needs to use it.
That's means it has to be added to any systemd script.

Requires YunoHost version 2.7.12 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_install_nodejs
+
Install a specific version of nodejs
+
+
+
+

+ + Usage: ynh_install_nodejs --nodejs_version=nodejs_version + If possible, prefer to use major version number (e.g. 8 instead of 8.10.0). + The crontab will handle the update of minor versions when needed. + +

+ +

+ Arguments: +

    + + +
  • -n, --nodejs_version : Version of node to install.
  • + + +
+

+ + + + + +

+ Details: +

+ n (Node version management) uses the PATH variable to store the path of the version of node it is going to use.
That's how it changes the version

ynh_install_nodejs will install the version of node provided as argument by using n.

Requires YunoHost version 2.7.12 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_remove_nodejs
+
Remove the version of node used by the app.
+
+
+
+

+ + Usage: ynh_remove_nodejs + +

+ + + + + +

+ Details: +

+ This helper will check if another app uses the same version of node,
if not, this version of node will be removed.
If no other app uses node, n will be also removed.

Requires YunoHost version 2.7.12 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

php

+ + + +
+
+
+
ynh_add_fpm_config
+
Create a dedicated php-fpm config
+
+
+
+

+ + Usage: ynh_add_fpm_config [--phpversion=7.X] + +

+ +

+ Arguments: +

    + + +
  • -v, --phpversion : Version of php to use.
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.7.2 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_remove_fpm_config
+
Remove the dedicated php-fpm config
+
+
+
+

+ + Usage: ynh_remove_fpm_config + +

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.7.2 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

postgresql

+ + +
@@ -1759,31 +2642,56 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_psql_connect_as --user=user --password=password [--database=database] +

+

Arguments:

    + +
  • -u, --user : the user name to connect as
  • + + +
  • -p, --password : the user password
  • + + +
  • -d, --database : the database to connect to
  • + +

+ + +

Example: ynh_psql_connect_as 'user' 'pass' <<< "UPDATE ...;" example: ynh_psql_connect_as 'user' 'pass' < /path/to/file.sql

+ + +

Details:

- Requires YunoHost version 3.?.? or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1793,27 +2701,48 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_psql_execute_as_root --sql=sql [--database=database] +

+

Arguments:

    + +
  • -s, --sql : the SQL command to execute
  • + + +
  • -d, --database : the database to connect to
  • + +

+ + + + +

Details:

- Requires YunoHost version 3.?.? or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1823,27 +2752,48 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_psql_execute_file_as_root --file=file [--database=database] +

+

Arguments:

    + +
  • -f, --file : the file containing SQL commands
  • + + +
  • -d, --database : the database to connect to
  • + +

+ + + + +

Details:

- Requires YunoHost version 3.?.? or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1853,32 +2803,52 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_psql_dump_db --database=database +

+

Arguments:

    + +
  • -d, --database : the database name to dump
  • + +

+ +

Returns: the psqldump output

+ +

Example: ynh_psql_dump_db 'roundcube' > ./dump.sql

+ + +

Details:

- Requires YunoHost version 3.?.? or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -1888,20 +2858,37 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_psql_user_exists --user=user +

+

Arguments:

    + +
  • -u, --user : the user for which to check existence
  • + +

+ + + + +

Dude, show me the code !

+
+
+ + +
@@ -1911,20 +2898,37 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_psql_database_exists --database=database +

+

Arguments:

    + +
  • -d, --database : the database for which to check existence
  • + +

+ + + + +

Dude, show me the code !

+
+
+ + +
@@ -1934,28 +2938,52 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_psql_setup_db --db_user=user --db_name=name [--db_pwd=pwd] +

+

Arguments:

    + +
  • -u, --db_user : Owner of the database
  • + + +
  • -n, --db_name : Name of the database
  • + + +
  • -p, --db_pwd : Password of the database. If not given, a password will be generated
  • + +

+ + + + +

Details:

After executing this helper, the password of the created database will be available in $db_pwd
It will also be stored as "psqlpwd" into the app settings.

+

Dude, show me the code !

+
+
+ + +
@@ -1965,21 +2993,41 @@ WARNING: You should be careful with this helper, and never forget to use ynh_pri

+ Usage: ynh_psql_remove_db --db_user=user --db_name=name +

+

Arguments:

    + +
  • -u, --db_user : Owner of the database
  • + + +
  • -n, --db_name : Name of the database
  • + +

+ + + + +

Dude, show me the code !

+
+
+ + +
@@ -1990,15 +3038,31 @@ Please always call this script in install and restore scripts

+ Usage: ynh_psql_test_if_first_run +

+ + + + +

Dude, show me the code !

+
+
+ + + +

setting

+ + +
@@ -2008,27 +3072,48 @@ Please always call this script in install and restore scripts

+ Usage: ynh_app_setting_get --app=app --key=key +

+

Arguments:

    + +
  • -a, --app : the application id
  • + + +
  • -k, --key : the setting to get
  • + +

+ + + + +

Details:

Requires YunoHost version 2.2.4 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -2038,28 +3123,52 @@ Please always call this script in install and restore scripts

+ Usage: ynh_app_setting_set --app=app --key=key --value=value +

+

Arguments:

    + +
  • -a, --app : the application id
  • + + +
  • -k, --key : the setting name to set
  • + + +
  • -v, --value : the setting value to set
  • + +

+ + + + +

Details:

Requires YunoHost version 2.2.4 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -2069,28 +3178,332 @@ Please always call this script in install and restore scripts

+ Usage: ynh_app_setting_delete --app=app --key=key +

+

Arguments:

    + +
  • -a, --app : the application id
  • + + +
  • -k, --key : the setting to delete
  • + +

+ + + + +

Details:

Requires YunoHost version 2.2.4 or higher.

+

Dude, show me the code !

+
+
+ + + +
+
+
+
ynh_add_skipped_uris
+
Add skipped_uris urls into the config
+
+
+
+

+ + Usage: ynh_add_skipped_uris [--appid=app] --url=url1,url2 [--regex] + +

+ +

+ Arguments: +

    + + +
  • -a, --appid : the application id
  • + + + +
  • -u, --url : the urls to add to the sso for this app
  • + + + +
  • -r, --regex : Use the key 'skipped_regex' instead of 'skipped_uris'
  • + + +
+

+ + + + + +

+ Details: +

+ An URL set with 'skipped_uris' key will be totally ignored by the SSO,
which means that the access will be public and the logged-in user information will not be passed to the app.

Requires YunoHost version 3.6.0 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_add_unprotected_uris
+
Add unprotected_uris urls into the config
+
+
+
+

+ + Usage: ynh_add_unprotected_uris [--appid=app] --url=url1,url2 [--regex] + +

+ +

+ Arguments: +

    + + +
  • -a, --appid : the application id
  • + + + +
  • -u, --url : the urls to add to the sso for this app
  • + + + +
  • -r, --regex : Use the key 'unprotected_regex' instead of 'unprotected_uris'
  • + + +
+

+ + + + + +

+ Details: +

+ An URL set with unprotected_uris key will be accessible publicly, but if an user is logged in,
his information will be accessible (through HTTP headers) to the app.

Requires YunoHost version 3.6.0 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_add_protected_uris
+
Add protected_uris urls into the config
+
+
+
+

+ + Usage: ynh_add_protected_uris [--appid=app] --url=url1,url2 [--regex] + +

+ +

+ Arguments: +

    + + +
  • -a, --appid : the application id
  • + + + +
  • -u, --url : the urls to add to the sso for this app
  • + + + +
  • -r, --regex : Use the key 'protected_regex' instead of 'protected_uris'
  • + + +
+

+ + + + + +

+ Details: +

+ An URL set with protected_uris will be blocked by the SSO and accessible only to authenticated and authorized users.

Requires YunoHost version 3.6.0 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_webpath_available
+
Check availability of a web path
+
+
+
+

+ + Usage: ynh_webpath_available --domain=domain --path_url=path + +

+ +

+ Arguments: +

    + + +
  • -d, --domain : the domain/host of the url
  • + + + +
  • -p, --path_url : the web path to check the availability of
  • + + +
+

+ + + +

+ Example: ynh_webpath_available --domain=some.domain.tld --path_url=/coffee +

+ + + +

+ Details: +

+ Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_webpath_register
+
Register/book a web path for an app
+
+
+
+

+ + Usage: ynh_webpath_register --app=app --domain=domain --path_url=path + +

+ +

+ Arguments: +

    + + +
  • -a, --app : the app for which the domain should be registered
  • + + + +
  • -d, --domain : the domain/host of the web path
  • + + + +
  • -p, --path_url : the web path to be registered
  • + + +
+

+ + + +

+ Example: ynh_webpath_register --app=wordpress --domain=some.domain.tld --path_url=/coffee +

+ + + +

+ Details: +

+ Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +

string

+ + +
@@ -2100,29 +3513,48 @@ Please always call this script in install and restore scripts

+ Usage: ynh_string_random [--length=string_length] +

+

Arguments:

    + +
  • -l, --length : the string length to generate (default: 24)
  • + +

+ + +

Example: pwd=$(ynh_string_random --length=8)

+ + +

Details:

Requires YunoHost version 2.2.4 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -2132,28 +3564,52 @@ Please always call this script in install and restore scripts

+ Usage: ynh_replace_string --match_string=match_string --replace_string=replace_string --target_file=target_file +

+

Arguments:

    + +
  • -m, --match_string : String to be searched and replaced in the file
  • + + +
  • -r, --replace_string : String that will replace matches
  • + + +
  • -f, --target_file : File in which the string will be replaced.
  • + +

+ + + + +

Details:

As this helper is based on sed command, regular expressions and
references to sub-expressions can be used
(see sed manual page for more information)

Requires YunoHost version 2.6.4 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -2163,78 +3619,289 @@ Please always call this script in install and restore scripts

+ Usage: ynh_replace_special_string --match_string=match_string --replace_string=replace_string --target_file=target_file +

+

Arguments:

    + +
  • -m, --match_string : String to be searched and replaced in the file
  • + + +
  • -r, --replace_string : String that will replace matches
  • + + +
  • -t, --target_file : File in which the string will be replaced.
  • + +

+ + + + +

Details:

This helper will use ynh_replace_string, but as you can use special
characters, you can't use some regular expressions and sub-expressions.

Requires YunoHost version 2.7.7 or higher.

+

Dude, show me the code !

+
+
-

system

+ + +
-
-
ynh_abort_if_errors
-
Exits if an error occurs during the execution of the script.
+
+
ynh_sanitize_dbid
+
Sanitize a string intended to be the name of a database +(More specifically : replace - and . by _)
-
+

- Usage: ynh_abort_if_errors + + Usage: ynh_sanitize_dbid --db_name=name +

+ +

+ Arguments: +

    + + +
  • -n, --db_name : name to correct/sanitize
  • + + +
+

+ + +

+ Returns: the corrected name +

+ + +

+ Example: dbname=$(ynh_sanitize_dbid $app) +

+ + +

Details:

- This configure the rest of the script execution such that, if an error occurs
or if an empty variable is used, the execution of the script stops
immediately and a call to `ynh_clean_setup` is triggered if it has been
defined by your script.

Requires YunoHost version 2.6.4 or higher.

+ Requires YunoHost version 2.2.4 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
+ + +
-
-
ynh_get_debian_release
-
Fetch the Debian release codename
+
+
ynh_normalize_url_path
+
Normalize the url path syntax
-
+

- Usage: ynh_get_debian_release + + Usage: ynh_normalize_url_path --path_url=path_to_normalize +

+

- Returns: The Debian release codename (i.e. jessie, stretch, ...) + Arguments: +

    + + +
  • -p, --path_url : URL path to normalize before using it
  • + + +

+ + + + +

+ Examples:

    + + + url_path=$(ynh_normalize_url_path $url_path) + +
    + + + ynh_normalize_url_path example # -> /example + +
    + + + ynh_normalize_url_path /example # -> /example + +
    + + + ynh_normalize_url_path /example/ # -> /example + +
    + + + ynh_normalize_url_path / # -> / + +
    + +
+

+ +

Details:

- Requires YunoHost version 2.7.12 or higher.

+ Handle the slash at the beginning of path and its absence at ending
Return a normalized url path

Requires YunoHost version 2.6.4 or higher.

+

- Dude, show me the code ! + Dude, show me the code !

+
+
+ + + + +

systemd

+ + + +
+
+
+
ynh_add_systemd_config
+
Create a dedicated systemd config
+
+
+
+

+ + Usage: ynh_add_systemd_config [--service=service] [--template=template] + +

+ +

+ Arguments: +

    + + +
  • -s, --service : Service name (optionnal, $app by default)
  • + + + +
  • -t, --template : Name of template file (optionnal, this is 'systemd' by default, meaning ./conf/systemd.service will be used as template)
  • + + +
+

+ + + + + +

+ Details: +

+ This will use the template ../conf/.service
to generate a systemd config, by replacing the following keywords
with global variables that should be defined before calling
this helper :

__APP__ by $app
__FINALPATH__ by $final_path

Requires YunoHost version 2.7.2 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_remove_systemd_config
+
Remove the dedicated systemd config
+
+
+
+

+ + Usage: ynh_remove_systemd_config [--service=service] + +

+ +

+ Arguments: +

    + + +
  • -s, --service : Service name (optionnal, $app by default)
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.7.2 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + +
@@ -2244,29 +3911,61 @@ Please always call this script in install and restore scripts

+ Usage: ynh_systemd_action [-n service_name] [-a action] [ [-l "line to match"] [-p log_path] [-t timeout] [-e length] ] If not defined it don't wait until the service is completely started. WARNING: When using --line_match, you should always add `ynh_clean_check_starting` into your `ynh_clean_setup` at the beginning of the script. Otherwise, tail will not stop in case of failure of the script. The script will then hang forever. +

+

Arguments:

    + +
  • -n, --service_name= : Name of the service to start. Default : $app
  • + + +
  • -a, --action= : Action to perform with systemctl. Default: start
  • + + +
  • -l, --line_match= : Line to match - The line to find in the log to attest the service have finished to boot.
  • + + +
  • -p, --log_path= : Log file - Path to the log file. Default : /var/log/$app/$app.log
  • + + +
  • -t, --timeout= : Timeout - The maximum time to wait before ending the watching. Default : 300 seconds.
  • + + +
  • -e, --length= : Length of the error log : Default : 20
  • + +

+ + + + +

Dude, show me the code !

+
+
+ + +
@@ -2277,14 +3976,737 @@ Please always call this script in install and restore scripts

+ Usage: ynh_clean_check_starting +

+ + + + +

Dude, show me the code !

+
+
+ + + + +

user

+ + + +
+
+
+
ynh_user_exists
+
Check if a YunoHost user exists
+
+
+
+

+ + Usage: ynh_user_exists --username=username + +

+ +

+ Arguments: +

    + + +
  • -u, --username : the username to check
  • + + +
+

+ + + +

+ Example: ynh_user_exists 'toto' || exit 1 +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_user_get_info
+
Retrieve a YunoHost user information
+
+
+
+

+ + Usage: ynh_user_get_info --username=username --key=key + +

+ +

+ Arguments: +

    + + +
  • -u, --username : the username to retrieve info from
  • + + + +
  • -k, --key : the key to retrieve
  • + + +
+

+ + +

+ Returns: string - the key's value +

+ + +

+ Example: mail=$(ynh_user_get_info 'toto' 'mail') +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_user_list
+
Get the list of YunoHost users
+
+
+
+

+ + Usage: ynh_user_list + +

+ + +

+ Returns: string - one username per line +

+ + +

+ Example: for u in $(ynh_user_list); do ... +

+ + + +

+ Details: +

+ Requires YunoHost version 2.4.0 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_system_user_exists
+
Check if a user exists on the system
+
+
+
+

+ + Usage: ynh_system_user_exists --username=username + +

+ +

+ Arguments: +

    + + +
  • -u, --username : the username to check
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_system_group_exists
+
Check if a group exists on the system
+
+
+
+

+ + Usage: ynh_system_group_exists --group=group + +

+ +

+ Arguments: +

    + + +
  • -g, --group : the group to check
  • + + +
+

+ + + + + +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_system_user_create
+
Create a system user
+
+
+
+

+ + Usage: ynh_system_user_create --username=user_name [--home_dir=home_dir] [--use_shell] + +

+ +

+ Arguments: +

    + + +
  • -u, --username : Name of the system user that will be create
  • + + + +
  • -h, --home_dir : Path of the home dir for the user. Usually the final path of the app. If this argument is omitted, the user will be created without home
  • + + + +
  • -s, --use_shell : Create a user using the default login shell if present. If this argument is omitted, the user will be created with /usr/sbin/nologin shell
  • + + +
+

+ + + + +

+ Examples:

    + + + Create a nextcloud user with no home directory and /usr/sbin/nologin login shell (hence no login capability) + +
    + + + ynh_system_user_create --username=nextcloud + +
    + + + Create a discourse user using /var/www/discourse as home directory and the default login shell + +
    + + + ynh_system_user_create --username=discourse --home_dir=/var/www/discourse --use_shell + +
    + +
+

+ + +

+ Details: +

+ Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_system_user_delete
+
Delete a system user
+
+
+
+

+ + Usage: ynh_system_user_delete --username=user_name + +

+ +

+ Arguments: +

    + + +
  • -u, --username : Name of the system user that will be create
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + + +

utils

+ + + +
+
+
+
ynh_abort_if_errors
+
Exits if an error occurs during the execution of the script.
+
+
+
+

+ + Usage: ynh_abort_if_errors + +

+ + + + + +

+ Details: +

+ This configure the rest of the script execution such that, if an error occurs
or if an empty variable is used, the execution of the script stops
immediately and a call to `ynh_clean_setup` is triggered if it has been
defined by your script.

Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_setup_source
+
Download, check integrity, uncompress and patch the source from app.src
+
+
+
+

+ + Usage: ynh_setup_source --dest_dir=dest_dir [--source_id=source_id] + +

+ +

+ Arguments: +

    + + +
  • -d, --dest_dir : Directory where to setup sources
  • + + + +
  • -s, --source_id : Name of the app, if the package contains more than one app
  • + + +
+

+ + + + + +

+ Details: +

+ The file conf/app.src need to contains:

SOURCE_URL=Address to download the app archive
SOURCE_SUM=Control sum
# (Optional) Program to check the integrity (sha256sum, md5sum...)
# default: sha256
SOURCE_SUM_PRG=sha256
# (Optional) Archive format
# default: tar.gz
SOURCE_FORMAT=tar.gz
# (Optional) Put false if sources are directly in the archive root
# default: true
# Instead of true, SOURCE_IN_SUBDIR could be the number of sub directories
# to remove.
SOURCE_IN_SUBDIR=false
# (Optionnal) Name of the local archive (offline setup support)
# default: ${src_id}.${src_format}
SOURCE_FILENAME=example.tar.gz
# (Optional) If it set as false don't extract the source.
# (Useful to get a debian package or a python wheel.)
# default: true
SOURCE_EXTRACT=(true|false)

Details:
This helper downloads sources from SOURCE_URL if there is no local source
archive in /opt/yunohost-apps-src/APP_ID/SOURCE_FILENAME

Next, it checks the integrity with "SOURCE_SUM_PRG -c --status" command.

If it's ok, the source archive will be uncompressed in $dest_dir. If the
SOURCE_IN_SUBDIR is true, the first level directory of the archive will be
removed.
If SOURCE_IN_SUBDIR is a numeric value, 2 for example, the 2 first level
directories will be removed

Finally, patches named sources/patches/${src_id}-*.patch and extra files in
sources/extra_files/$src_id will be applied to dest_dir

Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_local_curl
+
Curl abstraction to help with POST requests to local pages (such as installation forms)
+
+
+
+

+ + Usage: ynh_local_curl "page_uri" "key1=value1" "key2=value2" ... + +

+ +

+ Arguments: +

    + + +
  • page_uri : Path (relative to $path_url) of the page where POST data will be sent
  • + + + +
  • key1=value1 : (Optionnal) POST key and corresponding value
  • + + + +
  • key2=value2 : (Optionnal) Another POST key and corresponding value
  • + + + +
  • ... : (Optionnal) More POST keys and values
  • + + +
+

+ + + +

+ Example: ynh_local_curl "/install.php?installButton" "foo=$var1" "bar=$var2" +

+ + + +

+ Details: +

+ $domain and $path_url should be defined externally (and correspond to the domain.tld and the /path (of the app?))

Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_render_template
+
Render templates with Jinja2
+
+
+
+

+ + Usage: ynh_render_template some_template output_path + +

+ +

+ Arguments: +

    + + +
  • some_template : Template file to be rendered
  • + + + +
  • output_path : The path where the output will be redirected to
  • + + +
+

+ + + + + +

+ Details: +

+ Attention : Variables should be exported before calling this helper to be
accessible inside templates.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_get_debian_release
+
Fetch the Debian release codename
+
+
+
+

+ + Usage: ynh_get_debian_release + +

+ + +

+ Returns: The Debian release codename (i.e. jessie, stretch, ...) +

+ + + + +

+ Details: +

+ Requires YunoHost version 2.7.12 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_secure_remove
+
Remove a file or a directory securely
+
+
+
+

+ + Usage: ynh_secure_remove --file=path_to_remove + +

+ +

+ Arguments: +

    + + +
  • -f, --file : File or directory to remove
  • + + +
+

+ + + + + +

+ Details: +

+ Requires YunoHost version 2.6.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + + +
+
+
+
ynh_get_plain_key
+
Extract a key from a plain command output
+
+
+
+

+ + Usage: ynh_get_plain_key key [subkey [subsubkey ...]] + +

+ + +

+ Returns: string - the key's value +

+ + +

+ Example: yunohost user info tata --output-as plain | ynh_get_plain_key mail +

+ + + +

+ Details: +

+ Requires YunoHost version 2.2.4 or higher.

+

+

+ +

+ Dude, show me the code ! +

+ +
+
+ +
+ + +
@@ -2294,27 +4716,48 @@ Please always call this script in install and restore scripts

+ Usage: ynh_read_manifest manifest key +

+

Arguments:

    + +
  • -m, --manifest= : Path of the manifest to read
  • + + +
  • -k, --key= : Name of the key to find
  • + +

+ + + + +

Details:

- Requires YunoHost version 3.?.? or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -2328,26 +4771,44 @@ In the last example it return 4.3-2

+ Usage: ynh_app_upstream_version [-m manifest] +

+

Arguments:

    + +
  • -m, --manifest= : Path of the manifest to read
  • + +

+ + + + +

Details:

- Requires YunoHost version 3.?.? or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -2361,26 +4822,44 @@ In the last example it return 3

+ Usage: ynh_app_package_version [-m manifest] +

+

Arguments:

    + +
  • -m, --manifest= : Path of the manifest to read
  • + +

+ + + + +

Details:

- Requires YunoHost version 3.?.? or higher.

+ Requires YunoHost version 3.5.0 or higher.

+

Dude, show me the code !

+
+
+ + +
@@ -2392,422 +4871,37 @@ In the last example it return 3

+ Usage: ynh_check_app_version_changed +

+ + + + +

Details:

- 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

Requires YunoHost version 3.?.? or higher.

+ 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

Requires YunoHost version 3.5.0 or higher.

+

Dude, show me the code !

+
+
-

user

-
-
-
-
ynh_user_exists
-
Check if a YunoHost user exists
-
-
-
-

- Usage: ynh_user_exists --username=username -

-

- Arguments: -

    -
  • -u, --username : the username to check
  • -
-

-

- Example: ynh_user_exists 'toto' || exit 1 -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_user_get_info
-
Retrieve a YunoHost user information
-
-
-
-

- Usage: ynh_user_get_info --username=username --key=key -

-

- Arguments: -

    -
  • -u, --username : the username to retrieve info from
  • -
  • -k, --key : the key to retrieve
  • -
-

-

- Returns: string - the key's value -

-

- Example: mail=$(ynh_user_get_info 'toto' 'mail') -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_user_list
-
Get the list of YunoHost users
-
-
-
-

- Usage: ynh_user_list -

-

- Returns: string - one username per line -

-

- Example: for u in $(ynh_user_list); do ... -

-

- Details: -

- Requires YunoHost version 2.4.0 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_system_user_exists
-
Check if a user exists on the system
-
-
-
-

- Usage: ynh_system_user_exists --username=username -

-

- Arguments: -

    -
  • -u, --username : the username to check
  • -
-

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_system_group_exists
-
Check if a group exists on the system
-
-
-
-

- Usage: ynh_system_group_exists --group=group -

-

- Arguments: -

    -
  • -g, --group : the group to check
  • -
-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_system_user_create
-
Create a system user
-
-
-
-

- Usage: ynh_system_user_create --username=user_name [--home_dir=home_dir] [--use_shell] -

-

- Arguments: -

    -
  • -u, --username : Name of the system user that will be create
  • -
  • -h, --home_dir : Path of the home dir for the user. Usually the final path of the app. If this argument is omitted, the user will be created without home
  • -
  • -s, --use_shell : Create a user using the default login shell if present. If this argument is omitted, the user will be created with /usr/sbin/nologin shell
  • -
-

-

- Examples:

    - Create a nextcloud user with no home directory and /usr/sbin/nologin login shell (hence no login capability) -
    - ynh_system_user_create --username=nextcloud -
    - Create a discourse user using /var/www/discourse as home directory and the default login shell -
    - ynh_system_user_create --username=discourse --home_dir=/var/www/discourse --use_shell -
    -
-

-

- Details: -

- Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_system_user_delete
-
Delete a system user
-
-
-
-

- Usage: ynh_system_user_delete --username=user_name -

-

- Arguments: -

    -
  • -u, --username : Name of the system user that will be create
  • -
-

-

- Details: -

- Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-

utils

-
-
-
-
ynh_get_plain_key
-
Extract a key from a plain command output
-
-
-
-

- Usage: ynh_get_plain_key key [subkey [subsubkey ...]] -

-

- Returns: string - the key's value -

-

- Example: yunohost user info tata --output-as plain | ynh_get_plain_key mail -

-

- Details: -

- Requires YunoHost version 2.2.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_restore_upgradebackup
-
Restore a previous backup if the upgrade process failed
-
-
-
-

- Usage: ynh_backup_before_upgrade -ynh_clean_setup () { - ynh_restore_upgradebackup -} -ynh_abort_if_errors -

-

- Details: -

- Requires YunoHost version 2.7.2 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_backup_before_upgrade
-
Make a backup in case of failed upgrade
-
-
-
-

- Usage: ynh_backup_before_upgrade -ynh_clean_setup () { - ynh_restore_upgradebackup -} -ynh_abort_if_errors -

-

- Details: -

- Requires YunoHost version 2.7.2 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_setup_source
-
Download, check integrity, uncompress and patch the source from app.src
-
-
-
-

- Usage: ynh_setup_source --dest_dir=dest_dir [--source_id=source_id] -

-

- Arguments: -

    -
  • -d, --dest_dir : Directory where to setup sources
  • -
  • -s, --source_id : Name of the app, if the package contains more than one app
  • -
-

-

- Details: -

- The file conf/app.src need to contains:

SOURCE_URL=Address to download the app archive
SOURCE_SUM=Control sum
# (Optional) Program to check the integrity (sha256sum, md5sum...)
# default: sha256
SOURCE_SUM_PRG=sha256
# (Optional) Archive format
# default: tar.gz
SOURCE_FORMAT=tar.gz
# (Optional) Put false if sources are directly in the archive root
# default: true
# Instead of true, SOURCE_IN_SUBDIR could be the number of sub directories
# to remove.
SOURCE_IN_SUBDIR=false
# (Optionnal) Name of the local archive (offline setup support)
# default: ${src_id}.${src_format}
SOURCE_FILENAME=example.tar.gz
# (Optional) If it set as false don't extract the source.
# (Useful to get a debian package or a python wheel.)
# default: true
SOURCE_EXTRACT=(true|false)

Details:
This helper downloads sources from SOURCE_URL if there is no local source
archive in /opt/yunohost-apps-src/APP_ID/SOURCE_FILENAME

Next, it checks the integrity with "SOURCE_SUM_PRG -c --status" command.

If it's ok, the source archive will be uncompressed in $dest_dir. If the
SOURCE_IN_SUBDIR is true, the first level directory of the archive will be
removed.
If SOURCE_IN_SUBDIR is a numeric value, 2 for example, the 2 first level
directories will be removed

Finally, patches named sources/patches/${src_id}-*.patch and extra files in
sources/extra_files/$src_id will be applied to dest_dir

Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_local_curl
-
Curl abstraction to help with POST requests to local pages (such as installation forms)
-
-
-
-

- Usage: ynh_local_curl "page_uri" "key1=value1" "key2=value2" ... -

-

- Arguments: -

    -
  • page_uri : Path (relative to $path_url) of the page where POST data will be sent
  • -
  • key1=value1 : (Optionnal) POST key and corresponding value
  • -
  • key2=value2 : (Optionnal) Another POST key and corresponding value
  • -
  • ... : (Optionnal) More POST keys and values
  • -
-

-

- Example: ynh_local_curl "/install.php?installButton" "foo=$var1" "bar=$var2" -

-

- Details: -

- $domain and $path_url should be defined externally (and correspond to the domain.tld and the /path (of the app?))

Requires YunoHost version 2.6.4 or higher.

-

-

-

- Dude, show me the code ! -

-
-
-
-
-
-
-
ynh_render_template
-
Render templates with Jinja2
-
-
-
-

- Usage: ynh_render_template some_template output_path -

-

- Arguments: -

    -
  • some_template : Template file to be rendered
  • -
  • output_path : The path where the output will be redirected to
  • -
-

-

- Details: -

- Attention : Variables should be exported before calling this helper to be
accessible inside templates.

-

-

-

- Dude, show me the code ! -

-
-
-
-

Generated by this script on 2019-04-08 18:53:09.449596 (version 3.5.1.1)

+ + + + +

Generated by this script on 07/11/2019 (Yunohost version 3.6.4.3)

+ +