Initial implementation of namesys/isdomain
This commit is contained in:
parent
b1d5440303
commit
63c7bd72e2
4 changed files with 900 additions and 0 deletions
740
include/ipfs/namesys/isdomain.h
Normal file
740
include/ipfs/namesys/isdomain.h
Normal file
|
@ -0,0 +1,740 @@
|
||||||
|
#ifndef ISDOMAIN_H
|
||||||
|
#define ISDOMAIN_H
|
||||||
|
// TLDs is a set of TLDs, according to ICANN in 2014.
|
||||||
|
tlds TLDs[] = {
|
||||||
|
{ "AC", 1 },
|
||||||
|
{ "ACADEMY", 1 },
|
||||||
|
{ "ACCOUNTANTS", 1 },
|
||||||
|
{ "ACTIVE", 1 },
|
||||||
|
{ "ACTOR", 1 },
|
||||||
|
{ "AD", 1 },
|
||||||
|
{ "AE", 1 },
|
||||||
|
{ "AERO", 1 },
|
||||||
|
{ "AF", 1 },
|
||||||
|
{ "AG", 1 },
|
||||||
|
{ "AGENCY", 1 },
|
||||||
|
{ "AI", 1 },
|
||||||
|
{ "AIRFORCE", 1 },
|
||||||
|
{ "AL", 1 },
|
||||||
|
{ "ALLFINANZ", 1 },
|
||||||
|
{ "AM", 1 },
|
||||||
|
{ "AN", 1 },
|
||||||
|
{ "AO", 1 },
|
||||||
|
{ "AQ", 1 },
|
||||||
|
{ "AR", 1 },
|
||||||
|
{ "ARCHI", 1 },
|
||||||
|
{ "ARMY", 1 },
|
||||||
|
{ "ARPA", 1 },
|
||||||
|
{ "AS", 1 },
|
||||||
|
{ "ASIA", 1 },
|
||||||
|
{ "ASSOCIATES", 1 },
|
||||||
|
{ "AT", 1 },
|
||||||
|
{ "ATTORNEY", 1 },
|
||||||
|
{ "AU", 1 },
|
||||||
|
{ "AUCTION", 1 },
|
||||||
|
{ "AUDIO", 1 },
|
||||||
|
{ "AUTOS", 1 },
|
||||||
|
{ "AW", 1 },
|
||||||
|
{ "AX", 1 },
|
||||||
|
{ "AXA", 1 },
|
||||||
|
{ "AZ", 1 },
|
||||||
|
{ "BA", 1 },
|
||||||
|
{ "BAR", 1 },
|
||||||
|
{ "BARGAINS", 1 },
|
||||||
|
{ "BAYERN", 1 },
|
||||||
|
{ "BB", 1 },
|
||||||
|
{ "BD", 1 },
|
||||||
|
{ "BE", 1 },
|
||||||
|
{ "BEER", 1 },
|
||||||
|
{ "BERLIN", 1 },
|
||||||
|
{ "BEST", 1 },
|
||||||
|
{ "BF", 1 },
|
||||||
|
{ "BG", 1 },
|
||||||
|
{ "BH", 1 },
|
||||||
|
{ "BI", 1 },
|
||||||
|
{ "BID", 1 },
|
||||||
|
{ "BIKE", 1 },
|
||||||
|
{ "BIO", 1 },
|
||||||
|
{ "BIZ", 1 },
|
||||||
|
{ "BJ", 1 },
|
||||||
|
{ "BLACK", 1 },
|
||||||
|
{ "BLACKFRIDAY", 1 },
|
||||||
|
{ "BLUE", 1 },
|
||||||
|
{ "BM", 1 },
|
||||||
|
{ "BMW", 1 },
|
||||||
|
{ "BN", 1 },
|
||||||
|
{ "BNPPARIBAS", 1 },
|
||||||
|
{ "BO", 1 },
|
||||||
|
{ "BOO", 1 },
|
||||||
|
{ "BOUTIQUE", 1 },
|
||||||
|
{ "BR", 1 },
|
||||||
|
{ "BRUSSELS", 1 },
|
||||||
|
{ "BS", 1 },
|
||||||
|
{ "BT", 1 },
|
||||||
|
{ "BUDAPEST", 1 },
|
||||||
|
{ "BUILD", 1 },
|
||||||
|
{ "BUILDERS", 1 },
|
||||||
|
{ "BUSINESS", 1 },
|
||||||
|
{ "BUZZ", 1 },
|
||||||
|
{ "BV", 1 },
|
||||||
|
{ "BW", 1 },
|
||||||
|
{ "BY", 1 },
|
||||||
|
{ "BZ", 1 },
|
||||||
|
{ "BZH", 1 },
|
||||||
|
{ "CA", 1 },
|
||||||
|
{ "CAB", 1 },
|
||||||
|
{ "CAL", 1 },
|
||||||
|
{ "CAMERA", 1 },
|
||||||
|
{ "CAMP", 1 },
|
||||||
|
{ "CANCERRESEARCH", 1 },
|
||||||
|
{ "CAPETOWN", 1 },
|
||||||
|
{ "CAPITAL", 1 },
|
||||||
|
{ "CARAVAN", 1 },
|
||||||
|
{ "CARDS", 1 },
|
||||||
|
{ "CARE", 1 },
|
||||||
|
{ "CAREER", 1 },
|
||||||
|
{ "CAREERS", 1 },
|
||||||
|
{ "CASA", 1 },
|
||||||
|
{ "CASH", 1 },
|
||||||
|
{ "CAT", 1 },
|
||||||
|
{ "CATERING", 1 },
|
||||||
|
{ "CC", 1 },
|
||||||
|
{ "CD", 1 },
|
||||||
|
{ "CENTER", 1 },
|
||||||
|
{ "CEO", 1 },
|
||||||
|
{ "CERN", 1 },
|
||||||
|
{ "CF", 1 },
|
||||||
|
{ "CG", 1 },
|
||||||
|
{ "CH", 1 },
|
||||||
|
{ "CHANNEL", 1 },
|
||||||
|
{ "CHEAP", 1 },
|
||||||
|
{ "CHRISTMAS", 1 },
|
||||||
|
{ "CHROME", 1 },
|
||||||
|
{ "CHURCH", 1 },
|
||||||
|
{ "CI", 1 },
|
||||||
|
{ "CITIC", 1 },
|
||||||
|
{ "CITY", 1 },
|
||||||
|
{ "CK", 1 },
|
||||||
|
{ "CL", 1 },
|
||||||
|
{ "CLAIMS", 1 },
|
||||||
|
{ "CLEANING", 1 },
|
||||||
|
{ "CLICK", 1 },
|
||||||
|
{ "CLINIC", 1 },
|
||||||
|
{ "CLOTHING", 1 },
|
||||||
|
{ "CLUB", 1 },
|
||||||
|
{ "CM", 1 },
|
||||||
|
{ "CN", 1 },
|
||||||
|
{ "CO", 1 },
|
||||||
|
{ "CODES", 1 },
|
||||||
|
{ "COFFEE", 1 },
|
||||||
|
{ "COLLEGE", 1 },
|
||||||
|
{ "COLOGNE", 1 },
|
||||||
|
{ "COM", 1 },
|
||||||
|
{ "COMMUNITY", 1 },
|
||||||
|
{ "COMPANY", 1 },
|
||||||
|
{ "COMPUTER", 1 },
|
||||||
|
{ "CONDOS", 1 },
|
||||||
|
{ "CONSTRUCTION", 1 },
|
||||||
|
{ "CONSULTING", 1 },
|
||||||
|
{ "CONTRACTORS", 1 },
|
||||||
|
{ "COOKING", 1 },
|
||||||
|
{ "COOL", 1 },
|
||||||
|
{ "COOP", 1 },
|
||||||
|
{ "COUNTRY", 1 },
|
||||||
|
{ "CR", 1 },
|
||||||
|
{ "CREDIT", 1 },
|
||||||
|
{ "CREDITCARD", 1 },
|
||||||
|
{ "CRUISES", 1 },
|
||||||
|
{ "CU", 1 },
|
||||||
|
{ "CUISINELLA", 1 },
|
||||||
|
{ "CV", 1 },
|
||||||
|
{ "CW", 1 },
|
||||||
|
{ "CX", 1 },
|
||||||
|
{ "CY", 1 },
|
||||||
|
{ "CYMRU", 1 },
|
||||||
|
{ "CZ", 1 },
|
||||||
|
{ "DAD", 1 },
|
||||||
|
{ "DANCE", 1 },
|
||||||
|
{ "DATING", 1 },
|
||||||
|
{ "DAY", 1 },
|
||||||
|
{ "DE", 1 },
|
||||||
|
{ "DEALS", 1 },
|
||||||
|
{ "DEGREE", 1 },
|
||||||
|
{ "DEMOCRAT", 1 },
|
||||||
|
{ "DENTAL", 1 },
|
||||||
|
{ "DENTIST", 1 },
|
||||||
|
{ "DESI", 1 },
|
||||||
|
{ "DIAMONDS", 1 },
|
||||||
|
{ "DIET", 1 },
|
||||||
|
{ "DIGITAL", 1 },
|
||||||
|
{ "DIRECT", 1 },
|
||||||
|
{ "DIRECTORY", 1 },
|
||||||
|
{ "DISCOUNT", 1 },
|
||||||
|
{ "DJ", 1 },
|
||||||
|
{ "DK", 1 },
|
||||||
|
{ "DM", 1 },
|
||||||
|
{ "DNP", 1 },
|
||||||
|
{ "DO", 1 },
|
||||||
|
{ "DOMAINS", 1 },
|
||||||
|
{ "DURBAN", 1 },
|
||||||
|
{ "DVAG", 1 },
|
||||||
|
{ "DZ", 1 },
|
||||||
|
{ "EAT", 1 },
|
||||||
|
{ "EC", 1 },
|
||||||
|
{ "EDU", 1 },
|
||||||
|
{ "EDUCATION", 1 },
|
||||||
|
{ "EE", 1 },
|
||||||
|
{ "EG", 1 },
|
||||||
|
{ "EMAIL", 1 },
|
||||||
|
{ "ENGINEER", 1 },
|
||||||
|
{ "ENGINEERING", 1 },
|
||||||
|
{ "ENTERPRISES", 1 },
|
||||||
|
{ "EQUIPMENT", 1 },
|
||||||
|
{ "ER", 1 },
|
||||||
|
{ "ES", 1 },
|
||||||
|
{ "ESQ", 1 },
|
||||||
|
{ "ESTATE", 1 },
|
||||||
|
{ "ET", 1 },
|
||||||
|
{ "EU", 1 },
|
||||||
|
{ "EUS", 1 },
|
||||||
|
{ "EVENTS", 1 },
|
||||||
|
{ "EXCHANGE", 1 },
|
||||||
|
{ "EXPERT", 1 },
|
||||||
|
{ "EXPOSED", 1 },
|
||||||
|
{ "FAIL", 1 },
|
||||||
|
{ "FARM", 1 },
|
||||||
|
{ "FEEDBACK", 1 },
|
||||||
|
{ "FI", 1 },
|
||||||
|
{ "FINANCE", 1 },
|
||||||
|
{ "FINANCIAL", 1 },
|
||||||
|
{ "FISH", 1 },
|
||||||
|
{ "FISHING", 1 },
|
||||||
|
{ "FITNESS", 1 },
|
||||||
|
{ "FJ", 1 },
|
||||||
|
{ "FK", 1 },
|
||||||
|
{ "FLIGHTS", 1 },
|
||||||
|
{ "FLORIST", 1 },
|
||||||
|
{ "FLY", 1 },
|
||||||
|
{ "FM", 1 },
|
||||||
|
{ "FO", 1 },
|
||||||
|
{ "FOO", 1 },
|
||||||
|
{ "FORSALE", 1 },
|
||||||
|
{ "FOUNDATION", 1 },
|
||||||
|
{ "FR", 1 },
|
||||||
|
{ "FRL", 1 },
|
||||||
|
{ "FROGANS", 1 },
|
||||||
|
{ "FUND", 1 },
|
||||||
|
{ "FURNITURE", 1 },
|
||||||
|
{ "FUTBOL", 1 },
|
||||||
|
{ "GA", 1 },
|
||||||
|
{ "GAL", 1 },
|
||||||
|
{ "GALLERY", 1 },
|
||||||
|
{ "GB", 1 },
|
||||||
|
{ "GBIZ", 1 },
|
||||||
|
{ "GD", 1 },
|
||||||
|
{ "GE", 1 },
|
||||||
|
{ "GENT", 1 },
|
||||||
|
{ "GF", 1 },
|
||||||
|
{ "GG", 1 },
|
||||||
|
{ "GH", 1 },
|
||||||
|
{ "GI", 1 },
|
||||||
|
{ "GIFT", 1 },
|
||||||
|
{ "GIFTS", 1 },
|
||||||
|
{ "GIVES", 1 },
|
||||||
|
{ "GL", 1 },
|
||||||
|
{ "GLASS", 1 },
|
||||||
|
{ "GLE", 1 },
|
||||||
|
{ "GLOBAL", 1 },
|
||||||
|
{ "GLOBO", 1 },
|
||||||
|
{ "GM", 1 },
|
||||||
|
{ "GMAIL", 1 },
|
||||||
|
{ "GMO", 1 },
|
||||||
|
{ "GMX", 1 },
|
||||||
|
{ "GN", 1 },
|
||||||
|
{ "GOOGLE", 1 },
|
||||||
|
{ "GOP", 1 },
|
||||||
|
{ "GOV", 1 },
|
||||||
|
{ "GP", 1 },
|
||||||
|
{ "GQ", 1 },
|
||||||
|
{ "GR", 1 },
|
||||||
|
{ "GRAPHICS", 1 },
|
||||||
|
{ "GRATIS", 1 },
|
||||||
|
{ "GREEN", 1 },
|
||||||
|
{ "GRIPE", 1 },
|
||||||
|
{ "GS", 1 },
|
||||||
|
{ "GT", 1 },
|
||||||
|
{ "GU", 1 },
|
||||||
|
{ "GUIDE", 1 },
|
||||||
|
{ "GUITARS", 1 },
|
||||||
|
{ "GURU", 1 },
|
||||||
|
{ "GW", 1 },
|
||||||
|
{ "GY", 1 },
|
||||||
|
{ "HAMBURG", 1 },
|
||||||
|
{ "HAUS", 1 },
|
||||||
|
{ "HEALTHCARE", 1 },
|
||||||
|
{ "HELP", 1 },
|
||||||
|
{ "HERE", 1 },
|
||||||
|
{ "HIPHOP", 1 },
|
||||||
|
{ "HIV", 1 },
|
||||||
|
{ "HK", 1 },
|
||||||
|
{ "HM", 1 },
|
||||||
|
{ "HN", 1 },
|
||||||
|
{ "HOLDINGS", 1 },
|
||||||
|
{ "HOLIDAY", 1 },
|
||||||
|
{ "HOMES", 1 },
|
||||||
|
{ "HORSE", 1 },
|
||||||
|
{ "HOST", 1 },
|
||||||
|
{ "HOSTING", 1 },
|
||||||
|
{ "HOUSE", 1 },
|
||||||
|
{ "HOW", 1 },
|
||||||
|
{ "HR", 1 },
|
||||||
|
{ "HT", 1 },
|
||||||
|
{ "HU", 1 },
|
||||||
|
{ "IBM", 1 },
|
||||||
|
{ "ID", 1 },
|
||||||
|
{ "IE", 1 },
|
||||||
|
{ "IL", 1 },
|
||||||
|
{ "IM", 1 },
|
||||||
|
{ "IMMO", 1 },
|
||||||
|
{ "IMMOBILIEN", 1 },
|
||||||
|
{ "IN", 1 },
|
||||||
|
{ "INDUSTRIES", 1 },
|
||||||
|
{ "INFO", 1 },
|
||||||
|
{ "ING", 1 },
|
||||||
|
{ "INK", 1 },
|
||||||
|
{ "INSTITUTE", 1 },
|
||||||
|
{ "INSURE", 1 },
|
||||||
|
{ "INT", 1 },
|
||||||
|
{ "INTERNATIONAL", 1 },
|
||||||
|
{ "INVESTMENTS", 1 },
|
||||||
|
{ "IO", 1 },
|
||||||
|
{ "IQ", 1 },
|
||||||
|
{ "IR", 1 },
|
||||||
|
{ "IS", 1 },
|
||||||
|
{ "IT", 1 },
|
||||||
|
{ "JE", 1 },
|
||||||
|
{ "JETZT", 1 },
|
||||||
|
{ "JM", 1 },
|
||||||
|
{ "JO", 1 },
|
||||||
|
{ "JOBS", 1 },
|
||||||
|
{ "JOBURG", 1 },
|
||||||
|
{ "JP", 1 },
|
||||||
|
{ "JUEGOS", 1 },
|
||||||
|
{ "KAUFEN", 1 },
|
||||||
|
{ "KE", 1 },
|
||||||
|
{ "KG", 1 },
|
||||||
|
{ "KH", 1 },
|
||||||
|
{ "KI", 1 },
|
||||||
|
{ "KIM", 1 },
|
||||||
|
{ "KITCHEN", 1 },
|
||||||
|
{ "KIWI", 1 },
|
||||||
|
{ "KM", 1 },
|
||||||
|
{ "KN", 1 },
|
||||||
|
{ "KOELN", 1 },
|
||||||
|
{ "KP", 1 },
|
||||||
|
{ "KR", 1 },
|
||||||
|
{ "KRD", 1 },
|
||||||
|
{ "KRED", 1 },
|
||||||
|
{ "KW", 1 },
|
||||||
|
{ "KY", 1 },
|
||||||
|
{ "KZ", 1 },
|
||||||
|
{ "LA", 1 },
|
||||||
|
{ "LACAIXA", 1 },
|
||||||
|
{ "LAND", 1 },
|
||||||
|
{ "LAWYER", 1 },
|
||||||
|
{ "LB", 1 },
|
||||||
|
{ "LC", 1 },
|
||||||
|
{ "LEASE", 1 },
|
||||||
|
{ "LGBT", 1 },
|
||||||
|
{ "LI", 1 },
|
||||||
|
{ "LIFE", 1 },
|
||||||
|
{ "LIGHTING", 1 },
|
||||||
|
{ "LIMITED", 1 },
|
||||||
|
{ "LIMO", 1 },
|
||||||
|
{ "LINK", 1 },
|
||||||
|
{ "LK", 1 },
|
||||||
|
{ "LOANS", 1 },
|
||||||
|
{ "LONDON", 1 },
|
||||||
|
{ "LOTTO", 1 },
|
||||||
|
{ "LR", 1 },
|
||||||
|
{ "LS", 1 },
|
||||||
|
{ "LT", 1 },
|
||||||
|
{ "LTDA", 1 },
|
||||||
|
{ "LU", 1 },
|
||||||
|
{ "LUXE", 1 },
|
||||||
|
{ "LUXURY", 1 },
|
||||||
|
{ "LV", 1 },
|
||||||
|
{ "LY", 1 },
|
||||||
|
{ "MA", 1 },
|
||||||
|
{ "MAISON", 1 },
|
||||||
|
{ "MANAGEMENT", 1 },
|
||||||
|
{ "MANGO", 1 },
|
||||||
|
{ "MARKET", 1 },
|
||||||
|
{ "MARKETING", 1 },
|
||||||
|
{ "MC", 1 },
|
||||||
|
{ "MD", 1 },
|
||||||
|
{ "ME", 1 },
|
||||||
|
{ "MEDIA", 1 },
|
||||||
|
{ "MEET", 1 },
|
||||||
|
{ "MELBOURNE", 1 },
|
||||||
|
{ "MEME", 1 },
|
||||||
|
{ "MENU", 1 },
|
||||||
|
{ "MG", 1 },
|
||||||
|
{ "MH", 1 },
|
||||||
|
{ "MIAMI", 1 },
|
||||||
|
{ "MIL", 1 },
|
||||||
|
{ "MINI", 1 },
|
||||||
|
{ "MK", 1 },
|
||||||
|
{ "ML", 1 },
|
||||||
|
{ "MM", 1 },
|
||||||
|
{ "MN", 1 },
|
||||||
|
{ "MO", 1 },
|
||||||
|
{ "MOBI", 1 },
|
||||||
|
{ "MODA", 1 },
|
||||||
|
{ "MOE", 1 },
|
||||||
|
{ "MONASH", 1 },
|
||||||
|
{ "MORTGAGE", 1 },
|
||||||
|
{ "MOSCOW", 1 },
|
||||||
|
{ "MOTORCYCLES", 1 },
|
||||||
|
{ "MOV", 1 },
|
||||||
|
{ "MP", 1 },
|
||||||
|
{ "MQ", 1 },
|
||||||
|
{ "MR", 1 },
|
||||||
|
{ "MS", 1 },
|
||||||
|
{ "MT", 1 },
|
||||||
|
{ "MU", 1 },
|
||||||
|
{ "MUSEUM", 1 },
|
||||||
|
{ "MV", 1 },
|
||||||
|
{ "MW", 1 },
|
||||||
|
{ "MX", 1 },
|
||||||
|
{ "MY", 1 },
|
||||||
|
{ "MZ", 1 },
|
||||||
|
{ "NA", 1 },
|
||||||
|
{ "NAGOYA", 1 },
|
||||||
|
{ "NAME", 1 },
|
||||||
|
{ "NAVY", 1 },
|
||||||
|
{ "NC", 1 },
|
||||||
|
{ "NE", 1 },
|
||||||
|
{ "NET", 1 },
|
||||||
|
{ "NETWORK", 1 },
|
||||||
|
{ "NEUSTAR", 1 },
|
||||||
|
{ "NEW", 1 },
|
||||||
|
{ "NEXUS", 1 },
|
||||||
|
{ "NF", 1 },
|
||||||
|
{ "NG", 1 },
|
||||||
|
{ "NGO", 1 },
|
||||||
|
{ "NHK", 1 },
|
||||||
|
{ "NI", 1 },
|
||||||
|
{ "NINJA", 1 },
|
||||||
|
{ "NL", 1 },
|
||||||
|
{ "NO", 1 },
|
||||||
|
{ "NP", 1 },
|
||||||
|
{ "NR", 1 },
|
||||||
|
{ "NRA", 1 },
|
||||||
|
{ "NRW", 1 },
|
||||||
|
{ "NU", 1 },
|
||||||
|
{ "NYC", 1 },
|
||||||
|
{ "NZ", 1 },
|
||||||
|
{ "OKINAWA", 1 },
|
||||||
|
{ "OM", 1 },
|
||||||
|
{ "ONG", 1 },
|
||||||
|
{ "ONL", 1 },
|
||||||
|
{ "OOO", 1 },
|
||||||
|
{ "ORG", 1 },
|
||||||
|
{ "ORGANIC", 1 },
|
||||||
|
{ "OTSUKA", 1 },
|
||||||
|
{ "OVH", 1 },
|
||||||
|
{ "PA", 1 },
|
||||||
|
{ "PARIS", 1 },
|
||||||
|
{ "PARTNERS", 1 },
|
||||||
|
{ "PARTS", 1 },
|
||||||
|
{ "PE", 1 },
|
||||||
|
{ "PF", 1 },
|
||||||
|
{ "PG", 1 },
|
||||||
|
{ "PH", 1 },
|
||||||
|
{ "PHARMACY", 1 },
|
||||||
|
{ "PHOTO", 1 },
|
||||||
|
{ "PHOTOGRAPHY", 1 },
|
||||||
|
{ "PHOTOS", 1 },
|
||||||
|
{ "PHYSIO", 1 },
|
||||||
|
{ "PICS", 1 },
|
||||||
|
{ "PICTURES", 1 },
|
||||||
|
{ "PINK", 1 },
|
||||||
|
{ "PIZZA", 1 },
|
||||||
|
{ "PK", 1 },
|
||||||
|
{ "PL", 1 },
|
||||||
|
{ "PLACE", 1 },
|
||||||
|
{ "PLUMBING", 1 },
|
||||||
|
{ "PM", 1 },
|
||||||
|
{ "PN", 1 },
|
||||||
|
{ "POHL", 1 },
|
||||||
|
{ "POST", 1 },
|
||||||
|
{ "PR", 1 },
|
||||||
|
{ "PRAXI", 1 },
|
||||||
|
{ "PRESS", 1 },
|
||||||
|
{ "PRO", 1 },
|
||||||
|
{ "PROD", 1 },
|
||||||
|
{ "PRODUCTIONS", 1 },
|
||||||
|
{ "PROF", 1 },
|
||||||
|
{ "PROPERTIES", 1 },
|
||||||
|
{ "PROPERTY", 1 },
|
||||||
|
{ "PS", 1 },
|
||||||
|
{ "PT", 1 },
|
||||||
|
{ "PUB", 1 },
|
||||||
|
{ "PW", 1 },
|
||||||
|
{ "PY", 1 },
|
||||||
|
{ "QA", 1 },
|
||||||
|
{ "QPON", 1 },
|
||||||
|
{ "QUEBEC", 1 },
|
||||||
|
{ "RE", 1 },
|
||||||
|
{ "REALTOR", 1 },
|
||||||
|
{ "RECIPES", 1 },
|
||||||
|
{ "RED", 1 },
|
||||||
|
{ "REHAB", 1 },
|
||||||
|
{ "REISE", 1 },
|
||||||
|
{ "REISEN", 1 },
|
||||||
|
{ "REN", 1 },
|
||||||
|
{ "RENTALS", 1 },
|
||||||
|
{ "REPAIR", 1 },
|
||||||
|
{ "REPORT", 1 },
|
||||||
|
{ "REPUBLICAN", 1 },
|
||||||
|
{ "REST", 1 },
|
||||||
|
{ "RESTAURANT", 1 },
|
||||||
|
{ "REVIEWS", 1 },
|
||||||
|
{ "RICH", 1 },
|
||||||
|
{ "RIO", 1 },
|
||||||
|
{ "RO", 1 },
|
||||||
|
{ "ROCKS", 1 },
|
||||||
|
{ "RODEO", 1 },
|
||||||
|
{ "RS", 1 },
|
||||||
|
{ "RSVP", 1 },
|
||||||
|
{ "RU", 1 },
|
||||||
|
{ "RUHR", 1 },
|
||||||
|
{ "RW", 1 },
|
||||||
|
{ "RYUKYU", 1 },
|
||||||
|
{ "SA", 1 },
|
||||||
|
{ "SAARLAND", 1 },
|
||||||
|
{ "SARL", 1 },
|
||||||
|
{ "SB", 1 },
|
||||||
|
{ "SC", 1 },
|
||||||
|
{ "SCA", 1 },
|
||||||
|
{ "SCB", 1 },
|
||||||
|
{ "SCHMIDT", 1 },
|
||||||
|
{ "SCHULE", 1 },
|
||||||
|
{ "SCOT", 1 },
|
||||||
|
{ "SD", 1 },
|
||||||
|
{ "SE", 1 },
|
||||||
|
{ "SERVICES", 1 },
|
||||||
|
{ "SEXY", 1 },
|
||||||
|
{ "SG", 1 },
|
||||||
|
{ "SH", 1 },
|
||||||
|
{ "SHIKSHA", 1 },
|
||||||
|
{ "SHOES", 1 },
|
||||||
|
{ "SI", 1 },
|
||||||
|
{ "SINGLES", 1 },
|
||||||
|
{ "SJ", 1 },
|
||||||
|
{ "SK", 1 },
|
||||||
|
{ "SL", 1 },
|
||||||
|
{ "SM", 1 },
|
||||||
|
{ "SN", 1 },
|
||||||
|
{ "SO", 1 },
|
||||||
|
{ "SOCIAL", 1 },
|
||||||
|
{ "SOFTWARE", 1 },
|
||||||
|
{ "SOHU", 1 },
|
||||||
|
{ "SOLAR", 1 },
|
||||||
|
{ "SOLUTIONS", 1 },
|
||||||
|
{ "SOY", 1 },
|
||||||
|
{ "SPACE", 1 },
|
||||||
|
{ "SPIEGEL", 1 },
|
||||||
|
{ "SR", 1 },
|
||||||
|
{ "ST", 1 },
|
||||||
|
{ "SU", 1 },
|
||||||
|
{ "SUPPLIES", 1 },
|
||||||
|
{ "SUPPLY", 1 },
|
||||||
|
{ "SUPPORT", 1 },
|
||||||
|
{ "SURF", 1 },
|
||||||
|
{ "SURGERY", 1 },
|
||||||
|
{ "SUZUKI", 1 },
|
||||||
|
{ "SV", 1 },
|
||||||
|
{ "SX", 1 },
|
||||||
|
{ "SY", 1 },
|
||||||
|
{ "SYSTEMS", 1 },
|
||||||
|
{ "SZ", 1 },
|
||||||
|
{ "TATAR", 1 },
|
||||||
|
{ "TATTOO", 1 },
|
||||||
|
{ "TAX", 1 },
|
||||||
|
{ "TC", 1 },
|
||||||
|
{ "TD", 1 },
|
||||||
|
{ "TECHNOLOGY", 1 },
|
||||||
|
{ "TEL", 1 },
|
||||||
|
{ "TF", 1 },
|
||||||
|
{ "TG", 1 },
|
||||||
|
{ "TH", 1 },
|
||||||
|
{ "TIENDA", 1 },
|
||||||
|
{ "TIPS", 1 },
|
||||||
|
{ "TIROL", 1 },
|
||||||
|
{ "TJ", 1 },
|
||||||
|
{ "TK", 1 },
|
||||||
|
{ "TL", 1 },
|
||||||
|
{ "TM", 1 },
|
||||||
|
{ "TN", 1 },
|
||||||
|
{ "TO", 1 },
|
||||||
|
{ "TODAY", 1 },
|
||||||
|
{ "TOKYO", 1 },
|
||||||
|
{ "TOOLS", 1 },
|
||||||
|
{ "TOP", 1 },
|
||||||
|
{ "TOWN", 1 },
|
||||||
|
{ "TOYS", 1 },
|
||||||
|
{ "TP", 1 },
|
||||||
|
{ "TR", 1 },
|
||||||
|
{ "TRADE", 1 },
|
||||||
|
{ "TRAINING", 1 },
|
||||||
|
{ "TRAVEL", 1 },
|
||||||
|
{ "TT", 1 },
|
||||||
|
{ "TUI", 1 },
|
||||||
|
{ "TV", 1 },
|
||||||
|
{ "TW", 1 },
|
||||||
|
{ "TZ", 1 },
|
||||||
|
{ "UA", 1 },
|
||||||
|
{ "UG", 1 },
|
||||||
|
{ "UK", 1 },
|
||||||
|
{ "UNIVERSITY", 1 },
|
||||||
|
{ "UNO", 1 },
|
||||||
|
{ "UOL", 1 },
|
||||||
|
{ "US", 1 },
|
||||||
|
{ "UY", 1 },
|
||||||
|
{ "UZ", 1 },
|
||||||
|
{ "VA", 1 },
|
||||||
|
{ "VACATIONS", 1 },
|
||||||
|
{ "VC", 1 },
|
||||||
|
{ "VE", 1 },
|
||||||
|
{ "VEGAS", 1 },
|
||||||
|
{ "VENTURES", 1 },
|
||||||
|
{ "VERSICHERUNG", 1 },
|
||||||
|
{ "VET", 1 },
|
||||||
|
{ "VG", 1 },
|
||||||
|
{ "VI", 1 },
|
||||||
|
{ "VIAJES", 1 },
|
||||||
|
{ "VILLAS", 1 },
|
||||||
|
{ "VISION", 1 },
|
||||||
|
{ "VLAANDEREN", 1 },
|
||||||
|
{ "VN", 1 },
|
||||||
|
{ "VODKA", 1 },
|
||||||
|
{ "VOTE", 1 },
|
||||||
|
{ "VOTING", 1 },
|
||||||
|
{ "VOTO", 1 },
|
||||||
|
{ "VOYAGE", 1 },
|
||||||
|
{ "VU", 1 },
|
||||||
|
{ "WALES", 1 },
|
||||||
|
{ "WANG", 1 },
|
||||||
|
{ "WATCH", 1 },
|
||||||
|
{ "WEBCAM", 1 },
|
||||||
|
{ "WEBSITE", 1 },
|
||||||
|
{ "WED", 1 },
|
||||||
|
{ "WF", 1 },
|
||||||
|
{ "WHOSWHO", 1 },
|
||||||
|
{ "WIEN", 1 },
|
||||||
|
{ "WIKI", 1 },
|
||||||
|
{ "WILLIAMHILL", 1 },
|
||||||
|
{ "WME", 1 },
|
||||||
|
{ "WORK", 1 },
|
||||||
|
{ "WORKS", 1 },
|
||||||
|
{ "WORLD", 1 },
|
||||||
|
{ "WS", 1 },
|
||||||
|
{ "WTC", 1 },
|
||||||
|
{ "WTF", 1 },
|
||||||
|
{ "XN--1QQW23A", 1 },
|
||||||
|
{ "XN--3BST00M", 1 },
|
||||||
|
{ "XN--3DS443G", 1 },
|
||||||
|
{ "XN--3E0B707E", 1 },
|
||||||
|
{ "XN--45BRJ9C", 1 },
|
||||||
|
{ "XN--4GBRIM", 1 },
|
||||||
|
{ "XN--55QW42G", 1 },
|
||||||
|
{ "XN--55QX5D", 1 },
|
||||||
|
{ "XN--6FRZ82G", 1 },
|
||||||
|
{ "XN--6QQ986B3XL", 1 },
|
||||||
|
{ "XN--80ADXHKS", 1 },
|
||||||
|
{ "XN--80AO21A", 1 },
|
||||||
|
{ "XN--80ASEHDB", 1 },
|
||||||
|
{ "XN--80ASWG", 1 },
|
||||||
|
{ "XN--90A3AC", 1 },
|
||||||
|
{ "XN--C1AVG", 1 },
|
||||||
|
{ "XN--CG4BKI", 1 },
|
||||||
|
{ "XN--CLCHC0EA0B2G2A9GCD", 1 },
|
||||||
|
{ "XN--CZR694B", 1 },
|
||||||
|
{ "XN--CZRU2D", 1 },
|
||||||
|
{ "XN--D1ACJ3B", 1 },
|
||||||
|
{ "XN--FIQ228C5HS", 1 },
|
||||||
|
{ "XN--FIQ64B", 1 },
|
||||||
|
{ "XN--FIQS8S", 1 },
|
||||||
|
{ "XN--FIQZ9S", 1 },
|
||||||
|
{ "XN--FPCRJ9C3D", 1 },
|
||||||
|
{ "XN--FZC2C9E2C", 1 },
|
||||||
|
{ "XN--GECRJ9C", 1 },
|
||||||
|
{ "XN--H2BRJ9C", 1 },
|
||||||
|
{ "XN--I1B6B1A6A2E", 1 },
|
||||||
|
{ "XN--IO0A7I", 1 },
|
||||||
|
{ "XN--J1AMH", 1 },
|
||||||
|
{ "XN--J6W193G", 1 },
|
||||||
|
{ "XN--KPRW13D", 1 },
|
||||||
|
{ "XN--KPRY57D", 1 },
|
||||||
|
{ "XN--KPUT3I", 1 },
|
||||||
|
{ "XN--L1ACC", 1 },
|
||||||
|
{ "XN--LGBBAT1AD8J", 1 },
|
||||||
|
{ "XN--MGB9AWBF", 1 },
|
||||||
|
{ "XN--MGBA3A4F16A", 1 },
|
||||||
|
{ "XN--MGBAAM7A8H", 1 },
|
||||||
|
{ "XN--MGBAB2BD", 1 },
|
||||||
|
{ "XN--MGBAYH7GPA", 1 },
|
||||||
|
{ "XN--MGBBH1A71E", 1 },
|
||||||
|
{ "XN--MGBC0A9AZCG", 1 },
|
||||||
|
{ "XN--MGBERP4A5D4AR", 1 },
|
||||||
|
{ "XN--MGBX4CD0AB", 1 },
|
||||||
|
{ "XN--NGBC5AZD", 1 },
|
||||||
|
{ "XN--NQV7F", 1 },
|
||||||
|
{ "XN--NQV7FS00EMA", 1 },
|
||||||
|
{ "XN--O3CW4H", 1 },
|
||||||
|
{ "XN--OGBPF8FL", 1 },
|
||||||
|
{ "XN--P1ACF", 1 },
|
||||||
|
{ "XN--P1AI", 1 },
|
||||||
|
{ "XN--PGBS0DH", 1 },
|
||||||
|
{ "XN--Q9JYB4C", 1 },
|
||||||
|
{ "XN--RHQV96G", 1 },
|
||||||
|
{ "XN--S9BRJ9C", 1 },
|
||||||
|
{ "XN--SES554G", 1 },
|
||||||
|
{ "XN--UNUP4Y", 1 },
|
||||||
|
{ "XN--VERMGENSBERATER-CTB", 1 },
|
||||||
|
{ "XN--VERMGENSBERATUNG-PWB", 1 },
|
||||||
|
{ "XN--VHQUV", 1 },
|
||||||
|
{ "XN--WGBH1C", 1 },
|
||||||
|
{ "XN--WGBL6A", 1 },
|
||||||
|
{ "XN--XHQ521B", 1 },
|
||||||
|
{ "XN--XKC2AL3HYE2A", 1 },
|
||||||
|
{ "XN--XKC2DL3A5EE0H", 1 },
|
||||||
|
{ "XN--YFRO4I67O", 1 },
|
||||||
|
{ "XN--YGBI2AMMX", 1 },
|
||||||
|
{ "XN--ZFR164B", 1 },
|
||||||
|
{ "XXX", 1 },
|
||||||
|
{ "XYZ", 1 },
|
||||||
|
{ "YACHTS", 1 },
|
||||||
|
{ "YANDEX", 1 },
|
||||||
|
{ "YE", 1 },
|
||||||
|
{ "YOKOHAMA", 1 },
|
||||||
|
{ "YOUTUBE", 1 },
|
||||||
|
{ "YT", 1 },
|
||||||
|
{ "ZA", 1 },
|
||||||
|
{ "ZIP", 1 },
|
||||||
|
{ "ZM", 1 },
|
||||||
|
{ "ZONE", 1 },
|
||||||
|
{ "ZW", 1 },
|
||||||
|
{ NULL, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
// ExtendedTLDs is a set of additional "TLDs", allowing decentralized name
|
||||||
|
// systems, like TOR and Namecoin.
|
||||||
|
tlds ExtendedTLDs[] = {
|
||||||
|
{ "BIT", 1 },
|
||||||
|
{ "ONION", 1 },
|
||||||
|
{ NULL, 0 }
|
||||||
|
};
|
||||||
|
#endif
|
|
@ -54,6 +54,11 @@
|
||||||
publishers *Publisher;
|
publishers *Publisher;
|
||||||
} mpns;
|
} mpns;
|
||||||
|
|
||||||
|
typedef struct s_tlds {
|
||||||
|
char *str;
|
||||||
|
int condition;
|
||||||
|
} tlds;
|
||||||
|
|
||||||
int resolve (resolver *r, char **p, char *str, int depth, char **prefixes);
|
int resolve (resolver *r, char **p, char *str, int depth, char **prefixes);
|
||||||
int Resolve(char **path, char *name);
|
int Resolve(char **path, char *name);
|
||||||
int ResolveN(char **path, char *name, int depth);
|
int ResolveN(char **path, char *name, int depth);
|
||||||
|
@ -62,4 +67,10 @@
|
||||||
int PublishWithEOL (char *proto, ciPrivKey name, char *value, time_t eol);
|
int PublishWithEOL (char *proto, ciPrivKey name, char *value, time_t eol);
|
||||||
|
|
||||||
int ProquintResolveOnce (char **p, char *name);
|
int ProquintResolveOnce (char **p, char *name);
|
||||||
|
|
||||||
|
int domainMatchString (char *d);
|
||||||
|
int IsICANNTLD(char *s);
|
||||||
|
int IsExtendedTLD (char *s);
|
||||||
|
int IsTLD (char *s);
|
||||||
|
int IsDomain (char *s);
|
||||||
#endif //NAMESYS_H
|
#endif //NAMESYS_H
|
||||||
|
|
33
namesys/is_domain_test.c
Normal file
33
namesys/is_domain_test.c
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include "ipfs/namesys/namesys.h"
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
tlds chk[] = {
|
||||||
|
{ "foo.bar.baz.com", 1 },
|
||||||
|
{ "foo.bar.baz", 0 },
|
||||||
|
{ "foo.bar.baz.com.", 1 },
|
||||||
|
{ "com", 0 }, // yeah yeah...
|
||||||
|
{ ".", 0 }, // yeah yeah...
|
||||||
|
{ "..", 0 },
|
||||||
|
{ ".foo.com.", 0 },
|
||||||
|
{ ".foo.com", 0 },
|
||||||
|
{ "fo o.com", 0 },
|
||||||
|
{ "example.com", 1 },
|
||||||
|
{ "fjdoisajfdiosafdsa8fd8saf8dsa8fdsafdsa-fd-sa-fd-saf-dsa.org", 1 },
|
||||||
|
{ "fjdoisajfdiosafdsa8fd8saf8dsa8fdsafdsa-fd-sa-fd-saf-dsa.bit", 1 },
|
||||||
|
{ "fjdoisajfdiosafdsa8fd8saf8dsa8fdsafdsa-fd-sa-fd-saf-dsa.onion", 1 },
|
||||||
|
{ "a.b.c.d.e.f.g.h.i.j.k.l.museum", 1 },
|
||||||
|
{ "a.b.c.d.e.f.g.h.i.j.k.l", 0 },
|
||||||
|
{ NULL, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i = 0 ; chk[i].str ; i++) {
|
||||||
|
if (IsDomain (chk[i].str) != chk[i].condition) {
|
||||||
|
printf ("Misclassification: %s should be %d\n", chk[i].str, chk[i].condition);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
116
namesys/isdomain.c
Normal file
116
namesys/isdomain.c
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include "ipfs/namesys/namesys.h"
|
||||||
|
#include "ipfs/namesys/isdomain.h"
|
||||||
|
|
||||||
|
void ToUpper(char *dst, char *src)
|
||||||
|
{
|
||||||
|
while(*src) {
|
||||||
|
*dst++ = toupper(*src++);
|
||||||
|
}
|
||||||
|
*dst = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
int HasSuffix (char *s, char *suf)
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
p = s + strlen(s) - strlen(suf);
|
||||||
|
return strcmp(p, suf) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int IsAtArray(tlds *a, char *s)
|
||||||
|
{
|
||||||
|
char str[strlen(s)+1];
|
||||||
|
|
||||||
|
ToUpper(str, s);
|
||||||
|
while(a->str) {
|
||||||
|
if (strcmp(a->str, str) == 0) {
|
||||||
|
return a->condition;
|
||||||
|
}
|
||||||
|
a++;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int domainMatchString (char *d)
|
||||||
|
{
|
||||||
|
char str[strlen(d)+1], *p = str, *l;
|
||||||
|
|
||||||
|
ToUpper(str, d);
|
||||||
|
|
||||||
|
// l point to last two chars.
|
||||||
|
l = p + strlen(p) - 2;
|
||||||
|
|
||||||
|
// can't start with a dot
|
||||||
|
if (*p == '.') {
|
||||||
|
return 0; // invalid
|
||||||
|
}
|
||||||
|
|
||||||
|
// last 2 chars can't be a dot or a number.
|
||||||
|
if ((*l >= 'A' && *l <= 'Z') && (l[1] >= 'A' && l[1] <= 'Z')) {
|
||||||
|
while (*p) {
|
||||||
|
if ((*p >= 'A' && *p <= 'Z') || (*p >= '0' && *p <= '9') || *p == '.' || *p == '-') {
|
||||||
|
p++;
|
||||||
|
} else {
|
||||||
|
return 0; // invalid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 0; // invalid
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1; // valid
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsICANNTLD returns whether the given string is a TLD (Top Level Domain),
|
||||||
|
// according to ICANN. Well, really according to the TLDs listed in this
|
||||||
|
// package.
|
||||||
|
int IsICANNTLD(char *s)
|
||||||
|
{
|
||||||
|
return IsAtArray (TLDs, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsExtendedTLD returns whether the given string is a TLD (Top Level Domain),
|
||||||
|
// extended with a few other "TLDs", .bit, .onion
|
||||||
|
int IsExtendedTLD (char *s)
|
||||||
|
{
|
||||||
|
return IsAtArray (ExtendedTLDs, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsTLD returns whether the given string is a TLD (according to ICANN, or
|
||||||
|
// in the set of ExtendedTLDs listed in this package.
|
||||||
|
int IsTLD (char *s)
|
||||||
|
{
|
||||||
|
return IsICANNTLD (s) || IsExtendedTLD(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsDomain returns whether given string is a domain.
|
||||||
|
// It first checks the TLD, and then uses a regular expression.
|
||||||
|
int IsDomain (char *s)
|
||||||
|
{
|
||||||
|
char str[strlen(s)];
|
||||||
|
char *tld;
|
||||||
|
|
||||||
|
strcpy(str, s);
|
||||||
|
s = str; // work with local copy.
|
||||||
|
|
||||||
|
if (HasSuffix (s, ".")) {
|
||||||
|
s[strlen(s) - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
tld = strrchr(s, '.');
|
||||||
|
|
||||||
|
if (!tld) { // don't have a dot.
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tld++; // ignore last dot
|
||||||
|
|
||||||
|
if (!IsTLD (tld)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return domainMatchString(s);
|
||||||
|
}
|
Loading…
Reference in a new issue