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;
|
||||
} mpns;
|
||||
|
||||
typedef struct s_tlds {
|
||||
char *str;
|
||||
int condition;
|
||||
} tlds;
|
||||
|
||||
int resolve (resolver *r, char **p, char *str, int depth, char **prefixes);
|
||||
int Resolve(char **path, char *name);
|
||||
int ResolveN(char **path, char *name, int depth);
|
||||
|
@ -62,4 +67,10 @@
|
|||
int PublishWithEOL (char *proto, ciPrivKey name, char *value, time_t eol);
|
||||
|
||||
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
|
||||
|
|
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