1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.james.api.dnsservice.util;
21
22 import java.net.InetAddress;
23 import java.util.Collection;
24 import java.util.ArrayList;
25 import java.util.Iterator;
26
27 import org.apache.james.api.dnsservice.DNSService;
28
29
30
31
32 public class NetMatcher
33 {
34 private DNSService dnsServer;
35
36 private ArrayList networks;
37
38
39
40
41
42
43
44 public void initInetNetworks(final Collection nets)
45 {
46 networks = new ArrayList();
47
48 InetNetwork in = new InetNetwork(dnsServer);
49
50 for (Iterator iter = nets.iterator(); iter.hasNext(); ) try
51 {
52 InetNetwork net = in.getFromString((String) iter.next());
53 if (!networks.contains(net)) networks.add(net);
54 }
55 catch (java.net.UnknownHostException uhe)
56 {
57 log("Cannot resolve address: " + uhe.getMessage());
58 }
59 networks.trimToSize();
60 }
61
62
63
64
65
66
67 public void initInetNetworks(final String[] nets)
68 {
69
70 networks = new ArrayList();
71
72 InetNetwork in = new InetNetwork(dnsServer);
73
74 for (int i = 0; i < nets.length; i++) try
75 {
76 InetNetwork net = in.getFromString(nets[i]);
77 if (!networks.contains(net)) networks.add(net);
78 }
79 catch (java.net.UnknownHostException uhe)
80 {
81 log("Cannot resolve address: " + uhe.getMessage());
82 }
83 networks.trimToSize();
84 }
85
86
87
88
89
90
91
92 public boolean matchInetNetwork(final String hostIP)
93 {
94 InetAddress ip = null;
95
96 try
97 {
98 ip = dnsServer.getByName(hostIP);
99 }
100 catch (java.net.UnknownHostException uhe)
101 {
102 log("Cannot resolve address for " + hostIP + ": " + uhe.getMessage());
103 }
104
105 boolean sameNet = false;
106
107 if (ip != null) for (Iterator iter = networks.iterator(); (!sameNet) && iter.hasNext(); )
108 {
109 InetNetwork network = (InetNetwork) iter.next();
110 sameNet = network.contains(ip);
111 }
112 return sameNet;
113 }
114
115
116
117
118 public boolean matchInetNetwork(final InetAddress ip)
119 {
120 boolean sameNet = false;
121
122 for (Iterator iter = networks.iterator(); (!sameNet) && iter.hasNext(); )
123 {
124 InetNetwork network = (InetNetwork) iter.next();
125 sameNet = network.contains(ip);
126 }
127 return sameNet;
128 }
129
130
131
132
133
134
135
136 public NetMatcher(final String[] nets,DNSService dnsServer)
137 {
138 this.dnsServer = dnsServer;
139 initInetNetworks(nets);
140 }
141
142
143
144
145
146
147
148 public NetMatcher(final Collection nets,DNSService dnsServer)
149 {
150 this.dnsServer = dnsServer;
151 initInetNetworks(nets);
152 }
153
154
155
156
157 public String toString() {
158 return networks.toString();
159 }
160
161
162
163
164
165
166 protected void log(String s) { }
167 }