xref: /freebsd/contrib/wpa/wpa_supplicant/examples/wps-ap-cli (revision 67350cb56a69468c118bd4ccf6e361b7ebfa9eb4)
1f05cddf9SRui Paulo#!/bin/sh
2f05cddf9SRui Paulo
3f05cddf9SRui PauloCLI=wpa_cli
4f05cddf9SRui Paulo
5f05cddf9SRui Paulopbc()
6f05cddf9SRui Paulo{
7f05cddf9SRui Paulo	echo "Starting PBC mode"
8f05cddf9SRui Paulo	echo "Push button on the station within two minutes"
9f05cddf9SRui Paulo	if ! $CLI wps_pbc | grep -q OK; then
10f05cddf9SRui Paulo		echo "Failed to enable PBC mode"
11f05cddf9SRui Paulo	fi
12f05cddf9SRui Paulo}
13f05cddf9SRui Paulo
14f05cddf9SRui Pauloenter_pin()
15f05cddf9SRui Paulo{
16f05cddf9SRui Paulo	echo "Enter a PIN from a station to be enrolled to the network."
17*85732ac8SCy Schubert	printf "Enrollee PIN: "
185b9c547cSRui Paulo	read pin
19f05cddf9SRui Paulo	cpin=`$CLI wps_check_pin "$pin" | tail -1`
20f05cddf9SRui Paulo	if [ "$cpin" = "FAIL-CHECKSUM" ]; then
21f05cddf9SRui Paulo		echo "Checksum digit is not valid"
22*85732ac8SCy Schubert		printf "Do you want to use this PIN (y/n)? "
235b9c547cSRui Paulo		read resp
24f05cddf9SRui Paulo		case "$resp" in
25f05cddf9SRui Paulo			y*)
26f05cddf9SRui Paulo				cpin=`echo "$pin" | sed "s/[^1234567890]//g"`
27f05cddf9SRui Paulo				;;
28f05cddf9SRui Paulo			*)
29f05cddf9SRui Paulo				return 1
30f05cddf9SRui Paulo				;;
31f05cddf9SRui Paulo		esac
32f05cddf9SRui Paulo	fi
33f05cddf9SRui Paulo	if [ "$cpin" = "FAIL" ]; then
34f05cddf9SRui Paulo		echo "Invalid PIN: $pin"
35f05cddf9SRui Paulo		return 1
36f05cddf9SRui Paulo	fi
37f05cddf9SRui Paulo	echo "Enabling Enrollee PIN: $cpin"
38f05cddf9SRui Paulo	$CLI wps_pin any "$cpin"
39f05cddf9SRui Paulo}
40f05cddf9SRui Paulo
41f05cddf9SRui Pauloshow_config()
42f05cddf9SRui Paulo{
43f05cddf9SRui Paulo	$CLI status wps
44f05cddf9SRui Paulo}
45f05cddf9SRui Paulo
46f05cddf9SRui Paulomain_menu()
47f05cddf9SRui Paulo{
48f05cddf9SRui Paulo	echo "WPS AP"
49f05cddf9SRui Paulo	echo "------"
50f05cddf9SRui Paulo	echo "1: Push button (activate PBC)"
51f05cddf9SRui Paulo	echo "2: Enter Enrollee PIN"
52f05cddf9SRui Paulo	echo "3: Show current configuration"
53f05cddf9SRui Paulo	echo "0: Exit wps-ap-cli"
54f05cddf9SRui Paulo
55*85732ac8SCy Schubert	printf "Command: "
565b9c547cSRui Paulo	read cmd
57f05cddf9SRui Paulo
58f05cddf9SRui Paulo	case "$cmd" in
59f05cddf9SRui Paulo		1)
60f05cddf9SRui Paulo			pbc
61f05cddf9SRui Paulo			;;
62f05cddf9SRui Paulo		2)
63f05cddf9SRui Paulo			enter_pin
64f05cddf9SRui Paulo			;;
65f05cddf9SRui Paulo		3)
66f05cddf9SRui Paulo			show_config
67f05cddf9SRui Paulo			;;
68f05cddf9SRui Paulo		0)
69f05cddf9SRui Paulo			exit 0
70f05cddf9SRui Paulo			;;
71f05cddf9SRui Paulo		*)
72f05cddf9SRui Paulo			echo "Unknown command: $cmd"
73f05cddf9SRui Paulo			;;
74f05cddf9SRui Paulo	esac
75f05cddf9SRui Paulo
76f05cddf9SRui Paulo	echo
77f05cddf9SRui Paulo	main_menu
78f05cddf9SRui Paulo}
79f05cddf9SRui Paulo
80f05cddf9SRui Paulo
81f05cddf9SRui Paulomain_menu
82