init(org.ibex.jinetd.Main.ROOT + "/host", "", 0, Main.getRootClassLoader());
}
public static void init(String path, String host, int depth, ClassLoader pcl) {
+ if (!new File(path).exists() || !new File(path).isDirectory()) return;
try {
- InetAddress.getByName(host);
- String pad = "";
- while(pad.length() + host.length() < 30) pad += " ";
- Log.info(Main.class, pad + host + " => " + path);
- hosts.put(host, pcl = new Host(path, host, pcl));
- } catch (UnknownHostException e) {
+ Log.warn(Host.class, "resolving " + host);
+ InetAddress addr = InetAddress.getByName(host);
+
+ /*
+ boolean good = false;
+ try {
+ if (NetworkInterface.getByInetAddress(addr) != null) good = true;
+ if (!good) Log.warn(Host.class, "host " + host + "resolves to " + addr + " which is not local");
+ } catch (Exception e) {
+ Log.warn(Host.class, "host " + host + "resolves to " + addr + " which is not local because:");
+ Log.warn(Host.class, e);
+ }
+ if (!good) return;
+ */
+
+ if (new File(path + File.separatorChar + "WEB-INF").exists()) {
+ String pad = "";
+ while(pad.length() + host.length() < 30) pad += " ";
+ Log.info(Main.class, pad + host + " => " + path);
+ hosts.put(host, pcl = new Host(path, host, pcl));
+ if (!"ibex.org".equals(host)) return;
+ }
+ } catch (UnknownHostException e) {
if (depth >= 3) return;
}
String[] subdirs = new File(path).list();
- for(int i=0; i<subdirs.length; i++)
- init(path + File.separatorChar + subdirs[i], host.equals("") ? subdirs[i] : subdirs[i]+"."+host, depth+1, pcl);
+ if (subdirs != null)
+ for(int i=0; i<subdirs.length; i++)
+ init(path + File.separatorChar + subdirs[i], host.equals("") ? subdirs[i] : subdirs[i]+"."+host, depth+1, pcl);
}
}