diff --git a/packages/network/connman/init.d/21_network b/packages/network/connman/init.d/21_network index 970b26552e..a678a1297f 100644 --- a/packages/network/connman/init.d/21_network +++ b/packages/network/connman/init.d/21_network @@ -22,182 +22,175 @@ # # runlevels: openelec, installer, textmode -case $RUNLEVEL in - boot) - if [ -f /var/config/settings.conf ]; then - . /var/config/settings.conf +if [ -f /var/config/settings.conf ]; then + . /var/config/settings.conf - # save original interface names (eth0, eth1) - NET_IFACE_NAME=$NET_IFACE - NET2_IFACE_NAME=$NET2_IFACE +# save original interface names (eth0, eth1) + NET_IFACE_NAME=$NET_IFACE + NET2_IFACE_NAME=$NET2_IFACE +fi + +[ -z "$NET_HOSTNAME" ] && NET_HOSTNAME="openelec" + +# setup hostname + progress "Setup hostname" + echo "$NET_HOSTNAME" > /proc/sys/kernel/hostname + +# create /etc/hosts file, useful for gethostbyname(localhost) + progress "creating /etc/hosts" + echo -e "127.0.0.1\tlocalhost $NET_HOSTNAME" > /etc/hosts + +# add user defined hosts.conf entry's + [ -f $HOME/.config/hosts.conf ] && cat $HOME/.config/hosts.conf >> /etc/hosts + +( + # setup Networking 1 + progress "setup Networking 1" + + CONNMAN_PROFILE="/var/lib/connman/default.profile" + + mkdir -p /var/run/connman + mkdir -p /var/lib/connman + + # NETWORK 1: ( LAN / WLAN ) + for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30; do + if [ ! -f /sys/class/net/$NET_IFACE/address ]; then + logger -t Connman "### [$i] cannot find /sys/class/net/$NET_IFACE/address ###" + else + logger -t Connman "### [$i] found /sys/class/net/$NET_IFACE/address, continue ###" + NET_IFACE=`cat /sys/class/net/$NET_IFACE/address | sed 's/://g'` + break + fi + usleep 500000 + done + + if [ "$NET_NETWORK" = "WLAN" -a -n "$NET_SSID" ]; then + NET_SSID_HEX=`echo -n "$NET_SSID" | od -tx1 | cut -c8-| tr -d ' \n'` + + # NET_SECURITY: ( NONE / WEP / WPA/WPA2 ) + if [ "$NET_SECURITY" = "WEP" -a -n "$NET_PASSPHRASE" ]; then + MODE="managed_wep" + elif [ "$NET_SECURITY" = "WPA/WPA2" -a -n "$NET_PASSPHRASE" ]; then + MODE="managed_psk" + else + MODE="managed_none" + fi + + if [ "$NET_HIDDEN" = "true" ]; then + echo "[wifi_${NET_IFACE}_hidden_${MODE}]" > $CONNMAN_PROFILE + else + echo "[wifi_${NET_IFACE}_${NET_SSID_HEX}_${MODE}]" > $CONNMAN_PROFILE + fi + + echo "Name=$NET_SSID" >> $CONNMAN_PROFILE + echo "SSID=$NET_SSID_HEX" >> $CONNMAN_PROFILE + [ -n "$NET_PASSPHRASE" ] && echo "Passphrase=$NET_PASSPHRASE" >> $CONNMAN_PROFILE + echo "Favorite=true" >> $CONNMAN_PROFILE + echo "AutoConnect=true" >> $CONNMAN_PROFILE + else + MODE="cable" + echo "[ethernet_${NET_IFACE}_${MODE}]" > $CONNMAN_PROFILE fi - [ -z "$NET_HOSTNAME" ] && NET_HOSTNAME="openelec" + # IP settings + if [ -z "$NET_IPADDRESS" ]; then + echo "IPv4.method=dhcp" >> $CONNMAN_PROFILE + else + echo "IPv4.method=manual" >> $CONNMAN_PROFILE + echo "IPv4.local_address=$NET_IPADDRESS" >> $CONNMAN_PROFILE + [ -n "$NET_PREFIXLEN" ] && echo "IPv4.netmask_prefixlen=$NET_PREFIXLEN" >> $CONNMAN_PROFILE + [ -n "$NET_GATEWAY" ] && echo "IPv4.gateway=$NET_GATEWAY" >> $CONNMAN_PROFILE + fi - # setup hostname - progress "Setup hostname" - echo "$NET_HOSTNAME" > /proc/sys/kernel/hostname + [ -n "$NET_DNS1" ] && NET_NAMESERVER="$NET_DNS1" + [ -n "$NET_DNS2" ] && NET_NAMESERVER="$NET_NAMESERVER;$NET_DNS2" + [ -n "$NET_DNS3" ] && NET_NAMESERVER="$NET_NAMESERVER;$NET_DNS3" + [ -n "$NET_NAMESERVER" ] && echo "Nameservers=$NET_NAMESERVER;" >> $CONNMAN_PROFILE - # create /etc/hosts file, useful for gethostbyname(localhost) - progress "creating /etc/hosts" - echo -e "127.0.0.1\tlocalhost $NET_HOSTNAME" > /etc/hosts + # END OF NETWORK 1 - # add user defined hosts.conf entry's - [ -f $HOME/.config/hosts.conf ] && cat $HOME/.config/hosts.conf >> /etc/hosts - - ( - # setup Networking 1 - progress "setup Networking 1" - - CONNMAN_PROFILE="/var/lib/connman/default.profile" - - mkdir -p /var/run/connman - mkdir -p /var/lib/connman - - # NETWORK 1: ( LAN / WLAN ) - for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30; do - if [ ! -f /sys/class/net/$NET_IFACE/address ]; then - logger -t Connman "### [$i] cannot find /sys/class/net/$NET_IFACE/address ###" - else - logger -t Connman "### [$i] found /sys/class/net/$NET_IFACE/address, continue ###" - NET_IFACE=`cat /sys/class/net/$NET_IFACE/address | sed 's/://g'` - break - fi - usleep 500000 - done - - if [ "$NET_NETWORK" = "WLAN" -a -n "$NET_SSID" ]; then - NET_SSID_HEX=`echo -n "$NET_SSID" | od -tx1 | cut -c8-| tr -d ' \n'` - - # NET_SECURITY: ( NONE / WEP / WPA/WPA2 ) - if [ "$NET_SECURITY" = "WEP" -a -n "$NET_PASSPHRASE" ]; then - MODE="managed_wep" - elif [ "$NET_SECURITY" = "WPA/WPA2" -a -n "$NET_PASSPHRASE" ]; then - MODE="managed_psk" - else - MODE="managed_none" - fi - - if [ "$NET_HIDDEN" = "true" ]; then - echo "[wifi_${NET_IFACE}_hidden_${MODE}]" > $CONNMAN_PROFILE - else - echo "[wifi_${NET_IFACE}_${NET_SSID_HEX}_${MODE}]" > $CONNMAN_PROFILE - fi - - echo "Name=$NET_SSID" >> $CONNMAN_PROFILE - echo "SSID=$NET_SSID_HEX" >> $CONNMAN_PROFILE - [ -n "$NET_PASSPHRASE" ] && echo "Passphrase=$NET_PASSPHRASE" >> $CONNMAN_PROFILE - echo "Favorite=true" >> $CONNMAN_PROFILE - echo "AutoConnect=true" >> $CONNMAN_PROFILE - else - MODE="cable" - echo "[ethernet_${NET_IFACE}_${MODE}]" > $CONNMAN_PROFILE - fi - - # IP settings - if [ -z "$NET_IPADDRESS" ]; then - echo "IPv4.method=dhcp" >> $CONNMAN_PROFILE - else - echo "IPv4.method=manual" >> $CONNMAN_PROFILE - echo "IPv4.local_address=$NET_IPADDRESS" >> $CONNMAN_PROFILE - [ -n "$NET_PREFIXLEN" ] && echo "IPv4.netmask_prefixlen=$NET_PREFIXLEN" >> $CONNMAN_PROFILE - [ -n "$NET_GATEWAY" ] && echo "IPv4.gateway=$NET_GATEWAY" >> $CONNMAN_PROFILE - fi - - [ -n "$NET_DNS1" ] && NET_NAMESERVER="$NET_DNS1" - [ -n "$NET_DNS2" ] && NET_NAMESERVER="$NET_NAMESERVER;$NET_DNS2" - [ -n "$NET_DNS3" ] && NET_NAMESERVER="$NET_NAMESERVER;$NET_DNS3" - [ -n "$NET_NAMESERVER" ] && echo "Nameservers=$NET_NAMESERVER;" >> $CONNMAN_PROFILE - - # END OF NETWORK 1 - - # NETWORK 2: ( LAN / WLAN ) - if [ -n "$NET2_NETWORK" -a "$NET2_NETWORK" != "NONE" -a "$NET2_IFACE_NAME" != "$NET_IFACE_NAME" ]; then - # setup Networking 2 - progress "setup Networking 2" - - for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30; do - if [ ! -f /sys/class/net/$NET2_IFACE/address ]; then - logger -t Connman "### [$i] cannot find /sys/class/net/$NET2_IFACE/address ###" - else - logger -t Connman "### [$i] found /sys/class/net/$NET2_IFACE/address, continue ###" - NET2_IFACE=`cat /sys/class/net/$NET2_IFACE/address | sed 's/://g'` - break - fi - usleep 500000 - done - - if [ "$NET2_NETWORK" = "WLAN" -a -n "$NET2_SSID" ]; then - NET2_SSID_HEX=`echo -n "$NET2_SSID" | od -tx1 | cut -c8-| tr -d ' \n'` - - # NET_SECURITY: ( NONE / WEP / WPA/WPA2 ) - if [ "$NET2_SECURITY" = "WEP" -a -n "$NET2_PASSPHRASE" ]; then - MODE="managed_wep" - elif [ "$NET2_SECURITY" = "WPA/WPA2" -a -n "$NET2_PASSPHRASE" ]; then - MODE="managed_psk" - else - MODE="managed_none" - fi - - if [ "$NET2_HIDDEN" = "true" ]; then - echo "[wifi_${NET2_IFACE}_hidden_${MODE}]" >> $CONNMAN_PROFILE - else - echo "[wifi_${NET2_IFACE}_${NET2_SSID_HEX}_${MODE}]" >> $CONNMAN_PROFILE - fi - - echo "Name=$NET2_SSID" >> $CONNMAN_PROFILE - echo "SSID=$NET2_SSID_HEX" >> $CONNMAN_PROFILE - [ -n "$NET2_PASSPHRASE" ] && echo "Passphrase=$NET2_PASSPHRASE" >> $CONNMAN_PROFILE - echo "Favorite=true" >> $CONNMAN_PROFILE - echo "AutoConnect=true" >> $CONNMAN_PROFILE - else - MODE="cable" - echo "[ethernet_${NET2_IFACE}_${MODE}]" >> $CONNMAN_PROFILE - fi - - # IP settings - if [ -z "$NET2_IPADDRESS" ]; then - echo "IPv4.method=dhcp" >> $CONNMAN_PROFILE - else - echo "IPv4.method=manual" >> $CONNMAN_PROFILE - echo "IPv4.local_address=$NET2_IPADDRESS" >> $CONNMAN_PROFILE - [ -n "$NET2_PREFIXLEN" ] && echo "IPv4.netmask_prefixlen=$NET2_PREFIXLEN" >> $CONNMAN_PROFILE - [ -n "$NET2_GATEWAY" ] && echo "IPv4.gateway=$NET2_GATEWAY" >> $CONNMAN_PROFILE - fi - - [ -n "$NET2_DNS1" ] && NET2_NAMESERVER="$NET2_DNS1" - [ -n "$NET2_DNS2" ] && NET2_NAMESERVER="$NET2_NAMESERVER;$NET2_DNS2" - [ -n "$NET2_DNS3" ] && NET2_NAMESERVER="$NET2_NAMESERVER;$NET2_DNS3" - [ -n "$NET2_NAMESERVER" ] && echo "Nameservers=$NET2_NAMESERVER;" >> $CONNMAN_PROFILE - - ( - # wait some time, put eth1 (NET2_IFACE) down and then up - # this is just temporary solution until I figure out how to - # do properly with connman - usleep 5000000 - ifconfig $NET2_IFACE_NAME down - usleep 1000000 - ifconfig $NET2_IFACE_NAME up - )& + # NETWORK 2: ( LAN / WLAN ) + if [ -n "$NET2_NETWORK" -a "$NET2_NETWORK" != "NONE" -a "$NET2_IFACE_NAME" != "$NET_IFACE_NAME" ]; then + # setup Networking 2 + progress "setup Networking 2" + for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30; do + if [ ! -f /sys/class/net/$NET2_IFACE/address ]; then + logger -t Connman "### [$i] cannot find /sys/class/net/$NET2_IFACE/address ###" + else + logger -t Connman "### [$i] found /sys/class/net/$NET2_IFACE/address, continue ###" + NET2_IFACE=`cat /sys/class/net/$NET2_IFACE/address | sed 's/://g'` + break fi - # END OF NETWORK 2 + usleep 500000 + done - # overwrite created profile with custom one if exist (debug use only) - DEBUG_CONNMAN_PROFILE="/storage/.config/connman.profile" - [ -f "$DEBUG_CONNMAN_PROFILE" ] && cp $DEBUG_CONNMAN_PROFILE $CONNMAN_PROFILE - [ -f "$DEBUG_CONNMAN_PROFILE" ] && mv $DEBUG_CONNMAN_PROFILE ${DEBUG_CONNMAN_PROFILE}_saved + if [ "$NET2_NETWORK" = "WLAN" -a -n "$NET2_SSID" ]; then + NET2_SSID_HEX=`echo -n "$NET2_SSID" | od -tx1 | cut -c8-| tr -d ' \n'` - # starting Connection manager - progress "starting Connection manager" + # NET_SECURITY: ( NONE / WEP / WPA/WPA2 ) + if [ "$NET2_SECURITY" = "WEP" -a -n "$NET2_PASSPHRASE" ]; then + MODE="managed_wep" + elif [ "$NET2_SECURITY" = "WPA/WPA2" -a -n "$NET2_PASSPHRASE" ]; then + MODE="managed_psk" + else + MODE="managed_none" + fi - while true; do - /usr/sbin/connmand -n > /dev/null 2>&1 - usleep 250000 - done - )& - ;; + if [ "$NET2_HIDDEN" = "true" ]; then + echo "[wifi_${NET2_IFACE}_hidden_${MODE}]" >> $CONNMAN_PROFILE + else + echo "[wifi_${NET2_IFACE}_${NET2_SSID_HEX}_${MODE}]" >> $CONNMAN_PROFILE + fi - poweroff|reboot) - ;; -esac + echo "Name=$NET2_SSID" >> $CONNMAN_PROFILE + echo "SSID=$NET2_SSID_HEX" >> $CONNMAN_PROFILE + [ -n "$NET2_PASSPHRASE" ] && echo "Passphrase=$NET2_PASSPHRASE" >> $CONNMAN_PROFILE + echo "Favorite=true" >> $CONNMAN_PROFILE + echo "AutoConnect=true" >> $CONNMAN_PROFILE + else + MODE="cable" + echo "[ethernet_${NET2_IFACE}_${MODE}]" >> $CONNMAN_PROFILE + fi + + # IP settings + if [ -z "$NET2_IPADDRESS" ]; then + echo "IPv4.method=dhcp" >> $CONNMAN_PROFILE + else + echo "IPv4.method=manual" >> $CONNMAN_PROFILE + echo "IPv4.local_address=$NET2_IPADDRESS" >> $CONNMAN_PROFILE + [ -n "$NET2_PREFIXLEN" ] && echo "IPv4.netmask_prefixlen=$NET2_PREFIXLEN" >> $CONNMAN_PROFILE + [ -n "$NET2_GATEWAY" ] && echo "IPv4.gateway=$NET2_GATEWAY" >> $CONNMAN_PROFILE + fi + + [ -n "$NET2_DNS1" ] && NET2_NAMESERVER="$NET2_DNS1" + [ -n "$NET2_DNS2" ] && NET2_NAMESERVER="$NET2_NAMESERVER;$NET2_DNS2" + [ -n "$NET2_DNS3" ] && NET2_NAMESERVER="$NET2_NAMESERVER;$NET2_DNS3" + [ -n "$NET2_NAMESERVER" ] && echo "Nameservers=$NET2_NAMESERVER;" >> $CONNMAN_PROFILE + +( + # wait some time, put eth1 (NET2_IFACE) down and then up + # this is just temporary solution until I figure out how to + # do properly with connman + usleep 5000000 + ifconfig $NET2_IFACE_NAME down + usleep 1000000 + ifconfig $NET2_IFACE_NAME up +)& + + fi + # END OF NETWORK 2 + + # overwrite created profile with custom one if exist (debug use only) + DEBUG_CONNMAN_PROFILE="/storage/.config/connman.profile" + [ -f "$DEBUG_CONNMAN_PROFILE" ] && cp $DEBUG_CONNMAN_PROFILE $CONNMAN_PROFILE + [ -f "$DEBUG_CONNMAN_PROFILE" ] && mv $DEBUG_CONNMAN_PROFILE ${DEBUG_CONNMAN_PROFILE}_saved + + # starting Connection manager + progress "starting Connection manager" + + while true; do + /usr/sbin/connmand -n > /dev/null 2>&1 + usleep 250000 + done +)&