1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package org.apache.commons.httpclient.server;
31
32 import java.io.IOException;
33
34 import org.apache.commons.httpclient.Credentials;
35
36 /***
37 * Simple server that registers default request handlers to act as a proxy.
38 *
39 * @author Ortwin Glueck
40 * @author Oleg Kalnichevski
41 */
42 public class SimpleProxy extends SimpleHttpServer {
43
44 private SimpleConnManager connmanager = null;
45 private HttpRequestHandlerChain stdchain = null;
46
47 public SimpleProxy(int port) throws IOException {
48 super(port);
49 this.connmanager = new SimpleConnManager();
50 this.stdchain = new HttpRequestHandlerChain();
51 this.stdchain.appendHandler(new TransparentProxyRequestHandler());
52 this.stdchain.appendHandler(new ProxyRequestHandler(this.connmanager));
53 setRequestHandler(this.stdchain);
54 }
55
56 public SimpleProxy() throws IOException {
57 this(0);
58 }
59
60 public void requireAuthentication(final Credentials creds, final String realm, boolean keepalive) {
61 HttpRequestHandlerChain chain = new HttpRequestHandlerChain(this.stdchain);
62 chain.prependHandler(new ProxyAuthRequestHandler(creds ,realm, keepalive));
63 setRequestHandler(chain);
64 }
65
66 public void requireAuthentication(final Credentials creds) {
67 HttpRequestHandlerChain chain = new HttpRequestHandlerChain(this.stdchain);
68 chain.prependHandler(new ProxyAuthRequestHandler(creds));
69 setRequestHandler(chain);
70 }
71
72 public void destroy() {
73 super.destroy();
74 this.connmanager.shutdown();
75 }
76
77 public void addHandler(final HttpRequestHandler handler) {
78 this.stdchain.prependHandler(handler);
79 }
80
81 }