#!/bin/sh

#WLAN Ralink starting script
#Author: djcrash
#Ver: 1.2

#checking all definitions
#-------------------------------------------------------------------------------
#WiFi Interface
. /var/config/wlan.conf
if [ $wlan == rt3070 ] || [ $wlan == rt2870 ]; then
    interface=ra0
    echo $interface detected
elif [ $wlan == rt73 ]; then
    interface=wlan0
    echo $interface detected
fi

#ESSID
if  grep -q "config.plugins.wireless.essid" /etc/enigma2/settings; then
    ESSID=`cat /etc/enigma2/settings | grep config.plugins.wireless.essid | awk '{gsub(/=/," "); print $2}'`
    #echo $ESSID
fi

#haslo
if  grep -q "config.plugins.wireless.encryption.key" /etc/enigma2/settings; then
    KEY=`cat /etc/enigma2/settings | grep config.plugins.wireless.encryption.key | awk '{gsub(/=/," "); print $2}'`
    #echo $KEY
fi

#typ szyfrowania
if  grep -q "config.plugins.wireless.encryption.type" /etc/enigma2/settings; then
    ENC_TYPE=`cat /etc/enigma2/settings | grep config.plugins.wireless.encryption.type | awk '{gsub(/=/," "); print $2}'`
    #echo $ENC_TYPE
fi

#typ algorytmu WPA2
if  grep -q "config.plugins.wireless.encryption.wpa2type" /etc/enigma2/settings; then
    WPA2_TYPE=`cat /etc/enigma2/settings | grep config.plugins.wireless.encryption.wpa2type | awk '{gsub(/=/," "); print $2}'`
    #echo $WPA2_TYPE
fi

#numer klucza WEP
if  grep -q "config.plugins.wireless.encryption.wepkeyindex" /etc/enigma2/settings; then
    WEP_INDEX=`cat /etc/enigma2/settings | grep config.plugins.wireless.encryption.wepkeyindex | awk '{gsub(/=/," "); print $2}'`
else
    WEP_INDEX=1
fi
#echo $WEP_INDEX

#Wireless Mode
if  grep -q "config.plugins.wireless.settings.WMode" /etc/enigma2/settings; then
    WMODE=`cat /etc/enigma2/settings | grep config.plugins.wireless.settings.WMode | awk '{gsub(/=/," "); print $2}'`
    #echo $WMODE
fi

#TxPower
if  grep -q "config.plugins.wireless.settings.TxPower" /etc/enigma2/settings; then
    TXPW=`cat /etc/enigma2/settings | grep config.plugins.wireless.settings.TxPower | awk '{gsub(/=/," "); print $2}'`
    #echo $TXPW
fi

#Link Mode
if  grep -q "config.plugins.wireless.settings.LinkMode" /etc/enigma2/settings; then
    LINK=`cat /etc/enigma2/settings | grep config.plugins.wireless.settings.LinkMode | awk '{gsub(/=/," "); print $2}'`
    #echo $LINK
fi

#Encryption Modes
#-------------------------------------------------------------------------------

NONE_ENC()
{
	iwpriv $interface set AuthMode=OPEN
	iwpriv $interface set EncrypType=NONE
	iwpriv $interface set SSID="$ESSID"
}

WEP_ENC()
{
	iwpriv $interface set AuthMode=SHARED
	iwpriv $interface set EncrypType=WEP
	iwpriv $interface set DefaultKeyID=$WEP_INDEX
        iwpriv $interface set Key$WEP_INDEX="$KEY"
	iwpriv $interface set SSID="$ESSID"
}

WPA_ENC()
{
	iwpriv $interface set AuthMode=WPAPSK
	iwpriv $interface set EncrypType=TKIP
	iwpriv $interface set SSID="$ESSID"
	iwpriv $interface set WPAPSK="$KEY"
	iwpriv $interface set SSID="$ESSID"
}

WPA2TKIP_ENC()
{
	iwpriv $interface set AuthMode=WPA2PSK
	iwpriv $interface set EncrypType=TKIP
	iwpriv $interface set SSID="$ESSID"
	iwpriv $interface set WPAPSK="$KEY"
	iwpriv $interface set SSID="$ESSID"
}

WPA2AES_ENC()
{
	iwpriv $interface set AuthMode=WPA2PSK
	iwpriv $interface set EncrypType=AES
	iwpriv $interface set SSID="$ESSID"
	iwpriv $interface set WPAPSK="$KEY"
	iwpriv $interface set SSID="$ESSID"
}

#Set connection link and encryption
#-------------------------------------------------------------------------------

if  grep -q "config.plugins.wireless.settings.LinkMode" /etc/enigma2/settings; then
    if [ "$LINK" = "Adhoc" ]; then
        iwpriv $interface set NetworkType=Adhoc
    fi
else
    iwpriv $interface set NetworkType=Infra
fi

        if  grep -q "config.plugins.wireless.settings.WMode" /etc/enigma2/settings; then
            if [ "$WMODE" = "11b/g-mixed" ]; then
                iwpriv $interface set WirelessMode=0
            elif [ "$WMODE" = "11B-only" ]; then
                iwpriv $interface set WirelessMode=1
            elif [ "$WMODE" = "11A-only" ]; then
                iwpriv $interface set WirelessMode=2
            elif [ "$WMODE" = "11a/b/g-mixed" ]; then
                iwpriv $interface set WirelessMode=3
            elif [ "$WMODE" = "11G-only" ]; then
                iwpriv $interface set WirelessMode=4
            elif [ "$WMODE" = "11ABGN-mixed" ]; then
                iwpriv $interface set WirelessMode=5
            elif [ "$WMODE" = "11N-only" ]; then
                iwpriv $interface set WirelessMode=6
            elif [ "$WMODE" = "11GN-mixed" ]; then
                iwpriv $interface set WirelessMode=7
            elif [ "$WMODE" = "11AN-mixed" ]; then
                iwpriv $interface set WirelessMode=8
            elif [ "$WMODE" = "11AGN-mixed" ]; then
                iwpriv $interface set WirelessMode=10
            fi
        else
            iwpriv $interface set WirelessMode=9
        fi

        if  grep -q "config.plugins.wireless.settings.TxPower" /etc/enigma2/settings; then
            if [ "$TXPW" = "20" ]; then
                iwpriv $interface set TxPower=20
            elif [ "$TXPW" = "40" ]; then
                iwpriv $interface set TxPower=40
            elif [ "$TXPW" = "60" ]; then
                iwpriv $interface set TxPower=60
            elif [ "$TXPW" = "80" ]; then
                iwpriv $interface set TxPower=80
            fi
        else
            iwpriv $interface set TxPower=100
        fi

        if  grep -q "config.plugins.wireless.encryption.enabled=true" /etc/enigma2/settings; then
            if [ "$ENC_TYPE" = "WEP" ]; then
                WEP_ENC
            elif [ "$ENC_TYPE" = "WPA" ]; then
                WPA_ENC
            elif [ "$ENC_TYPE" = "WPA2" ]; then
                if [ "$WPA2_TYPE" = "TKIP" ]; then
                    WPA2TKIP_ENC
                elif [ "$WPA2_TYPE" = "AES" ]; then
                    WPA2AES_ENC
                fi
            fi
            #echo "szyfrowanie wlaczone"
        else
            NONE_ENC
            #echo "szyfrowanie wylaczone"
        fi  