Bob Mottram 10 lat temu
rodzic
commit
21c9d44e90
1 zmienionych plików z 116 dodań i 11 usunięć
  1. 116
    11
      install-freedombone.sh

+ 116
- 11
install-freedombone.sh Wyświetl plik

@@ -306,12 +306,18 @@ REMOTE_BACKUPS_LOG=/var/log/remotebackups.log
306 306
 # Whether to enable wifi (on the BBB via USB)
307 307
 ENABLE_WIFI="no"
308 308
 
309
+# Whether to enable wifi hotspot (on the BBB via USB)
310
+ENABLE_WIFI_HOTSPOT="no"
311
+
309 312
 # ESSID for wifi
310 313
 WIFI_ESSID=
311 314
 
312 315
 # Optional wifi password
313 316
 WIFI_PASSWORD=
314 317
 
318
+# wifi interface
319
+WIFI_INTERFACE="wlan0"
320
+
315 321
 # message if something fails to install
316 322
 CHECK_MESSAGE="Check your internet connection, /etc/network/interfaces and /etc/resolv.conf, then delete $COMPLETION_FILE, run 'rm -fR /var/lib/apt/lists/* && apt-get update --fix-missing' and run this script again. If hash sum mismatches persist then try setting $DEBIAN_REPO to a different mirror and also change /etc/apt/sources.list."
317 323
 
@@ -363,7 +369,7 @@ function argument_checks {
363 369
           DOMAIN_NAME="tor-wifi"
364 370
           SYSTEM_TYPE=$VARIANT_TOR_WIFI
365 371
           ROUTE_THROUGH_TOR="yes"
366
-          ENABLE_WIFI="yes"
372
+          ENABLE_WIFI_HOTSPOT="yes"
367 373
       fi
368 374
       if [[ $DOMAIN_NAME == "tor" || $DOMAIN_NAME == "tor-dongle" || $DOMAIN_NAME == "tordongle" ]]; then
369 375
           DOMAIN_NAME="tor-dongle"
@@ -394,9 +400,15 @@ function read_configuration {
394 400
       if grep -q "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE; then
395 401
           LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
396 402
       fi
403
+      if grep -q "WIFI_INTERFACE" $CONFIGURATION_FILE; then
404
+          WIFI_INTERFACE=$(grep "WIFI_INTERFACE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
405
+      fi
397 406
       if grep -q "ENABLE_WIFI" $CONFIGURATION_FILE; then
398 407
           ENABLE_WIFI=$(grep "ENABLE_WIFI" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
399 408
       fi
409
+      if grep -q "ENABLE_WIFI_HOTSPOT" $CONFIGURATION_FILE; then
410
+          ENABLE_WIFI_HOTSPOT=$(grep "ENABLE_WIFI_HOTSPOT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
411
+      fi
400 412
       if grep -q "WIFI_PASSWORD" $CONFIGURATION_FILE; then
401 413
           WIFI_PASSWORD=$(grep "WIFI_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
402 414
       fi
@@ -7063,11 +7075,98 @@ function get_wifi_password {
7063 7075
   fi
7064 7076
 }
7065 7077
 
7078
+function enable_wifi_hotspot {
7079
+  if grep -Fxq "enable_wifi_hotspot" $COMPLETION_FILE; then
7080
+      return
7081
+  fi
7082
+  if [[ ENABLE_WIFI_HOTSPOT != "yes" ]]; then
7083
+      return
7084
+  fi
7085
+  apt-get -y install hostapd dnsmasq
7086
+
7087
+  get_wifi_essid
7088
+  get_wifi_password
7089
+
7090
+  # Create an ESSID if one doesn't exist
7091
+  if [ ! $WIFI_ESSID ]; then
7092
+      WIFI_ESSID="Freedom"$(openssl rand -base64 4)
7093
+  fi
7094
+  # Add a password
7095
+  if [ ! $WIFI_PASSWORD ]; then
7096
+      WIFI_PASSWORD=$(openssl rand -base64 8)
7097
+  fi
7098
+
7099
+  sed -i 's|#DAEMON_CONF=.*|DAEMON_CONF="/etc/hostapd/hostapd.conf"|g' /etc/default/hostapd
7100
+
7101
+  echo '### Wireless network name ###' > /etc/hostapd/hostapd.conf
7102
+  echo "interface=$WIFI_INTERFACE" >> /etc/hostapd/hostapd.conf
7103
+  echo '#' >> /etc/hostapd/hostapd.conf
7104
+  echo '### Set your bridge name ###' >> /etc/hostapd/hostapd.conf
7105
+  echo '#bridge=br0' >> /etc/hostapd/hostapd.conf
7106
+  echo '' >> /etc/hostapd/hostapd.conf
7107
+  echo '#driver' >> /etc/hostapd/hostapd.conf
7108
+  echo 'driver=nl80211' >> /etc/hostapd/hostapd.conf
7109
+  echo '' >> /etc/hostapd/hostapd.conf
7110
+  echo 'country_code=GB' >> /etc/hostapd/hostapd.conf
7111
+  echo '' >> /etc/hostapd/hostapd.conf
7112
+  echo "ssid=$WIFI_ESSID" >> /etc/hostapd/hostapd.conf
7113
+  echo '' >> /etc/hostapd/hostapd.conf
7114
+  echo 'channel=3' >> /etc/hostapd/hostapd.conf
7115
+  echo '' >> /etc/hostapd/hostapd.conf
7116
+  echo 'hw_mode=n' >> /etc/hostapd/hostapd.conf
7117
+  echo '' >> /etc/hostapd/hostapd.conf
7118
+  echo '# # Static WPA2 key configuration' >> /etc/hostapd/hostapd.conf
7119
+  echo '# #1=wpa1, 2=wpa2, 3=both' >> /etc/hostapd/hostapd.conf
7120
+  echo 'wpa=2' >> /etc/hostapd/hostapd.conf
7121
+  echo '' >> /etc/hostapd/hostapd.conf
7122
+  echo "wpa_passphrase=$WIFI_PASSWORD" >> /etc/hostapd/hostapd.conf
7123
+  echo '' >> /etc/hostapd/hostapd.conf
7124
+  echo '## Key management algorithms ##' >> /etc/hostapd/hostapd.conf
7125
+  echo 'wpa_key_mgmt=WPA-PSK' >> /etc/hostapd/hostapd.conf
7126
+  echo '#' >> /etc/hostapd/hostapd.conf
7127
+  echo '## Set cipher suites (encryption algorithms) ##' >> /etc/hostapd/hostapd.conf
7128
+  echo '## TKIP = Temporal Key Integrity Protocol' >> /etc/hostapd/hostapd.conf
7129
+  echo '## CCMP = AES in Counter mode with CBC-MAC' >> /etc/hostapd/hostapd.conf
7130
+  echo 'wpa_pairwise=TKIP' >> /etc/hostapd/hostapd.conf
7131
+  echo '#rsn_pairwise=CCMP' >> /etc/hostapd/hostapd.conf
7132
+  echo '#' >> /etc/hostapd/hostapd.conf
7133
+  echo '## Shared Key Authentication ##' >> /etc/hostapd/hostapd.conf
7134
+  echo 'auth_algs=1' >> /etc/hostapd/hostapd.conf
7135
+  echo '## Accept all MAC address ###' >> /etc/hostapd/hostapd.conf
7136
+  echo 'macaddr_acl=0' >> /etc/hostapd/hostapd.conf
7137
+  echo '#enables/disables broadcasting the ssid' >> /etc/hostapd/hostapd.conf
7138
+  echo 'ignore_broadcast_ssid=0' >> /etc/hostapd/hostapd.conf
7139
+  echo '# Needed for Windows clients' >> /etc/hostapd/hostapd.conf
7140
+  echo 'eapol_key_index_workaround=0' >> /etc/hostapd/hostapd.conf
7141
+
7142
+  service hostapd restart
7143
+
7144
+  sed -i "s/#interface=/interface=$WIFI_INTERFACE/" /etc/dnsmasq.conf
7145
+  sed -i 's/#dhcp-range=192.168.0.50,192.168.0.150,12h/dhcp-range=192.168.1.1,192.168.1.50,12h/g' /etc/dnsmasq.conf
7146
+
7147
+  service dnsmasq restart
7148
+
7149
+  # Add details to the README file
7150
+  if ! grep -q "Wifi Hotspot" /home/$MY_USERNAME/README; then
7151
+      echo '' >> /home/$MY_USERNAME/README
7152
+      echo '' >> /home/$MY_USERNAME/README
7153
+      echo 'Wifi Hotspot' >> /home/$MY_USERNAME/README
7154
+      echo '============' >> /home/$MY_USERNAME/README
7155
+      echo "ESSID: $WIFI_ESSID" >> /home/$MY_USERNAME/README
7156
+      echo "Wifi password: $WIFI_PASSWORD" >> /home/$MY_USERNAME/README
7157
+      chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
7158
+  fi
7159
+
7160
+  service networking restart
7161
+
7162
+  echo 'enable_wifi_hotspot' >> $COMPLETION_FILE
7163
+}
7164
+
7066 7165
 function enable_wifi {
7067 7166
   if grep -Fxq "enable_wifi" $COMPLETION_FILE; then
7068 7167
       return
7069 7168
   fi
7070
-  if [[ ENABLE_WIFI != "yes" ]]; then
7169
+  if [[ ENABLE_WIFI != "yes" || ENABLE_WIFI_HOTSPOT != "yes" ]]; then
7071 7170
       return
7072 7171
   fi
7073 7172
   sed -i 's/#auto wlan0/auto wlan0/g' /etc/network/interfaces
@@ -7080,23 +7179,28 @@ function enable_wifi {
7080 7179
   # Create an ESSID if one doesn't exist
7081 7180
   if [ ! $WIFI_ESSID ]; then
7082 7181
       WIFI_ESSID="Freedom"$(openssl rand -base64 4)
7083
-      sed -i "s/essid/$WIFI_ESSID/g" /etc/network/interfaces
7084 7182
   fi
7183
+  sed -i "s/essid/$WIFI_ESSID/g" /etc/network/interfaces
7184
+
7085 7185
   # Add a password
7086 7186
   if [ $WIFI_PASSWORD ]; then
7087 7187
       sed -i 's/#    wpa-psk  "password"/    wpa-psk  "wifipassword"/g' /etc/network/interfaces
7088 7188
       sed -i "s/wifipassword/$WIFI_PASSWORD/g" /etc/network/interfaces
7089 7189
   fi
7090 7190
 
7191
+  service networking restart
7192
+
7091 7193
   # Add details to the README file
7092
-  if ! grep -q "Wifi settings" /home/$MY_USERNAME/README; then
7093
-      echo '' >> /home/$MY_USERNAME/README
7094
-      echo '' >> /home/$MY_USERNAME/README
7095
-      echo 'Wifi Settings' >> /home/$MY_USERNAME/README
7096
-      echo '=============' >> /home/$MY_USERNAME/README
7097
-      echo "ESSID: $WIFI_ESSID" >> /home/$MY_USERNAME/README
7098
-      echo "Wifi password: $WIFI_PASSWORD" >> /home/$MY_USERNAME/README
7099
-      chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
7194
+  if [[ ENABLE_WIFI_HOTSPOT != "yes" ]]; then
7195
+      if ! grep -q "Wifi Settings" /home/$MY_USERNAME/README; then
7196
+          echo '' >> /home/$MY_USERNAME/README
7197
+          echo '' >> /home/$MY_USERNAME/README
7198
+          echo 'Wifi Settings' >> /home/$MY_USERNAME/README
7199
+          echo '=============' >> /home/$MY_USERNAME/README
7200
+          echo "ESSID: $WIFI_ESSID" >> /home/$MY_USERNAME/README
7201
+          echo "Wifi password: $WIFI_PASSWORD" >> /home/$MY_USERNAME/README
7202
+          chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
7203
+      fi
7100 7204
   fi
7101 7205
 
7102 7206
   echo 'enable_wifi' >> $COMPLETION_FILE
@@ -7126,6 +7230,7 @@ function install_final {
7126 7230
 read_configuration
7127 7231
 argument_checks
7128 7232
 install_not_on_BBB
7233
+enable_wifi_hotspot
7129 7234
 enable_wifi
7130 7235
 remove_default_user
7131 7236
 configure_firewall