1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/grav_ynh.git synced 2024-09-03 19:16:01 +02:00

Merge pull request #108 from YunoHost-Apps/ssh-ftp

Add SSH and SFTP access settings
This commit is contained in:
tituspijean 2022-08-05 17:08:32 +02:00 committed by GitHub
commit 9904f98be0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 153 additions and 12 deletions

View file

@ -30,9 +30,10 @@ A modern open source flat-file CMS
* You can access the administration panel at `yourdomain.tld/path/admin`. Users created within YunoHost can log in, provided their were given the appropriate permissions:
* To make users administrators, give them the `grav.admin` permission.
* To allow users to log in, without extended rights, give them the `grav.user` permission.
* Grav provides a command line interface. Refer to its documentation, but you will need to specifically call for the PHP version currently used for the app:
* Go to your app's directory: `cd /var/www/grav` (or `grav__2`, etc. if you have multiple ones)
* `php7.3 bin/grav ...` or `php7.3 bin/gpm ...`
* Grav offers an SSH or SFTP access, which can be enabled in its YunoHost admin configuration panel.
* You can thus use its GPM command line binary.
Refer to is documentation, but bear in mind you need to call it by specifying the PHP version used by the app:
`php7.3 bin/grav ...` or `php7.3 bin/gpm ...`
* You can install plugins through the admin panel, or through the GPM.
* If installing Grav at the root of a domain, bear in mind that paths starting by `/yunohost` are reserved.

View file

@ -30,9 +30,10 @@ Un CMS moderne basé sur des fichiers plats
* Vous pouvez accéder au panneau d'adminstration à l'adresse `votredomaine.tld/votrechemin/admin`. Les utilisateurs créés dans YunoHost peuvent se connecter, à condition de leur avoir octroyé la permission adéquate:
* `grav.admin` pour qu'ils soient administrateur de Grav ;
* `grav.user` pour qu'ils puissent se connecter, mais sans droit étendu.
* Grav dispose d'une interface par ligne de commande. Référez-vous à sa documentation, mais sachez que vous devrez préciser la version de PHP utilisée par l'app:
* Allez dans le répertoire de Grav: `cd /var/www/grav` (ou `grav__2`, etc. si vous avez de multiples instances)
* `php7.3 bin/grav ...` ou `php7.3 bin/gpm ...`
* Grav offre un accès par SSH ou SFTP, activable dans le panneau de configuration de l'application dans l'administration de YunoHost.
* Vous pouvez ainsi utiliser sa ligne de commande GPM.
Référez-vous à sa documentation, mais sachez que vous devrez préciser la version de PHP utilisée par l'app:
`php7.3 bin/grav ...` ou `php7.3 bin/gpm ...`
* Vous pouvez installer les extensions soit via le panneau d'administration, soit via GPM.
* Si vous installez Grav à la racin d'un domaine, sachez que les chemins d'accès commançant par `/yunohost` sont réservés.

19
config_panel.toml Normal file
View file

@ -0,0 +1,19 @@
version = "1.0"
[main]
name = "Grav configuration"
[main.sftp]
name = "SSH and SFTP access"
[main.sftp.with_sftp]
ask = "Do you need an SSH and SFTP access?"
type = "boolean"
default = false
[main.sftp.password]
ask = "Set a password for the SSH and SFTP access"
type = "password"
optional = true
visible = "with_sftp"
help = "If a password already exists, leave blank and it will not be replaced."

View file

@ -1,8 +1,9 @@
* You can access the administration panel at `yourdomain.tld/path/admin`. Users created within YunoHost can log in, provided their were given the appropriate permissions:
* To make users administrators, give them the `grav.admin` permission.
* To allow users to log in, without extended rights, give them the `grav.user` permission.
* Grav provides a command line interface. Refer to its documentation, but you will need to specifically call for the PHP version currently used for the app:
* Go to your app's directory: `cd /var/www/grav` (or `grav__2`, etc. if you have multiple ones)
* `php7.3 bin/grav ...` or `php7.3 bin/gpm ...`
* Grav offers an SSH or SFTP access, which can be enabled in its YunoHost admin configuration panel.
* You can thus use its GPM command line binary.
Refer to is documentation, but bear in mind you need to call it by specifying the PHP version used by the app:
`php7.3 bin/grav ...` or `php7.3 bin/gpm ...`
* You can install plugins through the admin panel, or through the GPM.
* If installing Grav at the root of a domain, bear in mind that paths starting by `/yunohost` are reserved.

View file

@ -1,8 +1,9 @@
* Vous pouvez accéder au panneau d'adminstration à l'adresse `votredomaine.tld/votrechemin/admin`. Les utilisateurs créés dans YunoHost peuvent se connecter, à condition de leur avoir octroyé la permission adéquate:
* `grav.admin` pour qu'ils soient administrateur de Grav ;
* `grav.user` pour qu'ils puissent se connecter, mais sans droit étendu.
* Grav dispose d'une interface par ligne de commande. Référez-vous à sa documentation, mais sachez que vous devrez préciser la version de PHP utilisée par l'app:
* Allez dans le répertoire de Grav: `cd /var/www/grav` (ou `grav__2`, etc. si vous avez de multiples instances)
* `php7.3 bin/grav ...` ou `php7.3 bin/gpm ...`
* Grav offre un accès par SSH ou SFTP, activable dans le panneau de configuration de l'application dans l'administration de YunoHost.
* Vous pouvez ainsi utiliser sa ligne de commande GPM.
Référez-vous à sa documentation, mais sachez que vous devrez préciser la version de PHP utilisée par l'app:
`php7.3 bin/grav ...` ou `php7.3 bin/gpm ...`
* Vous pouvez installer les extensions soit via le panneau d'administration, soit via GPM.
* Si vous installez Grav à la racin d'un domaine, sachez que les chemins d'accès commançant par `/yunohost` sont réservés.

View file

@ -13,3 +13,38 @@ pkg_dependencies="php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-mbstring php${
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
ynh_system_user_add_group() {
# Declare an array to define the options of this helper.
local legacy_args=uhs
local -A args_array=([u]=username= [g]=groups=)
local username
local groups
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
groups="${groups:-}"
local group
for group in $groups; do
usermod -a -G "$group" "$username"
done
}
ynh_system_user_del_group() {
# Declare an array to define the options of this helper.
local legacy_args=uhs
local -A args_array=([u]=username= [g]=groups=)
local username
local groups
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
groups="${groups:-}"
local group
for group in $groups; do
gpasswd -d "$username" "$group"
done
}

72
scripts/config Normal file
View file

@ -0,0 +1,72 @@
#!/bin/bash
#=================================================
# GENERIC STARTING
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
ynh_abort_if_errors
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
final_path=$(ynh_app_setting_get $app final_path)
#=================================================
# SPECIFIC GETTERS FOR TOML SHORT KEY
#=================================================
#=================================================
# SPECIFIC VALIDATORS FOR TOML SHORT KEYS
#=================================================
#=================================================
# SPECIFIC SETTERS FOR TOML SHORT KEYS
#=================================================
set__password() {
if [ "$password" == "" ]
then
ynh_app_setting_set --app=$app --key=password --value="$password"
fi
}
#=================================================
# GENERIC FINALIZATION
#=================================================
ynh_app_config_validate() {
_ynh_app_config_validate
if [ "${changed[with_sftp]}" == "true" ] && [ $with_sftp -eq 1 ] && [ "$password" == "" ]
then
ynh_die --message="You need to set a password to enable SSH and SFTP"
fi
}
ynh_app_config_apply() {
_ynh_app_config_apply
if [ "${changed[with_sftp]}" == "true" ] && [ $with_sftp -eq 1 ]
then
ynh_system_user_add_group --username=$app --groups="sftp.app ssh.app"
usermod --shell /bin/bash $app
if [ ! "$password" == "" ]
then
chpasswd <<< "${app}:${password}"
fi
elif [ "${changed[with_sftp]}" == "true" ] && [ $with_sftp -eq 0 ]
then
ynh_system_user_del_group --username=$app --groups="sftp.app ssh.app"
usermod --shel /usr/sbin/nologin $app
fi
}
ynh_app_config_run $1

View file

@ -48,6 +48,8 @@ ynh_app_setting_set --app=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url
ynh_app_setting_set --app=$app --key=admin --value=$admin
ynh_app_setting_set --app=$app --key=language --value=$language
ynh_app_setting_set --app=$app --key=with_sftp --value="false"
ynh_app_setting_set --app=$app --key=password --value=$(ynh_string_random)
#=================================================
# INSTALL DEPENDENCIES

View file

@ -25,6 +25,9 @@ language=$(ynh_app_setting_get --app=$app --key=language)
fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint)
fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage)
with_sftp=$(ynh_app_setting_get --app=$app --key=with_sftp)
password=$(ynh_app_setting_get --app=$app --key=password)
#=================================================
# CHECK VERSION
#=================================================
@ -79,6 +82,12 @@ if [ -z "$fpm_usage" ]; then
ynh_app_setting_set --app=$app --key=fpm_usage --value=$fpm_usage
fi
# If with_sftp or password don't exist, create them
if [ -z "$with_sftp" ] || [ -z "$password" ]; then
ynh_app_setting_set --app=$app --key=with_sftp --value="false"
ynh_app_setting_set --app=$app --key=password --value=$(ynh_string_random)
fi
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================