Subversion Repositories vgwhois

Compare Revisions

No changes between revisions

Regard whitespace Rev 91 → Rev 90

/trunk/CHANGELOG
7,10 → 7,6
 
=== History of VGWhoIs ===
 
(Note that VGWhoIs is very frequently updated in regards pattern files.
These regular pattern updates are not listed in this changelog.)
 
2022-07-20 maintenance marschall "Test case" maintenance tool discontinued and removed from source code.
2019-04-29 program marschall Removed Debian package code. Distribution now via SVN!
New directory structure strictly separates between gwhois itself ("main") and the maintenance programs ("maintenance")
2015-05-06 program marschall pattern.d/* will now be preferred.
/trunk/TODO
4,6 → 4,8
:whois|...
+:notice||...
 
Make better automated test cases that check if CGI/CGIPOST requests were sucessful
 
Problem: If you run the pattern update, you will most likely create a conflict when running the SVN update
 
Installer: The package names are optimized for Debian. How to make it work for other distros?
11,6 → 13,10
 
Look at all TODO entries in the source codes
 
Build up test case system
... test and rate all patterns automatically
... there are partially problems with highlighting
 
RIR bugreports
 
Core: Insert "\n\n" after each output of www or other subprogram?
/trunk/copyright
5,7 → 5,7
Files: *
Copyright: 1998-2012, Juliane Holzt <debian@julijane.de> and contributors
Lutz Donnerhacke <Lutz.Donnerhacke@Jena.Thur.De> (Previous Co-Author)
2010-2022, Daniel Marschall <daniel-marschall@viathinksoft.de>
2010-2019, Daniel Marschall <daniel-marschall@viathinksoft.de>
License: GPL-2
 
Files: maintenance/*
/trunk/main/pattern/asn
2,7 → 2,7
 
# Autonomous System Numbers (ASN)
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:34 GMT+0200
# Generation timestamp: 2022-07-13 00:02:02 GMT+0200
# Source: (20211207) https://www.iana.org/assignments/as-numbers/as-numbers.txt
 
# ARIN
/trunk/main/pattern/domains
1,4 → 1,4
#: version 20220720
#: version 20220710
# Domains
# This file can be updated by running "vgwhois-pattern-update", but it does only ADD new "New gTLDs".
 
6020,8 → 6020,7
:whois|whois.nic.gmo
\.fujitsu$
 
#:whois|whois.afilias-srs.net
:whois|whois.nic.godaddy
:whois|whois.afilias-srs.net
\.godaddy$
 
:whois|whois.nic.gmo
6545,7 → 6544,7
\.africa$
 
# TODO: Entry generated automatically. Needs manual check.
:notice||Whois server unknown (2022-07-17)
:notice||Whois server unknown (2022-07-10)
\.xn--mgbai9azgqp6j$
 
:whois|whois.nic.hotels
6638,7 → 6637,7
\.llp$
 
# TODO: Entry generated automatically. Needs manual check.
:notice||Whois server unknown (2022-07-17)
:notice||Whois server unknown (2022-07-10)
\.xn--mgbcpq6gpa1a$
 
:whois|whois.nic.la
/trunk/main/pattern/ipv4_afrinic
1,10 → 1,10
#: version 20220719
#: version 20220712
 
# AFRINIC IPv4
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:05 GMT+0200
# Generation timestamp: 2022-07-13 00:01:13 GMT+0200
# Source: (20220204) https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt
# Source: (20220719) ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest
# Source: (20220712) ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest
 
:whois|whois.afrinic.net
=41/8
/trunk/main/pattern/ipv4_apnic
1,10 → 1,10
#: version 20220719
#: version 20220712
 
# APNIC IPv4
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:06 GMT+0200
# Generation timestamp: 2022-07-13 00:01:24 GMT+0200
# Source: (20220204) https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt
# Source: (20220719) ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest
# Source: (20220712) ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest
 
:whois|whois.apnic.net
=1/8
/trunk/main/pattern/ipv4_arin
1,10 → 1,10
#: version 20220719
#: version 20220712
 
# ARIN IPv4
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:07 GMT+0200
# Generation timestamp: 2022-07-13 00:01:27 GMT+0200
# Source: (20220204) https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt
# Source: (20220719) ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest
# Source: (20220712) ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest
 
:whois|whois.arin.net|prefix=n + |
=3/8
48,7 → 48,6
=56/8
=57.132/16
=57.134/15
=57.138/16
=61.8.176/20
=63/8
=64/5
/trunk/main/pattern/ipv4_lacnic
1,10 → 1,10
#: version 20220718
#: version 20220711
 
# LACNIC IPv4
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:09 GMT+0200
# Generation timestamp: 2022-07-13 00:01:33 GMT+0200
# Source: (20220204) https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt
# Source: (20220718) ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest
# Source: (20220711) ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest
 
:whois|whois.lacnic.net
=24.152/17
/trunk/main/pattern/ipv4_ripencc
1,10 → 1,10
#: version 20220718
#: version 20220711
 
# RIPENCC IPv4
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:10 GMT+0200
# Generation timestamp: 2022-07-13 00:01:37 GMT+0200
# Source: (20220204) https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt
# Source: (20220718) ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest
# Source: (20220711) ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest
 
:whois|whois.ripe.net|prefix=-B |
=1.178.112/20
1803,7 → 1803,6
=167.86.96/19
=167.86.128/17
=167.87/16
=167.94.24/24
=167.94.110/24
=167.94.162/23
=167.94.164/23
3606,7 → 3605,6
=216.46.124/23
=216.83.208/20
=216.99.222/24
=216.120.180/23
=216.128/19
=216.145.43/24
=216.147.96/20
/trunk/main/pattern/ipv6_afrinic
1,10 → 1,10
#: version 20220719
#: version 20220712
 
# AFRINIC IPv6
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:13 GMT+0200
# Generation timestamp: 2022-07-13 00:01:40 GMT+0200
# Source: (20191106) https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.txt
# Source: (20220719) ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest
# Source: (20220712) ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest
 
:whois|whois.afrinic.net
=2001:4200::/23
/trunk/main/pattern/ipv6_apnic
1,10 → 1,10
#: version 20220719
#: version 20220712
 
# APNIC IPv6
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:13 GMT+0200
# Generation timestamp: 2022-07-13 00:01:41 GMT+0200
# Source: (20191106) https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.txt
# Source: (20220719) ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest
# Source: (20220712) ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest
 
:whois|whois.apnic.net
=2001:200::/23
/trunk/main/pattern/ipv6_arin
1,10 → 1,10
#: version 20220719
#: version 20220712
 
# ARIN IPv6
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:19 GMT+0200
# Generation timestamp: 2022-07-13 00:01:46 GMT+0200
# Source: (20191106) https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.txt
# Source: (20220719) ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest
# Source: (20220712) ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest
 
:whois|whois.arin.net|prefix=n + |
=2001:400::/23
/trunk/main/pattern/ipv6_lacnic
1,10 → 1,10
#: version 20220718
#: version 20220711
 
# LACNIC IPv6
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:23 GMT+0200
# Generation timestamp: 2022-07-13 00:01:51 GMT+0200
# Source: (20191106) https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.txt
# Source: (20220718) ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest
# Source: (20220711) ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest
 
:whois|whois.lacnic.net
=2001:1200::/23
/trunk/main/pattern/ipv6_ripencc
1,10 → 1,10
#: version 20220718
#: version 20220711
 
# RIPENCC IPv6
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:27 GMT+0200
# Generation timestamp: 2022-07-13 00:01:54 GMT+0200
# Source: (20191106) https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.txt
# Source: (20220718) ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest
# Source: (20220711) ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest
 
:whois|whois.ripe.net|prefix=-B |
=2001:600::/23
/trunk/main/pattern/tld
1,8 → 1,8
#: version 20220718
#: version 20220710
 
# TLDs
# Automatically generated by /daten/homes/vwhois/svn/maintenance/pattern-generator/vgwhois-pattern-update
# Generation timestamp: 2022-07-21 00:03:34 GMT+0200
# Generation timestamp: 2022-07-13 00:02:02 GMT+0200
 
# Source: (20220218) https://whois.viathinksoft.de/iana-utils/tld-watcher/tld_deleted_list.php
 
9,7 → 9,7
:notice||Disallocated by IANA
^(tld\s){0,1}(UM|YU|BU|CS|DD|ZR|XN--0ZWM56D|XN--11B5BS3A9AJ6G|XN--80AKHBYKNJ4F|XN--9T4B11YI5A|XN--DEBA0AD|XN--G6W251D|XN--HGBK6AJ7F53BBA|XN--HLCJ6AYA9ESC7A|XN--JXALPDLP|XN--KGBECHTV|XN--ZCKZAH|TP|AN|DOOSAN|FLSMIDTH|IINET|MUTUELLE|ORIENTEXPRESS|MTPC|MCD|MCDONALDS|MONTBLANC|PAMPEREDCHEF|CHLOE|HTC|BOOTS|MEO|SAPO|IWC|XPERIA|TELECITY|VISTA|JLC|PANERAI|GOODHANDS|STATOIL|SPIEGEL|BLANCO|EPOST|ZIPPO|ACTIVE|DOHA|HONEYWELL|BNL|STARHUB|ISELECT|DUNS|MOBILY|XN--MGBB9FBPOB|CARTIER|EVERBANK|PIAGET|CHRYSLER|DODGE|LADBROKES|MOPAR|SRT|UCONNECT|WARMAN|LANCOME|MOVISTAR|TELEFONICA|LIAISON|VISTAPRINT|NADEX|XN--ESTV75G|ESURANCE|SCOR|AIGO|XN--KPU716F|XN--PBT977C|SYMANTEC|RIGHTATHOME|METLIFE|INTEL|JCP|SHRIRAM|CEB|LUPIN|CASEIH|NEWHOLLAND|FUJIXEROX|NATIONWIDE|ONYOURSIDE|IVECO|SPREADBETTING|RMIT|SWIFTCOVER|QVC|XN--3OQ18VL8PN36A|AFAMILYCOMPANY|DUCK|GLADE|OFF|RAID|SCJOHNSON|LIXIL|CSC|BUDAPEST)$
 
# Source: (20220718) https://data.iana.org/TLD/tlds-alpha-by-domain.txt
# Source: (20220710) https://data.iana.org/TLD/tlds-alpha-by-domain.txt
 
:whois|whois.iana.org
^(AAA|AARP|ABARTH|ABB|ABBOTT|ABBVIE|ABC|ABLE|ABOGADO|ABUDHABI|AC|ACADEMY|ACCENTURE|ACCOUNTANT|ACCOUNTANTS|ACO|ACTOR|AD|ADAC|ADS|ADULT|AE|AEG|AERO|AETNA|AF|AFL|AFRICA|AG|AGAKHAN|AGENCY|AI|AIG|AIRBUS|AIRFORCE|AIRTEL|AKDN|AL|ALFAROMEO|ALIBABA|ALIPAY|ALLFINANZ|ALLSTATE|ALLY|ALSACE|ALSTOM|AM|AMAZON|AMERICANEXPRESS|AMERICANFAMILY|AMEX|AMFAM|AMICA|AMSTERDAM|ANALYTICS|ANDROID|ANQUAN|ANZ|AO|AOL|APARTMENTS|APP|APPLE|AQ|AQUARELLE|AR|ARAB|ARAMCO|ARCHI|ARMY|ARPA|ART|ARTE|AS|ASDA|ASIA|ASSOCIATES|AT|ATHLETA|ATTORNEY|AU|AUCTION|AUDI|AUDIBLE|AUDIO|AUSPOST|AUTHOR|AUTO|AUTOS|AVIANCA|AW|AWS|AX|AXA|AZ|AZURE|BA|BABY|BAIDU|BANAMEX|BANANAREPUBLIC|BAND|BANK|BAR|BARCELONA|BARCLAYCARD|BARCLAYS|BAREFOOT|BARGAINS|BASEBALL|BASKETBALL|BAUHAUS|BAYERN|BB|BBC|BBT|BBVA|BCG|BCN|BD|BE|BEATS|BEAUTY|BEER|BENTLEY|BERLIN|BEST|BESTBUY|BET|BF|BG|BH|BHARTI|BI|BIBLE|BID|BIKE|BING|BINGO|BIO|BIZ|BJ|BLACK|BLACKFRIDAY|BLOCKBUSTER|BLOG|BLOOMBERG|BLUE|BM|BMS|BMW|BN|BNPPARIBAS|BO|BOATS|BOEHRINGER|BOFA|BOM|BOND|BOO|BOOK|BOOKING|BOSCH|BOSTIK|BOSTON|BOT|BOUTIQUE|BOX|BR|BRADESCO|BRIDGESTONE|BROADWAY|BROKER|BROTHER|BRUSSELS|BS|BT|BUGATTI|BUILD|BUILDERS|BUSINESS|BUY|BUZZ|BV|BW|BY|BZ|BZH|CA|CAB|CAFE|CAL|CALL|CALVINKLEIN|CAM|CAMERA|CAMP|CANCERRESEARCH|CANON|CAPETOWN|CAPITAL|CAPITALONE|CAR|CARAVAN|CARDS|CARE|CAREER|CAREERS|CARS|CASA|CASE|CASH|CASINO|CAT|CATERING|CATHOLIC|CBA|CBN|CBRE|CBS|CC|CD|CENTER|CEO|CERN|CF|CFA|CFD|CG|CH|CHANEL|CHANNEL|CHARITY|CHASE|CHAT|CHEAP|CHINTAI|CHRISTMAS|CHROME|CHURCH|CI|CIPRIANI|CIRCLE|CISCO|CITADEL|CITI|CITIC|CITY|CITYEATS|CK|CL|CLAIMS|CLEANING|CLICK|CLINIC|CLINIQUE|CLOTHING|CLOUD|CLUB|CLUBMED|CM|CN|CO|COACH|CODES|COFFEE|COLLEGE|COLOGNE|COM|COMCAST|COMMBANK|COMMUNITY|COMPANY|COMPARE|COMPUTER|COMSEC|CONDOS|CONSTRUCTION|CONSULTING|CONTACT|CONTRACTORS|COOKING|COOKINGCHANNEL|COOL|COOP|CORSICA|COUNTRY|COUPON|COUPONS|COURSES|CPA|CR|CREDIT|CREDITCARD|CREDITUNION|CRICKET|CROWN|CRS|CRUISE|CRUISES|CU|CUISINELLA|CV|CW|CX|CY|CYMRU|CYOU|CZ|DABUR|DAD|DANCE|DATA|DATE|DATING|DATSUN|DAY|DCLK|DDS|DE|DEAL|DEALER|DEALS|DEGREE|DELIVERY|DELL|DELOITTE|DELTA|DEMOCRAT|DENTAL|DENTIST|DESI|DESIGN|DEV|DHL|DIAMONDS|DIET|DIGITAL|DIRECT|DIRECTORY|DISCOUNT|DISCOVER|DISH|DIY|DJ|DK|DM|DNP|DO|DOCS|DOCTOR|DOG|DOMAINS|DOT|DOWNLOAD|DRIVE|DTV|DUBAI|DUNLOP|DUPONT|DURBAN|DVAG|DVR|DZ|EARTH|EAT|EC|ECO|EDEKA|EDU|EDUCATION|EE|EG|EMAIL|EMERCK|ENERGY|ENGINEER|ENGINEERING|ENTERPRISES|EPSON|EQUIPMENT|ER|ERICSSON|ERNI|ES|ESQ|ESTATE|ET|ETISALAT|EU|EUROVISION|EUS|EVENTS|EXCHANGE|EXPERT|EXPOSED|EXPRESS|EXTRASPACE|FAGE|FAIL|FAIRWINDS|FAITH|FAMILY|FAN|FANS|FARM|FARMERS|FASHION|FAST|FEDEX|FEEDBACK|FERRARI|FERRERO|FI|FIAT|FIDELITY|FIDO|FILM|FINAL|FINANCE|FINANCIAL|FIRE|FIRESTONE|FIRMDALE|FISH|FISHING|FIT|FITNESS|FJ|FK|FLICKR|FLIGHTS|FLIR|FLORIST|FLOWERS|FLY|FM|FO|FOO|FOOD|FOODNETWORK|FOOTBALL|FORD|FOREX|FORSALE|FORUM|FOUNDATION|FOX|FR|FREE|FRESENIUS|FRL|FROGANS|FRONTDOOR|FRONTIER|FTR|FUJITSU|FUN|FUND|FURNITURE|FUTBOL|FYI|GA|GAL|GALLERY|GALLO|GALLUP|GAME|GAMES|GAP|GARDEN|GAY|GB|GBIZ|GD|GDN|GE|GEA|GENT|GENTING|GEORGE|GF|GG|GGEE|GH|GI|GIFT|GIFTS|GIVES|GIVING|GL|GLASS|GLE|GLOBAL|GLOBO|GM|GMAIL|GMBH|GMO|GMX|GN|GODADDY|GOLD|GOLDPOINT|GOLF|GOO|GOODYEAR|GOOG|GOOGLE|GOP|GOT|GOV|GP|GQ|GR|GRAINGER|GRAPHICS|GRATIS|GREEN|GRIPE|GROCERY|GROUP|GS|GT|GU|GUARDIAN|GUCCI|GUGE|GUIDE|GUITARS|GURU|GW|GY|HAIR|HAMBURG|HANGOUT|HAUS|HBO|HDFC|HDFCBANK|HEALTH|HEALTHCARE|HELP|HELSINKI|HERE|HERMES|HGTV|HIPHOP|HISAMITSU|HITACHI|HIV|HK|HKT|HM|HN|HOCKEY|HOLDINGS|HOLIDAY|HOMEDEPOT|HOMEGOODS|HOMES|HOMESENSE|HONDA|HORSE|HOSPITAL|HOST|HOSTING|HOT|HOTELES|HOTELS|HOTMAIL|HOUSE|HOW|HR|HSBC|HT|HU|HUGHES|HYATT|HYUNDAI|IBM|ICBC|ICE|ICU|ID|IE|IEEE|IFM|IKANO|IL|IM|IMAMAT|IMDB|IMMO|IMMOBILIEN|IN|INC|INDUSTRIES|INFINITI|INFO|ING|INK|INSTITUTE|INSURANCE|INSURE|INT|INTERNATIONAL|INTUIT|INVESTMENTS|IO|IPIRANGA|IQ|IR|IRISH|IS|ISMAILI|IST|ISTANBUL|IT|ITAU|ITV|JAGUAR|JAVA|JCB|JE|JEEP|JETZT|JEWELRY|JIO|JLL|JM|JMP|JNJ|JO|JOBS|JOBURG|JOT|JOY|JP|JPMORGAN|JPRS|JUEGOS|JUNIPER|KAUFEN|KDDI|KE|KERRYHOTELS|KERRYLOGISTICS|KERRYPROPERTIES|KFH|KG|KH|KI|KIA|KIDS|KIM|KINDER|KINDLE|KITCHEN|KIWI|KM|KN|KOELN|KOMATSU|KOSHER|KP|KPMG|KPN|KR|KRD|KRED|KUOKGROUP|KW|KY|KYOTO|KZ|LA|LACAIXA|LAMBORGHINI|LAMER|LANCASTER|LANCIA|LAND|LANDROVER|LANXESS|LASALLE|LAT|LATINO|LATROBE|LAW|LAWYER|LB|LC|LDS|LEASE|LECLERC|LEFRAK|LEGAL|LEGO|LEXUS|LGBT|LI|LIDL|LIFE|LIFEINSURANCE|LIFESTYLE|LIGHTING|LIKE|LILLY|LIMITED|LIMO|LINCOLN|LINDE|LINK|LIPSY|LIVE|LIVING|LK|LLC|LLP|LOAN|LOANS|LOCKER|LOCUS|LOFT|LOL|LONDON|LOTTE|LOTTO|LOVE|LPL|LPLFINANCIAL|LR|LS|LT|LTD|LTDA|LU|LUNDBECK|LUXE|LUXURY|LV|LY|MA|MACYS|MADRID|MAIF|MAISON|MAKEUP|MAN|MANAGEMENT|MANGO|MAP|MARKET|MARKETING|MARKETS|MARRIOTT|MARSHALLS|MASERATI|MATTEL|MBA|MC|MCKINSEY|MD|ME|MED|MEDIA|MEET|MELBOURNE|MEME|MEMORIAL|MEN|MENU|MERCKMSD|MG|MH|MIAMI|MICROSOFT|MIL|MINI|MINT|MIT|MITSUBISHI|MK|ML|MLB|MLS|MM|MMA|MN|MO|MOBI|MOBILE|MODA|MOE|MOI|MOM|MONASH|MONEY|MONSTER|MORMON|MORTGAGE|MOSCOW|MOTO|MOTORCYCLES|MOV|MOVIE|MP|MQ|MR|MS|MSD|MT|MTN|MTR|MU|MUSEUM|MUSIC|MUTUAL|MV|MW|MX|MY|MZ|NA|NAB|NAGOYA|NAME|NATURA|NAVY|NBA|NC|NE|NEC|NET|NETBANK|NETFLIX|NETWORK|NEUSTAR|NEW|NEWS|NEXT|NEXTDIRECT|NEXUS|NF|NFL|NG|NGO|NHK|NI|NICO|NIKE|NIKON|NINJA|NISSAN|NISSAY|NL|NO|NOKIA|NORTHWESTERNMUTUAL|NORTON|NOW|NOWRUZ|NOWTV|NP|NR|NRA|NRW|NTT|NU|NYC|NZ|OBI|OBSERVER|OFFICE|OKINAWA|OLAYAN|OLAYANGROUP|OLDNAVY|OLLO|OM|OMEGA|ONE|ONG|ONL|ONLINE|OOO|OPEN|ORACLE|ORANGE|ORG|ORGANIC|ORIGINS|OSAKA|OTSUKA|OTT|OVH|PA|PAGE|PANASONIC|PARIS|PARS|PARTNERS|PARTS|PARTY|PASSAGENS|PAY|PCCW|PE|PET|PF|PFIZER|PG|PH|PHARMACY|PHD|PHILIPS|PHONE|PHOTO|PHOTOGRAPHY|PHOTOS|PHYSIO|PICS|PICTET|PICTURES|PID|PIN|PING|PINK|PIONEER|PIZZA|PK|PL|PLACE|PLAY|PLAYSTATION|PLUMBING|PLUS|PM|PN|PNC|POHL|POKER|POLITIE|PORN|POST|PR|PRAMERICA|PRAXI|PRESS|PRIME|PRO|PROD|PRODUCTIONS|PROF|PROGRESSIVE|PROMO|PROPERTIES|PROPERTY|PROTECTION|PRU|PRUDENTIAL|PS|PT|PUB|PW|PWC|PY|QA|QPON|QUEBEC|QUEST|RACING|RADIO|RE|READ|REALESTATE|REALTOR|REALTY|RECIPES|RED|REDSTONE|REDUMBRELLA|REHAB|REISE|REISEN|REIT|RELIANCE|REN|RENT|RENTALS|REPAIR|REPORT|REPUBLICAN|REST|RESTAURANT|REVIEW|REVIEWS|REXROTH|RICH|RICHARDLI|RICOH|RIL|RIO|RIP|RO|ROCHER|ROCKS|RODEO|ROGERS|ROOM|RS|RSVP|RU|RUGBY|RUHR|RUN|RW|RWE|RYUKYU|SA|SAARLAND|SAFE|SAFETY|SAKURA|SALE|SALON|SAMSCLUB|SAMSUNG|SANDVIK|SANDVIKCOROMANT|SANOFI|SAP|SARL|SAS|SAVE|SAXO|SB|SBI|SBS|SC|SCA|SCB|SCHAEFFLER|SCHMIDT|SCHOLARSHIPS|SCHOOL|SCHULE|SCHWARZ|SCIENCE|SCOT|SD|SE|SEARCH|SEAT|SECURE|SECURITY|SEEK|SELECT|SENER|SERVICES|SES|SEVEN|SEW|SEX|SEXY|SFR|SG|SH|SHANGRILA|SHARP|SHAW|SHELL|SHIA|SHIKSHA|SHOES|SHOP|SHOPPING|SHOUJI|SHOW|SHOWTIME|SI|SILK|SINA|SINGLES|SITE|SJ|SK|SKI|SKIN|SKY|SKYPE|SL|SLING|SM|SMART|SMILE|SN|SNCF|SO|SOCCER|SOCIAL|SOFTBANK|SOFTWARE|SOHU|SOLAR|SOLUTIONS|SONG|SONY|SOY|SPA|SPACE|SPORT|SPOT|SR|SRL|SS|ST|STADA|STAPLES|STAR|STATEBANK|STATEFARM|STC|STCGROUP|STOCKHOLM|STORAGE|STORE|STREAM|STUDIO|STUDY|STYLE|SU|SUCKS|SUPPLIES|SUPPLY|SUPPORT|SURF|SURGERY|SUZUKI|SV|SWATCH|SWISS|SX|SY|SYDNEY|SYSTEMS|SZ|TAB|TAIPEI|TALK|TAOBAO|TARGET|TATAMOTORS|TATAR|TATTOO|TAX|TAXI|TC|TCI|TD|TDK|TEAM|TECH|TECHNOLOGY|TEL|TEMASEK|TENNIS|TEVA|TF|TG|TH|THD|THEATER|THEATRE|TIAA|TICKETS|TIENDA|TIFFANY|TIPS|TIRES|TIROL|TJ|TJMAXX|TJX|TK|TKMAXX|TL|TM|TMALL|TN|TO|TODAY|TOKYO|TOOLS|TOP|TORAY|TOSHIBA|TOTAL|TOURS|TOWN|TOYOTA|TOYS|TR|TRADE|TRADING|TRAINING|TRAVEL|TRAVELCHANNEL|TRAVELERS|TRAVELERSINSURANCE|TRUST|TRV|TT|TUBE|TUI|TUNES|TUSHU|TV|TVS|TW|TZ|UA|UBANK|UBS|UG|UK|UNICOM|UNIVERSITY|UNO|UOL|UPS|US|UY|UZ|VA|VACATIONS|VANA|VANGUARD|VC|VE|VEGAS|VENTURES|VERISIGN|VERSICHERUNG|VET|VG|VI|VIAJES|VIDEO|VIG|VIKING|VILLAS|VIN|VIP|VIRGIN|VISA|VISION|VIVA|VIVO|VLAANDEREN|VN|VODKA|VOLKSWAGEN|VOLVO|VOTE|VOTING|VOTO|VOYAGE|VU|VUELOS|WALES|WALMART|WALTER|WANG|WANGGOU|WATCH|WATCHES|WEATHER|WEATHERCHANNEL|WEBCAM|WEBER|WEBSITE|WED|WEDDING|WEIBO|WEIR|WF|WHOSWHO|WIEN|WIKI|WILLIAMHILL|WIN|WINDOWS|WINE|WINNERS|WME|WOLTERSKLUWER|WOODSIDE|WORK|WORKS|WORLD|WOW|WS|WTC|WTF|XBOX|XEROX|XFINITY|XIHUAN|XIN|XN--11B4C3D|XN--1CK2E1B|XN--1QQW23A|XN--2SCRJ9C|XN--30RR7Y|XN--3BST00M|XN--3DS443G|XN--3E0B707E|XN--3HCRJ9C|XN--3PXU8K|XN--42C2D9A|XN--45BR5CYL|XN--45BRJ9C|XN--45Q11C|XN--4DBRK0CE|XN--4GBRIM|XN--54B7FTA0CC|XN--55QW42G|XN--55QX5D|XN--5SU34J936BGSG|XN--5TZM5G|XN--6FRZ82G|XN--6QQ986B3XL|XN--80ADXHKS|XN--80AO21A|XN--80AQECDR1A|XN--80ASEHDB|XN--80ASWG|XN--8Y0A063A|XN--90A3AC|XN--90AE|XN--90AIS|XN--9DBQ2A|XN--9ET52U|XN--9KRT00A|XN--B4W605FERD|XN--BCK1B9A5DRE4C|XN--C1AVG|XN--C2BR7G|XN--CCK2B3B|XN--CCKWCXETD|XN--CG4BKI|XN--CLCHC0EA0B2G2A9GCD|XN--CZR694B|XN--CZRS0T|XN--CZRU2D|XN--D1ACJ3B|XN--D1ALF|XN--E1A4C|XN--ECKVDTC9D|XN--EFVY88H|XN--FCT429K|XN--FHBEI|XN--FIQ228C5HS|XN--FIQ64B|XN--FIQS8S|XN--FIQZ9S|XN--FJQ720A|XN--FLW351E|XN--FPCRJ9C3D|XN--FZC2C9E2C|XN--FZYS8D69UVGM|XN--G2XX48C|XN--GCKR3F0F|XN--GECRJ9C|XN--GK3AT1E|XN--H2BREG3EVE|XN--H2BRJ9C|XN--H2BRJ9C8C|XN--HXT814E|XN--I1B6B1A6A2E|XN--IMR513N|XN--IO0A7I|XN--J1AEF|XN--J1AMH|XN--J6W193G|XN--JLQ480N2RG|XN--JLQ61U9W7B|XN--JVR189M|XN--KCRX77D1X4A|XN--KPRW13D|XN--KPRY57D|XN--KPUT3I|XN--L1ACC|XN--LGBBAT1AD8J|XN--MGB9AWBF|XN--MGBA3A3EJT|XN--MGBA3A4F16A|XN--MGBA7C0BBN0A|XN--MGBAAKC7DVF|XN--MGBAAM7A8H|XN--MGBAB2BD|XN--MGBAH1A3HJKRD|XN--MGBAI9AZGQP6J|XN--MGBAYH7GPA|XN--MGBBH1A|XN--MGBBH1A71E|XN--MGBC0A9AZCG|XN--MGBCA7DZDO|XN--MGBCPQ6GPA1A|XN--MGBERP4A5D4AR|XN--MGBGU82A|XN--MGBI4ECEXP|XN--MGBPL2FH|XN--MGBT3DHD|XN--MGBTX2B|XN--MGBX4CD0AB|XN--MIX891F|XN--MK1BU44C|XN--MXTQ1M|XN--NGBC5AZD|XN--NGBE9E0A|XN--NGBRX|XN--NODE|XN--NQV7F|XN--NQV7FS00EMA|XN--NYQY26A|XN--O3CW4H|XN--OGBPF8FL|XN--OTU796D|XN--P1ACF|XN--P1AI|XN--PGBS0DH|XN--PSSY2U|XN--Q7CE6A|XN--Q9JYB4C|XN--QCKA1PMC|XN--QXA6A|XN--QXAM|XN--RHQV96G|XN--ROVU88B|XN--RVC1E0AM3E|XN--S9BRJ9C|XN--SES554G|XN--T60B56A|XN--TCKWE|XN--TIQ49XQYJ|XN--UNUP4Y|XN--VERMGENSBERATER-CTB|XN--VERMGENSBERATUNG-PWB|XN--VHQUV|XN--VUQ861B|XN--W4R85EL8FHU5DNRA|XN--W4RS40L|XN--WGBH1C|XN--WGBL6A|XN--XHQ521B|XN--XKC2AL3HYE2A|XN--XKC2DL3A5EE0H|XN--Y9A3AQ|XN--YFRO4I67O|XN--YGBI2AMMX|XN--ZFR164B|XXX|XYZ|YACHTS|YAHOO|YAMAXUN|YANDEX|YE|YODOBASHI|YOGA|YOKOHAMA|YOU|YOUTUBE|YT|YUN|ZA|ZAPPOS|ZARA|ZERO|ZIP|ZM|ZONE|ZUERICH|ZW|)$
/trunk/maintenance/config/testcases.annot
0,0 → 1,26
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
ati.tn: whois.ati.tn handle FSI-ATI not working
cnnic.cn: whois.cnnic.cn handle 20030310s10001s00012956-cn not working
cnnic.cn: whois.cnnic.cn handle s1255673574881 not working
AS681: whois.apnic.net handle MNT-ERX-WAIKATOUNI-NON-NZ to check
AS681: whois.apnic.net handle ERX-KAWAIHIKO-1 to check
AS1228: Should there be a -B flag?
AS327680: Should there be a -B flag used?
ORG-ARIN1-AFRINIC: "-B" flag
AFRINIC-042005: "-B" flag
41.0.0.0: -B flag?
andorratelecom.ad: could be better formatted.
andorratelecom.ad: is there a better whois service? is this whois service only for government domains?
aeda.net.ae: they write "whois.aeda.ae", but the correct address is "whois.aeda.net.ae"
ru.ac.za: Output could be better formatted.
nic.af: 488169-CoCCA kann nicht durch whois aufgelöst werden
C270-LRMS: R145-LRMS auch pattern anlegen?
intrans.ba: lat -> eng
/trunk/maintenance/config/testcases.conf
0,0 → 1,24
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
# Default: i (interactive)
mode="i"
 
# Default: 3 days
# Attention: This value should not be exactly in 24h intervals if you use a 24h-cronjob! Always subtract a few minutes.
# (Otherwise, qa-audit calls will invoke a full check when the user does not want it)
# TODO: in the qa-audit, opt out the check via "--never-check", so that CALL_GWI=0 in testcases/single.sh
recheck_time=259000
 
# Default: 0
force=0
 
# This option cannot be set in the CLI options
trytor=0
 
/trunk/maintenance/config/testcases.list
0,0 → 1,1297
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
#invalid domain
.x
 
#real idn
test.テスト
 
#6to4
2002:2030:4050::2
 
#as-afrinic-16
AS1228
 
#as-afrinic-32
AS327680
 
#as-apnic-16
AS681
 
#as-apnic-32
AS131072
 
#as-arin-16
AS1
 
#as-arin-32
AS393216
 
#as-lacnic-16
AS278
 
#as-lacnic-32
AS262144
 
#as-ripe-16
AS224
 
#as-ripe-32
AS196608
 
#hdl-aero
C223523-AERO
D322-AERO
 
#hdl-afrinic
ORG-ARIN1-AFRINIC
AFRINIC-042005
 
#hdl-ag
R32-LRCC
D52707-LRCC
 
#hdl-apnic
MAINT-APNIC-AP
DNS3-AP
 
#hdl-arin
DOCKM1-ARIN
 
#hdl-asia
C270-ASIA
R118-ASIA
D24374-ASIA
R2-ASIA
 
#hdl-at
NAIV1902732-NICAT
NAR1899634-NICAT
UH567003-NICAT
AT-DOM
 
#hdl-au
CONNECT-AU
 
#hdl-biz
D712-BIZ
 
#hdl-ck
RM1-CKNIC
CK-NIC-MNT
 
#hdl-cn
20030310s10001s00012956-cn
 
#hdl-co
D734276-CO
 
#hdl-corenic
D10120103-CONE
COCO-10119103
 
#hdl-de
DENIC-8
DENIC-8-RC39151342
 
#hdl-es
JGT6-ESNIC-F4
SA28789-ESNIC-F4
 
#hdl-fr
AFNI21-FRNIC
 
#hdl-info
C270-LRMS
D217-LRMS
R145-LRMS
 
#hdl-jp
SK222JP
HW1733JP
 
#hdl-lacnic
MX-UNAM1-LACNIC
 
#hdl-museum
C728-MUSEUM
D6136003-MUSEUM
 
#hdl-name
2891347DOMAIN-NAME
222REGISTRAR-NAME
3110912CONTACT-NAME
1420418HOST-NAME
 
#hdl-norid
UNA78O-NORID
 
#hdl-org-za
TEST_1255595960_ORGZA
 
#hdl-ripe
RIPE-NCC-RIS-MNT
RISM-RIPE
 
#hdl-rucenter
RUCENTER-REG-FID
RU-CENTER-REG-RIPN
 
#hdl-sc
R138-LRCC
D1972475-LRCC
 
#hdl-sg
SGNIC-ORGSI134835
 
#hdl-sixxs
DMZ9-SIXXS
 
#hdl-tel
D583364-TEL
 
#hdl-travel
D99505-TRAVEL
 
#hdl-ua
ST101-UANIC
 
#hdl-xxx
ICMFCON00000001
D131092-XXX
R3189-XXX
 
#ip-au
210.8.0.0
 
#ip-jp
61.192.0.0
 
#ip-kr
61.72.0.0
 
#ipv4-afrinic
41.0.0.0
 
#ipv4-br
200.128.0.0
 
#ipv4-iana
224.0.0.0
 
#ipv4-lacnic
24.232.0.0
 
#ipv4-ripe
2.0.0.0
 
#ipv4-tw
61.216.0.0
 
#ipv6-6bone
3ffe::
 
#ipv6-afrinic
2c00::
 
#ipv6-apnic
2400::
 
#ipv6-arin
2620::
 
#ipv6-lacnic
2800::
 
#ipv6-ripe
2a00::
 
#oid-invalid
oid:3
 
#oid-valid
oid:2.999
 
#rwhois-ips
108.171.243.10
68.233.238.33
 
#teredo
2001:0000:4136:e378:8000:63bf:3fff:fdd2
 
#tld
de
com
net
tld net
tld jp
 
#tld-ac
nic.ac
invalid.ac
manchester.ac
 
#tld-ac.za
ru.ac.za
 
#tld-ad
andorratelecom.ad
 
#tld-ae
aeda.net.ae
aeda.ae
 
#tld-aero
whois.aero
 
#tld-af
nic.af
 
#tld-ag
nic.ag
 
#tld-ai
whois.ai
offshore.ai
 
#tld-al
akep.al
 
#tld-am
nic.am
 
#tld-an
una.an
 
#tld-ao
nexus.ao
 
#tld-aq
icenic.aq
 
#tld-ar
cancilleria.gov.ar
 
#tld-arpa
in-addr.arpa
 
#tld-as
nic.as
 
#tld-asia
nic.asia
 
#tld-at
nic.at
 
#tld-au
audns.net.au
 
#tld-aw
setarnet.aw
 
#tld-ax
regeringen.ax
 
#tld-az
fa.az
 
#tld-ba
intrans.ba
 
#tld-bb
telecoms.gov.bb
 
#tld-bd
mopt.gov.bd
btcl.net.bd
invalid.bd
 
#tld-be
dns.be
 
#tld-bf
arce.bf
 
#tld-bg
register.bg
 
#tld-bh
batelco.com.bh
 
#tld-bi
nic.bi
 
#tld-biz
whois.biz
 
#tld-bj
nic.bj
 
#tld-bl
nic.bl
 
#tld-bm
gov.bm
 
#tld-bn
brunet.bn
 
#tld-bo
nic.bo
 
#tld-br
registro.br
cert.br
 
#tld-bs
cob.edu.bs
 
#tld-bt
bt.bt
 
#tld-bu
nic.bu
 
#tld-bv
nic.bv
 
#tld-bw
btc.bw
 
#tld-by
tld.by
 
#tld-bz
belizenic.bz
bcs.edu.bz
lv.com.bz
 
#tld-ca
cira.ca
eonline.ca
 
#tld-cat
whois.cat
 
#tld-cc
nic.cc
 
#tld-cd
nic.cd
 
#tld-cf
socatel.cf
 
#tld-cg
nic.cg
 
#tld-ch
domian.ch
#nic.ch
 
#tld-ci
nic.ci
 
#tld-ck
telecom.co.ck
 
#tld-cl
nic.cl
 
#tld-cm
camnet.cm
register.cm
 
#tld-cn
cnnic.cn
 
#tld-co
nic.co
invalidx.co
 
#tld-co.za
test.co.za
 
#tld-com
verisign-grs.com
dracenmarx.com
viathinksoft.com
 
#tld-coop
nic.coop
 
#tld-cr
ns.cr
 
#tld-cs
nic.cs
 
#tld-cu
ceniai.inf.cu
nic.cu
invalid.cu
 
#tld-cv
anac.cv
 
#tld-cw
uts.cw
 
#tld-cx
nic.cx
 
#tld-cy
ucy.ac.cy
 
#tld-cz
nic.cz
 
#tld-dd
nic.dd
 
#tld-de
denic.de
 
#tld-dj
nic.dj
 
#tld-dk
dk-hostmaster.dk
 
#tld-dm
nic.dm
courts.co.dm
 
#tld-do
pucmm.edu.do
 
#tld-dz
nic.dz
 
#tld-ec
nic.ec
 
#tld-edu
educause.edu
 
#tld-ee
tld.ee
 
#tld-eg
egregistry.eg
 
#tld-er
noc.net.er
 
#tld-es
nic.es
crimestoppers.es
 
#tld-et
ethionet.et
 
#tld-eu
whois.eu
 
#tld-fi
whois.fi
 
#tld-fj
usp.ac.fj
 
#tld-fk
fidc.co.fk
 
#tld-fm
mail.fm
 
#tld-fo
nic.fo
 
#tld-fr
nic.fr
 
#tld-ga
gabontelecom.ga
 
#tld-gb
dfhnet.dra.hmg.gb
 
#tld-gd
nic.gd
 
#tld-ge
sanet.ge
 
#tld-gf
nic.gf
 
#tld-gg
whois.gg
 
#tld-gh
nic.gh
gaf.mil.gh
yellowpages.gh
 
#tld-gi
sapphire.gi
 
#tld-gl
nic.gl
 
#tld-gm
nic.gm
 
#tld-gn
areeba.com.gn
 
#tld-gov
dotgov.gov
 
#tld-gp
ntgroup.gp
invalid.gp
 
#tld-gq
orange-getesa.gq
 
#tld-gr
ics.forth.gr
 
#tld-gs
nic.gs
 
#tld-gt
uvg.edu.gt
invalid.gt
 
#tld-gu
dollar.com.gu
 
#tld-gw
register.gw
 
#tld-gy
registry.gy
 
#tld-hk
hkirc.hk
 
#tld-hm
registry.hm
 
#tld-hn
rds.org.hn
 
#tld-hr
dns.hr
 
#tld-ht
nic.ht
 
#tld-hu
nic.hu
 
#tld-id
iptek.net.id
 
#tld-ie
domainregistry.ie
 
#tld-il
isoc.org.il
 
#tld-im
nic.im
 
#tld-in
afilias.in
 
#tld-info
afilias.info
 
#tld-int
ectel.int
 
#tld-io
nic.io
 
#tld-iq
cmc.iq
 
#tld-ir
nic.ir
 
#tld-is
isnic.is
 
#tld-it
nic.it
 
#tld-je
whois.je
 
#tld-jm
uwimona.edu.jm
 
#tld-jo
nitc.gov.jo
 
#tld-jobs
goto.jobs
 
#tld-jp
jprs.jp
 
#tld-ke
kenic.or.ke
 
#tld-kg
domain.kg
 
#tld-kh
dns.net.kh
 
#tld-ki
nic.ki
 
#tld-km
comorestelecom.km
 
#tld-kn
knnic.kn
 
#tld-kp
star-co.net.kp
 
#tld-kr
nic.kr
#whois.kr
 
#tld-kw
moc.kw
 
#tld-ky
icta.ky
 
#tld-kz
nic.kz
 
#tld-la
nic.la
 
#tld-lb
aub.edu.lb
 
#tld-lc
isisworld.lc
 
#tld-li
nic.li
 
#tld-lk
cse.mrt.ac.lk
 
#tld-lr
nimbaunitedfc.com.lr
 
#tld-ls
denver.co.ls
metolong.org.ls
invalidx.ls
 
#tld-lt
domreg.lt
 
#tld-lu
dns.lu
 
#tld-lv
nic.lv
adidas.lv
 
#tld-ly
nic.ly
 
#tld-ma
registre.ma
 
#tld-mc
gouv.mc
 
#tld-md
nic.md
 
#tld-me
nic.me
 
#tld-mf
nic.mf
 
#tld-mg
nic.mg
 
#tld-mh
dgt.mh
 
#tld-mil
nic.mil
 
#tld-mk
ultra.ultra.com.mk
 
#tld-ml
sotelma.ml
 
#tld-mm
mptmail.net.mm
 
#tld-mn
nic.mn
 
#tld-mo
umac.mo
 
#tld-mobi
mtld.mobi
 
#tld-mp
nic.mp
 
#tld-mq
microforce.mq
lechateau.mq
 
#tld-mr
cse.mr
 
#tld-ms
nic.ms
 
#tld-mt
nic.org.mt
 
#tld-mu
nic.mu
 
#tld-museum
whois.museum
 
#tld-mv
dhiraagu.com.mv
 
#tld-mw
sdnp.org.mw
 
#tld-mx
whois.mx
 
#tld-my
domainregistry.my
 
#tld-mz
zebra.uem.mz
 
#tld-na
na-nic.com.na
 
#tld-name
nic.name
suggest.name
 
#tld-nc
whois.nc
 
#tld-ne
amnic.ne
 
#tld-net
amnic.net
 
#tld-nf
nic.net.nf
 
#tld-ng
nic.net.ng
 
#tld-ni
nic.ni
 
#tld-nl
domain-registry.nl
 
#tld-no
norid.no
 
#tld-nom.za
smith.nom.za
 
#tld-np
mos.com.np
 
#tld-nr
naurugov.nr
invalid.nr
 
#tld-nr-co-redirect
greenyouthgeneration.co.nr
xxxxxxxx.co.nr
 
#tld-nr-de-thirdparty
test.de.nr
xxxxxxxxxx.de.nr
 
#tld-nr-gov
ronlaw.gov.nr
invalid.gov.nr
 
#tld-nr-net
cenpac.net.nr
invalid.net.nr
 
#tld-nu
nic.nu
 
#tld-nz
srs.net.nz
 
#tld-om
registry.om
einsurance.com.om
 
#tld-org
pir.org
 
#tld-org.za
test.org.za
 
#tld-pa
utp.ac.pa
invalid.pa
 
#tld-pe
yachay.pe
 
#tld-pf
spt.gov.pf
 
#tld-pg
unitech.ac.pg
 
#tld-ph
dot.ph
invalid.ph
 
#tld-pk
pknic.net.pk
test.com.pk
invalid.pk
 
#tld-pl
dns.pl
 
#tld-pm
nic.pm
 
#tld-pn
pitcairn.gov.pn
invalid.pn
 
#tld-post
nothingknown.post
 
#tld-pr
nic.pr
 
#tld-pro
registrypro.pro
 
#tld-ps
gcc.gov.ps
 
#tld-pt
dns.pt
 
#tld-pw
pwregistry.pw
 
#tld-py
nic.py
teleguia.com.py
una.py
 
#tld-qa
registry.qa
 
#tld-re
nic.re
 
#tld-ro
rotld.ro
 
#tld-rs
rnids.rs
 
#tld-ru
tcinet.ru
 
#tld-rw
brd.rw
nic.rw
 
#tld-sa
nic.net.sa
 
#tld-sb
nic.net.sb
 
#tld-sc
freedomchurch.sc
 
#tld-sd
isoc.sd
 
#tld-se
iis.se
 
#tld-sg
sgnic.sg
 
#tld-sh
nic.sh
 
#tld-si
arnes.si
 
#tld-sj
unknown-tld-sj
nic.sj
 
#tld-sk
sk-nic.sk
 
#tld-sl
afcom.sl
 
#tld-sm
nic.sm
 
#tld-sn
nic.sn
 
#tld-so
nic.so
somalisat.so
 
#tld-sr
telesur.sr
 
#tld-ss
nic.ss
 
#tld-st
nic.st
 
#tld-su
nic.su
WORLDOFWARPLANES.SU
 
#tld-sv
di.uca.edu.sv
 
#tld-sx
whois.sx
nic.sx
registry.sx
 
#tld-sy
tld.sy
 
#tld-sz
sispa.org.sz
 
#tld-tc
adamsnames.tc
icc.tc
 
#tld-td
intnet.td
 
#tld-tel
nic.tel
knysna.tel
 
#tld-tf
nic.tf
 
#tld-tg
cafe.tg
 
#tld-th
thnic.co.th
 
#tld-tj
nic.tj
mintrans.tj
 
#tld-tk
dot.tk
 
#tld-tl
nic.tl
 
#tld-tm
nic.tm
 
#tld-tn
# double UTF-8 encoding!
ati.tn
 
#tld-tn-com
nouvelair.com.tn
 
#tld-to
tonic.to
fail.to
 
#tld-tp
nic.tp
 
#tld-tr
nic.tr
 
#tld-travel
nic.travel
 
#tld-tt
nic.tt
invalid.tt
 
#tld-tv
tuvalu.tv
 
#tld-tw
twnic.net.tw
 
#tld-tz
tznic.or.tz
 
#tld-ua
whois.ua
 
#tld-ug
whois.co.ug
 
#tld-uk
nic.uk
 
#tld-um
nic.um
 
#tld-us
nic.us
 
#tld-uy
nic.org.uy
 
#tld-uz
cctld.uz
 
#tld-va
vatican.va
archiviosegretovaticano.va
 
#tld-vc
mail.gov.vc
 
#tld-ve
nic.ve
 
#tld-vg
nic.vg
bingo.vg
 
#tld-vi
rotarystthomas.vi
 
#tld-vn
vnnic.net.vn
tenmien.vn
 
#tld-vu
nic.vu
invalid.vu
 
#tld-wf
nic.wf
 
#tld-ws
website.ws
 
#tld-xn--0zwm56d
xn--fsqu00a.xn--0zwm56d
 
#tld-xn--11b5bs3a9aj6g
xn--p1b6ci4b4b3a.xn--11b5bs3a9aj6g
 
#tld-xn--3e0b707e
xn--ok0b82d83uwleqxax72c.xn--3e0b707e
 
#tld-xn--45brj9c
unknown-tld-xn--45brj9c
 
#tld-xn--80akhbyknj4f
xn--e1afmkfd.xn--80akhbyknj4f
 
#tld-xn--80ao21a
xn--e1aybc.xn--80ao21a
 
#tld-xn--90a3ac
xn--d1aholi.xn--90a3ac
 
#tld-xn--9t4b11yi5a
xn--9n2bp8q.xn--9t4b11yi5a
 
#tld-xn--clchc0ea0b2g2a9gcd
unknown-tld-xn--clchc0ea0b2g2a9gcd
 
#tld-xn--deba0ad
xn--fdbk5d8ap9b8a8d.xn--deba0ad
 
#tld-xn--fiqs8s
xn--cjrz24bfyfdjk2v4b20c.xn--fiqs8s
 
#tld-xn--fiqz9s
xn--4gqsa60bk09hfz2a.xn--fiqz9s
 
#tld-xn--fpcrj9c3d
unknown-tld-xn--fpcrj9c3d
 
#tld-xn--fzc2c9e2c
xn--fzc3a2azd8dsa2ktat.xn--fzc2c9e2c
 
#tld-xn--g6w251d
xn--fsqu00a.xn--g6w251d
 
#tld-xn--gecrj9c
unknown-tld-xn--gecrj9c
 
#tld-xn--h2brj9c
unknown-tld-xn--h2brj9c
 
#tld-xn--hgbk6aj7f53bba
xn--mgbh0fb.xn--hgbk6aj7f53bba
 
#tld-xn--hlcj6aya9esc7a
xn--zkc6cc5bi7f6e.xn--hlcj6aya9esc7a
 
#tld-xn--j6w193g
xn--q8sz05f.xn--55qx5d.xn--j6w193g
xn--fjqw22h.xn--j6w193g
 
#tld-xn--jxalpdlp
xn--hxajbheg2az3al.xn--jxalpdlp
 
#tld-xn--kgbechtv
xn--mgbh0fb.xn--kgbechtv
 
#tld-xn--kprw13d
xn--8mr3z850bhx6ablr.xn--kprw13d
 
#tld-xn--kpry57d
xn--rlsx8k.xn--kpry57d
 
#tld-xn--lgbbat1ad8j
unknown-tld-xn--lgbbat1ad8j
 
#tld-xn--mgb9awbf
nothingknown.xn--mgb9awbf
 
#tld-xn--mgbaam7a8h
xn--ogbh0eio.xn--mgbaam7a8h
 
#tld-xn--mgbayh7gpa
xn--mgbbv2b6cav.xn--mgbayh7gpa
 
#tld-xn--mgbbh1a71e
unknown-tld-xn--mgbbh1a71e
 
#tld-xn--mgbc0a9azcg
xn------nzeabcaancne6mxa3pircddecvqfa4bhn4cg.xn--mgbc0a9azcg
 
#tld-xn--mgberp4a5d4ar
xn--mgbaa2bbjj1kkm8ak.xn--mgberp4a5d4ar
 
#tld-xn--mgbx4cd0ab
nothingknown.xn--mgbx4cd0ab
 
#tld-xn--o3cw4h
xn--12c3cwavs1kc8c9b.xn--o3cw4h
 
#tld-xn--ogbpf8fl
xn--hgbo2h.xn--ogbpf8fl
 
#tld-xn--p1ai
xn--80aajfpdawelcil0c2d.xn--p1ai
 
#tld-xn--pgbs0dh
xn--pgbus4b3a.xn--pgbs0dh
 
#tld-xn--s9brj9c
unknown-tld-xn--s9brj9c
 
#tld-xn--wgbh1c
xn--ggblala6cyf.xn--wgbh1c
 
#tld-xn--wgbl6a
xn--mgbeh7c1c.xn--wgbl6a
 
#tld-xn--xkc2al3hye2a
xn--rlcuo9h.xn--wlcbmbhil0gb5a8kc.xn--xkc2al3hye2a
 
#tld-xn--xkc2dl3a5ee0h
unknown-tld-xn--xkc2dl3a5ee0h
 
#tld-xn--yfro4i67o
unknown-tld-xn--yfro4i67o
 
#tld-xn--ygbi2ammx
xn--mgbad0esc.xn--ygbi2ammx
 
#tld-xn--zckzah
xn--r8jz45g.xn--zckzah
 
#tld-xxx
nic.xxx
 
#tld-ye
y.net.ye
 
#tld-yt
nic.yt
 
#tld-yu
nic.yu
 
#tld-za
#(Only 3rd-Level-TLD)
 
#tld-zm
zamnet.zm
 
#tld-zr
nic.zr
 
#tld-zw
telone.co.zw
telone-invalid.co.zw
 
/trunk/maintenance/qa-monitor/run
206,6 → 206,41
 
# ---
 
echo "* Check if testcases require attention\n";
 
$loc_good = true;
 
# First check tesetcases in background, if necessary
 
$out = array();
exec(DIR . "/testcases/batch --mode b", $out, $ec);
 
if ($ec > 2) {
$loc_good = false;
echo "[ !! ] testcases/batch error code $ec\n";
echo trim(implode("\n", $out))."\n";
}
 
# Now check if testcases require attention
 
$out = array();
exec(DIR . '/testcases/status_short', $out, $ec);
 
if ($ec != 0) {
$loc_good = false;
echo trim(implode("\n", $out))."\n";
}
 
# Status?
 
if ($loc_good) {
echo "[ OK ]\n";
} else {
$global_status=1;
}
 
# ---
 
echo "* Check the status of whois-ping\n";
 
$loc_good = true;
/trunk/maintenance/qa-monitor/testcases/allpatterns
0,0 → 1,88
#!/usr/bin/php
<?php
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
require_once __DIR__ . '/../../../shared/php_includes/common_functions.inc.php';
 
$patterns = glob(__DIR__ . '/../../../main/pattern/*');
 
#$bs = '\\b';
#$be = '\\b';
 
$vc = '[\p{L}a-zA-Z0-9_\\-\\+\\*\\.]';
$bs = '(?<!'.$vc.')';
$be = '(?!'.$vc.')';
 
foreach ($patterns as $pattern_file) {
$pattern = file($pattern_file);
 
$pattern[] = ':end';
 
$content = '';
foreach ($pattern as $p) {
$p = trim($p);
if ($p == '') continue;
if ($p[0] == '#') continue; // comment
 
if (preg_match('@^\\^redirect:@ismU', $p, $m)) continue;
 
$p = str_replace(array('(.*)', '(.+)'), '', $p);
 
if ($p[0] == ':') {
$content = '';
} else {
if ($p[0] == '=') {
// IP
$p_ = substr($p, 1);
 
// ignore for now
continue;
} else if ($p[0] == '*') {
// ASN
 
preg_match('#\*(.*):(\d+)(-(\d+)){0,1}#isU', $p, $m);
$prefix = $m[1];
$min = $m[2];
$max = (isset($m[4])) ? $m[4] : $min;
 
// ignore for now
continue;
} else if (preg_match('@^(urn:){0,1}oid:(.*)@i', $p, $m)) {
// OIDs
 
$regex = normalize_oid($m[2]);
$regex = str_replace('.', '\\.0*', $regex);
$regex = '@('.$bs.$regex.'(\\.\\d+)*'.$be.')@iU';
 
echo "$regex\n";
} else {
// REGEX
 
$regex = $p;
 
if ($regex == '.') continue; // last resort
 
$regex = preg_replace('@(?<!(?<!\\\\)\\$)$@', $vc.'*', $regex);
$regex = preg_replace('@(?<!\\\\)\\$$@', '', $regex);
 
$regex = preg_replace('@^(?!\\^)@', $vc.'*', $regex);
$regex = preg_replace('@^\\^@', '', $regex);
 
$regex = preg_replace('@(?>!\\$)$@', $vc.'*', $regex);
$regex = preg_replace('@\\$$@', '', $regex);
 
$regex = '@('.$bs.$regex.$be.')@iUu';
 
echo "$regex\n";
}
}
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/batch
0,0 → 1,55
#!/bin/bash
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
DIR=$( dirname "$0" )
 
TESTCASES_LIST="$DIR/../../config/testcases.list"
 
ARGS=()
 
shuffle() {
# http://stackoverflow.com/a/5533586
local i tmp size max rand
 
# $RANDOM % (i+1) is biased because of the limited range of $RANDOM
# Compensate by using a range which is a multiple of the array size.
size = ${#ARGS[*]}
max = $(( 32768 / size * size ))
 
for ((i=size-1; i>0; i--)); do
while (( (rand=$RANDOM) >= max )); do :; done
rand=$(( rand % (i+1) ))
tmp=${ARGS[i]} ARGS[i]=${ARGS[rand]} ARGS[rand]=$tmp
done
}
 
while read f; do
if [ -z "$f" ]; then
continue;
fi
 
echo "$f" | grep -E "\s*^#" > /dev/null
if [ $? -eq 0 ]; then
continue;
fi
 
# Warum? "tld jp" wird dann zu "tld"
# query="$( basename $f )"
query="$f";
 
ARGS+=("$query")
done < "$TESTCASES_LIST"
 
# TODO: does not work
#shuffle
 
"$DIR"/single $@ ${ARGS[@]}
exit $?
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/coverage
0,0 → 1,143
#!/usr/bin/php
<?php
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
# There are 2 possibilities
# - Coverage by section. At least 1 line per command must be covered
# => this is currently our behavior
# - Every line must be covered
 
require_once __DIR__ . '/../../../shared/php_includes/common_functions.inc.php';
 
$testcases = array();
$testcases_tmp = file(__DIR__ . '/../../config/testcases.list');
foreach ($testcases_tmp as &$tc) {
$tc = trim($tc);
if ($tc == '') continue;
if ($tc[0] == '#') continue;
$testcases[] = $tc;
}
 
$patterns = glob(__DIR__ . '/../../../main/pattern/*');
 
$count_total = 0;
$count_covered = 0;
$count_uncovered = 0;
 
echo "Uncovered\n\n";
 
foreach ($patterns as $pattern_file) {
$pattern = file($pattern_file);
 
$pattern[] = ':end';
$count_total--; // wegen ":end"
 
$content = '';
$covered = false;
$cmd = '';
foreach ($pattern as $p) {
$p = trim($p);
if ($p == '') continue;
if ($p[0] == '#') continue; // comment
 
if ($p[0] == ':') {
$count_total++;
if ($covered) {
$count_covered++;
$covered = false;
} else {
if ($cmd != '') {
$count_uncovered++;
echo "$pattern_file ($cmd): $content\n\n";
}
}
$cmd = $p;
$content = '';
} else if (!$covered) {
if ($p[0] == '=') {
// IP
 
$p_ = substr($p, 1);
 
foreach ($testcases as $query) {
$match = false;
if (strpos($p, ':') !== false) {
// IPv6
if (!ipv6_valid($query)) continue;
$covered = ipv6_in_cidr($p_, $query);
} else {
// IPv4
if (!ipv4_valid($query)) continue;
$covered = ipv4_in_cidr($p_, $query);
}
if ($covered) break;
}
} else if ($p[0] == '*') {
// ASN
 
preg_match('#\*(.*):(\d+)(-(\d+)){0,1}#isU', $p, $m);
$prefix = $m[1];
$min = $m[2];
$max = (isset($m[4])) ? $m[4] : $min;
 
foreach ($testcases as $query) {
if (preg_match('#'.preg_quote($prefix, '#').'(\d+)#is', $query, $m)) {
$num = $m[1];
if (($num >= $min) && ($num <= $max)) {
$covered = true;
break;
}
}
}
} else if (preg_match('@^(urn:){0,1}oid:(.*)@i', $p, $m)) {
// OIDs
 
$oid = normalize_oid($m[2]);
 
foreach ($testcases as $query) {
if (preg_match('@^(urn:){0,1}oid:(.*)@i', $query, $m2)) {
$oid_tc = normalize_oid($m2[2]);
 
if (strpos($oid.'.', $oid_tc.'.') === 0) {
$covered = true;
break;
}
}
}
} else {
// REGEX
 
$regex = $p;
 
foreach ($testcases as $query) {
if (preg_match('/'.$regex.'/i', $query, $m)) {
$covered = true;
break;
}
}
}
}
$content .= "$p\n";
}
}
 
if ($count_uncovered == 0) {
echo 'Every instruction is covered with at least one testcase!\n\n';
}
 
echo "Stats\n\n";
 
echo "Total = $count_total\n";
echo "Covered = $count_covered\n";
echo "Uncovered = $count_uncovered\n";
 
$coverage = $count_covered/$count_total * 100;
echo "Coverage = $coverage %\n";
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/highlighter
0,0 → 1,108
#!/usr/bin/php
<?php
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
#mb_internal_encoding('utf-8');
 
require_once __DIR__ . '/../../../shared/php_includes/common_functions.inc.php';
require_once __DIR__ . '/../../../shared/php_includes/idna_convert.class.php';
 
$punycoder = new idna_convert();
 
$in = '';
while($f = fgets(STDIN)) {
$in .= $f;
}
 
$pre = generateRandomToken($in);
$post = generateRandomToken($in);
$plc1 = generateRandomToken($in);
 
// to avoid that "domain......ati.tn" will be highlighted completely.
$in = preg_replace('@\\.{2,}+@u', '<<<'.$plc1.':${0}>>>', $in);
 
if ($argc == 1) {
$out = array();
exec(__DIR__ . '/allpatterns', $out, $code);
if ($code != 0) {
echo __DIR__ . "/allpatterns failed with code $code\n"; # TODO: STDERR
exit(1);
}
foreach ($out as $o) {
$o = trim($o);
if ($o == '') continue;
$argv[] = $o;
}
}
 
array_shift($argv);
# $i = 0;
foreach ($argv as $x) {
# TODO: problem: $x darf nicht quoted werden, darf aber auch nicht @ enthalten -> dynamisch rausfinden welcher delimiter nicht vorkommt
# TODO: there are several problems using this mechanism. It is very hard to highlight everything which is queryable through vgwhois.
# for example: (1) it is not possible to use \S+ in the pattern files, because it would match everything in the vgwhois output, even though it was only meant to match everything in the query
# (2) if the rule .com.xx is applied after .xx , the .com.xx will not match, since .xx is already wrapped with $pre and $post
 
# $i++;
# $pre = "[start$i]";
# $post = "[end$i]";
 
$in = preg_replace($x, $pre.'${0}'.$post, $in);
 
$c = 0;
 
$x = preg_replace_callback("@(xn\-\-[0-9a-z\-]+)@ui", "punycodeCB", $x, -1, $c);
if ($c > 0) {
$in = preg_replace($x, $pre.'${0}'.$post, $in);
}
}
 
# Remove nesting (( x (( y )) a )) -> (( x a ))
do {
$ok = true;
$in = preg_replace_callback("@$pre(.*$post)@Uu", "verschachtelungCB", $in);
} while (!$ok);
 
# colorize
$in = str_replace($pre, "\033[41m\033[37m", $in);
$in = str_replace($post, "\033[0m", $in);
 
# undo it again (see above)
$in = preg_replace('@<<<'.$plc1.':([^>]+)>>>@u', '${1}', $in);
 
echo $in;
 
# ---
 
function verschachtelungCB($treffer) {
global $pre, $post, $ok;
 
if (strpos($treffer[1], $pre) === false) {
return $pre.$treffer[1];
} else {
$ok = false;
return $pre.str_replace(array($pre,$post), '', $treffer[1]);
}
}
 
function punycodeCB($treffer) {
global $punycoder;
 
$out = "";
$x = $punycoder->decode(strtolower($treffer[0]));
preg_match_all('/./u', $x, $results);
foreach ($results[0] as $m) {
$out .= '\\x{'.dechex(_uniord($m)).'}';
}
 
return $out;
}
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/loc_vgwhois
0,0 → 1,34
#!/bin/bash
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
# TODO: $@ or $* ?
 
DIR=$( dirname "$0" )
 
. "$DIR/../../config/testcases.conf"
 
GWI_EXEC="$DIR"/../../../main/vgwhois
 
if [ $trytor -eq 1 ]; then
if [ -e "/usr/bin/vtor" ]; then
# We use vtor first, because it needs to cleanup temp files, which is only possible if it is not killed... Does this work?
vtor -a -r 1 -- "$DIR"/timeout.sh -t 10 -- "$GWI_EXEC" $@
elif [ -e "/usr/bin/usewithtor" ]; then
"$DIR"/timeout.sh -t 10 -- usewithtor "$GWI_EXEC" $@
elif [ -e "/usr/bin/torify" ]; then
"$DIR"/timeout.sh -t 10 -- torify "$GWI_EXEC" $@
else
echo "Warning: Cannot find any TOR proxy software. Will do the query without TOR." >&2
"$DIR"/timeout.sh -t 10 -- "$GWI_EXEC" $@
fi
else
"$DIR"/timeout.sh -t 10 -- "$GWI_EXEC" $@
fi
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/single
0,0 → 1,539
#!/bin/bash
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
# TODO: use >&2
 
# TODO: anzeigen von wann der whois output ist... "last checked" -> "last activity" (da ein user-mode-batch-approval ja kein recheck beinhaltet)
 
DIR=$( dirname "$0" )
 
ANNOTATION_FILE="$DIR/../../config/testcases.annot"
TESTCASE_CACHE_FILE="$DIR/../../.cache/testcases"
 
# ---
 
function resetconsole {
# http://superuser.com/questions/122911/bash-reset-and-clear-commands
 
# clear
 
# clears the console screen, but not the scrollback buffer
# this is actually the escape code to "reset" the terminal
echo -en "\ec"
 
# clears the scrollback buffer, but not the console screen
# screen content remains, and cursor position remains at its last position
echo -en "\e[3J"
}
 
function showPatternHighlighted {
A=()
 
patterns=$( "$DIR"/allpatterns )
for p in ${patterns[@]}; do
A+=("$p");
done
 
out=""
while IFS= read data; do
out="$out$data"$'\n'
done
 
# Attention: "less" or "nano" does not work with Unicode for Asian languages :-(
# Maybe this helps? http://serverfault.com/questions/414760/how-to-make-the-less-command-handle-utf-8 .
# But then it still can't handle colors...
echo "$out" | "$DIR"/highlighter "${A[@]}"
}
 
function question {
if [ -f "$ANNOTATION_FILE" ]; then
ANNOTS=$( cat "$ANNOTATION_FILE" | grep -E "^$query:" )
if [ "$ANNOTS" != "" ]; then
echo ""
echo "********************"
echo "Notes in $ANNOTATION_FILE :"
OLDIFS="$IFS"
IFS=$'\n'
for p in ${ANNOTS[@]}; do
pos="${#query}"
(( pos += 2 ))
echo " ${p:$pos}";
done
IFS="$OLDIFS"
echo "********************"
fi
fi
echo ""
echo "Keep in mind to only set this result as expected state, when:"
echo " (1) The output is well formatted OR when you add an entry to the ToDo"
echo " list when the output is 'OK, but not optimal'."
echo " (2) For web-requests you should also have a testcase which shows"
echo " non-existant domains"
echo " (3) All handles should have testcases too, or it should be noted that"
echo " specific handles cannot be queried by the NIC."
echo " (4) There should be no volative stuff like dates, serving whois server"
echo " names or your IP address in the output."
echo " Otherwise you should grep them away in $0 before you approve this testcase."
echo " (5) In notices, URLs/information must be correct"
echo " (6) Highlighting shall be working, otherwise the patterns or $DIR/highlighter needs to be changed"
while true; do
echo ""
if [ -f "$E" ]; then
echo "Do you want to override the expected result? ([y]es, [n]o, [s]kip, [r]etry, [a]dd note, reset[t], e[x]it)"
else
# TODO: braucht man hier reset?
echo "Do you want to define this as the expected result? ([y]es, [n]o, [s]kip, [r]etry, [a]dd note, rese[t], e[x]it)"
fi
read yn
case $yn in
[Yy]* )
cat "$T" > "$E"
rm "$T"
if [ -f "$Q" ] && [ "$Q" != "$T" ]; then
rm "$Q"
fi
touch "$tsfile"
return 0
;;
[Nn]* )
rm "$T"
return 1
;;
[Ss]* )
return 1
;;
[Rr]* )
bakmode="$mode"
mode="i"
bakforce="$force"
force=1
process "$query"
RES=$?
mode="$bakmode"
force="$bakforce"
return $RES
;;
[Aa]* )
echo "Please enter a note you want to add or empty string if you want to cancel"
read note
 
if [ "$note" == "" ]; then
echo "Cancelled"
else
echo "Note added to testcase of $query"
echo "$query: $note" >> "$ANNOTATION_FILE"
fi
;;
[Xx]* )
return 2
;;
[Tt]* )
# Clears the expected state
#rm $TESTCASE_CACHE_FILE/*/$query
rm "$E"
rm "$Q"
rm "$tsfile"
# Now retry
# TODO: codeduplikat vermeiden?
bakmode="$mode"
mode="i"
bakforce="$force"
force=1
process "$query"
RES=$?
mode="$bakmode"
force="$bakforce"
return $RES
;;
* )
echo "Please answer with the letter written in square brackets."
;;
esac
done
}
 
function question2 {
while true; do
echo ""
echo "vgwhois might already have been fixed. Do you want to enforce a vgwhois recheck now? ([y]es, [n]o, e[x]it)"
read yn
case $yn in
[YyRr]* )
if [ -f "$Q" ]; then
rm "$Q"
fi
bakmode="$mode"
mode="i"
bakforce="$force"
force=1
process "$query"
RES=$?
mode="$bakmode"
force="$bakforce"
return $RES
;;
[NnSs]* )
return 1
;;
[Xx]* )
return 2
;;
* )
echo "Please answer with the letter written in square brackets."
;;
esac
done
}
 
function unquote {
echo "$1" | sed "s/^'\(.*\)'$/\1/";
}
 
function process {
if [ "$mode" != "b" ]; then
# TODO: diese meldung soll nicht kommen, wenn einfach nur da steht "does not need a recheck" now...
resetconsole
fi
 
query="$1"
echo "Query: $query"
 
E="$TESTCASE_CACHE_FILE/expected/$query"
Q="$TESTCASE_CACHE_FILE/problems/$query"
tsfile="$TESTCASE_CACHE_FILE/checktimestamps/$query"
 
if [ "$mode" == "u" ]; then
T="$Q"
if [ ! -f "$T" ]; then
echo "There is no action needed by the user"
return 0
fi
else
T=$( mktemp --suffix='.vgwhoisTC' )
 
# In interactive/background mode, we will always do a webrequest when there is no problem and no expectation file without respect of the last checktime, to avoid that the status monitor will show entries with "no expectation file" when the user pressed "no", and then he would have to wait 7 days until "batch u" works again.
# TODO: how to do that in 1 line?
CALL_GWI=0
if [ $force -eq 1 ]; then
CALL_GWI=1
else
test \( ! -f "$Q" \) -a \( ! -f "$E" \)
if [ $? -eq 0 ]; then
CALL_GWI=1
elif [ ! -f "$tsfile" ] || [ $( stat --format=%Y "$tsfile" ) -le $(( $( date +%s ) - $recheck_time )) ]; then
if [ -f "$Q" ] && [ $( stat --format=%Y "$Q" ) -gt $(( $( date +%s ) - $recheck_time )) ]; then
CALL_GWI=0
else
CALL_GWI=1
fi
fi
fi
if [ $CALL_GWI -eq 1 ]; then
echo "... calling vgwhois ..."
# We have to use loc_vgwhois to allow $trytor to work correctly.
# The torifiers "torify" and "usewithtor" always outputting bogus "libtorsocks" warning messages which would be saved in the output
# "vtor" - if applied to this script - can only filter them from STDOUT and STDERR, but not intercept this "&>" pipe
# So we have to use this loc_vgwhois script, where we torify manually
# Also, it is important that we do the warning message filtering in this step, because in the final output the lines will be colored/highlighted, and therefore "vtor" cannot grep them correctly anymore.
# Note: regex only valid in the years 1000-1099, 1900-2099, 2900-2999
# grep away volative stuff like server names or times
(
"$DIR"/loc_vgwhois "$query" \
| grep -v "This query was served by " \
| grep -v "(c)[12][90][0-9]\{2\}" \
| grep -v "[12][90][0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}" \
| grep -v "\[[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\} REQUEST\]" \
| grep -v "RL Net \[.*\] - RL IP \[.*\]" \
| grep -v "% Query time:" \
| grep -v "% request from" \
| grep -v "% Last update of whois database:" \
| grep -v "%AM TLD whois server #" \
| grep -v "Last updated on " \
| grep -v "This is the Ukrainian Whois query server #" \
| grep -v "Last update of whois database" \
| grep -v "Query time:" \
| grep -v "nsstat:" \
| grep -v "nslastaa:"
) &> "$T"
# auskommentiert wegen problem: wenn man einen recheck wegen perl errors macht und dann abbricht, ist dann der PROBLEM state gespeichert? nein, er wurde im i-mode gelöscht!
# -> lösung ?rm "$Q" nur im erfolgsfall
# if [ -f "$Q" ]; then
# rm "$Q"
# fi
 
# behoben? in mode=i and mode=u, should the output of a new vgwhois request be saved into the problem file, if the user cancels? (to avoid a second web request?)
# also, when doing a recheck after a perl error, and then cancel, the problem-file will not be updated!
# TODO: was ist besser?
#if [ ! -f "$Q" ] && [ "$T" != "$Q" ]; then
if [ "$T" != "$Q" ]; then
cat "$T" > "$Q"
fi
 
 
else
rm "$T"
if [ "$mode" == "b" ]; then
echo "The query does not need a recheck now. Use --force to enforce it."
# if [ -f "$Q" ] && [ "$Q" != "$T" ]; then
# rm "$Q"
# fi
return 0
else
T="$Q"
if [ ! -f "$T" ]; then
echo "There is no action needed by the user"
return 0
fi
fi
fi
fi
 
WARNINGS=()
cat "$T" | grep -E "at /(bin|usr|etc|var)/\S+ line" > /dev/null
if [ $? -eq 0 ]; then
WARNINGS+=("Perl errors found in vgwhois output!")
fi
cat "$T" | head -n 1 | grep -E "^("$'\xEF\xBB\xBF'"){0,1}Process query: '$query'" > /dev/null
if [ $? -ne 0 ]; then
WARNINGS+=("The vgwhois output does not begin with 'Process query'!")
fi
cat "$T" | grep "vgwhois remarks: If this is a valid domainname or handle, please file a bug report." > /dev/null
if [ $? -eq 0 ]; then
WARNINGS+=("No pattern match!")
fi
if [ ${#WARNINGS[@]} -gt 0 ]; then
if [ "$T" != "$Q" ]; then
cat "$T" > "$Q"
rm "$T"
fi
# if [ "$mode" != "b" ]; then
# resetconsole
# fi
OLDIFS="$IFS"
IFS=$'\n'
for p in ${WARNINGS[@]}; do
echo "WARNING: $p"
done
IFS="$OLDIFS"
if [ "$mode" == "b" ]; then
echo "Saved for later analysis."
# TODO: problem: this will prevent another background runner to check it again, but it will prevent the user-batch to investigate this, too?!!
# touch "$tsfile"
return 1
else
# Hinweis: niemals vor "question" oder "question2" ein ts aktualisieren. denn wenn man in question* einen recheck beantragt und dann abbricht, dann würde dieser aktualisierte ts bewirken, dass der testcase erst wieder in 7 tagen angezeigt wird
echo ""
cat "$Q" | showPatternHighlighted
question2
return $?
fi
fi
 
if [ -f "$E" ]; then
D=$( date -r "$E" )
echo "Compare with results of $D"
diff -U 0 "$E" "$T" | showPatternHighlighted
if [ ${PIPESTATUS[0]} -eq 0 ]; then
echo "OK! No differences found!"
rm "$T"
touch "$tsfile"
if [ -f "$Q" ] && [ "$Q" != "$T" ]; then
rm "$Q"
fi
return 0
else
echo "Problem! Differences found!"
 
if [ "$mode" == "b" ]; then
echo "Saved for later analysis."
if [ "$T" != "$Q" ]; then
cat "$T" > "$Q"
rm "$T"
fi
 
# TODO: problem: this will prevent another background runner to check it again, but it will prevent the user-batch to investigate this, too?!!
# touch "$tsfile"
return 1
else
if [ "$T" != "$Q" ]; then
rm "$T"
fi
 
question
return $?
fi
fi
else
if [ "$mode" == "b" ]; then
echo "This query has no expected state. Please define one."
echo "Saved for later analysis."
if [ "$T" != "$Q" ]; then
cat "$T" > "$Q"
rm "$T"
fi
# TODO: problem: this will prevent another background runner to check it again, but it will prevent the user-batch to investigate this, too?!!
# touch "$tsfile"
return 1
else
# resetconsole
echo "This query has no expected state. Please define one."
echo "This is the current output of vgwhois:"
 
echo ""
cat "$T" | showPatternHighlighted
echo ""
 
if [ "$T" != "$Q" ]; then
rm "$T"
fi
 
question
return $?
fi
fi
}
 
function HumanReadableTime {
local seconds=$1
local days=$(($seconds/86400))
seconds=$(($seconds-($days*86400) ))
local hours=$(($seconds/3600))
seconds=$((seconds-($hours*3600) ))
local minutes=$(($seconds/60))
seconds=$(( $seconds-($minutes*60) ))
 
# echo -n "${days}D ${hours}H ${minutes}M ${seconds}S"
if [ $days -gt 0 ]; then
if [ $hours -gt 12 ]; then
((days++));
fi
echo -n "${days} days"
elif [ $hours -gt 0 ]; then
if [ $minutes -gt 30 ]; then
((hours++));
fi
echo -n "${hours} hours"
elif [ $minutes -gt 0 ]; then
if [ $seconds -gt 30 ]; then
((minutes++));
fi
echo -n "${minutes} minutes"
else
echo -n "a few seconds"
fi
}
 
function usage {
. "$DIR/../../config/testcases.conf"
 
hf_recheck_time=$( HumanReadableTime $recheck_time )
 
echo "Syntax: $0 options query"
echo " -h|--help"
echo " -m|--mode mode"
echo " Default: $mode"
echo " Mode: i = interactive (download and then show results/ask the developer if the result is OK)"
echo " b = background (download only and save the results for later query)"
echo " u = user-dialog only (only ask the developer if there are questions, e.g. which were generated by mode b)."
echo " -r|--rechecktime seconds"
echo " Default: $recheck_time = approx. $hf_recheck_time)"
echo " -f|--force"
echo " Ignores --rechecktime and forces a new vgwhois request"
echo " Default: $force"
}
 
# ---
 
if [ $# -eq 0 ]; then
usage;
exit;
fi
 
if [ ! -d "$TESTCASE_CACHE_FILE/checktimestamps" ]; then
mkdir -p "$TESTCASE_CACHE_FILE/checktimestamps"
fi
 
if [ ! -d "$TESTCASE_CACHE_FILE/problems" ]; then
mkdir -p "$TESTCASE_CACHE_FILE/problems"
fi
 
if [ ! -d "$TESTCASE_CACHE_FILE/expected" ]; then
mkdir -p "$TESTCASE_CACHE_FILE/expected"
fi
 
# defaults
. "$DIR/../../config/testcases.conf"
 
PARAMS=( "$@" );
optarr=( $( getopt --name "$0" --options 'hfr:m:' --long 'help,force,rechecktime:,mode:' -- "${PARAMS[@]}" 2> /dev/null ) );
 
# Now process the arguments
i=0;
while true; do
case "${optarr[$i]}" in
-h|--help)
usage;
exit 0;
;;
-f|--force)
force=1;
((i++));
;;
-r|--rechecktime)
recheck_time=$( unquote "${optarr[$((i+1))]}" );
((i=i+2));
;;
-m|--mode)
mode=$( unquote "${optarr[$((i+1))]}" );
 
if [ "$mode" != "i" ] && [ "$mode" != "b" ] && [ "$mode" != "u" ]; then
echo "Invalid mode '$mode'"
usage
exit 2
fi
 
((i=i+2));
;;
--)
((i++));
break;
;;
*)
# Should never happen
echo "$0: Internal error while command-line-processing! Please report this error as bug." >&2;
exit 2;
;;
esac
done
 
RESTARGS=${optarr[@]:i}; # i..end
CMD="${optarr[i]}";
ARG="${optarr[@]:((i+1))}"; # (i+1)..end
 
 
EXITSTATUS=0
for X in ${RESTARGS[@]}
do
X=$( unquote "$X" )
process "$X"
EC=$?
 
if [ $EC -eq 2 ]; then
# user pressed x for exit
exit $EXITSTATUS;
elif [ $EC -gt $EXITSTATUS ]; then
# exitcode = max(exitcodes from processes)
EXITSTATUS=$EC
fi
 
done
 
exit $EXITSTATUS
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/status
0,0 → 1,132
#!/bin/bash
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
DIR=$( dirname "$0" )
 
TESTCASES_LIST="$DIR/../../config/testcases.list"
 
# ---
 
function FileAge() {
echo $((`date +%s` - `stat -c %Y $1`))
}
 
function HumanReadableAge() {
local seconds=$1
local days=$(($seconds/86400))
seconds=$(($seconds-($days*86400) ))
local hours=$(($seconds/3600))
seconds=$((seconds-($hours*3600) ))
local minutes=$(($seconds/60))
seconds=$(( $seconds-($minutes*60) ))
 
# echo -n "${days}D ${hours}H ${minutes}M ${seconds}S"
if [ $days -gt 0 ]; then
if [ $hours -gt 12 ]; then
((days++));
fi
echo -n "${days} days ago"
elif [ $hours -gt 0 ]; then
if [ $minutes -gt 30 ]; then
((hours++));
fi
echo -n "${hours} hours ago"
elif [ $minutes -gt 0 ]; then
if [ $seconds -gt 30 ]; then
((minutes++));
fi
echo -n "${minutes} minutes ago"
else
echo -n "a few seconds ago"
fi
}
 
# ---
 
. "$DIR/../../config/testcases.conf"
 
CACHE_DIR="$DIR/../../.cache"
 
echo "Query Last activity Status"
echo "----------------------------------------------------------------------------------"
 
while read f; do
if [ -z "$f" ]; then
continue;
fi
 
# Check if the line begins with an '#' (leading spaces are permitted)
echo "$f" | grep -E "\s*^#" > /dev/null
if [ $? -eq 0 ]; then
continue;
fi
 
# Warum? "tld jp" wird dann zu "tld"
# query="$( basename $f )"
query="$f";
 
if [ ! -d "$CACHE_DIR/testcases/expected" ]; then
mkdir -p "$CACHE_DIR/testcases/expected"
fi
expfile="$CACHE_DIR/testcases/expected/$query"
 
if [ ! -d "$CACHE_DIR/testcases/checktimestamps" ]; then
mkdir -p "$CACHE_DIR/testcases/checktimestamps"
fi
tsfile="$CACHE_DIR/testcases/checktimestamps/$query"
if [ -f "$tsfile" ]; then
# lastcheck="$( date -r "$tsfile" )"
lastcheck=$( HumanReadableAge $( FileAge "$tsfile" ))
else
lastcheck="never"
fi
 
if [ ! -d "$CACHE_DIR/testcases/problems" ]; then
mkdir -p "$CACHE_DIR/testcases/problems"
fi
errfile="$CACHE_DIR/testcases/problems/$query"
if [ -f "$errfile" ]; then
cat "$errfile" | grep -E "at /(bin|usr|etc|var)/\S+ line" > /dev/null
PERLERR=$?
 
cat "$errfile" | head -n 1 | grep -E "^("$'\xEF\xBB\xBF'"){0,1}Process query: '$query'" > /dev/null
STARTEXP=$?
 
cat "$errfile" | grep "vgwhois remarks: If this is a valid domainname or handle, please file a bug report." > /dev/null
NOPATTERNMATCH=$?
 
if [ $PERLERR -eq 0 ]; then
status="Perl-Error!"
elif [ $STARTEXP -ne 0 ]; then
status="Unexpected head line"
elif [ $NOPATTERNMATCH -eq 0 ]; then
status="No pattern match"
elif [ -f "$expfile" ]; then
status="Different output"
else
status="No expected output defined"
fi
else
if [ -f "$expfile" ]; then
status="OK"
else
status="No expected output defined"
fi
fi
 
if [ ! -f "$tsfile" ] || [ $( stat --format=%Y "$tsfile" ) -le $(( $( date +%s ) - $recheck_time )) ]; then
if [ ! -f "$errfile" ] || [ $( stat --format=%Y "$errfile" ) -le $(( $( date +%s ) - $recheck_time )) ]; then
status="$status, outdated"
fi
fi
 
printf "%-30s %-20s %-20s\n" "$query" "$lastcheck" "$status"
done < "$TESTCASES_LIST"
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/status_short
0,0 → 1,61
#!/bin/bash
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
DIR=$( dirname "$0" )
 
. "$DIR/../../config/testcases.conf"
 
CACHE_DIR="$DIR/../../.cache"
TESTCASES_LIST="$DIR/../../config/testcases.list"
 
count=0
 
while read f; do
if [ -z "$f" ]; then
continue;
fi
 
echo "$f" | grep -E "\s*^#" > /dev/null
if [ $? -eq 0 ]; then
continue;
fi
 
# Warum? "tld jp" wird dann zu "tld"
# query="$( basename $f )"
query="$f";
 
if [ ! -d "$CACHE_DIR/testcases/checktimestamps" ]; then
mkdir -p "$CACHE_DIR/testcases/checktimestamps"
fi
tsfile="$CACHE_DIR/testcases/checktimestamps/$query"
 
if [ ! -d "$CACHE_DIR/testcases/problems" ]; then
mkdir -p "$CACHE_DIR/testcases/problems"
fi
errfile="$CACHE_DIR/testcases/problems/$query"
 
if [ ! -f "$tsfile" ]; then
((count++));
elif [ ! -f "$tsfile" ] || [ $( stat --format=%Y "$tsfile" ) -le $(( $( date +%s ) - $recheck_time )) ]; then
((count++));
elif [ -f "$errfile" ]; then
((count++));
fi
 
done < "$TESTCASES_LIST"
 
if [ $count -eq 0 ]; then
echo "[ OK ]"
exit 0
else
echo "[ !! ] $count testcases require attention"
exit 1
fi
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/testcases_cronrun
0,0 → 1,14
#!/bin/bash
 
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
 
DIR=$( dirname "$0" )
 
"$DIR"/batch --mode b &> /dev/null
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/timeout.sh
0,0 → 1,92
#!/bin/bash
#
# The Bash shell script executes a command with a time-out.
# Upon time-out expiration SIGTERM (15) is sent to the process. If the signal
# is blocked, then the subsequent SIGKILL (9) terminates it.
#
# Based on the Bash documentation example.
 
# Hello Chet,
# please find attached a "little easier" :-) to comprehend
# time-out example. If you find it suitable, feel free to include
# anywhere: the very same logic as in the original examples/scripts, a
# little more transparent implementation to my taste.
#
# Dmitry V Golovashkin <Dmitry.Golovashkin@sas.com>
 
scriptName="${0##*/}"
 
declare -i DEFAULT_TIMEOUT=9
declare -i DEFAULT_INTERVAL=1
declare -i DEFAULT_DELAY=1
 
# Timeout.
declare -i timeout=DEFAULT_TIMEOUT
# Interval between checks if the process is still alive.
declare -i interval=DEFAULT_INTERVAL
# Delay between posting the SIGTERM signal and destroying the process by SIGKILL.
declare -i delay=DEFAULT_DELAY
 
function printUsage() {
cat <<EOF
 
Synopsis
$scriptName [-t timeout] [-i interval] [-d delay] command
Execute a command with a time-out.
Upon time-out expiration SIGTERM (15) is sent to the process. If SIGTERM
signal is blocked, then the subsequent SIGKILL (9) terminates it.
 
-t timeout
Number of seconds to wait for command completion.
Default value: $DEFAULT_TIMEOUT seconds.
 
-i interval
Interval between checks if the process is still alive.
Positive integer, default value: $DEFAULT_INTERVAL seconds.
 
-d delay
Delay between posting the SIGTERM signal and destroying the
process by SIGKILL. Default value: $DEFAULT_DELAY seconds.
 
As of today, Bash does not support floating point arithmetic (sleep does),
therefore all delay/time values must be integers.
EOF
}
 
# Options.
while getopts ":t:i:d:" option; do
case "$option" in
t) timeout=$OPTARG ;;
i) interval=$OPTARG ;;
d) delay=$OPTARG ;;
*) printUsage; exit 1 ;;
esac
done
shift $((OPTIND - 1))
 
# $# should be at least 1 (the command to execute), however it may be strictly
# greater than 1 if the command itself has options.
if (($# == 0 || interval <= 0)); then
printUsage
exit 1
fi
 
# kill -0 pid Exit code indicates if a signal may be sent to $pid process.
(
((t = timeout))
 
while ((t > 0)); do
sleep $interval
kill -0 $$ || exit 0
((t -= interval))
done
 
# Be nice, post SIGTERM first.
# The 'exit 0' below will be executed if any preceeding command fails.
kill -s SIGTERM $$ && kill -0 $$ || exit 0
sleep $delay
kill -s SIGKILL $$
) 2> /dev/null &
 
exec "$@"
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+text/x-sh
\ No newline at end of property
/trunk/maintenance/qa-monitor/testcases/todo
0,0 → 1,78
Process query: '2001:0000:4136:e378:8000:63bf:3fff:fdd2'
 
Query recognized as IPv6.
Address expanded to '2001:0000:4136:e378:8000:63bf:3fff:fdd2'.
Querying script .../main/subprograms/teredo_decoder
 
00:06:00 libtorsocks(5179): sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting.
00:06:00 libtorsocks(5179): sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting.
00:06:00 libtorsocks(5179): sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting.
00:06:00 libtorsocks(5179): sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting.
00:06:00 libtorsocks(5179): sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting.
00:06:00 libtorsocks(5179): sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting.
Teredo IPv6 address: 2001:0000:4136:e378:8000:63bf:3fff:fdd2
Teredo prefix: 2001:0000
 
---
 
handle ...-SITA? (bei .aero)
 
---
 
highlighter: viele highlights funktionieren nicht und markieren bis zum ende oder bis zum anfang der zeile
 
---
 
highlighter brauchen testcases
 
möglichkeit alles zu vergessen, also
rm .cache/testcases/*/$query
und danach retry
 
ability to remove notes in the GUI (select note by entering a number)
 
GROSSES PROBLEM
obwohl ich den cron jede nacht laufen lasse, muss ich jedes mal bei "batch --mode b" warten
die "problem" timestamps sind 3 tage alt... warum?
 
---
 
TESTCASE GENERATOR TOOL:
for all missing testcase TLDs, try following to find a valid test domain:
- when whois server or url ends with <tld> , use this domain (without subdomains)
- try to do a nslookup to nic.<tld>
- search for site:*.<tid> at google
=> then add a testcase!
 
measure coverage mit ALLEN pattern files; line-coverage
 
weitere funktionen:
- remove notes from that testcase
- do a side query
 
arin sendet escape zeichen? z.B. bei "AS1", deswegen wir kein console scrollback buffer geleert!
-> nein, der console buffer ist einfach zu klein! aber less geht nicht mit color!
 
./single --mode u ati.tn
Query: ati.tn
There is no action needed by the user
-> es gibt keine problem file und keine expectation file. er sollte runterladen?
-> nein, aber meldung ist verwirrend. "mode u" sollte niemals inet conn haben
 
möglichkeiteben, die testcases mit attributen zu versehen
jedem testcase einen namen geben
jedem testcase eine möglichkeit geben, dinge per SED-REGEX auszublenden (z.b. ipadresse, uhrzeit etc).
 
einen befehl machen, der den expected status nochmal im korrekten highlight anzeigt. zum kontrollieren. damit man alle expectations nochmal sehen kann. (batch)
 
wenn man währendes diff (?) einen strg+c macht, dann kommt "no changes" - speichern?
 
----
 
gwi im allgemeinen : kann man einen unicode domainnamen eingeben? ggf auch als utf-8 ?
 
---
 
beschreibung, wie man dieses tool benutzt, also dass man ./batch aufrufen muss
 
notizen entfernbar machen (mit nano editieren)