Commit 34fa912e authored by Igor Pecovnik's avatar Igor Pecovnik
Browse files

Added h3disp where avaliable, check if hostapd is running before starting...

Added h3disp where avaliable, check if hostapd is running before starting netork manager, enable / disable hostapd, bridge mode tested, ...
parent fcfcbaed
......@@ -6,20 +6,21 @@
# License version 2. This program is licensed "as is" without any
# warranty of any kind, whether express or implied.
cp /etc/network/interfaces /etc/network/interfaces.backup
# check for root
#
if [[ $EUID != 0 ]]; then
dialog --title "Warning" --infobox "\nThis script requires root privileges.\n\nExiting ..." 7 41
echo "Warning. This script requires root privileges. Exiting ..."
sleep 3
exit
fi
# make a bacup
cp /etc/network/interfaces /etc/network/interfaces.debian-config.backup
# Install basic stuff
#
echo "Downloading dependencies ..."
apt-get -qq -y --no-install-recommends install dialog whiptail lsb-release bc expect rcconf
apt-get -qq -y --no-install-recommends install bc expect rcconf >> /dev/null
# gather some info
#
......@@ -34,6 +35,8 @@ NETWORK_CONF="/etc/network/interfaces"
LIST=()
###########################################################################################################################################
# here we add new items to menu. with condition when needed
[[ -f /usr/bin/h3disp && "$LINUXFAMILY" = "sun8i" && "$BRANCH" = "default" && -n $(bin2fex </boot/script.bin 2>/dev/null | grep -w "hdmi_used = 1") ]] && LIST+=( "Display" "set the display resolution" )
[[ -n $(ls -1 /sys/class/net/ | grep -vE "eth|lo|enp") ]] && LIST+=( "Wireless" "Connect to your router" )
LIST+=( "Hotspot" "Creates wireless Access Point" )
LIST+=( "Network" "Edit network settings" )
......@@ -72,6 +75,10 @@ while true; do
#######################################################################################################################################
case $selection in
"Display" )
h3disp
exit
;;
"Services" )
rcconf
;;
......@@ -82,6 +89,10 @@ while true; do
;;
"Hotspot" )
if [[ -n $(service hostapd status | grep -w active) ]]; then
dialog --title "Info" --backtitle "$BACKTITLE" --no-collapse --yesno "\nHostapd service is configured and running.\n\nDo you want to stop the service?" 9 57
[[ $? = 0 ]] && service hostapd stop && sed -i "s/^DAEMON_CONF=.*/DAEMON_CONF=/" /etc/init.d/hostapd
else
dialog --backtitle "$BACKTITLE" --title "Please wait" --infobox "\nChecking nl80211 hostapd driver compatibility." 5 50
apt-get -y -qq --no-install-recommends install hostapd > /dev/null
# add hostapd.conf to services
......@@ -102,38 +113,41 @@ while true; do
exit
fi
dialog --title "Choose a AP mode" --backtitle "$backtitle" --yes-label "Bridge" --no-label "NAT" --yesno "\nBridge: wireless clients will use your routers DHCP server\n\nNAT: with own DHCP server, out of your primary network" 10 70
dialog --title "Choose a AP mode" --backtitle "$BACKTITLE" --help-button --help-label "Manual" --yes-label "Bridge" --no-label "NAT" --yesno "\nBridge: wireless clients will use your routers DHCP server\n\nNAT: with own DHCP server, out of your primary network\n\nManual: edit configuration manually" 11 70
response=$?
DEFAULT_ADAPTER=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)')
DEFAULT_CONF=/etc/network/interfaces.out
cp $NETWORK_CONF $DEFAULT_CONF
TEMP_CONF=/etc/network/interfaces.out
cp $NETWORK_CONF $TEMP_CONF
case $response in
# bridge
0)
sed -i '/^#/ d' $DEFAULT_CONF
apt-get -qq -y --no-install-recommends install bridge-utils
sed -i "s/^auto lo.*/auto lo br0/" $DEFAULT_CONF
sed -i '/^#/ d' $TEMP_CONF
apt-get -qq -y --no-install-recommends install bridge-utils >> /dev/null
sed -i "s/^auto lo.*/auto lo br0/" $TEMP_CONF
# if we have dhcp on default adapter
if [[ -n $(grep dhcp $DEFAULT_CONF | grep "$DEFAULT_ADAPTER" | grep -v br) ]]; then
sed -i "s/^iface $DEFAULT_ADAPTER inet dhcp/iface $DEFAULT_ADAPTER inet manual/" $DEFAULT_CONF
echo -e "\niface br0 inet dhcp\nbridge_ports $DEFAULT_ADAPTER $WIRELESS_ADAPTER" >> $DEFAULT_CONF
echo -e "\nauto $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet manual" >> $DEFAULT_CONF
if [[ -n $(grep dhcp $TEMP_CONF | grep "$DEFAULT_ADAPTER" | grep -v br) ]]; then
sed -i "s/^iface $DEFAULT_ADAPTER inet dhcp/iface $DEFAULT_ADAPTER inet manual/" $TEMP_CONF
echo -e "\niface br0 inet dhcp\nbridge_ports $DEFAULT_ADAPTER $WIRELESS_ADAPTER" >> $TEMP_CONF
echo -e "\nauto $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet manual" >> $TEMP_CONF
#fi
# if we have static on default adapter
#if [[ -n $(grep static $DEFAULT_CONF | grep "$DEFAULT_ADAPTER" | grep -v br) ]]; then
#if [[ -n $(grep static $TEMP_CONF | grep "$DEFAULT_ADAPTER" | grep -v br) ]]; then
else
sed -i "s/^iface $DEFAULT_ADAPTER inet static/iface $DEFAULT_ADAPTER inet manual/" $DEFAULT_CONF
sed -i "/^iface $DEFAULT_ADAPTER inet manual/a iface br0 inet static" $DEFAULT_CONF
echo -e "bridge_ports $DEFAULT_ADAPTER $WIRELESS_ADAPTER" >> $DEFAULT_CONF
echo -e "\nauto $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet manual" >> $DEFAULT_CONF
sed -i "s/^iface $DEFAULT_ADAPTER inet static/iface $DEFAULT_ADAPTER inet manual/" $TEMP_CONF
sed -i "/^iface $DEFAULT_ADAPTER inet manual/a iface br0 inet static" $TEMP_CONF
echo -e "bridge_ports $DEFAULT_ADAPTER $WIRELESS_ADAPTER" >> $TEMP_CONF
echo -e "\nauto $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet manual" >> $TEMP_CONF
fi
sed -i 's/^bridge=.*/bridge=br0/' /etc/hostapd.conf
;;
# NAT
1)
sed -i '/^#/ d' $DEFAULT_CONF
sed -i '/^#/ d' $TEMP_CONF
apt-get -qq -y --no-install-recommends install isc-dhcp-server
echo -e "\nallow-hotplug $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet static\naddress 192.168.3.10\nnetmask 255.255.255.0\ngateway 192.168.3.1" >> $DEFAULT_CONF
echo -e "\nallow-hotplug $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet static\naddress 192.168.3.10\nnetmask 255.255.255.0\ngateway 192.168.3.1" >> $TEMP_CONF
sed -i 's/^option domain-name "example.org";/#option domain-name "example.org";/' /etc/dhcp/dhcpd.conf
sed -i 's/^option domain-name-servers ns1.example.org, ns2.example.org;/#option domain-name-servers ns1.example.org, ns2.example.org;/' /etc/dhcp/dhcpd.conf
sed -i 's/^#authoritative;/authoritative;/' /etc/dhcp/dhcpd.conf
......@@ -159,14 +173,15 @@ while true; do
service isc-dhcp-server restart
sed -i '/^bridge=.*/ d' /etc/hostapd.conf
;;
3) exit;;
255) exit;;
esac
dialog --title "Manually adjust network configuration if needed" --no-collapse --editbox $DEFAULT_CONF 30 0 2> $DEFAULT_CONF".tmp"
[[ $? = 0 ]] && mv $DEFAULT_CONF".tmp" $NETWORK_CONF
systemctl daemon-reload
service networking restart
service hostapd restart
exit
dialog --title "Manually adjust network configuration if needed" --backtitle "$BACKTITLE" --ok-label "Reboot to apply new settings" --no-collapse --editbox $TEMP_CONF 30 0 2> $TEMP_CONF".tmp"
if [[ $? = 0 ]]; then
mv $TEMP_CONF $NETWORK_CONF
reboot
fi
fi
;;
"Booting" )
......@@ -180,7 +195,12 @@ while true; do
;;
"Wireless" )
if [[ -n $(service hostapd status | grep active) ]]; then
dialog --title "Error" --backtitle "$BACKTITLE" --no-collapse --msgbox "\nHostapd service is running. Disable it and try again." 7 57
exit
else
nmtui-connect
fi
;;
"Diagnostics" )
......
......@@ -723,7 +723,7 @@ fi
# Install basic stuff
#
apt-get -y -qq --no-install-recommends install dialog whiptail lsb-release bc expect html2text
apt-get -qq -y --no-install-recommends install dialog whiptail lsb-release bc expect html2text > /dev/null
# gather some info
#
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment