mirror of
https://github.com/YunoHost-Apps/hotspot_ynh.git
synced 2024-09-03 19:25:53 +02:00
Ready for Jessie (+ some improvements)
This commit is contained in:
parent
f7187c4c43
commit
e15fb76389
8 changed files with 62 additions and 61 deletions
|
@ -43,10 +43,5 @@ In this manner, with this example, you can provide 3 access points at the same t
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
This app works with a non-stable version of YunoHost.
|
* Debian Jessie
|
||||||
|
* YunoHost >= 2.2.0
|
||||||
Until this version is available (coming soon!) as an official stable release, you need to execute some commands before installing this app:
|
|
||||||
|
|
||||||
# systemctl stop bind9
|
|
||||||
# systemctl disable bind9
|
|
||||||
# apt-get install dnsmasq
|
|
||||||
|
|
|
@ -18,5 +18,10 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
phy=$(iw "${1}" info | grep wiphy | awk '{ print $NF }')
|
phy=$(iw "${1}" info | grep wiphy | awk '{ print $NF }')
|
||||||
|
multissid=$(iw "phy${phy}" info | grep -A1 'valid interface combinations' | tail -n1 | sed 's/.*{.*AP.*}\s<=\s\(.*\),.*/\1/')
|
||||||
|
|
||||||
iw "phy${phy}" info | grep -A1 'valid interface combinations' | tail -n1 | sed 's/.*{.*AP.*}\s<=\s\(.*\),.*/\1/'
|
if [ -z "${multissid}" ]; then
|
||||||
|
echo 1
|
||||||
|
else
|
||||||
|
echo $multissid
|
||||||
|
fi
|
||||||
|
|
|
@ -80,13 +80,13 @@ is_dhcpd4_running() {
|
||||||
}
|
}
|
||||||
|
|
||||||
is_hostapd_running() {
|
is_hostapd_running() {
|
||||||
systemctl is-active hostapd --quiet &> /dev/null
|
systemctl is-active hostapd &> /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
is_running() {
|
is_running() {
|
||||||
for i in $(seq 0 $((${ynh_multissid} - 1))); do
|
for i in $(seq 0 $((${ynh_multissid} - 1))); do
|
||||||
( has_ip6delegatedprefix ${i} && is_ip6addr_set ${i} || ! has_ip6delegatedprefix ${i} )\
|
( has_ip6delegatedprefix ${i} && is_ip6addr_set ${i} && is_dhcpd6_running ${i} || ! has_ip6delegatedprefix ${i} )\
|
||||||
&& is_ip4nataddr_set ${i} && is_dhcpd6_running ${i} && is_dhcpd4_running ${i}
|
&& is_ip4nataddr_set ${i} && is_dhcpd4_running ${i}
|
||||||
|
|
||||||
if [ ! $? -eq 0 ]; then
|
if [ ! $? -eq 0 ]; then
|
||||||
return 1
|
return 1
|
||||||
|
@ -143,9 +143,7 @@ start_dhcpd6() {
|
||||||
dev="hotspot${i}"
|
dev="hotspot${i}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f /etc/dnsmasq.dhcpd/dhcpdv6-ssid*.conf
|
cp /etc/dnsmasq.dhcpd/dhcpdv6{.conf.tpl,-ssid${i}.conf}
|
||||||
|
|
||||||
cp /etc/dnsmasq.dhcp/dhcpdv6{.conf.tpl,-ssid${i}.conf}
|
|
||||||
|
|
||||||
sed "s|<TPL:WIFI_DEVICE>|${dev}|g" -i /etc/dnsmasq.dhcpd/dhcpdv6-ssid${i}.conf
|
sed "s|<TPL:WIFI_DEVICE>|${dev}|g" -i /etc/dnsmasq.dhcpd/dhcpdv6-ssid${i}.conf
|
||||||
sed "s|<TPL:IP6_NET>|${ynh_ip6_net[${i}]}|g" -i /etc/dnsmasq.dhcpd/dhcpdv6-ssid${i}.conf
|
sed "s|<TPL:IP6_NET>|${ynh_ip6_net[${i}]}|g" -i /etc/dnsmasq.dhcpd/dhcpdv6-ssid${i}.conf
|
||||||
|
@ -164,8 +162,6 @@ start_dhcpd4() {
|
||||||
dev="hotspot${i}"
|
dev="hotspot${i}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f /etc/dnsmasq.dhcpd/dhcpdv4-ssid*.conf
|
|
||||||
|
|
||||||
cp /etc/dnsmasq.dhcpd/dhcpdv4{.conf.tpl,-ssid${i}.conf}
|
cp /etc/dnsmasq.dhcpd/dhcpdv4{.conf.tpl,-ssid${i}.conf}
|
||||||
|
|
||||||
sed "s|<TPL:IP4_DNS0>|${ynh_ip4_dns0[${i}]}|g" -i /etc/dnsmasq.dhcpd/dhcpdv4-ssid${i}.conf
|
sed "s|<TPL:IP4_DNS0>|${ynh_ip4_dns0[${i}]}|g" -i /etc/dnsmasq.dhcpd/dhcpdv4-ssid${i}.conf
|
||||||
|
@ -209,7 +205,7 @@ start_hostapd() {
|
||||||
rm /etc/hostapd/hostapd.conf.tmp
|
rm /etc/hostapd/hostapd.conf.tmp
|
||||||
done
|
done
|
||||||
|
|
||||||
systemctl start hostapd --quiet
|
systemctl start hostapd
|
||||||
}
|
}
|
||||||
|
|
||||||
## Unsetters
|
## Unsetters
|
||||||
|
@ -260,33 +256,41 @@ stop_dhcpd4() {
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_hostapd() {
|
stop_hostapd() {
|
||||||
systemctl stop hostapd --quiet
|
systemctl stop hostapd
|
||||||
}
|
}
|
||||||
|
|
||||||
## Tools
|
## Tools
|
||||||
|
|
||||||
moulinette_get() {
|
moulinette_get() {
|
||||||
var=${1}
|
var=${1}
|
||||||
|
gotcha=0
|
||||||
|
|
||||||
value=$(yunohost app setting hotspot "${var}")
|
while [ "${gotcha}" -eq 0 ]; do
|
||||||
|
value=$(yunohost app setting hotspot "${var}")
|
||||||
|
|
||||||
if [[ "${value}" =~ "An instance is already running" ]]; then
|
if [[ "${value}" =~ "An instance is already running" ]]; then
|
||||||
echo "${value}" >&2
|
sleep $(($((RANDOM%5)) + 1))
|
||||||
exit 1
|
else
|
||||||
fi
|
gotcha=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
echo "${value}"
|
echo "${value}"
|
||||||
}
|
}
|
||||||
|
|
||||||
moulinette_vpnclient_get() {
|
moulinette_vpnclient_get() {
|
||||||
var=${1}
|
var=${1}
|
||||||
|
gotcha=0
|
||||||
|
|
||||||
value=$(yunohost app setting vpnclient "${var}")
|
while [ "${gotcha}" -eq 0 ]; do
|
||||||
|
value=$(yunohost app setting vpnclient "${var}")
|
||||||
|
|
||||||
if [[ "${value}" =~ "An instance is already running" ]]; then
|
if [[ "${value}" =~ "An instance is already running" ]]; then
|
||||||
echo "${value}" >&2
|
sleep $(($((RANDOM%5)) + 1))
|
||||||
exit 1
|
else
|
||||||
fi
|
gotcha=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
echo "${value}"
|
echo "${value}"
|
||||||
}
|
}
|
||||||
|
@ -308,7 +312,7 @@ if [ "$1" != restart ]; then
|
||||||
# Restart php5-fpm at the first start (it needs to be restarted after the slapd start)
|
# Restart php5-fpm at the first start (it needs to be restarted after the slapd start)
|
||||||
if [ ! -e /tmp/.ynh-hotspot-boot ]; then
|
if [ ! -e /tmp/.ynh-hotspot-boot ]; then
|
||||||
touch /tmp/.ynh-hotspot-boot
|
touch /tmp/.ynh-hotspot-boot
|
||||||
systemctl restart php5-fpm --quiet
|
systemctl restart php5-fpm
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Variables
|
# Variables
|
||||||
|
@ -407,12 +411,16 @@ case "$1" in
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
i=0; false || while [ $? -ne 0 ]; do
|
if [ "${ynh_multissid}" -gt 1 ]; then
|
||||||
sleep 1 && (( i++ ))
|
i=0; false || while [ $? -ne 0 ]; do
|
||||||
[ ${i} -gt 20 ] && stop_hostapd
|
sleep 1 && (( i++ ))
|
||||||
[ ${i} -gt 20 ] && exit 1
|
[ ${i} -gt 20 ] && stop_hostapd
|
||||||
ip link show dev "mon.${ynh_wifi_device}" &> /dev/null
|
[ ${i} -gt 20 ] && exit 1
|
||||||
done
|
ip link show dev hotspot1 &> /dev/null
|
||||||
|
done
|
||||||
|
else
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For each registred ssid
|
# For each registred ssid
|
||||||
|
@ -489,8 +497,9 @@ case "$1" in
|
||||||
stop_hostapd
|
stop_hostapd
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Fix configuration
|
||||||
if has_vpnclient_app; then
|
if has_vpnclient_app; then
|
||||||
systemctl start ynh-vpnclient --quiet
|
ynh-vpnclient start
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
restart)
|
restart)
|
||||||
|
|
|
@ -6,10 +6,8 @@ After=network.target
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=/usr/local/bin/ynh-hotspot start
|
ExecStart=/usr/local/bin/ynh-hotspot start
|
||||||
ExecRestart=/usr/local/bin/ynh-hotspot restart
|
|
||||||
ExecStop=/usr/local/bin/ynh-hotspot stop
|
ExecStop=/usr/local/bin/ynh-hotspot stop
|
||||||
RemainAfterExit=yes
|
RemainAfterExit=yes
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
Alias=ynh-hotspot.service
|
|
||||||
|
|
|
@ -39,10 +39,10 @@ if [ "${ynh_version}" -lt 220 ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo systemctl status dnsmasq status --quiet &> /dev/null
|
sudo systemctl is-active dnsmasq &> /dev/null
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "ERROR: You need to enable dnsmasq instead of bind9 (apt-get remove bind && systemctl start dnsmasq)"
|
echo "ERROR: You need to enable dnsmasq instead of bind9 (apt-get remove bind9 && systemctl start dnsmasq)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -152,7 +152,6 @@ sudo install -o root -g root -m 0755 ../conf/iw_devices /usr/local/bin/
|
||||||
sudo install -o root -g root -m 0755 ../conf/iw_ssids /usr/local/bin/
|
sudo install -o root -g root -m 0755 ../conf/iw_ssids /usr/local/bin/
|
||||||
sudo install -o root -g root -m 0755 ../conf/ipv6_expanded /usr/local/bin/
|
sudo install -o root -g root -m 0755 ../conf/ipv6_expanded /usr/local/bin/
|
||||||
sudo install -o root -g root -m 0755 ../conf/ipv6_compressed /usr/local/bin/
|
sudo install -o root -g root -m 0755 ../conf/ipv6_compressed /usr/local/bin/
|
||||||
sudo install -o root -g root -m 0755 ../conf/ynh-hotspot /usr/local/bin/
|
|
||||||
|
|
||||||
# Copy confs
|
# Copy confs
|
||||||
sudo mkdir -pm 0755 /var/log/nginx/
|
sudo mkdir -pm 0755 /var/log/nginx/
|
||||||
|
@ -192,7 +191,8 @@ sudo sed 's|<TPL:NGINX_REALPATH>|/var/www/wifiadmin/|g' -i /etc/php5/fpm/pool.d/
|
||||||
sudo sed "s|<TPL:NGINX_LOCATION>|${url_path}|g" -i /var/www/wifiadmin/config.php
|
sudo sed "s|<TPL:NGINX_LOCATION>|${url_path}|g" -i /var/www/wifiadmin/config.php
|
||||||
|
|
||||||
# Copy init script
|
# Copy init script
|
||||||
sudo install -o root -g root -m 0755 ../conf/ynh-hotspot.service /lib/systemd/system/ynh-hotspot.service
|
sudo install -o root -g root -m 0755 ../conf/ynh-hotspot /usr/local/bin/
|
||||||
|
sudo install -o root -g root -m 0644 ../conf/ynh-hotspot.service /etc/systemd/system/
|
||||||
|
|
||||||
# Update firewall for DHCP
|
# Update firewall for DHCP
|
||||||
sudo yunohost firewall allow --no-upnp --ipv6 UDP 547
|
sudo yunohost firewall allow --no-upnp --ipv6 UDP 547
|
||||||
|
@ -201,15 +201,13 @@ sudo yunohost firewall allow --no-upnp UDP 67
|
||||||
# Set default inits
|
# Set default inits
|
||||||
# The boot order of these services are important, so they are disabled by default
|
# The boot order of these services are important, so they are disabled by default
|
||||||
# and the ynh-hotspot service handles them.
|
# and the ynh-hotspot service handles them.
|
||||||
# All services are registred by yunohost in order to prevent conflicts after the uninstall.
|
sudo systemctl disable hostapd
|
||||||
sudo yunohost service add hostapd
|
sudo systemctl stop hostapd
|
||||||
sudo yunohost service stop hostapd
|
|
||||||
sudo yunohost service disable hostapd
|
|
||||||
|
|
||||||
sudo yunohost service add php5-fpm
|
sudo systemctl enable php5-fpm
|
||||||
sudo yunohost service enable php5-fpm
|
sudo systemctl restart php5-fpm
|
||||||
|
|
||||||
sudo systemcld reload nginx
|
sudo systemctl reload nginx
|
||||||
|
|
||||||
# Remove IPv6 address set if there is a VPN installed
|
# Remove IPv6 address set if there is a VPN installed
|
||||||
if [ "${ip6_addr}" != none ]; then
|
if [ "${ip6_addr}" != none ]; then
|
||||||
|
@ -219,10 +217,8 @@ if [ "${ip6_addr}" != none ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo yunohost service add ynh-hotspot
|
sudo systemctl enable ynh-hotspot
|
||||||
sudo yunohost service enable ynh-hotspot
|
sudo systemctl start ynh-hotspot
|
||||||
sudo systemctl reenable ynh-hotspot
|
|
||||||
sudo systemcld start ynh-hotspot
|
|
||||||
|
|
||||||
# Update SSO for wifiadmin
|
# Update SSO for wifiadmin
|
||||||
sudo yunohost app ssowatconf
|
sudo yunohost app ssowatconf
|
||||||
|
|
|
@ -22,9 +22,8 @@ domain=$(sudo yunohost app setting hotspot domain)
|
||||||
|
|
||||||
# The End
|
# The End
|
||||||
sudo systemctl stop ynh-hotspot
|
sudo systemctl stop ynh-hotspot
|
||||||
sudo yunohost service remove ynh-hotspot
|
|
||||||
sudo systemctl disable ynh-hotspot
|
sudo systemctl disable ynh-hotspot
|
||||||
sudo rm -f /lib/systemd/system/ynh-hotspot.service /usr/local/bin/ynh-hotspot
|
sudo rm -f /etc/systemd/system/ynh-hotspot.service /usr/local/bin/ynh-hotspot
|
||||||
sudo rm -f /tmp/.ynh-hotspot-*
|
sudo rm -f /tmp/.ynh-hotspot-*
|
||||||
|
|
||||||
# Update firewall for DHCP
|
# Update firewall for DHCP
|
||||||
|
@ -42,8 +41,7 @@ sudo rm -f /lib/firmware/htc-7010.fw
|
||||||
sudo rm -f /lib/firmware/htc-9271.fw
|
sudo rm -f /lib/firmware/htc-9271.fw
|
||||||
|
|
||||||
# Restart services
|
# Restart services
|
||||||
sudo yunohost service stop php5-fpm
|
sudo systemctl restart php5-fpm
|
||||||
sudo yunohost service start php5-fpm
|
|
||||||
sudo systemctl reload nginx
|
sudo systemctl reload nginx
|
||||||
|
|
||||||
# Remove sources
|
# Remove sources
|
||||||
|
|
|
@ -37,7 +37,7 @@ function start_service() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function service_status() {
|
function service_status() {
|
||||||
exec('sudo systemctl is-active ynh-hotspot', $output);
|
exec('sudo ynh-hotspot status', $output);
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
@ -146,8 +146,8 @@ dispatch('/', function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
$ip6_net = moulinette_get('ip6_net');
|
$ip6_net = moulinette_get('ip6_net');
|
||||||
$ip6_net = ($ip6_net == 'none') ? '' : $ip6_net;
|
$ip6_net = ($ip6_net == 'none') ? '' : getArray($ip6_net);
|
||||||
$ip4_nat_prefix = moulinette_get('ip4_nat_prefix');
|
$ip4_nat_prefix = getArray(moulinette_get('ip4_nat_prefix'));
|
||||||
|
|
||||||
set('service_enabled', moulinette_get('service_enabled'));
|
set('service_enabled', moulinette_get('service_enabled'));
|
||||||
set('ssids', $ssids);
|
set('ssids', $ssids);
|
||||||
|
|
|
@ -66,7 +66,7 @@ div#saveconfirmation {
|
||||||
display: none;
|
display: none;
|
||||||
padding-right: 15px;
|
padding-right: 15px;
|
||||||
width: 60%;
|
width: 60%;
|
||||||
margin: 0 auto;
|
margin: 15px auto 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
div#saveconfirmation div#confirm {
|
div#saveconfirmation div#confirm {
|
||||||
|
|
Loading…
Reference in a new issue