import cyrus-sasl-2.1.23
[cyrus-sasl.git] / java / Test / ServerHandler.java
1
2 import java.io.*;
3 import javax.security.auth.callback.*;
4
5 class 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     public void handle(Callback[] callbacks)
107         throws java.io.IOException, UnsupportedCallbackException
108     {
109         invokeCallback(callbacks);
110     }
111
112 }