]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
wlan client: Generate wpa_supplicant configuration file for EAP
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 5 May 2017 10:31:36 +0000 (11:31 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 5 May 2017 10:31:36 +0000 (11:31 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/initscripts/system/wlanclient

index ee24c43a19a68e52cedf4ad652f46d1ffe8e9255..b32a4cb4acada5a7fc1c96d589c7b353ae2fc6b0 100644 (file)
@@ -62,7 +62,11 @@ function wpa_supplicant_make_config() {
                        --wpa-mode="${line[4]}" \
                        --ssid="${line[5]}" \
                        --psk="${line[6]}" \
-                       --priority="${line[7]}"
+                       --priority="${line[7]}" \
+                       --auth-mode="${line[8]}" \
+                       --anonymous-identity="${line[9]}" \
+                       --identity="${line[10]}" \
+                       --password="${line[11]}"
 
                items=$(( ${items} + 1 ))
 
@@ -82,12 +86,16 @@ function wpa_supplicant_config_line() {
        local config=${2}
        shift 2
 
+       local anonymous_identity
        local auth_alg
+       local auth_mode
+       local identity
        local proto
        local key_mgmt
        local pairwise
        local group
        local mode
+       local password
        local priority
        local psk
        local ssid
@@ -98,9 +106,21 @@ function wpa_supplicant_config_line() {
 
        while [ $# -gt 0 ]; do
                case "${1}" in
+                       --anonymous-identity=*)
+                               anonymous_identity=${1#--anonymous-identity=}
+                               ;;
+                       --auth-mode=*)
+                               auth_mode=${1#--auth-mode=}
+                               ;;
+                       --identity=*)
+                               identity=${1#--identity=}
+                               ;;
                        --mode=*)
                                mode=${1#--mode=}
                                ;;
+                       --password=*)
+                               password=${1#--password=}
+                               ;;
                        --priority=*)
                                priority=${1#--priority=}
                                ;;
@@ -121,6 +141,9 @@ function wpa_supplicant_config_line() {
        done
 
        case "${mode}" in
+               EAP)
+                       key_mgmt="WPA-EAP"
+                       ;;
                WPA2)
                        auth_alg="OPEN"
                        proto="RSN"
@@ -149,7 +172,7 @@ function wpa_supplicant_config_line() {
                        ;;
        esac
 
-       if [ "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
+       if [ "${mode}" = "EAP" -o "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
                case "${wpa_mode}" in
                        CCMP-CCMP)
                                pairwise="CCMP"
@@ -205,6 +228,24 @@ function wpa_supplicant_config_line() {
                        echo "  priority=${priority}"
                fi
 
+               # EAP
+               if [ "${mode}" = "EAP" ]; then
+                       if [ -n "${auth_mode}" ]; then
+                               echo "  eap=${auth_mode}"
+                       else
+                               echo "  eap=PEAP TTLS"
+                       fi
+
+                       if [ "${auth_mode}" = "TTLS" -a -n "${anonymous_identity}" ]; then
+                               echo "  anonymous_identity=\"${anonymous_identity}\""
+                       fi
+
+                       if [ -n "${identity}" -a -n "${password}" ]; then
+                               echo "  identity=\"${identity}\""
+                               echo "  password=\"${password}\""
+                       fi
+               fi
+
                echo "}"
                echo
        ) >> ${config}