11f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#!/bin/sh 21f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 31f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry ShmidtCLI=wpa_cli 41f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 51f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtpbc() 61f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 71f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "Starting PBC mode" 81f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "Push button on the station within two minutes" 91f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if ! $CLI wps_pbc | grep -q OK; then 101f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "Failed to enable PBC mode" 111f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt fi 121f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 131f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 141f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtenter_pin() 151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 161f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "Enter a PIN from a station to be enrolled to the network." 171f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt read -p "Enrollee PIN: " pin 181f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt cpin=`$CLI wps_check_pin "$pin" | tail -1` 191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if [ "$cpin" = "FAIL-CHECKSUM" ]; then 201f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "Checksum digit is not valid" 211f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt read -p "Do you want to use this PIN (y/n)? " resp 221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt case "$resp" in 231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt y*) 241f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt cpin=`echo "$pin" | sed "s/[^1234567890]//g"` 251f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt ;; 261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt *) 271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt return 1 281f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt ;; 291f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt esac 301f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt fi 311f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if [ "$cpin" = "FAIL" ]; then 321f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "Invalid PIN: $pin" 331f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt return 1 341f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt fi 351f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "Enabling Enrollee PIN: $cpin" 361f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt $CLI wps_pin any "$cpin" 371f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 381f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 391f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtshow_config() 401f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 411f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt $CLI status wps 421f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 431f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 441f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtmain_menu() 451f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 461f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "WPS AP" 471f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "------" 481f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "1: Push button (activate PBC)" 491f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "2: Enter Enrollee PIN" 501f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "3: Show current configuration" 511f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "0: Exit wps-ap-cli" 521f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 531f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt read -p "Command: " cmd 541f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 551f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt case "$cmd" in 561f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 1) 571f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt pbc 581f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt ;; 591f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 2) 601f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt enter_pin 611f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt ;; 621f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 3) 631f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt show_config 641f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt ;; 651f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 0) 661f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt exit 0 671f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt ;; 681f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt *) 691f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo "Unknown command: $cmd" 701f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt ;; 711f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt esac 721f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 731f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt echo 741f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt main_menu 751f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 761f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 771f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 781f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtmain_menu 79