slitaz-vz annotate base-scripts/network.sh @ rev 6

Remove ashism ==
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 26 08:27:32 2019 +0100 (2019-02-26)
parents 2d20f72ffb19
children
rev   line source
erjo@2 1 #!/bin/sh
erjo@2 2 # /etc/init.d/network.sh - Network initialization boot script.
erjo@2 3 # Config file is: /etc/network.conf
erjo@2 4 #
erjo@2 5 . /etc/init.d/rc.functions
erjo@2 6
erjo@2 7 if [ -z "$2" ]; then
erjo@2 8 . /etc/network.conf
erjo@2 9 else
erjo@2 10 . $2
erjo@2 11 fi
erjo@2 12
erjo@2 13
erjo@2 14 Boot() {
erjo@2 15 # Set hostname.
erjo@2 16 echo -n "Setting hostname..."
erjo@2 17 /bin/hostname -F /etc/hostname
erjo@2 18 status
erjo@2 19
erjo@2 20 # Configure loopback interface.
erjo@2 21 echo -n "Configuring loopback..."
erjo@2 22 /sbin/ifconfig lo 127.0.0.1 up
erjo@2 23 /sbin/route add 127.0.0.1 lo
erjo@2 24 status
erjo@2 25 }
erjo@2 26
erjo@2 27
erjo@2 28 eth() {
erjo@2 29 # Use ethernet
erjo@2 30 ifconfig $INTERFACE up
erjo@2 31 }
erjo@2 32
erjo@2 33 wifi() {
erjo@2 34 # For wifi. Users just have to enable it through yes and usually
erjo@2 35 # essid any will work and the interface is autodetected.
erjo@2 36 if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then
erjo@2 37 ifconfig $INTERFACE down
erjo@2 38
erjo@2 39 # Confirm if $WIFI_INTERFACE is the wifi interface
erjo@2 40 if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
erjo@2 41 echo "$WIFI_INTERFACE is not a wifi interface, changing it."
erjo@2 42 WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
erjo@2 43 while read dev; do iwconfig $dev 2>&1 | \
erjo@2 44 grep -iq "essid" && { echo $dev ; break; }; \
erjo@2 45 done)
erjo@2 46 [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
erjo@2 47 fi
erjo@2 48
erjo@2 49 echo -n "Configuring $WIFI_INTERFACE..."
erjo@2 50 ifconfig $WIFI_INTERFACE up
erjo@2 51 if iwconfig $WIFI_INTERFACE | grep -q "Tx-Power"; then
erjo@2 52 iwconfig $WIFI_INTERFACE txpower on
erjo@2 53 fi
erjo@2 54 status
erjo@2 55
erjo@2 56 [ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
erjo@2 57
erjo@2 58
erjo@2 59 IWCONFIG_ARGS=""
erjo@2 60 [ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
erjo@2 61 [ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
erjo@2 62 # unencrypted network
pascal@6 63 if [ "$WIFI_KEY" = "" -o "$WIFI_KEY_TYPE" = "none" ];
erjo@2 64 then
erjo@2 65 iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS
erjo@2 66 fi
erjo@2 67 # encrypted network
erjo@2 68 [ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
erjo@2 69 wep|WEP)
erjo@2 70 IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY"
erjo@2 71 iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS
erjo@2 72 # wpa_supplicant can also deal with wep encryption but iwconfig is preferred
erjo@2 73 # Tip: Use unquoted strings for hexadecimal key in wep_key0
erjo@2 74 # cat /etc/wpa_supplicant.conf > /tmp/wpa.conf
erjo@2 75 # cat >> /tmp/wpa.conf <<EOF
erjo@2 76 #ctrl_interface=/var/run/wpa_supplicant
erjo@2 77 #ctrl_interface_group=0
erjo@2 78 #ap_scan=1
erjo@2 79 #network={
erjo@2 80 # ssid="$WIFI_ESSID"
erjo@2 81 # scan_ssid=1
erjo@2 82 # key_mgmt=NONE
erjo@2 83 # wep_key0="$WIFI_KEY"
erjo@2 84 # wep_tx_keyidx=0
erjo@2 85 # priority=5
erjo@2 86 #}
erjo@2 87 #EOF
erjo@2 88 # echo "Starting wpa_supplicant for NONE/WEP..."
erjo@2 89 # wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
erjo@2 90 ;;
erjo@2 91 wpa|WPA) cat /etc/wpa_supplicant.conf > /tmp/wpa.conf # load pre-configured multiple profiles
erjo@2 92 cat >> /tmp/wpa.conf <<EOF
erjo@2 93 ctrl_interface=/var/run/wpa_supplicant
erjo@2 94 ctrl_interface_group=0
erjo@2 95 ap_scan=1
erjo@2 96 network={
erjo@2 97 ssid="$WIFI_ESSID"
erjo@2 98 scan_ssid=1
erjo@2 99 proto=WPA RSN
erjo@2 100 key_mgmt=WPA-PSK
erjo@2 101 psk="$WIFI_KEY"
erjo@2 102 priority=5
erjo@2 103 }
erjo@2 104 EOF
erjo@2 105 echo "Starting wpa_supplicant for WPA-PSK..."
erjo@2 106 wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
erjo@2 107 ;;
erjo@2 108 any|ANY) cat /etc/wpa_supplicant.conf > /tmp/wpa.conf
erjo@2 109 cat >> /tmp/wpa.conf <<EOF
erjo@2 110 ctrl_interface=/var/run/wpa_supplicant
erjo@2 111 ctrl_interface_group=0
erjo@2 112 ap_scan=1
erjo@2 113 network={
erjo@2 114 ssid="$WIFI_ESSID"
erjo@2 115 scan_ssid=1
erjo@2 116 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
erjo@2 117 group=CCMP TKIP WEP104 WEP40
erjo@2 118 pairwise=CCMP TKIP
erjo@2 119 psk="$WIFI_KEY"
erjo@2 120 priority=5
erjo@2 121 }
erjo@2 122 EOF
erjo@2 123 echo "Starting wpa_supplicant for any key type..."
erjo@2 124 wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
erjo@2 125 ;;
erjo@2 126 esac
erjo@2 127
erjo@2 128 rm -f /tmp/wpa.conf
erjo@2 129
erjo@2 130 INTERFACE=$WIFI_INTERFACE
erjo@2 131
erjo@2 132 fi
erjo@2 133
erjo@2 134 }
erjo@2 135
erjo@2 136 wpa()
erjo@2 137 {
erjo@2 138 DHCP_SCRIPT="/etc/init.d/wpa_action.sh"
erjo@2 139 wpa_cli -a$DHCP_SCRIPT -B
erjo@2 140 }
erjo@2 141
erjo@2 142 dhcp() {
erjo@2 143
erjo@2 144 # For a dynamic IP with DHCP.
erjo@2 145 if [ "$DHCP" = "yes" ] ; then
erjo@2 146 echo "Starting udhcpc client on: $INTERFACE..."
erjo@2 147 if [ -d /var/run/wpa_supplicant ]; then # wpa wireless && wpa_ctrl_open interface is up
erjo@2 148 wpa
erjo@2 149 else # fallback on udhcpc: wep, eth
erjo@2 150 /sbin/udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
erjo@2 151 fi
erjo@2 152 fi
erjo@2 153
erjo@2 154 }
erjo@2 155
erjo@2 156 static_ip() {
erjo@2 157 # For a static IP.
erjo@2 158 if [ "$STATIC" = "yes" ] ; then
erjo@2 159 echo "Configuring static IP on $INTERFACE: $IP..."
erjo@2 160 /sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
erjo@2 161 /sbin/route add default gateway $GATEWAY
erjo@2 162 # wpa_supplicant waits for wpa_cli
erjo@2 163 [ -d /var/run/wpa_supplicant ] && wpa_cli -B
erjo@2 164 # Multi-DNS server in $DNS_SERVER.
erjo@2 165 /bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
erjo@2 166 if [ -n "$DNS_SERVER" ], then
erjo@2 167 for NS in $DNS_SERVER
erjo@2 168 do
erjo@2 169 echo "nameserver $NS" >> /etc/resolv.conf
erjo@2 170 done
erjo@2 171 else
erjo@2 172 touch /etc/resolv.conf
erjo@2 173 fi
erjo@2 174 fi
erjo@2 175 }
erjo@2 176
erjo@2 177 # Stopping everything
erjo@2 178 Stop() {
erjo@2 179 echo "Stopping all interfaces"
erjo@2 180 ifconfig $INTERFACE down
erjo@2 181 ifconfig $WIFI_INTERFACE down
erjo@2 182
erjo@2 183 echo "Killing all daemons"
erjo@2 184 killall udhcpc
erjo@2 185 killall wpa_supplicant 2>/dev/null
erjo@2 186
erjo@2 187 if iwconfig $WIFI_INTERFACE | grep -q "Tx-Power"; then
erjo@2 188 echo "Shutting down wifi card"
erjo@2 189 iwconfig $WIFI_INTERFACE txpower off
erjo@2 190 fi
erjo@2 191 }
erjo@2 192
erjo@2 193 Start() {
erjo@2 194 eth
erjo@2 195 wifi
erjo@2 196 dhcp
erjo@2 197 static_ip
erjo@2 198 # change default lxpanel panel iface
erjo@2 199 sed -i "s/iface=.*/iface=$INTERFACE/" /etc/lxpanel/default/panels/panel
erjo@2 200 }
erjo@2 201
erjo@2 202
erjo@2 203 # looking for arguments:
erjo@2 204 if [ -z "$1" ]; then
erjo@2 205 Boot
erjo@2 206 Start
erjo@2 207 else
erjo@2 208 case $1 in
erjo@2 209 start)
erjo@2 210 Start ;;
erjo@2 211 stop)
erjo@2 212 Stop ;;
erjo@2 213 restart)
erjo@2 214 Stop
erjo@2 215 Start ;;
erjo@2 216 *)
erjo@2 217 echo ""
erjo@2 218 echo -e "\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart]"
erjo@2 219 echo ""
erjo@2 220 echo -e " Default configuration file is \033[1m/etc/network.conf\033[0m"
erjo@2 221 echo -e " You can specify another configuration file in the second argument:"
erjo@2 222 echo -e " \033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart] file.conf"
erjo@2 223 echo ""
erjo@2 224
erjo@2 225 esac
erjo@2 226 fi