summaryrefslogtreecommitdiffstats
path: root/Tools/world
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>1996-11-18 22:57:43 (GMT)
committerBarry Warsaw <barry@python.org>1996-11-18 22:57:43 (GMT)
commitcb2b672015d5a1682f40104602b4a2b5fd74a024 (patch)
tree1dbccbe6bf2cb27641496c86b7fe934e0b471baf /Tools/world
parent3a7212c86a77be1e69f917a4ceb9adbfb3b6bb01 (diff)
downloadcpython-cb2b672015d5a1682f40104602b4a2b5fd74a024.zip
cpython-cb2b672015d5a1682f40104602b4a2b5fd74a024.tar.gz
cpython-cb2b672015d5a1682f40104602b4a2b5fd74a024.tar.bz2
implementation complete. need to update country codes
Diffstat (limited to 'Tools/world')
-rwxr-xr-xTools/world/world86
1 files changed, 64 insertions, 22 deletions
diff --git a/Tools/world/world b/Tools/world/world
index 8857ce8..a1065a3 100755
--- a/Tools/world/world
+++ b/Tools/world/world
@@ -1,29 +1,40 @@
#! /usr/bin/env python
-#
-# Usage: world addr1 [addr2 ...]
-#
-
-# This little script will take an Internet address of the form
-# foobar@some.place.domain and will print out where in the world that
-# message originated from. Its pretty dumb in that it just matches
-# the `domain' part against a hard-coded list, which can probably
-# change fairly quickly given the world's political fluidity.
-
-# TBD: it would be cool if this script could update itself. I can't
-# remember where I got the original list of top level domain
-# abbreviations -- probably from the InterNIC. So far I haven't hit
-# any that this script can't resolve, so I assume they don't change
-# too frequently.
+
+"""Print the long name of an Internet domain.
+
+This script will take an Internet address and print out where in the
+world that message originated from, based on the top-level domain code
+found in the address. Addresses can be in any of the following forms:
+
+ xx -- just the country code or top-level domain identifier
+ host.domain.xx -- any Internet host or network name
+ somebody@where.xx -- an Internet email address
+
+Country codes are maintained by the RIPE Network Coordination Centre,
+in coordination with the ISO 3166 Maintenance Agency at DIN Berlin.
+
+ <url:ftp://info.ripe.net/iso3166-countrycodes>
+
+The latest known change to this information was:
+
+ Thu Feb 10 10:20:28 MET 1994
+
+Usage: %s [-d] [-h] addr [addr ...]
+
+ -d (--dump) -- print mapping of all known top-level domains
+ -h (--help) -- print this help message
+
+"""
import sys
import string
+import getopt
-def usage(msg=None, exit=0):
- if msg: print msg
- print 'Usage:', sys.argv[0], 'addr [addr ...]'
- sys.exit(exit)
-
+
+def usage(status=0):
+ print __doc__ % sys.argv[0]
+ sys.exit(status)
def resolve(rawaddr):
parts = string.splitfields(rawaddr, '.')
@@ -36,8 +47,39 @@ def resolve(rawaddr):
elif country.has_key(addr):
print addr, 'originated from', country[addr]
else:
- print 'Where in the world is', addr, '?'
+ print 'Where in the world is %s?' % addr
+
+
+
+def main():
+ help = 0
+ status = 0
+ dump = 0
+ opts, args = getopt.getopt(sys.argv[1:], 'hd', ['help', 'dump'])
+ for arg, val in opts:
+ if arg in ('-h', '--help'):
+ help = 1
+ elif arg in ('-d', '--dump'):
+ dump = 1
+
+ if help:
+ usage(status)
+
+ if dump:
+ print 'USA-centric domains:'
+ codes = nameorg.keys()
+ codes.sort()
+ for code in codes:
+ print ' %4s:' % code, nameorg[code]
+
+ print '\nCountry coded domains:'
+ codes = country.keys()
+ codes.sort()
+ for code in codes:
+ print ' %2s:' % code, country[code]
+ else:
+ map(resolve, args)
# The mappings
@@ -152,4 +194,4 @@ country = {
if __name__ == '__main__':
- map(resolve, sys.argv[1:])
+ main()