1
2import java.io.*;
3import javax.security.auth.callback.*;
4
5class ServerHandler implements javax.security.auth.callback.CallbackHandler{
6
7    String authid;
8    String userid;
9    String password;
10    String realm;
11
12    public ServerHandler()
13    {
14
15    }
16
17    public ServerHandler(String authid, String userid, String password, String realm)
18    {
19	this.authid = authid;
20	this.userid = userid;
21	this.password = password;
22	this.realm = realm;
23    }
24
25
26
27    private String getinput(String prompt)
28    {
29	System.out.println(prompt);
30	System.out.print(">");
31
32	String result="";
33
34	try {
35	    int c;
36	    do {
37		c = System.in.read();
38		if (c!='\n')
39		    result+=(char)c;
40	    } while (c!='\n');
41
42	    System.out.println("res = "+result);
43	} catch (IOException e) {
44
45	}
46
47	return result;
48    }
49
50    private void getauthid(NameCallback c)
51    {
52	if (authid!=null) {
53	    c.setName(authid);
54	    return;
55	}
56
57	/*	authid = System.getProperty("user.name");
58	if (authid!=null) {
59	    c.setName(authid);
60	    return;
61	    } */
62
63	c.setName( getinput(c.getPrompt()));
64    }
65
66    private void getpassword(PasswordCallback c)
67    {
68	if (password!=null) {
69	    c.setPassword(password.toCharArray());
70	    return;
71	}
72
73	c.setPassword( (getinput("Enter password")).toCharArray());
74    }
75
76    private void getrealm(RealmCallback c)
77    {
78	if (realm!=null) {
79	    c.setRealm(realm);
80	    return;
81	}
82
83	c.setRealm( getinput(c.getPrompt()) );
84    }
85
86    public void invokeCallback(Callback[] callbacks)
87	throws java.io.IOException, UnsupportedCallbackException
88    {
89	for (int lup=0;lup<callbacks.length;lup++)
90	{
91	    Callback c = callbacks[lup];
92
93	    if (c instanceof NameCallback) {
94		getauthid((NameCallback) c);
95	    } else if (c instanceof PasswordCallback) {
96		getpassword((PasswordCallback) c);
97	    } else if (c instanceof RealmCallback) {
98		getrealm((RealmCallback) c);
99	    } else {
100		System.out.println("TODO!");
101		System.exit(1);
102	    }
103	}
104    }
105
106}
107