#! /depot/sundry/plat/bin/python
#
# Note: you may have to edit the top line in this file.
#
# Usage: world addr1 [addr2 ...]
#
# $Id$

# 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.

import sys
prog = sys.argv[0]
del sys.argv[0]
if not sys.argv:
    print "No addresses provided.\nUsage:", prog, "addr1 [addr2 ...]\n"


# The mappings
nameorg = {
    "arpa": "Arpanet",
    "com": "commercial",
    "edu": "educational",
    "gov": "government",
    "mil": "military",
    "net": "networking",
    "org": "non-commercial",
    "int": "international"
    }


country = {
    "ag": "Antigua and Barbuda",
    "al": "Albania",
    "aq": "Antarctica",
    "ar": "Argentina",
    "at": "Austria",
    "au": "Australia",
    "bb": "Barbados",
    "be": "Belgium",
    "bg": "Bulgaria",
    "bo": "Bolivia",
    "br": "Brazil",
    "bs": "Bahamas",
    "bz": "Belize",
    "ca": "Canada",
    "ch": "Switzerland",
    "cl": "Chile",
    "cm": "Cameroon",
    "cn": "China",
    "co": "Colombia",
    "cr": "Costa Rica",
    "cy": "Cyprus",
    "cz": "Czech Republic",
    "de": "Germany",
    "dk": "Denmark",
    "dm": "Dominica",
    "do": "Dominican Republic",
    "ec": "Ecuador",
    "ee": "Estonia",
    "eg": "Egypt",
    "es": "Spain",
    "fi": "Finland",
    "fj": "Fiji",
    "fr": "France",
    "gb": "Great Britain",
    "gh": "Ghana",
    "gr": "Greece",
    "hk": "Hong Kong",
    "hr": "Croatia",
    "hu": "Hungary",
    "id": "Indonesia",
    "ie": "Ireland",
    "il": "Israel",
    "in": "India",
    "is": "Iceland",
    "it": "Italy",
    "jm": "Jamaica",
    "jp": "Japan",
    "km": "Comoros",
    "kn": "Saint Kitts and Nevis",
    "kr": "Republic of Korea",
    "kw": "Kuwait",
    "lc": "Saint Lucia",
    "li": "Liechtenstein",
    "lk": "Sri Lanka",
    "lu": "Luxembourg",
    "lv": "Latvia",
    "my": "Malaysia",
    "mx": "Mexico",
    "na": "Namibia",
    "ni": "Nicaragua",
    "nl": "Netherlands",
    "no": "Norway",
    "nz": "New Zealand",
    "pe": "Peru",
    "pg": "Papua New Guinea",
    "ph": "Philippines",
    "pl": "Poland",
    "pr": "Puerto Rico",
    "pt": "Portugal",
    "py": "Paraguay",
    "ro": "Romania",
    "se": "Sweden",
    "sg": "Singapore",
    "si": "Slovenia",
    "sk": "Slovakia",
    "sr": "Suriname",
    "su": "USSR",
    "tw": "Taiwan",
    "th": "Thailand",
    "tn": "Tunisia",
    "tr": "Turkey",
    "tt": "Trinidad and Tobago",
    "uk": "United Kingdom",
    "us": "United States",
    "uy": "Uruguay",
    "vc": "Saint Vincent and the Grenadines",
    "ve": "Venezuela",
    "vi": "Virgin Islands",
    "yu": "Yugoslavia",
    "za": "South Africa",
    "zw": "Zimbabwe"
    }

import string

while sys.argv:
    rawaddr = sys.argv[0]
    del sys.argv[0]

    components = string.splitfields(rawaddr, ".")
    addr = components[-1]

    if nameorg.has_key(addr):
	print addr, "is from a USA", nameorg[addr], "organization"
    elif country.has_key(addr):
	print addr, "originated from", country[addr]
    else:
	print "I have no idea where", addr, "came from!"
