Преглед изворни кода

Change wifi settings via control panel

Bob Mottram пре 9 година
родитељ
комит
3b263e4074
1 измењених фајлова са 112 додато и 9 уклоњено
  1. 112
    9
      src/freedombone-controlpanel

+ 112
- 9
src/freedombone-controlpanel Прегледај датотеку

@@ -60,10 +60,27 @@ SMTP_PROXY_PORT=465
60 60
 SMTP_PROXY_USERNAME=''
61 61
 SMTP_PROXY_PASSWORD=''
62 62
 
63
+WIFI_INTERFACE=wlan0
64
+WIFI_SSID=
65
+WIFI_TYPE='wpa2-psk'
66
+WIFI_PASSPHRASE=
67
+
63 68
 USB_DRIVE=sdb
64 69
 # get default USB from config file
65 70
 CONFIGURATION_FILE=/root/${PROJECT_NAME}.cfg
66 71
 if [ -f $CONFIGURATION_FILE ]; then
72
+    if grep -q "WIFI_INTERFACE=" $CONFIGURATION_FILE; then
73
+        WIFI_INTERFACE=$(cat $CONFIGURATION_FILE | grep "WIFI_INTERFACE=" | awk -F '=' '{print $2}')
74
+    fi
75
+    if grep -q "WIFI_TYPE=" $CONFIGURATION_FILE; then
76
+        WIFI_TYPE=$(cat $CONFIGURATION_FILE | grep "WIFI_TYPE=" | awk -F '=' '{print $2}')
77
+    fi
78
+    if grep -q "WIFI_SSID=" $CONFIGURATION_FILE; then
79
+        WIFI_SSID=$(cat $CONFIGURATION_FILE | grep "WIFI_SSID=" | awk -F '=' '{print $2}')
80
+    fi
81
+    if grep -q "WIFI_PASSPHRASE=" $CONFIGURATION_FILE; then
82
+        WIFI_PASSPHRASE=$(cat $CONFIGURATION_FILE | grep "WIFI_PASSPHRASE=" | awk -F '=' '{print $2}')
83
+    fi
67 84
     if grep -q "USB_DRIVE=" $CONFIGURATION_FILE; then
68 85
         USB_DRIVE=$(cat $CONFIGURATION_FILE | grep "USB_DRIVE=" | awk -F '=' '{print $2}')
69 86
         if [[ $USB_DRIVE == *"dev"* ]]; then
@@ -1654,6 +1671,90 @@ Enter a static local IP address for this system.\n\nIt will typically be 192.168
1654 1671
     fi
1655 1672
 }
1656 1673
 
1674
+function wifi_settings {
1675
+    PREV_WIFI_INTERFACE=$WIFI_INTERFACE
1676
+    PREV_WIFI_SSID=$WIFI_SSID
1677
+    PREV_WIFI_TYPE=$WIFI_TYPE
1678
+    PREV_WIFI_PASSPHRASE=$WIFI_PASSPHRASE
1679
+
1680
+    data=$(tempfile 2>/dev/null)
1681
+    trap "rm -f $data" 0 1 2 5 15
1682
+    dialog --backtitle $"Freedombone Control Panel" \
1683
+           --title $"Wifi Settings" \
1684
+           --form $"\nIf you wish to use wifi rather than wired ethernet then enter the details below, otherwise just select Ok:" 15 55 5 \
1685
+           $"Interface:" 1 1 "$WIFI_INTERFACE" 1 16 16 15 \
1686
+           $"SSID:" 2 1 "$WIFI_SSID" 2 16 30 30 \
1687
+           $"Type:" 3 1 "$WIFI_TYPE" 3 16 16 15 \
1688
+           $"Passphrase:" 4 1 "$WIFI_PASSPHRASE" 4 16 30 30 \
1689
+           2> $data
1690
+    sel=$?
1691
+    case $sel in
1692
+        1) return;;
1693
+        255) return;;
1694
+    esac
1695
+    NEW_WIFI_INTERFACE=$(cat $data | sed -n 1p)
1696
+    NEW_WIFI_SSID=$(cat $data | sed -n 2p)
1697
+    NEW_WIFI_TYPE=$(cat $data | sed -n 3p)
1698
+    NEW_WIFI_PASSPHRASE=$(cat $data | sed -n 4p)
1699
+
1700
+    if [[ $NEW_WIFI_TYPE != 'none' && $NEW_WIFI_TYPE != 'wpa2-psk' ]]; then
1701
+        return
1702
+    fi
1703
+    
1704
+    if [[ $NEW_WIFI_TYPE != 'none' ]]; then
1705
+        if [ ! $NEW_WIFI_PASSPHRASE ]; then
1706
+            return
1707
+        fi
1708
+        if [ ${#NEW_WIFI_PASSPHRASE} -lt 2 ]; then
1709
+            return
1710
+        fi  
1711
+        ${PROJECT_NAME}-wifi -i $NEW_WIFI_INTERFACE -s $NEW_WIFI_SSID -t $NEW_WIFI_TYPE -p $NEW_WIFI_PASSPHRASE
1712
+    else
1713
+        ${PROJECT_NAME}-wifi -i $NEW_WIFI_INTERFACE -s $NEW_WIFI_SSID -t $NEW_WIFI_TYPE     
1714
+    fi
1715
+
1716
+    if [[ $PREV_WIFI_INTERFACE != $NEW_WIFI_INTERFACE || $PREV_WIFI_SSID != $NEW_WIFI_SSID || $PREV_WIFI_TYPE != $NEW_WIFI_TYPE || $PREV_WIFI_PASSPHRASE != $NEW_WIFI_PASSPHRASE ]]; then
1717
+        dialog --title $"Wifi Settings" \
1718
+               --backtitle $"Freedombone Control Panel" \
1719
+               --defaultno \
1720
+               --yesno $"\nWifi settings changed. Restart networking (you will be disconnected)?" 10 60
1721
+        sel=$?
1722
+        case $sel in
1723
+            1) return;;
1724
+            255) return;;
1725
+        esac
1726
+
1727
+        WIFI_INTERFACE=$NEW_WIFI_INTERFACE
1728
+        WIFI_SSID=$NEW_WIFI_SSID
1729
+        WIFI_TYPE=$NEW_WIFI_TYPE
1730
+        WIFI_PASSPHRASE=$NEW_WIFI_PASSPHRASE
1731
+        
1732
+        # update the configuration
1733
+        if ! grep -q "WIFI_INTERFACE=" $CONFIGURATION_FILE; then
1734
+            echo "WIFI_INTERFACE=$WIFI_INTERFACE" >> $CONFIGURATION_FILE
1735
+        else
1736
+            sed -i "s|WIFI_INTERFACE=.*|WIFI_INTERFACE=$WIFI_INTERFACE|g" $CONFIGURATION_FILE
1737
+        fi
1738
+        if ! grep -q "WIFI_TYPE=" $CONFIGURATION_FILE; then
1739
+            echo "WIFI_TYPE=$WIFI_TYPE" >> $CONFIGURATION_FILE
1740
+        else
1741
+            sed -i "s|WIFI_TYPE=.*|WIFI_TYPE=$WIFI_TYPE|g" $CONFIGURATION_FILE
1742
+        fi
1743
+        if ! grep -q "WIFI_SSID=" $CONFIGURATION_FILE; then
1744
+            echo "WIFI_SSID=$WIFI_SSID" >> $CONFIGURATION_FILE
1745
+        else
1746
+            sed -i "s|WIFI_SSID=.*|WIFI_SSID=$WIFI_SSID|g" $CONFIGURATION_FILE
1747
+        fi
1748
+        if ! grep -q "WIFI_PASSPHRASE=" $CONFIGURATION_FILE; then
1749
+            echo "WIFI_PASSPHRASE=$WIFI_PASSPHRASE" >> $CONFIGURATION_FILE
1750
+        else
1751
+            sed -i "s|WIFI_PASSPHRASE=.*|WIFI_PASSPHRASE=$WIFI_PASSPHRASE|g" $CONFIGURATION_FILE
1752
+        fi
1753
+        
1754
+        systemctl restart networking
1755
+    fi  
1756
+}
1757
+
1657 1758
 function menu_backup_restore {
1658 1759
     while true
1659 1760
     do
@@ -1836,7 +1937,7 @@ function menu_top_level {
1836 1937
         trap "rm -f $data" 0 1 2 5 15
1837 1938
         dialog --backtitle $"Freedombone Control Panel" \
1838 1939
                --title $"Control Panel" \
1839
-               --radiolist $"Choose an operation:" 28 70 21 \
1940
+               --radiolist $"Choose an operation:" 29 70 22 \
1840 1941
                1 $"About this system" off \
1841 1942
                2 $"Backup and Restore" off \
1842 1943
                3 $"Reset Tripwire" off \
@@ -1854,10 +1955,11 @@ function menu_top_level {
1854 1955
                15 $"Change the name of this system" off \
1855 1956
                16 $"Set the TLS date/time source" off \
1856 1957
                17 $"Set a static local IP address" off \
1857
-               18 $"Check for updates" off \
1858
-               19 $"Power off the system" off \
1859
-               20 $"Restart the system" off \
1860
-               21 $"Exit" on 2> $data
1958
+               18 $"Wifi Settings" off \
1959
+               19 $"Check for updates" off \
1960
+               20 $"Power off the system" off \
1961
+               21 $"Restart the system" off \
1962
+               22 $"Exit" on 2> $data
1861 1963
         sel=$?
1862 1964
         case $sel in
1863 1965
             1) exit 1;;
@@ -1881,10 +1983,11 @@ function menu_top_level {
1881 1983
             15) change_system_name;;
1882 1984
             16) set_tls_time_source;;
1883 1985
             17) set_static_IP;;
1884
-            18) check_for_updates;;
1885
-            19) shut_down_system;;
1886
-            20) restart_system;;
1887
-            21) break;;
1986
+            18) wifi_settings;;
1987
+            19) check_for_updates;;
1988
+            20) shut_down_system;;
1989
+            21) restart_system;;
1990
+            22) break;;
1888 1991
         esac
1889 1992
     done
1890 1993
 }