169408Sache#!/bin/sh
259243Sobrien
359243SobrienCLI=wpa_cli
459243Sobrien
559243Sobrienpbc()
659243Sobrien{
759243Sobrien	echo "Starting PBC mode"
859243Sobrien	echo "Push button on the station within two minutes"
959243Sobrien	if ! $CLI wps_pbc | grep -q OK; then
1059243Sobrien		echo "Failed to enable PBC mode"
1159243Sobrien	fi
1259243Sobrien}
1359243Sobrien
1459243Sobrienenter_pin()
1559243Sobrien{
1659243Sobrien	echo "Enter a PIN from a station to be enrolled to the network."
1759243Sobrien	printf "Enrollee PIN: "
1859243Sobrien	read pin
1959243Sobrien	cpin=`$CLI wps_check_pin "$pin" | tail -1`
2059243Sobrien	if [ "$cpin" = "FAIL-CHECKSUM" ]; then
2159243Sobrien		echo "Checksum digit is not valid"
2259243Sobrien		printf "Do you want to use this PIN (y/n)? "
2359243Sobrien		read resp
2459243Sobrien		case "$resp" in
2559243Sobrien			y*)
2659243Sobrien				cpin=`echo "$pin" | sed "s/[^1234567890]//g"`
2759243Sobrien				;;
2859243Sobrien			*)
2959243Sobrien				return 1
3059243Sobrien				;;
3159243Sobrien		esac
3259243Sobrien	fi
3359243Sobrien	if [ "$cpin" = "FAIL" ]; then
3459243Sobrien		echo "Invalid PIN: $pin"
3559243Sobrien		return 1
3659243Sobrien	fi
3759243Sobrien	echo "Enabling Enrollee PIN: $cpin"
3859243Sobrien	$CLI wps_pin any "$cpin"
3969408Sache}
4059243Sobrien
4159243Sobrienshow_config()
4259243Sobrien{
4359243Sobrien	$CLI status wps
4459243Sobrien}
4559243Sobrien
4659243Sobrienmain_menu()
4759243Sobrien{
4859243Sobrien	echo "WPS AP"
4959243Sobrien	echo "------"
5059243Sobrien	echo "1: Push button (activate PBC)"
5159243Sobrien	echo "2: Enter Enrollee PIN"
5259243Sobrien	echo "3: Show current configuration"
5359243Sobrien	echo "0: Exit wps-ap-cli"
5459243Sobrien
5559243Sobrien	printf "Command: "
5659243Sobrien	read cmd
5759243Sobrien
5859243Sobrien	case "$cmd" in
5959243Sobrien		1)
6059243Sobrien			pbc
6159243Sobrien			;;
6259243Sobrien		2)
6359243Sobrien			enter_pin
6459243Sobrien			;;
6559243Sobrien		3)
6659243Sobrien			show_config
6759243Sobrien			;;
6859243Sobrien		0)
6959243Sobrien			exit 0
7059243Sobrien			;;
7159243Sobrien		*)
7259243Sobrien			echo "Unknown command: $cmd"
7359243Sobrien			;;
7459243Sobrien	esac
7559243Sobrien
7659243Sobrien	echo
7759243Sobrien	main_menu
7859243Sobrien}
7969408Sache
8069408Sache
8169408Sachemain_menu
8259243Sobrien