]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/util/PublicSuffixes.java
add: check that verification date is not far in the past
[gigi.git] / src / org / cacert / gigi / util / PublicSuffixes.java
index bb0d027a9657c457ab3930b87504adaa9f28dbf6..51c2edf2acb53a90a22a0021729dd08c73a63d9f 100644 (file)
@@ -3,9 +3,7 @@ package org.cacert.gigi.util;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
 import java.net.IDN;
-import java.net.URL;
 import java.util.HashSet;
 
 public class PublicSuffixes {
@@ -20,17 +18,16 @@ public class PublicSuffixes {
 
     private static PublicSuffixes instance;
 
-    private static void generateDefault() throws IOException {
-        URL u = new URL(url);
-        HttpURLConnection huc = (HttpURLConnection) u.openConnection();
-        BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream(), "UTF-8"));
-        instance = new PublicSuffixes(br);
+    private static PublicSuffixes generateDefault() throws IOException {
+        try (BufferedReader br = new BufferedReader(new InputStreamReader(PublicSuffixes.class.getResourceAsStream("effective_tld_names.dat"), "UTF-8"))) {
+            return new PublicSuffixes(br);
+        }
     }
 
-    public static PublicSuffixes getInstance() {
+    public synchronized static PublicSuffixes getInstance() {
         if (instance == null) {
             try {
-                generateDefault();
+                instance = generateDefault();
             } catch (IOException e) {
                 throw new Error(e);
             }
@@ -47,7 +44,11 @@ public class PublicSuffixes {
             if (line.isEmpty()) {
                 continue;
             }
-            line = line.split("\\s", 2)[0];
+            String[] lineParts = line.split("\\s", 2);
+            if (lineParts.length == 0) {
+                throw new Error("split had strange behavior");
+            }
+            line = lineParts[0];
             if (line.startsWith("*.")) {
                 String data = line.substring(2);
                 if (data.contains("*") || data.contains("!")) {