1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/hotspot_ynh.git synced 2024-09-03 19:25:53 +02:00
hotspot_ynh/scripts/config

220 lines
5.5 KiB
Text
Raw Normal View History

2021-09-18 12:00:30 +02:00
#!/bin/bash
#=================================================
# GENERIC STARTING
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
final_path=$(ynh_app_setting_get $app final_path)
#=================================================
# SPECIFIC GETTERS FOR TOML SHORT KEY
#=================================================
2021-09-20 18:01:28 +02:00
get__no_antenna() {
if [[ $(iw_devices) == "" ]]
then
echo "value: false"
else
2021-10-18 01:39:24 +02:00
echo "value: true"
2021-09-20 18:01:28 +02:00
fi
}
2021-09-18 12:00:30 +02:00
get__status() {
local service_enabled=$(ynh_app_setting_get $app service_enabled)
2021-09-20 18:01:28 +02:00
if systemctl is-active hostapd -q
2021-09-18 12:00:30 +02:00
then
if [ $service_enabled -eq 1 ]
then
cat << EOF
style: success
ask:
en: |-
2021-09-20 18:01:28 +02:00
Your Hotspot is running :)
2021-09-18 12:00:30 +02:00
EOF
else
cat << EOF
style: warning
ask:
2021-09-20 18:01:28 +02:00
en: Your Hotspot is running, but it shouldn't !
2021-09-18 12:00:30 +02:00
EOF
fi
elif [ $service_enabled -eq 1 ]
then
cat << EOF
style: danger
ask:
en: |-
2021-09-20 18:01:28 +02:00
Your Hotspot is down ! Here are errors logged in the last 5 minutes
2021-09-18 12:00:30 +02:00
\`\`\`
2021-09-20 18:01:28 +02:00
$(journalctl -u hostapd -n10 -o cat | sed 's/^/ /g')
2021-09-18 12:00:30 +02:00
\`\`\`
EOF
else
cat << EOF
style: info
ask:
2021-09-20 19:19:01 +02:00
en: Your Hotspot is down as expected.
2021-09-18 12:00:30 +02:00
EOF
fi
}
2021-09-20 18:01:28 +02:00
get__wifi_device() {
if [[ $(iw_devices) == "" ]]
2021-09-18 12:00:30 +02:00
then
2021-09-20 18:01:28 +02:00
echo "choices: []"
2021-09-18 12:00:30 +02:00
else
2021-09-20 18:01:28 +02:00
cat << EOF
choices:
EOF
for device in $(iw_devices)
do
echo " $device: $device"
done
2021-09-18 12:00:30 +02:00
fi
2021-10-18 01:39:24 +02:00
echo "value: '$(ynh_app_setting_get $app wifi_device)'"
2021-09-18 12:00:30 +02:00
}
2021-09-20 18:01:28 +02:00
get__array_settings() {
local short_setting="${1%%__*}"
local index="${1#*__}"
IFS='|' read -a values <<< "$(ynh_app_setting_get $app $short_setting)"
echo "value: \"${values[$(($index - 1))]:-}\""
2021-09-18 12:00:30 +02:00
}
#=================================================
# SPECIFIC VALIDATORS FOR TOML SHORT KEYS
#=================================================
2021-09-20 18:01:28 +02:00
is_unique() {
local short_setting="$1"
local short_setting__1="$1__1"
local short_setting__2="$1__2"
local short_setting__3="$1__3"
if [[ "${!short_setting__1}" == "${!short_setting__2}" ]]
then
return 1
elif [ "$multissid" -ge "3" ] && [[ "${!short_setting__1}" == "${!short_setting__3}" ]]
then
return 1
elif [ "$multissid" -ge "3" ] && [[ "${!short_setting__2}" == "${!short_setting__3}" ]]
then
return 1
fi
return 0
}
validate__wifi_ssid() {
local wifi_ssid_var="wifi_ssid__$1"
if [ "$multissid" -ge "$1" ] && [[ -z "${!wifi_ssid_var}" ]]
then
echo 'SSID required'
fi
if ! is_unique wifi_ssid
then
echo 'All Wifi names must be unique'
fi
}
2021-09-18 12:00:30 +02:00
2021-09-20 18:01:28 +02:00
validate__wifi_passphrase() {
local wifi_secure_var="wifi_secure__$1"
local wifi_passphrase_var="wifi_passphrase__$1"
if [ "$multissid" -ge "$1" ] && [[ "${!wifi_secure_var}" == "1" ]] && [[ -z "${!wifi_passphrase_var}" ]]
2021-09-18 12:00:30 +02:00
then
2021-09-20 18:01:28 +02:00
echo 'In WPA2 secure mode, you need to provide a passphrase'
2021-09-18 12:00:30 +02:00
fi
}
2021-09-20 18:01:28 +02:00
validate__ip4_nat_prefix() {
local ip4_nat_prefix_var="ip4_nat_prefix__$1"
if [ "$multissid" -ge "$1" ] && [[ -z "${!ip4_nat_prefix_var}" ]]
2021-09-18 12:00:30 +02:00
then
2021-09-20 18:01:28 +02:00
echo 'Private IPv4 nat prefix required'
fi
if ! is_unique ip4_nat_prefix
then
echo 'All IPv4 prefix must be unique'
fi
}
validate__dns() {
local dns_var="dns__$1"
local ip6_net_var="dns__$1"
if [ "$multissid" -ge "$1" ] && ! echo "${!dns_var}" | grep -q "\."
then
echo 'IPv4 DNS required'
fi
if [ "$multissid" -ge "$1" ] && [[ -n "${!ip6_net_var}" ]] && ! echo "${!dns_var}" | grep -q ":"
then
echo 'IPv6 DNS required'
2021-09-18 12:00:30 +02:00
fi
}
2021-09-20 18:01:28 +02:00
validate__array_settings() {
local short_setting="${1%%__*}"
local index="${1#*__}"
if type -t validate__$short_setting | grep -q '^function$' 2>/dev/null;
then
validate__$short_setting $index
fi
2021-09-18 12:00:30 +02:00
}
#=================================================
2021-09-20 18:01:28 +02:00
# SPECIFIC SETTERS FOR TOML SHORT KEYS
2021-09-18 12:00:30 +02:00
#=================================================
2021-09-20 18:01:28 +02:00
set__array_settings() {
local short_setting="${1%%__*}"
local index="${1#*__}"
local type="${types[$1]}"
local value="${!1}"
if [[ "$type" == "string" ]] && [ "$multissid" -lt "$index" ]
2021-09-18 12:00:30 +02:00
then
2021-09-20 18:01:28 +02:00
value=""
2021-09-18 12:00:30 +02:00
fi
2021-09-20 18:01:28 +02:00
local values="$(ynh_app_setting_get $app $short_setting | awk 'BEGIN{FS=OFS="|"} {$'$index'="'${!1}'"}'1)"
ynh_app_setting_set --app=$app --key=$short_setting --value="$values"
ynh_print_info --message="Configuration key '$short_setting' edited in app settings"
2021-09-18 12:00:30 +02:00
}
2021-09-20 18:01:28 +02:00
#=================================================
# OVERWRITING VALIDATE STEP
#=================================================
2021-09-18 12:00:30 +02:00
ynh_app_config_validate() {
_ynh_app_config_validate
}
#=================================================
# OVERWRITING APPLY STEP
#=================================================
ynh_app_config_apply() {
# Stop vpn client
2021-09-20 18:01:28 +02:00
ynh_print_info --message="Stopping hotspot in order to edit files"
/usr/local/bin/ynh-hotspot stop
2021-09-18 12:00:30 +02:00
_ynh_app_config_apply
# Start vpn client
2021-09-20 18:01:28 +02:00
ynh_print_info --message="Starting hotspot service if needed"
/usr/local/bin/ynh-hotspot start
2021-09-18 12:00:30 +02:00
}
ynh_app_config_run $1