LoopbackHttpProxyServer.java
2.5 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.github.monkeywie.proxyee;
import com.github.monkeywie.proxyee.server.HttpProxyServer;
import com.github.monkeywie.proxyee.server.HttpProxyServerConfig;
import io.netty.resolver.AddressResolver;
import io.netty.resolver.AddressResolverGroup;
import io.netty.resolver.DefaultNameResolver;
import io.netty.util.concurrent.EventExecutor;
import io.netty.util.concurrent.Promise;
import io.netty.util.internal.SocketUtils;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.List;
public class LoopbackHttpProxyServer {
public static void main(String[] args) {
System.out.println("start loopback proxy server");
HttpProxyServerConfig config = new HttpProxyServerConfig(LoopbackAddressResolverGroup.INSTANCE);
config.setBossGroupThreads(1);
config.setWorkerGroupThreads(1);
config.setProxyGroupThreads(1);
config.setHandleSsl(false);
new HttpProxyServer()
.serverConfig(config)
.start(9999);
}
private static class LoopbackAddressResolverGroup extends AddressResolverGroup<InetSocketAddress> {
public static final LoopbackAddressResolverGroup INSTANCE = new LoopbackAddressResolverGroup();
private LoopbackAddressResolverGroup() {
}
@Override
protected AddressResolver<InetSocketAddress> newResolver(EventExecutor executor) {
return (new LoopbackNameResolver(executor)).asAddressResolver();
}
private static class LoopbackNameResolver extends DefaultNameResolver {
public LoopbackNameResolver(EventExecutor executor) {
super(executor);
}
@Override
protected void doResolve(String inetHost, Promise<InetAddress> promise) {
try {
promise.setSuccess(SocketUtils.addressByName("localhost"));
} catch (UnknownHostException unknownHostException) {
promise.setFailure(unknownHostException);
}
}
@Override
protected void doResolveAll(String inetHost, Promise<List<InetAddress>> promise) {
try {
promise.setSuccess(Arrays.asList(SocketUtils.allAddressesByName("localhost")));
} catch (UnknownHostException unknownHostException) {
promise.setFailure(unknownHostException);
}
}
}
}
}