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