yunohost/share/actionsmap.yml
2022-01-12 22:33:59 +01:00

1867 lines
69 KiB
YAML

##########################################################################
# Category/actions/arguments file
#
#
# Except for general_arguments, this file contains 3 levels
# as in this sample command line:
#
# yunohost monitor info --cpu --ram
# ^ ^ ^ ^
# (script) | category | action | parameters
#
#
# Above example will lead to the function 'monitor_info(args)'
# in the file 'yunohost_monitor.py' with 'cpu' and 'ram'
# stored in an 'args' dictionnary.
#
# Usage:
# You can add a category at the first level, action at the second one,
# and arguments at the third one.
# If a connexion is needed for the action, don't forget to add it to
# the action parameters (ldap, repo, dns or firewall).
#
# Documentation:
# You can see all arguments settings at the argparse documentation:
# http://docs.python.org/dev/library/argparse.html
# #argparse.ArgumentParser.add_argument
#
# Don't forget to turn argument yaml style (setting: value)
#
##########################################################################
#############################
# Global parameters #
#############################
_global:
namespace: yunohost
authentication:
api: ldap_admin
cli: null
arguments:
-v:
full: --version
help: Display YunoHost packages versions
action: callback
callback:
method: yunohost.utils.system.ynh_packages_version
return: true
#############################
# User #
#############################
user:
category_help: Manage users and groups
actions:
### user_list()
list:
action_help: List users
api: GET /users
arguments:
--fields:
help: fields to fetch (username, fullname, mail, mail-alias, mail-forward, mailbox-quota, groups, shell, home-path)
nargs: "+"
### user_create()
create:
action_help: Create user
api: POST /users
arguments:
username:
help: The unique username to create
extra:
pattern: &pattern_username
- !!str ^[a-z0-9_]+$
- "pattern_username"
-f:
full: --firstname
extra:
ask: ask_firstname
required: True
pattern: &pattern_firstname
- !!str ^([^\W\d_]{1,30}[ ,.'-]{0,3})+$
- "pattern_firstname"
-l:
full: --lastname
extra:
ask: ask_lastname
required: True
pattern: &pattern_lastname
- !!str ^([^\W\d_]{1,30}[ ,.'-]{0,3})+$
- "pattern_lastname"
-p:
full: --password
help: User password
extra:
password: ask_password
required: True
pattern: &pattern_password
- !!str ^.{3,}$
- "pattern_password"
comment: good_practices_about_user_password
-d:
full: --domain
help: Domain for the email address and xmpp account
extra:
pattern: &pattern_domain
- !!str ^([^\W_A-Z]+([-]*[^\W_A-Z]+)*\.)+((xn--)?[^\W_]{2,})$
- "pattern_domain"
-q:
full: --mailbox-quota
help: Mailbox size quota
default: "0"
metavar: "{SIZE|0}"
extra:
pattern: &pattern_mailbox_quota
- !!str ^(\d+[bkMGT])|0$
- "pattern_mailbox_quota"
### user_delete()
delete:
action_help: Delete user
api: DELETE /users/<username>
arguments:
username:
help: Username to delete
extra:
pattern: *pattern_username
--purge:
help: Purge user's home and mail directories
action: store_true
### user_update()
update:
action_help: Update user informations
api: PUT /users/<username>
arguments:
username:
help: Username to update
-f:
full: --firstname
extra:
pattern: *pattern_firstname
-l:
full: --lastname
extra:
pattern: *pattern_lastname
-m:
full: --mail
extra:
pattern: &pattern_email
- !!str ^[\w.-]+@([^\W_A-Z]+([-]*[^\W_A-Z]+)*\.)+((xn--)?[^\W_]{2,})$
- "pattern_email"
-p:
full: --change-password
help: New password to set
metavar: PASSWORD
nargs: "?"
const: 0
extra:
pattern: *pattern_password
comment: good_practices_about_user_password
--add-mailforward:
help: Mailforward addresses to add
nargs: "*"
metavar: MAIL
extra:
pattern: &pattern_email_forward
- !!str ^[\w\+.-]+@([^\W_A-Z]+([-]*[^\W_A-Z]+)*\.)+((xn--)?[^\W_]{2,})$
- "pattern_email_forward"
--remove-mailforward:
help: Mailforward addresses to remove
nargs: "*"
metavar: MAIL
--add-mailalias:
help: Mail aliases to add
nargs: "*"
metavar: MAIL
extra:
pattern: *pattern_email
--remove-mailalias:
help: Mail aliases to remove
nargs: "*"
metavar: MAIL
-q:
full: --mailbox-quota
help: Mailbox size quota
metavar: "{SIZE|0}"
extra:
pattern: *pattern_mailbox_quota
### user_info()
info:
action_help: Get user information
api: GET /users/<username>
arguments:
username:
help: Username or email to get information
### user_export()
export:
action_help: Export users into CSV
api: GET /users/export
### user_import()
import:
action_help: Import several users from CSV
api: POST /users/import
arguments:
csvfile:
help: "CSV file with columns username, firstname, lastname, password, mail, mailbox-quota, mail-alias, mail-forward, groups (separated by coma)"
type: open
-u:
full: --update
help: Update all existing users contained in the CSV file (by default existing users are ignored)
action: store_true
-d:
full: --delete
help: Delete all existing users that are not contained in the CSV file (by default existing users are kept)
action: store_true
subcategories:
group:
subcategory_help: Manage user groups
actions:
### user_group_list()
list:
action_help: List existing groups
api: GET /users/groups
arguments:
-s:
full: --short
help: List only the names of groups
action: store_true
-f:
full: --full
help: Display all informations known about each groups
action: store_true
-p:
full: --include-primary-groups
help: Also display primary groups (each user has an eponym group that only contains itself)
action: store_true
default: false
### user_group_create()
create:
action_help: Create group
api: POST /users/groups
arguments:
groupname:
help: Name of the group to be created
extra:
pattern: &pattern_groupname
- !!str ^[a-z0-9_]+$
- "pattern_groupname"
### user_group_delete()
delete:
action_help: Delete group
api: DELETE /users/groups/<groupname>
arguments:
groupname:
help: Name of the group to be deleted
extra:
pattern: *pattern_groupname
### user_group_info()
info:
action_help: Get information about a specific group
api: GET /users/groups/<groupname>
arguments:
groupname:
help: Name of the group to fetch info about
extra:
pattern: *pattern_username
### user_group_add()
add:
action_help: Add users to group
api: PUT /users/groups/<groupname>/add/<usernames>
arguments:
groupname:
help: Name of the group to add user(s) to
extra:
pattern: *pattern_groupname
usernames:
help: User(s) to add in the group
nargs: "*"
metavar: USERNAME
extra:
pattern: *pattern_username
### user_group_remove()
remove:
action_help: Remove users from group
api: PUT /users/groups/<groupname>/remove/<usernames>
arguments:
groupname:
help: Name of the group to remove user(s) from
extra:
pattern: *pattern_groupname
usernames:
help: User(s) to remove from the group
nargs: "*"
metavar: USERNAME
extra:
pattern: *pattern_username
permission:
subcategory_help: Manage permissions
actions:
### user_permission_list()
list:
action_help: List permissions and corresponding accesses
api: GET /users/permissions
arguments:
apps:
help: Apps to list permission for (all by default)
nargs: "*"
-s:
full: --short
help: Only list permission names
action: store_true
-f:
full: --full
help: Display all info known about each permission, including the full user list of each group it is granted to.
action: store_true
### user_permission_info()
info:
action_help: Get information about a specific permission
api: GET /users/permissions/<permission>
arguments:
permission:
help: Name of the permission to fetch info about (use "yunohost user permission list" and "yunohost user permission -f" to see all the current permissions)
### user_permission_update()
update:
action_help: Manage group or user permissions
api: PUT /users/permissions/<permission>
arguments:
permission:
help: Permission to manage (e.g. mail or nextcloud or wordpress.editors) (use "yunohost user permission list" and "yunohost user permission -f" to see all the current permissions)
-l:
full: --label
help: Label for this permission. This label will be shown on the SSO and in the admin
-s:
full: --show_tile
help: Define if a tile will be shown in the SSO
choices:
- 'True'
- 'False'
## user_permission_add()
add:
action_help: Grant permission to group or user
api: PUT /users/permissions/<permission>/add/<names>
arguments:
permission:
help: Permission to manage (e.g. mail or nextcloud or wordpress.editors) (use "yunohost user permission list" and "yunohost user permission -f" to see all the current permissions)
names:
help: Group or usernames to grant this permission to
nargs: "*"
metavar: GROUP_OR_USER
extra:
pattern: *pattern_username
## user_permission_remove()
remove:
action_help: Revoke permission to group or user
api: PUT /users/permissions/<permission>/remove/<names>
arguments:
permission:
help: Permission to manage (e.g. mail or nextcloud or wordpress.editors) (use "yunohost user permission list" and "yunohost user permission -f" to see all the current permissions)
names:
help: Group or usernames to revoke this permission to
nargs: "*"
metavar: GROUP_OR_USER
extra:
pattern: *pattern_username
## user_permission_reset()
reset:
action_help: Reset allowed groups to the default (all_users) for a given permission
api: DELETE /users/permissions/<permission>
arguments:
permission:
help: Permission to manage (e.g. mail or nextcloud or wordpress.editors) (use "yunohost user permission list" and "yunohost user permission -f" to see all the current permissions)
ssh:
subcategory_help: Manage ssh access
actions:
### user_ssh_keys_list()
list-keys:
action_help: Show user's authorized ssh keys
api: GET /users/ssh/keys
arguments:
username:
help: Username of the user
extra:
pattern: *pattern_username
### user_ssh_keys_add()
add-key:
action_help: Add a new authorized ssh key for this user
api: POST /users/ssh/key
arguments:
username:
help: Username of the user
extra:
pattern: *pattern_username
key:
help: The key to be added
-c:
full: --comment
help: Optional comment about the key
### user_ssh_keys_remove()
remove-key:
action_help: Remove an authorized ssh key for this user
api: DELETE /users/ssh/key
arguments:
username:
help: Username of the user
extra:
pattern: *pattern_username
key:
help: The key to be removed
#############################
# Domain #
#############################
domain:
category_help: Manage domains
actions:
### domain_list()
list:
action_help: List domains
api: GET /domains
arguments:
--exclude-subdomains:
help: Filter out domains that are obviously subdomains of other declared domains
action: store_true
### domain_add()
add:
action_help: Create a custom domain
api: POST /domains
arguments:
domain:
help: Domain name to add
extra:
pattern: *pattern_domain
-d:
full: --dyndns
help: Subscribe to the DynDNS service
action: store_true
### domain_remove()
remove:
action_help: Delete domains
api: DELETE /domains/<domain>
arguments:
domain:
help: Domain to delete
extra:
pattern: *pattern_domain
-r:
full: --remove-apps
help: Remove apps installed on the domain
action: store_true
-f:
full: --force
help: Do not ask confirmation to remove apps
action: store_true
### domain_dns_conf()
dns-conf:
deprecated: true
action_help: Generate sample DNS configuration for a domain
arguments:
domain:
help: Target domain
extra:
pattern: *pattern_domain
### domain_maindomain()
main-domain:
action_help: Check the current main domain, or change it
deprecated_alias:
- maindomain
api:
- GET /domains/main
- PUT /domains/<new_main_domain>/main
arguments:
-n:
full: --new-main-domain
help: Change the current main domain
extra:
pattern: *pattern_domain
### certificate_status()
cert-status:
deprecated: true
action_help: List status of current certificates (all by default).
arguments:
domain_list:
help: Domains to check
nargs: "*"
--full:
help: Show more details
action: store_true
### certificate_install()
cert-install:
deprecated: true
action_help: Install Let's Encrypt certificates for given domains (all by default).
arguments:
domain_list:
help: Domains for which to install the certificates
nargs: "*"
--force:
help: Install even if current certificate is not self-signed
action: store_true
--no-checks:
help: Does not perform any check that your domain seems correctly configured (DNS, reachability) before attempting to install. (Not recommended)
action: store_true
--self-signed:
help: Install self-signed certificate instead of Let's Encrypt
action: store_true
--staging:
help: Use the fake/staging Let's Encrypt certification authority. The new certificate won't actually be enabled - it is only intended to test the main steps of the procedure.
action: store_true
### certificate_renew()
cert-renew:
deprecated: true
action_help: Renew the Let's Encrypt certificates for given domains (all by default).
arguments:
domain_list:
help: Domains for which to renew the certificates
nargs: "*"
--force:
help: Ignore the validity threshold (30 days)
action: store_true
--email:
help: Send an email to root with logs if some renewing fails
action: store_true
--no-checks:
help: Does not perform any check that your domain seems correctly configured (DNS, reachability) before attempting to renew. (Not recommended)
action: store_true
--staging:
help: Use the fake/staging Let's Encrypt certification authority. The new certificate won't actually be enabled - it is only intended to test the main steps of the procedure.
action: store_true
### domain_url_available()
url-available:
action_help: Check availability of a web path
api: GET /domain/<domain>/urlavailable
arguments:
domain:
help: The domain for the web path (e.g. your.domain.tld)
extra:
pattern: *pattern_domain
path:
help: The path to check (e.g. /coffee)
subcategories:
config:
subcategory_help: Domain settings
actions:
### domain_config_get()
get:
action_help: Display a domain configuration
api: GET /domains/<domain>/config
arguments:
domain:
help: Domain name
key:
help: A specific panel, section or a question identifier
nargs: '?'
-f:
full: --full
help: Display all details (meant to be used by the API)
action: store_true
-e:
full: --export
help: Only export key/values, meant to be reimported using "config set --args-file"
action: store_true
### domain_config_set()
set:
action_help: Apply a new configuration
api: PUT /domains/<domain>/config
arguments:
domain:
help: Domain name
key:
help: The question or form key
nargs: '?'
-v:
full: --value
help: new value
-a:
full: --args
help: Serialized arguments for new configuration (i.e. "mail_in=0&mail_out=0")
dns:
subcategory_help: Manage domains DNS
actions:
### domain_dns_conf()
suggest:
action_help: Generate sample DNS configuration for a domain
api:
- GET /domains/<domain>/dns
- GET /domains/<domain>/dns/suggest
arguments:
domain:
help: Target domain
extra:
pattern: *pattern_domain
### domain_dns_push()
push:
action_help: Push DNS records to registrar
api: POST /domains/<domain>/dns/push
arguments:
domain:
help: Domain name to push DNS conf for
extra:
pattern: *pattern_domain
-d:
full: --dry-run
help: Only display what's to be pushed
action: store_true
--force:
help: Also update/remove records which were not originally set by Yunohost, or which have been manually modified
action: store_true
--purge:
help: Delete all records
action: store_true
cert:
subcategory_help: Manage domain certificates
actions:
### certificate_status()
status:
action_help: List status of current certificates (all by default).
api: GET /domains/<domain_list>/cert
arguments:
domain_list:
help: Domains to check
nargs: "*"
--full:
help: Show more details
action: store_true
### certificate_install()
install:
action_help: Install Let's Encrypt certificates for given domains (all by default).
api: PUT /domains/<domain_list>/cert
arguments:
domain_list:
help: Domains for which to install the certificates
nargs: "*"
--force:
help: Install even if current certificate is not self-signed
action: store_true
--no-checks:
help: Does not perform any check that your domain seems correctly configured (DNS, reachability) before attempting to install. (Not recommended)
action: store_true
--self-signed:
help: Install self-signed certificate instead of Let's Encrypt
action: store_true
--staging:
help: Use the fake/staging Let's Encrypt certification authority. The new certificate won't actually be enabled - it is only intended to test the main steps of the procedure.
action: store_true
### certificate_renew()
renew:
action_help: Renew the Let's Encrypt certificates for given domains (all by default).
api: PUT /domains/<domain_list>/cert/renew
arguments:
domain_list:
help: Domains for which to renew the certificates
nargs: "*"
--force:
help: Ignore the validity threshold (30 days)
action: store_true
--email:
help: Send an email to root with logs if some renewing fails
action: store_true
--no-checks:
help: Does not perform any check that your domain seems correctly configured (DNS, reachability) before attempting to renew. (Not recommended)
action: store_true
--staging:
help: Use the fake/staging Let's Encrypt certification authority. The new certificate won't actually be enabled - it is only intended to test the main steps of the procedure.
action: store_true
#############################
# App #
#############################
app:
category_help: Manage apps
actions:
catalog:
action_help: Show the catalog of installable application
api: GET /apps/catalog
arguments:
-f:
full: --full
help: Display all details, including the app manifest and various other infos
action: store_true
-c:
full: --with-categories
help: Also return a list of app categories
action: store_true
### app_search()
search:
action_help: Search installable apps
arguments:
string:
help: Return matching app name or description with "string"
### app_manifest()
manifest:
action_help: Return the manifest of a given app from the catalog, or from a remote git repo
api: GET /apps/manifest
arguments:
app:
help: Name, local path or git URL of the app to fetch the manifest of
### app_list()
list:
action_help: List installed apps
api: GET /apps
arguments:
-f:
full: --full
help: Display all details, including the app manifest and various other infos
action: store_true
### app_info()
info:
action_help: Show infos about a specific installed app
api: GET /apps/<app>
arguments:
app:
help: Specific app ID
-f:
full: --full
help: Display all details, including the app manifest and various other infos
action: store_true
### app_map()
map:
action_help: Show the mapping between urls and apps
api: GET /apps/map
arguments:
-a:
full: --app
help: Specific app to map
-r:
full: --raw
help: Return complete dict
action: store_true
-u:
full: --user
help: Allowed app map for a user
extra:
pattern: *pattern_username
### app_install()
install:
action_help: Install apps
api: POST /apps
arguments:
app:
help: Name, local path or git URL of the app to install
-l:
full: --label
help: Custom name for the app
-a:
full: --args
help: Serialized arguments for app script (i.e. "domain=domain.tld&path=/path")
-n:
full: --no-remove-on-failure
help: Debug option to avoid removing the app on a failed installation
action: store_true
-f:
full: --force
help: Do not ask confirmation if the app is not safe to use (low quality, experimental or 3rd party)
action: store_true
### app_remove()
remove:
action_help: Remove app
api: DELETE /apps/<app>
arguments:
app:
help: App to remove
-p:
full: --purge
help: Also remove all application data
action: store_true
### app_upgrade()
upgrade:
action_help: Upgrade app
api: PUT /apps/<app>/upgrade
arguments:
app:
help: App(s) to upgrade (default all)
nargs: "*"
-u:
full: --url
help: Git url to fetch for upgrade
-f:
full: --file
help: Folder or tarball for upgrade
-F:
full: --force
help: Force the update, even though the app is up to date
action: store_true
-b:
full: --no-safety-backup
help: Disable the safety backup during upgrade
action: store_true
### app_change_url()
change-url:
action_help: Change app's URL
api: PUT /apps/<app>/changeurl
arguments:
app:
help: Target app instance name
-d:
full: --domain
help: New app domain on which the application will be moved
extra:
ask: ask_new_domain
pattern: *pattern_domain
required: True
-p:
full: --path
help: New path at which the application will be moved
extra:
ask: ask_new_path
required: True
### app_setting()
setting:
action_help: Set or get an app setting value
api: GET /apps/<app>/settings
arguments:
app:
help: App ID
key:
help: Key to get/set
-v:
full: --value
help: Value to set
-d:
full: --delete
help: Delete the key
action: store_true
### app_register_url()
register-url:
action_help: Book/register a web path for a given app
arguments:
app:
help: App which will use the web path
domain:
help: The domain on which the app should be registered (e.g. your.domain.tld)
path:
help: The path to be registered (e.g. /coffee)
### app_makedefault()
makedefault:
action_help: Redirect domain root to an app
api: PUT /apps/<app>/default
arguments:
app:
help: App name to put on domain root
-d:
full: --domain
help: Specific domain to put app on (the app domain by default)
### app_ssowatconf()
ssowatconf:
action_help: Regenerate SSOwat configuration file
### app_change_label()
change-label:
action_help: Change app label
api: PUT /apps/<app>/label
arguments:
app:
help: App ID
new_label:
help: New app label
subcategories:
action:
subcategory_help: Handle apps actions
actions:
### app_action_list()
list:
action_help: List app actions
api: GET /apps/<app>/actions
arguments:
app:
help: App name
### app_action_run()
run:
action_help: Run app action
api: PUT /apps/<app>/actions/<action>
arguments:
app:
help: App name
action:
help: action id
-a:
full: --args
help: Serialized arguments for app script (i.e. "domain=domain.tld&path=/path")
config:
subcategory_help: Applications configuration panel
actions:
### app_config_get()
get:
action_help: Display an app configuration
api: GET /apps/<app>/config-panel
arguments:
app:
help: App name
key:
help: A specific panel, section or a question identifier
nargs: '?'
-f:
full: --full
help: Display all details (meant to be used by the API)
action: store_true
-e:
full: --export
help: Only export key/values, meant to be reimported using "config set --args-file"
action: store_true
### app_config_set()
set:
action_help: Apply a new configuration
api: PUT /apps/<app>/config
arguments:
app:
help: App name
key:
help: The question or panel key
nargs: '?'
-v:
full: --value
help: new value
-a:
full: --args
help: Serialized arguments for new configuration (i.e. "domain=domain.tld&path=/path")
-f:
full: --args-file
help: YAML or JSON file with key/value couples
type: open
#############################
# Backup #
#############################
backup:
category_help: Manage backups
actions:
### backup_create()
create:
action_help: Create a backup local archive. If neither --apps or --system are given, this will backup all apps and all system parts. If only --apps if given, this will only backup apps and no system parts. Similarly, if only --system is given, this will only backup system parts and no apps.
api: POST /backups
arguments:
-n:
full: --name
help: Name of the backup archive
extra:
pattern: &pattern_backup_archive_name
- !!str ^[\w\-\._]{1,50}(?<!\.)$
- "pattern_backup_archive_name"
-d:
full: --description
help: Short description of the backup
-o:
full: --output-directory
help: Output directory for the backup
--methods:
help: List of backup methods to apply (copy or tar by default)
nargs: "*"
--system:
help: List of system parts to backup (or all if none given).
nargs: "*"
--apps:
help: List of application names to backup (or all if none given)
nargs: "*"
--dry-run:
help: "'Simulate' the backup and return the size details per item to backup"
action: store_true
### backup_restore()
restore:
action_help: Restore from a local backup archive. If neither --apps or --system are given, this will restore all apps and all system parts in the archive. If only --apps if given, this will only restore apps and no system parts. Similarly, if only --system is given, this will only restore system parts and no apps.
api: PUT /backups/<name>/restore
arguments:
name:
help: Name of the local backup archive
--system:
help: List of system parts to restore (or all if none is given)
nargs: "*"
--apps:
help: List of application names to restore (or all if none is given)
nargs: "*"
--force:
help: Force restauration on an already installed system
action: store_true
### backup_list()
list:
action_help: List available local backup archives
api: GET /backups
arguments:
-i:
full: --with-info
help: Show backup information for each archive
action: store_true
-H:
full: --human-readable
help: Print sizes in human readable format
action: store_true
### backup_info()
info:
action_help: Show info about a local backup archive
api: GET /backups/<name>
arguments:
name:
help: Name of the local backup archive
-d:
full: --with-details
help: Show additional backup information
action: store_true
-H:
full: --human-readable
help: Print sizes in human readable format
action: store_true
### backup_download()
download:
action_help: (API only) Request to download the file
api: GET /backups/<name>/download
arguments:
name:
help: Name of the local backup archive
### backup_delete()
delete:
action_help: Delete a backup archive
api: DELETE /backups/<name>
arguments:
name:
help: Name of the archive to delete
extra:
pattern: *pattern_backup_archive_name
#############################
# Settings #
#############################
settings:
category_help: Manage YunoHost global settings
actions:
### settings_list()
list:
action_help: list all entries of the settings
api: GET /settings
### settings_get()
get:
action_help: get an entry value in the settings
api: GET /settings/<key>
arguments:
key:
help: Settings key
--full:
help: Show more details
action: store_true
### settings_set()
set:
action_help: set an entry value in the settings
api: POST /settings/<key>
arguments:
key:
help: Settings key
-v:
full: --value
help: new value
extra:
required: True
### settings_reset_all()
reset-all:
action_help: reset all settings to their default value
api: DELETE /settings
### settings_reset()
reset:
action_help: set an entry value to its default one
api: DELETE /settings/<key>
arguments:
key:
help: Settings key
#############################
# Service #
#############################
service:
category_help: Manage services
actions:
### service_add()
add:
action_help: Add a service
arguments:
name:
help: Service name to add
-d:
full: --description
help: Description of the service
-l:
full: --log
help: Absolute path to log file to display
nargs: "+"
--test_status:
help: Specify a custom bash command to check the status of the service. Note that it only makes sense to specify this if the corresponding systemd service does not return the proper information already.
--test_conf:
help: Specify a custom bash command to check if the configuration of the service is valid or broken, similar to nginx -t.
--needs_exposed_ports:
help: A list of ports that needs to be publicly exposed for the service to work as intended.
nargs: "+"
type: int
metavar: PORT
-n:
full: --need_lock
help: Use this option to prevent deadlocks if the service does invoke yunohost commands.
action: store_true
### service_remove()
remove:
action_help: Remove a service
arguments:
name:
help: Service name to remove
### service_start()
start:
action_help: Start one or more services
api: PUT /services/<names>/start
arguments:
names:
help: Service name to start
nargs: "+"
metavar: NAME
### service_stop()
stop:
action_help: Stop one or more services
api: PUT /services/<names>/stop
arguments:
names:
help: Service name to stop
nargs: "+"
metavar: NAME
### service_reload()
reload:
action_help: Reload one or more services
arguments:
names:
help: Service name to reload
nargs: "+"
metavar: NAME
### service_restart()
restart:
action_help: Restart one or more services. If the services are not running yet, they will be started.
api: PUT /services/<names>/restart
arguments:
names:
help: Service name to restart
nargs: "+"
metavar: NAME
### service_reload_or_restart()
reload_or_restart:
action_help: Reload one or more services if they support it. If not, restart them instead. If the services are not running yet, they will be started.
arguments:
names:
help: Service name to reload or restart
nargs: "+"
metavar: NAME
### service_enable()
enable:
action_help: Enable one or more services
api: PUT /services/<names>/enable
arguments:
names:
help: Service name to enable
nargs: "+"
metavar: NAME
### service_disable()
disable:
action_help: Disable one or more services
api: PUT /services/<names>/disable
arguments:
names:
help: Service name to disable
nargs: "+"
metavar: NAME
### service_status()
status:
action_help: Show status information about one or more services (all by default)
api:
- GET /services
- GET /services/<names>
arguments:
names:
help: Service name to show
nargs: "*"
metavar: NAME
### service_log()
log:
action_help: Log every log files of a service
api: GET /services/<name>/log
arguments:
name:
help: Service name to log
-n:
full: --number
help: Number of lines to display
default: 50
type: int
#############################
# Firewall #
#############################
firewall:
category_help: Manage firewall rules
actions:
### firewall_list()
list:
action_help: List all firewall rules
api: GET /firewall
arguments:
-r:
full: --raw
help: Return the complete YAML dict
action: store_true
-i:
full: --by-ip-version
help: List rules by IP version
action: store_true
-f:
full: --list-forwarded
help: List forwarded ports with UPnP
action: store_true
### firewall_allow()
allow:
action_help: Allow connections on a port
api: PUT /firewall/<protocol>/allow/<port>
arguments:
protocol:
help: "Protocol type to allow (TCP/UDP/Both)"
choices:
- TCP
- UDP
- Both
default: TCP
port:
help: Port or range of ports to open
extra:
pattern: &pattern_port_or_range
- !!str ((^|(?!\A):)([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){1,2}?$
- "pattern_port_or_range"
-4:
full: --ipv4-only
help: Only add a rule for IPv4 connections
action: store_true
-6:
full: --ipv6-only
help: Only add a rule for IPv6 connections
action: store_true
--no-upnp:
help: Do not add forwarding of this port with UPnP
action: store_true
--no-reload:
help: Do not reload firewall rules
action: store_true
### firewall_disallow()
disallow:
action_help: Disallow connections on a port
api: PUT /firewall/<protocol>/disallow/<port>
arguments:
protocol:
help: "Protocol type to allow (TCP/UDP/Both)"
choices:
- TCP
- UDP
- Both
default: TCP
port:
help: Port or range of ports to close
extra:
pattern: *pattern_port_or_range
-4:
full: --ipv4-only
help: Only remove the rule for IPv4 connections
action: store_true
-6:
full: --ipv6-only
help: Only remove the rule for IPv6 connections
action: store_true
--upnp-only:
help: Only remove forwarding of this port with UPnP
action: store_true
--no-reload:
help: Do not reload firewall rules
action: store_true
### firewall_upnp()
upnp:
action_help: Manage port forwarding using UPnP
api: PUT /firewall/upnp/<action>
arguments:
action:
choices:
- enable
- disable
- status
- reload
nargs: "?"
default: status
--no-refresh:
help: Do not refresh port forwarding
action: store_true
### firewall_reload()
reload:
action_help: Reload all firewall rules
arguments:
--skip-upnp:
help: Do not refresh port forwarding using UPnP
action: store_true
### firewall_stop()
stop:
action_help: Stop iptables and ip6tables
#############################
# DynDNS #
#############################
dyndns:
category_help: Subscribe and Update DynDNS Hosts
actions:
### dyndns_subscribe()
subscribe:
action_help: Subscribe to a DynDNS service
arguments:
-d:
full: --domain
help: Full domain to subscribe with
extra:
pattern: *pattern_domain
-k:
full: --key
help: Public DNS key
### dyndns_update()
update:
action_help: Update IP on DynDNS platform
arguments:
-d:
full: --domain
help: Full domain to update
extra:
pattern: *pattern_domain
-f:
full: --force
help: Force the update (for debugging only)
action: store_true
-D:
full: --dry-run
help: Only display the generated zone
action: store_true
#############################
# Tools #
#############################
tools:
category_help: Specific tools
actions:
### tools_adminpw()
adminpw:
action_help: Change password of admin and root users
api: PUT /adminpw
arguments:
-n:
full: --new-password
extra:
password: ask_new_admin_password
pattern: *pattern_password
required: True
comment: good_practices_about_admin_password
### tools_maindomain()
maindomain:
action_help: Check the current main domain, or change it
arguments:
-n:
full: --new-main-domain
help: Change the current main domain
extra:
pattern: *pattern_domain
### tools_postinstall()
postinstall:
action_help: YunoHost post-install
api: POST /postinstall
authentication:
# We need to be able to run the postinstall without being authenticated, otherwise we can't run the postinstall
api: null
arguments:
-d:
full: --domain
help: YunoHost main domain
extra:
ask: ask_main_domain
pattern: *pattern_domain
required: True
-p:
full: --password
help: YunoHost admin password
extra:
password: ask_new_admin_password
pattern: *pattern_password
required: True
comment: good_practices_about_admin_password
--ignore-dyndns:
help: Do not subscribe domain to a DynDNS service
action: store_true
--force-password:
help: Use this if you really want to set a weak password
action: store_true
--force-diskspace:
help: Use this if you really want to install YunoHost on a setup with less than 10 GB on the root filesystem
action: store_true
### tools_update()
update:
action_help: YunoHost update
api: PUT /update/<target>
arguments:
target:
help: What to update, "apps" (application catalog) or "system" (fetch available package upgrades, equivalent to apt update), "all" for both
choices:
- apps
- system
- all
nargs: "?"
metavar: TARGET
default: all
### tools_upgrade()
upgrade:
action_help: YunoHost upgrade
api: PUT /upgrade/<target>
arguments:
target:
help: What to upgrade, either "apps" (all apps) or "system" (all system packages)
choices:
- apps
- system
nargs: "?"
### tools_shell()
shell:
action_help: Launch a development shell
arguments:
-c:
help: python command to execute
full: --command
### tools_shutdown()
shutdown:
action_help: Shutdown the server
api: PUT /shutdown
arguments:
-f:
help: skip the shutdown confirmation
full: --force
action: store_true
### tools_reboot()
reboot:
action_help: Reboot the server
api: PUT /reboot
arguments:
-f:
help: skip the reboot confirmation
full: --force
action: store_true
### tools_regen_conf()
regen-conf:
action_help: Regenerate the configuration file(s)
api:
- PUT /regenconf
- PUT /regenconf/<names>
arguments:
names:
help: Categories to regenerate configuration of (all by default)
nargs: "*"
metavar: NAME
-d:
full: --with-diff
help: Show differences in case of configuration changes
action: store_true
-f:
full: --force
help: Override all manual modifications in configuration files
action: store_true
-n:
full: --dry-run
help: Show what would have been regenerated
action: store_true
-p:
full: --list-pending
help: List pending configuration files and exit
action: store_true
### tools_versions()
versions:
action_help: Display YunoHost's packages versions
api: GET /versions
subcategories:
migrations:
subcategory_help: Manage migrations
actions:
### tools_migrations_list()
list:
action_help: List migrations
api: GET /migrations
arguments:
--pending:
help: list only pending migrations
action: store_true
--done:
help: list only migrations already performed
action: store_true
### tools_migrations_run()
run:
action_help: Run migrations
api:
- PUT /migrations
- PUT /migrations/<targets>
deprecated_alias:
- migrate
arguments:
targets:
help: Migrations to run (all pendings by default)
nargs: "*"
--skip:
help: Skip specified migrations (to be used only if you know what you are doing)
action: store_true
--force-rerun:
help: Re-run already-ran specified migration (to be used only if you know what you are doing)
action: store_true
--auto:
help: Automatic mode, won't run manual migrations (to be used only if you know what you are doing)
action: store_true
--accept-disclaimer:
help: Accept disclaimers of migrations (please read them before using this option)
action: store_true
### tools_migrations_state()
state:
action_help: Show current migrations state
#############################
# Hook #
#############################
hook:
category_help: Manage hooks
actions:
### hook_add()
add:
action_help: Store hook script to filesystem
arguments:
app:
help: App to link with
file:
help: Script to add
### hook_remove()
remove:
action_help: Remove hook scripts from filesystem
arguments:
app:
help: Scripts related to app will be removed
### hook_info()
info:
action_help: Get information about a given hook
arguments:
action:
help: Action name
name:
help: Hook name
### hook_list()
list:
action_help: List available hooks for an action
api: GET /hooks/<action>
arguments:
action:
help: Action name
-l:
full: --list-by
help: Property to list hook by
choices:
- name
- priority
- folder
default: name
-i:
full: --show-info
help: Show hook information
action: store_true
### hook_callback()
callback:
action_help: Execute all scripts binded to an action
arguments:
action:
help: Action name
-n:
full: --hooks
help: List of hooks names to execute
nargs: "*"
-a:
full: --args
help: Ordered list of arguments to pass to the scripts
nargs: "*"
-q:
full: --no-trace
help: Do not print each command that will be executed
action: store_true
-d:
full: --chdir
help: The directory from where the scripts will be executed
### hook_exec()
exec:
action_help: Execute hook from a file with arguments
arguments:
path:
help: Path of the script to execute
-a:
full: --args
help: Ordered list of arguments to pass to the script
nargs: "*"
--raise-on-error:
help: Raise if the script returns a non-zero exit code
action: store_true
-q:
full: --no-trace
help: Do not print each command that will be executed
action: store_true
-d:
full: --chdir
help: The directory from where the script will be executed
#############################
# Log #
#############################
log:
category_help: Manage debug logs
actions:
### log_list()
list:
action_help: List logs
api: GET /logs
arguments:
-l:
full: --limit
help: Maximum number of operations to list (default to 50)
type: int
default: 50
-d:
full: --with-details
help: Show additional infos (e.g. operation success) but may significantly increase command time. Consider using --limit in combination with this.
action: store_true
-s:
full: --with-suboperations
help: Include metadata about operations that are not the main operation but are sub-operations triggered by another ongoing operation... (e.g. initializing groups/permissions when installing an app)
action: store_true
### log_show()
show:
action_help: Display a log content
api: GET /logs/<path>
deprecated_alias:
- display
arguments:
path:
help: Log file which to display the content
-n:
full: --number
help: Number of lines to display
default: 50
type: int
--share:
help: (Deprecated, see yunohost log share) Share the full log using yunopaste
action: store_true
-i:
full: --filter-irrelevant
help: Do not show some lines deemed not relevant (like set +x or helper argument parsing)
action: store_true
-s:
full: --with-suboperations
help: Include metadata about sub-operations of this operation... (e.g. initializing groups/permissions when installing an app)
action: store_true
### log_share()
share:
action_help: Share the full log on yunopaste (alias to show --share)
api: GET /logs/<path>/share
arguments:
path:
help: Log file to share
#############################
# Diagnosis #
#############################
diagnosis:
category_help: Look for possible issues on the server
actions:
list:
action_help: List diagnosis categories
api: GET /diagnosis/categories
show:
action_help: Show most recents diagnosis results
api: GET /diagnosis
arguments:
categories:
help: Diagnosis categories to display (all by default)
nargs: "*"
--full:
help: Display additional information
action: store_true
--issues:
help: Only display issues
action: store_true
--share:
help: Share the logs using yunopaste
action: store_true
--human-readable:
help: Show a human-readable output
action: store_true
get:
action_help: Low-level command to fetch raw data and status about a specific diagnosis test
api: GET /diagnosis/<category>
arguments:
category:
help: Diagnosis category to fetch results from
item:
help: "List of criteria describing the test. Must correspond exactly to the 'meta' infos in 'yunohost diagnosis show'"
metavar: CRITERIA
nargs: "*"
run:
action_help: Run diagnosis
api: PUT /diagnosis/run
arguments:
categories:
help: Diagnosis categories to run (all by default)
nargs: "*"
--force:
help: Ignore the cached report even if it is still 'fresh'
action: store_true
--except-if-never-ran-yet:
help: Don't run anything if diagnosis never ran yet ... (this is meant to be used by the webadmin)
action: store_true
--email:
help: Send an email to root with issues found (this is meant to be used by cron job)
action: store_true
ignore:
action_help: Configure some diagnosis results to be ignored and therefore not considered as actual issues
api: PUT /diagnosis/ignore
arguments:
--filter:
help: "Add a filter. The first element should be a diagnosis category, and other criterias can be provided using the infos from the 'meta' sections in 'yunohost diagnosis show'. For example: 'dnsrecords domain=yolo.test category=xmpp'"
nargs: "*"
metavar: CRITERIA
--list:
help: List active ignore filters
action: store_true
unignore:
action_help: Configure some diagnosis results to be unignored and therefore considered as actual issues
api: PUT /diagnosis/unignore
arguments:
--filter:
help: Remove a filter (it should be an existing filter as listed with --list)
nargs: "*"
metavar: CRITERIA