]> granicus.if.org Git - pdns/commitdiff
fix up our public-suffix-list filtering, add co.za and co.il manually.
authorbert hubert <bert.hubert@netherlabs.nl>
Mon, 12 Jan 2015 09:13:24 +0000 (10:13 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Mon, 12 Jan 2015 09:13:24 +0000 (10:13 +0100)
pdns/mkpubsuffixcc
pdns/rec_channel_rec.cc

index 4f197f463bd5e8aed4a5492e8455e1bf9693716a..be5686be78cbb50b03f249aa5da792c0c43670ac 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 (echo "const char* g_pubsuffix[]={"; 
-       for a in $(grep -v "//" effective_tld_names.dat  | grep \\. | egrep "^[.0-9a-z-]*$")
+       for a in $(grep -v "//" effective_tld_names.dat  | grep \\. | egrep "^[.0-9a-z-]*$" ; echo "co.za" ; echo "co.il" )
        do 
                echo \"$a\",
        done 
index 03a4a9823193dd14ea8a4d48d50b3b78bf5ebd12..117c7a5ea780fe046650a3a2a6d5069b19ec5a29 100644 (file)
@@ -711,7 +711,6 @@ void sortPublicSuffixList()
   sort(g_pubs.begin(), g_pubs.end());
 }
 
-
 string getRegisteredName(const std::string& dom)
 {
   vector<string> parts;
@@ -721,27 +720,25 @@ string getRegisteredName(const std::string& dom)
   reverse(parts.begin(), parts.end());
   BOOST_FOREACH(string& str, parts) { str=toLower(str); };
 
-  pubs_t::const_iterator iter = lower_bound(g_pubs.begin(), g_pubs.end(), parts);
-  if(iter != g_pubs.end()) {
-    if(iter != g_pubs.begin())
-      --iter;
-
-    if(iter->size() < parts.size()) {
-      unsigned int n;
-      for(n=0; n < iter->size(); ++n)
-       if((*iter)[n] != parts[n])
-         break;
-      if(n==iter->size()) {
-       string ret;
-       for(unsigned int n=iter->size()+1;n;++iter,--n) {
-         ret+=parts[n-1]+".";
-       }
-       return ret;
-      } 
+  // uk co migweb 
+  string last;
+  while(!parts.empty()) {
+    if(parts.size()==1 || binary_search(g_pubs.begin(), g_pubs.end(), parts)) {
+  
+      string ret=last;
+      if(!ret.empty())
+       ret+=".";
+      
+      BOOST_REVERSE_FOREACH(const std::string& p, parts) {
+       ret+=p+".";
+      }
+      return ret;
     }
+
+    last=parts[parts.size()-1];
+    parts.resize(parts.size()-1);
   }
-  return parts[1]+"."+parts[0]+".";
+  return "??";
 }
 
 static string nopFilter(const std::string& str)