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 @@ ...@@ -6,20 +6,21 @@
# License version 2. This program is licensed "as is" without any # License version 2. This program is licensed "as is" without any
# warranty of any kind, whether express or implied. # warranty of any kind, whether express or implied.
cp /etc/network/interfaces /etc/network/interfaces.backup
# check for root # check for root
# #
if [[ $EUID != 0 ]]; then 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 sleep 3
exit exit
fi fi
# make a bacup
cp /etc/network/interfaces /etc/network/interfaces.debian-config.backup
# Install basic stuff # Install basic stuff
# #
echo "Downloading dependencies ..." 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 # gather some info
# #
...@@ -34,6 +35,8 @@ NETWORK_CONF="/etc/network/interfaces" ...@@ -34,6 +35,8 @@ NETWORK_CONF="/etc/network/interfaces"
LIST=() LIST=()
########################################################################################################################################### ###########################################################################################################################################
# here we add new items to menu. with condition when needed # 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" ) [[ -n $(ls -1 /sys/class/net/ | grep -vE "eth|lo|enp") ]] && LIST+=( "Wireless" "Connect to your router" )
LIST+=( "Hotspot" "Creates wireless Access Point" ) LIST+=( "Hotspot" "Creates wireless Access Point" )
LIST+=( "Network" "Edit network settings" ) LIST+=( "Network" "Edit network settings" )
...@@ -72,6 +75,10 @@ while true; do ...@@ -72,6 +75,10 @@ while true; do
####################################################################################################################################### #######################################################################################################################################
case $selection in case $selection in
"Display" )
h3disp
exit
;;
"Services" ) "Services" )
rcconf rcconf
;; ;;
...@@ -82,6 +89,10 @@ while true; do ...@@ -82,6 +89,10 @@ while true; do
;; ;;
"Hotspot" ) "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 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 apt-get -y -qq --no-install-recommends install hostapd > /dev/null
# add hostapd.conf to services # add hostapd.conf to services
...@@ -102,38 +113,41 @@ while true; do ...@@ -102,38 +113,41 @@ while true; do
exit exit
fi 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=$? response=$?
DEFAULT_ADAPTER=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)') DEFAULT_ADAPTER=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)')
DEFAULT_CONF=/etc/network/interfaces.out TEMP_CONF=/etc/network/interfaces.out
cp $NETWORK_CONF $DEFAULT_CONF cp $NETWORK_CONF $TEMP_CONF
case $response in case $response in
# bridge
0) 0)
sed -i '/^#/ d' $DEFAULT_CONF sed -i '/^#/ d' $TEMP_CONF
apt-get -qq -y --no-install-recommends install bridge-utils apt-get -qq -y --no-install-recommends install bridge-utils >> /dev/null
sed -i "s/^auto lo.*/auto lo br0/" $DEFAULT_CONF sed -i "s/^auto lo.*/auto lo br0/" $TEMP_CONF
# if we have dhcp on default adapter # if we have dhcp on default adapter
if [[ -n $(grep dhcp $DEFAULT_CONF | grep "$DEFAULT_ADAPTER" | grep -v br) ]]; then 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/" $DEFAULT_CONF 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" >> $DEFAULT_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" >> $DEFAULT_CONF echo -e "\nauto $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet manual" >> $TEMP_CONF
#fi #fi
# if we have static on default adapter # 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 else
sed -i "s/^iface $DEFAULT_ADAPTER inet static/iface $DEFAULT_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" $DEFAULT_CONF sed -i "/^iface $DEFAULT_ADAPTER inet manual/a iface br0 inet static" $TEMP_CONF
echo -e "bridge_ports $DEFAULT_ADAPTER $WIRELESS_ADAPTER" >> $DEFAULT_CONF echo -e "bridge_ports $DEFAULT_ADAPTER $WIRELESS_ADAPTER" >> $TEMP_CONF
echo -e "\nauto $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet manual" >> $DEFAULT_CONF echo -e "\nauto $WIRELESS_ADAPTER\niface $WIRELESS_ADAPTER inet manual" >> $TEMP_CONF
fi fi
sed -i 's/^bridge=.*/bridge=br0/' /etc/hostapd.conf sed -i 's/^bridge=.*/bridge=br0/' /etc/hostapd.conf
;; ;;
# NAT
1) 1)
sed -i '/^#/ d' $DEFAULT_CONF sed -i '/^#/ d' $TEMP_CONF
apt-get -qq -y --no-install-recommends install isc-dhcp-server 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 "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/^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 sed -i 's/^#authoritative;/authoritative;/' /etc/dhcp/dhcpd.conf
...@@ -159,14 +173,15 @@ while true; do ...@@ -159,14 +173,15 @@ while true; do
service isc-dhcp-server restart service isc-dhcp-server restart
sed -i '/^bridge=.*/ d' /etc/hostapd.conf sed -i '/^bridge=.*/ d' /etc/hostapd.conf
;; ;;
3) exit;;
255) exit;; 255) exit;;
esac esac
dialog --title "Manually adjust network configuration if needed" --no-collapse --editbox $DEFAULT_CONF 30 0 2> $DEFAULT_CONF".tmp" 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"
[[ $? = 0 ]] && mv $DEFAULT_CONF".tmp" $NETWORK_CONF if [[ $? = 0 ]]; then
systemctl daemon-reload mv $TEMP_CONF $NETWORK_CONF
service networking restart reboot
service hostapd restart fi
exit fi
;; ;;
"Booting" ) "Booting" )
...@@ -180,7 +195,12 @@ while true; do ...@@ -180,7 +195,12 @@ while true; do
;; ;;
"Wireless" ) "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 nmtui-connect
fi
;; ;;
"Diagnostics" ) "Diagnostics" )
......
...@@ -723,7 +723,7 @@ fi ...@@ -723,7 +723,7 @@ fi
# Install basic stuff # 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 # 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