xref: /freebsd/share/examples/ppp/chap-auth (revision e1e636193db45630c7881246d25902e57c43d24e)
1#! /usr/local/bin/wish8.0 -f
2#
3# Copyright (c) 1999 Brian Somers <brian@Awfulhak.org>
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9# 1. Redistributions of source code must retain the above copyright
10#    notice, this list of conditions and the following disclaimer.
11# 2. Redistributions in binary form must reproduce the above copyright
12#    notice, this list of conditions and the following disclaimer in the
13#    documentation and/or other materials provided with the distribution.
14#
15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25# SUCH DAMAGE.
26#
27
28#
29# Display a window to request a users CHAP secret, accepting the relevant
30# values from ppp (``set authkey !thisprogram'') and passing the entered
31# ``authname'' and ``authkey'' back to ppp.
32#
33
34set pwidth 12;		# Prompt field width
35set vwidth 20;		# Value field width
36set fxpad 7;		# Value field width
37set fypad 3;		# Value field width
38
39wm title . "PPP Authentication";
40
41# We expect three lines of input from ppp
42set hostname [gets stdin];
43set challenge [gets stdin];
44set authname [gets stdin];
45
46proc mkhalfframe { n prompt } {
47  global pwidth;
48
49  frame .$n;
50  text  .$n.prompt -width $pwidth -height 1 -relief flat;
51        .$n.prompt insert 1.0 $prompt;
52  pack  .$n.prompt -side left;
53        .$n.prompt configure -state disabled;
54}
55
56proc mkframe { n prompt value entry } {
57  global vwidth fxpad fypad;
58
59  mkhalfframe $n $prompt;
60  text  .$n.value -width $vwidth -height 1;
61        .$n.value insert 1.0 $value;
62  pack  .$n.value -side right;
63  if ($entry) {
64    # Allow entry, but don't encourage it
65    .$n.value configure -state normal -takefocus 0;
66    bind .$n.value <Return> {done};
67  } else {
68    .$n.value configure -state disabled;
69  }
70  pack .$n -side top -padx $fxpad -pady $fypad;
71}
72
73# Dump our fields to stdout and exit
74proc done {} {
75  puts [.n.value get 1.0 {end - 1 char}];
76  puts [.k.value get];
77  exit 0;
78}
79
80mkframe h "Hostname:" $hostname 0;
81mkframe c "Challenge:" $challenge 0;
82mkframe n "Authname:" $authname 1;
83
84mkhalfframe k "Authkey:";
85entry .k.value -show "*" -width $vwidth;
86pack  .k.value -side right;
87bind  .k.value <Return> {done};
88focus .k.value;
89pack  .k -side top -padx $fxpad -pady $fypad;
90
91frame  .b;
92button .b.ok -default active -text "Ok" -command {done};
93pack   .b.ok -side left;
94button .b.cancel -default normal -text "Cancel" -command {exit 1};
95pack   .b.cancel -side right;
96pack   .b -side top -padx $fxpad -pady $fypad;
97