[Commits] [SCM] claws branch, master, updated. 3.13.0-51-g8eadc80

mones at claws-mail.org mones at claws-mail.org
Thu Nov 12 17:33:40 CET 2015


The branch, master has been updated
       via  8eadc80ce1e3ca3b0168f86f8c4f7bc29165d585 (commit)
       via  fbfed23b5c4db507fb94df9f910bb1e2f846e2b1 (commit)
      from  967a512bbcf98c5206bd8992f00a0de509174c0b (commit)

Summary of changes:
 src/common/Makefile.am  |    1 +
 src/common/tlds.h       |  212 +++++++++++++++++++++++++++++++++++++++++++++++
 src/common/utils.c      |   30 +------
 tools/claws.get.tlds.pl |   55 ++++++++++++
 4 files changed, 269 insertions(+), 29 deletions(-)
 create mode 100644 src/common/tlds.h
 create mode 100755 tools/claws.get.tlds.pl


- Log -----------------------------------------------------------------
commit 8eadc80ce1e3ca3b0168f86f8c4f7bc29165d585
Author: Ricardo Mones <ricardo at mones.org>
Date:   Thu Nov 12 17:32:29 2015 +0100

    Update list of recognised TLDs to current
    
    Using the script in previous commit :-)

diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 1619226..6551157 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -67,6 +67,7 @@ clawscommoninclude_HEADERS = $(arch_headers) \
 	tags.h \
 	template.h \
 	timing.h \
+	tlds.h \
 	utils.h \
 	uuencode.h \
 	version.h \
diff --git a/src/common/tlds.h b/src/common/tlds.h
new file mode 100644
index 0000000..c37f1b9
--- /dev/null
+++ b/src/common/tlds.h
@@ -0,0 +1,212 @@
+/*
+ * This is a generated file.
+ * See tools/claws.get.tlds.pl
+ */
+#ifndef __TLDS_H__
+#define __TLDS_H__
+
+static const gchar *toplvl_domains [] = {
+	/* Version 2015111201, Last Updated Thu Nov 12 07:07:01 2015 UTC */
+	"aaa", "aarp", "abb", "abbott", "abogado",
+	"ac", "academy", "accenture", "accountant", "accountants",
+	"aco", "active", "actor", "ad", "ads",
+	"adult", "ae", "aeg", "aero", "af",
+	"afl", "ag", "agency", "ai", "aig",
+	"airforce", "airtel", "al", "allfinanz", "alsace",
+	"am", "amica", "amsterdam", "android", "ao",
+	"apartments", "app", "apple", "aq", "aquarelle",
+	"ar", "aramco", "archi", "army", "arpa",
+	"arte", "as", "asia", "associates", "at",
+	"attorney", "au", "auction", "audio", "auto",
+	"autos", "aw", "ax", "axa", "az",
+	"azure", "ba", "band", "bank", "bar",
+	"barcelona", "barclaycard", "barclays", "bargains", "bauhaus",
+	"bayern", "bb", "bbc", "bbva", "bcn",
+	"bd", "be", "beats", "beer", "bentley",
+	"berlin", "best", "bet", "bf", "bg",
+	"bh", "bharti", "bi", "bible", "bid",
+	"bike", "bing", "bingo", "bio", "biz",
+	"bj", "black", "blackfriday", "bloomberg", "blue",
+	"bm", "bms", "bmw", "bn", "bnl",
+	"bnpparibas", "bo", "boats", "bom", "bond",
+	"boo", "boots", "boutique", "br", "bradesco",
+	"bridgestone", "broker", "brother", "brussels", "bs",
+	"bt", "budapest", "build", "builders", "business",
+	"buzz", "bv", "bw", "by", "bz",
+	"bzh", "ca", "cab", "cafe", "cal",
+	"camera", "camp", "cancerresearch", "canon", "capetown",
+	"capital", "car", "caravan", "cards", "care",
+	"career", "careers", "cars", "cartier", "casa",
+	"cash", "casino", "cat", "catering", "cba",
+	"cbn", "cc", "cd", "ceb", "center",
+	"ceo", "cern", "cf", "cfa", "cfd",
+	"cg", "ch", "chanel", "channel", "chat",
+	"cheap", "chloe", "christmas", "chrome", "church",
+	"ci", "cipriani", "cisco", "citic", "city",
+	"cityeats", "ck", "cl", "claims", "cleaning",
+	"click", "clinic", "clothing", "cloud", "club",
+	"clubmed", "cm", "cn", "co", "coach",
+	"codes", "coffee", "college", "cologne", "com",
+	"commbank", "community", "company", "computer", "condos",
+	"construction", "consulting", "contractors", "cooking", "cool",
+	"coop", "corsica", "country", "coupons", "courses",
+	"cr", "credit", "creditcard", "creditunion", "cricket",
+	"crown", "crs", "cruises", "csc", "cu",
+	"cuisinella", "cv", "cw", "cx", "cy",
+	"cymru", "cyou", "cz", "dabur", "dad",
+	"dance", "date", "dating", "datsun", "day",
+	"dclk", "de", "deals", "degree", "delivery",
+	"dell", "delta", "democrat", "dental", "dentist",
+	"desi", "design", "dev", "diamonds", "diet",
+	"digital", "direct", "directory", "discount", "dj",
+	"dk", "dm", "dnp", "do", "docs",
+	"dog", "doha", "domains", "doosan", "download",
+	"drive", "durban", "dvag", "dz", "earth",
+	"eat", "ec", "edu", "education", "ee",
+	"eg", "email", "emerck", "energy", "engineer",
+	"engineering", "enterprises", "epson", "equipment", "er",
+	"erni", "es", "esq", "estate", "et",
+	"eu", "eurovision", "eus", "events", "everbank",
+	"exchange", "expert", "exposed", "express", "fage",
+	"fail", "faith", "family", "fan", "fans",
+	"farm", "fashion", "feedback", "ferrero", "fi",
+	"film", "final", "finance", "financial", "firmdale",
+	"fish", "fishing", "fit", "fitness", "fj",
+	"fk", "flights", "florist", "flowers", "flsmidth",
+	"fly", "fm", "fo", "foo", "football",
+	"forex", "forsale", "forum", "foundation", "fr",
+	"frl", "frogans", "fund", "furniture", "futbol",
+	"fyi", "ga", "gal", "gallery", "game",
+	"garden", "gb", "gbiz", "gd", "gdn",
+	"ge", "gea", "gent", "genting", "gf",
+	"gg", "ggee", "gh", "gi", "gift",
+	"gifts", "gives", "giving", "gl", "glass",
+	"gle", "global", "globo", "gm", "gmail",
+	"gmo", "gmx", "gn", "gold", "goldpoint",
+	"golf", "goo", "goog", "google", "gop",
+	"gov", "gp", "gq", "gr", "graphics",
+	"gratis", "green", "gripe", "group", "gs",
+	"gt", "gu", "gucci", "guge", "guide",
+	"guitars", "guru", "gw", "gy", "hamburg",
+	"hangout", "haus", "healthcare", "help", "here",
+	"hermes", "hiphop", "hitachi", "hiv", "hk",
+	"hm", "hn", "hockey", "holdings", "holiday",
+	"homedepot", "homes", "honda", "horse", "host",
+	"hosting", "hoteles", "hotmail", "house", "how",
+	"hr", "hsbc", "ht", "hu", "hyundai",
+	"ibm", "icbc", "ice", "icu", "id",
+	"ie", "ifm", "iinet", "il", "im",
+	"immo", "immobilien", "in", "industries", "infiniti",
+	"info", "ing", "ink", "institute", "insure",
+	"int", "international", "investments", "io", "ipiranga",
+	"iq", "ir", "irish", "is", "ist",
+	"istanbul", "it", "itau", "iwc", "jaguar",
+	"java", "jcb", "je", "jetzt", "jewelry",
+	"jlc", "jll", "jm", "jo", "jobs",
+	"joburg", "jp", "jprs", "juegos", "kaufen",
+	"kddi", "ke", "kg", "kh", "ki",
+	"kia", "kim", "kinder", "kitchen", "kiwi",
+	"km", "kn", "koeln", "komatsu", "kp",
+	"kr", "krd", "kred", "kw", "ky",
+	"kyoto", "kz", "la", "lacaixa", "lancaster",
+	"land", "landrover", "lasalle", "lat", "latrobe",
+	"law", "lawyer", "lb", "lc", "lds",
+	"lease", "leclerc", "legal", "lexus", "lgbt",
+	"li", "liaison", "lidl", "life", "lifestyle",
+	"lighting", "limited", "limo", "linde", "link",
+	"live", "lixil", "lk", "loan", "loans",
+	"lol", "london", "lotte", "lotto", "love",
+	"lr", "ls", "lt", "ltd", "ltda",
+	"lu", "lupin", "luxe", "luxury", "lv",
+	"ly", "ma", "madrid", "maif", "maison",
+	"man", "management", "mango", "market", "marketing",
+	"markets", "marriott", "mba", "mc", "md",
+	"me", "media", "meet", "melbourne", "meme",
+	"memorial", "men", "menu", "meo", "mg",
+	"mh", "miami", "microsoft", "mil", "mini",
+	"mk", "ml", "mm", "mma", "mn",
+	"mo", "mobi", "moda", "moe", "moi",
+	"mom", "monash", "money", "montblanc", "mormon",
+	"mortgage", "moscow", "motorcycles", "mov", "movie",
+	"movistar", "mp", "mq", "mr", "ms",
+	"mt", "mtn", "mtpc", "mtr", "mu",
+	"museum", "mutuelle", "mv", "mw", "mx",
+	"my", "mz", "na", "nadex", "nagoya",
+	"name", "navy", "nc", "ne", "nec",
+	"net", "netbank", "network", "neustar", "new",
+	"news", "nexus", "nf", "ng", "ngo",
+	"nhk", "ni", "nico", "ninja", "nissan",
+	"nl", "no", "nokia", "np", "nr",
+	"nra", "nrw", "ntt", "nu", "nyc",
+	"nz", "obi", "office", "okinawa", "om",
+	"omega", "one", "ong", "onl", "online",
+	"ooo", "oracle", "orange", "org", "organic",
+	"osaka", "otsuka", "ovh", "pa", "page",
+	"panerai", "paris", "partners", "parts", "party",
+	"pe", "pet", "pf", "pg", "ph",
+	"pharmacy", "philips", "photo", "photography", "photos",
+	"physio", "piaget", "pics", "pictet", "pictures",
+	"ping", "pink", "pizza", "pk", "pl",
+	"place", "play", "playstation", "plumbing", "plus",
+	"pm", "pn", "pohl", "poker", "porn",
+	"post", "pr", "praxi", "press", "pro",
+	"prod", "productions", "prof", "properties", "property",
+	"protection", "ps", "pt", "pub", "pw",
+	"py", "qa", "qpon", "quebec", "racing",
+	"re", "realtor", "realty", "recipes", "red",
+	"redstone", "rehab", "reise", "reisen", "reit",
+	"ren", "rent", "rentals", "repair", "report",
+	"republican", "rest", "restaurant", "review", "reviews",
+	"rich", "ricoh", "rio", "rip", "ro",
+	"rocher", "rocks", "rodeo", "rs", "rsvp",
+	"ru", "ruhr", "run", "rw", "rwe",
+	"ryukyu", "sa", "saarland", "sakura", "sale",
+	"samsung", "sandvik", "sandvikcoromant", "sanofi", "sap",
+	"sapo", "sarl", "saxo", "sb", "sbs",
+	"sc", "sca", "scb", "schmidt", "scholarships",
+	"school", "schule", "schwarz", "science", "scor",
+	"scot", "sd", "se", "seat", "security",
+	"seek", "sener", "services", "seven", "sew",
+	"sex", "sexy", "sg", "sh", "shiksha",
+	"shoes", "show", "shriram", "si", "singles",
+	"site", "sj", "sk", "ski", "sky",
+	"skype", "sl", "sm", "sn", "sncf",
+	"so", "soccer", "social", "software", "sohu",
+	"solar", "solutions", "sony", "soy", "space",
+	"spiegel", "spreadbetting", "sr", "srl", "st",
+	"stada", "starhub", "statoil", "stc", "stcgroup",
+	"stockholm", "studio", "study", "style", "su",
+	"sucks", "supplies", "supply", "support", "surf",
+	"surgery", "suzuki", "sv", "swatch", "swiss",
+	"sx", "sy", "sydney", "systems", "sz",
+	"taipei", "tatamotors", "tatar", "tattoo", "tax",
+	"taxi", "tc", "td", "team", "tech",
+	"technology", "tel", "telefonica", "temasek", "tennis",
+	"tf", "tg", "th", "thd", "theater",
+	"theatre", "tickets", "tienda", "tips", "tires",
+	"tirol", "tj", "tk", "tl", "tm",
+	"tn", "to", "today", "tokyo", "tools",
+	"top", "toray", "toshiba", "tours", "town",
+	"toyota", "toys", "tr", "trade", "trading",
+	"training", "travel", "trust", "tt", "tui",
+	"tv", "tw", "tz", "ua", "ubs",
+	"ug", "uk", "university", "uno", "uol",
+	"us", "uy", "uz", "va", "vacations",
+	"vana", "vc", "ve", "vegas", "ventures",
+	"versicherung", "vet", "vg", "vi", "viajes",
+	"video", "villas", "vin", "virgin", "vision",
+	"vista", "vistaprint", "viva", "vlaanderen", "vn",
+	"vodka", "vote", "voting", "voto", "voyage",
+	"vu", "wales", "walter", "wang", "watch",
+	"webcam", "website", "wed", "wedding", "weir",
+	"wf", "whoswho", "wien", "wiki", "williamhill",
+	"win", "windows", "wine", "wme", "work",
+	"works", "world", "ws", "wtc", "wtf",
+	"xbox", "xerox", "xin", "xperia", "xxx",
+	"xyz", "yachts", "yamaxun", "yandex", "ye",
+	"yodobashi", "yoga", "yokohama", "youtube", "yt",
+	"za", "zara", "zip", "zm", "zone",
+	"zuerich", "zw"
+};
+
+#endif
diff --git a/src/common/utils.c b/src/common/utils.c
index d67017a..d85eab3 100644
--- a/src/common/utils.c
+++ b/src/common/utils.c
@@ -82,6 +82,7 @@
 #include "utils.h"
 #include "socket.h"
 #include "../codeconv.h"
+#include "tlds.h"
 
 #define BUFFSIZE	8192
 
@@ -4227,35 +4228,6 @@ gchar *make_uri_string(const gchar *bp, const gchar *ep)
 
 static GHashTable *create_domain_tab(void)
 {
-	static const gchar *toplvl_domains [] = {
-	    "museum", "aero",
-	    "arpa", "coop", "info", "name", "biz", "com", "edu", "gov",
-	    "int", "mil", "net", "org", "ac", "ad", "ae", "af", "ag",
-	    "ai", "al", "am", "an", "ao", "aq", "ar", "as", "at", "au",
-	    "aw", "az", "ba", "bb", "bd", "be", "bf", "bg", "bh", "bi",
-	    "bj", "bm", "bn", "bo", "br", "bs", "bt", "bv", "bw", "by",
-	    "bz", "ca", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl",
-	    "cm", "cn", "co", "cr", "cu", "cv", "cx", "cy", "cz", "de",
-	    "dj", "dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "er",
-	    "es", "et", "eu", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gd",
-	    "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gp", "gq",
-	    "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr",
-	    "ht", "hu", "id", "ie", "il", "im", "in", "io", "iq", "ir",
-	    "is", "it", "je", "jm", "jo", "jp", "ke", "kg", "kh", "ki",
-	    "km", "kn", "kp", "kr", "kw", "ky", "kz", "la", "lb", "lc",
-	    "li", "lk", "lr", "ls", "lt", "lu", "lv", "ly", "ma", "mc",
-	    "md", "mg", "mh", "mk", "ml", "mm", "mn", "mo", "mp", "mq",
-	    "mr", "ms", "mt", "mu", "mv", "mw", "mx", "my", "mz", "na",
-	    "nc", "ne", "nf", "ng", "ni", "nl", "no", "np", "nr", "nu",
-	    "nz", "om", "pa", "pe", "pf", "pg", "ph", "pk", "pl", "pm",
-	    "pn", "pr", "ps", "pt", "pw", "py", "qa", "re", "ro", "ru",
-	    "rw", "sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sj",
-	    "sk", "sl", "sm", "sn", "so", "sr", "st", "sv", "sy", "sz",
-	    "tc", "td", "tf", "tg", "th", "tj", "tk", "tm", "tn", "to",
-	    "tp", "tr", "tt", "tv", "tw", "tz", "ua", "ug", "uk", "um",
-	    "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu",
-	    "wf", "ws", "ye", "yt", "yu", "za", "zm", "zw"
-	};
 	gint n;
 	GHashTable *htab = g_hash_table_new(g_stricase_hash, g_stricase_equal);
 

commit fbfed23b5c4db507fb94df9f910bb1e2f846e2b1
Author: Ricardo Mones <ricardo at mones.org>
Date:   Thu Nov 12 17:31:20 2015 +0100

    Script to print IANA's TLD list as C array

diff --git a/tools/claws.get.tlds.pl b/tools/claws.get.tlds.pl
new file mode 100755
index 0000000..31aa31c
--- /dev/null
+++ b/tools/claws.get.tlds.pl
@@ -0,0 +1,55 @@
+#!/usr/bin/perl -w
+=pod
+=head1
+
+claws.get.tlds.pl - IANA TLDs online list to stdout as gchar* array.
+
+Copyright (c) 2015 Ricardo Mones <ricardo at mones.org>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+=cut
+use 5.012;
+use utf8;
+use LWP::Simple;
+use constant {
+  URL => "https://data.iana.org/TLD/tlds-alpha-by-domain.txt"
+};
+
+print "/*\n * This is a generated file.\n * See tools/claws.get.tlds.pl\n */\n";
+print "#ifndef __TLDS_H__\n#define __TLDS_H__\n\n";
+print "static const gchar *toplvl_domains [] = {\n\t"; # open array
+
+my $payload = get URL;
+my @lines = split /^/, $payload;
+my ($i, $j) = (0, 0);
+
+foreach (@lines) {
+  ++$i;
+  chomp;
+  if (/^#(.*)$/) { # comments
+    my $c = $1; $c =~ s/^\s+|\s+$//g;
+    print "/* $c */\n\t";
+    next;
+  }
+  next if (/^XN--.*$/); # IDNs not supported yet, see bug #1670
+  my $tld = lc $_; # list comes in upper case
+  print "\"$tld\""; ++$j;
+  print "," unless $i >= scalar @lines;
+  print "" . ($j % 5 == 0 or $i >= scalar @lines)? "\n": " ";
+  print "\t" if ($j % 5 == 0 and $i < scalar @lines);
+}
+
+print "};\n\n"; # close array
+print "#endif\n";

-----------------------------------------------------------------------


hooks/post-receive
-- 
Claws Mail


More information about the Commits mailing list