#!/usr/bin/env python # # Copyright (C) 2001-2007 Jason R. Mastaler # # This file is part of TMDA. # # TMDA is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. A copy of this license should # be included in the file COPYING. # # TMDA is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with TMDA; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA from optparse import OptionParser, make_option import os import sys import string import time try: import paths except ImportError: # Prepend /usr/lib/python2.x/site-packages/TMDA/pythonlib sitedir = os.path.join(sys.prefix, 'lib', 'python'+sys.version[:3], 'site-packages', 'TMDA', 'pythonlib') sys.path.insert(0, sitedir) from TMDA import Version # option parsing opt_usage = "%prog [options] ADDRESS [SENDER]" opt_desc = \ """Check a tagged (dated, keyword, or sender style only) e-mail address. Required 'ADDRESS' is the address you want to check. Optional 'SENDER' is the sender address to verify if checking a sender-style address.""" opt_list = [ make_option("-c", "--config-file", metavar="FILE", dest="config_file", help=("""Specify a different configuration file other than ~/.tmda/config""")), make_option("-l", "--localtime", action="store_true", default=False, dest="localtime", help="Display dates in the local time zone instead of UTC"), make_option("-V", action="store_true", default=False, dest="full_version", help="show full TMDA version information and exit"), ] parser = OptionParser(option_list=opt_list, version=Version.TMDA, usage=opt_usage, description=opt_desc) (opts, args) = parser.parse_args() if opts.full_version: print Version.ALL sys.exit() if opts.config_file: os.environ['TMDARC'] = opts.config_file if len(args) < 1: parser.error('ADDRESS to check is required.') from TMDA import Defaults from TMDA import Address def formattime(timestamp): if opts.localtime: timetuple = time.localtime(int(timestamp)) tzstr = ' %Z' else: timetuple = time.gmtime(int(timestamp)) tzstr = ' UTC' return time.strftime('%c' + tzstr, timetuple) def main(): # Address to check is required try: address = args[0] addr = Address.Factory(address) except (IndexError, ValueError): parser.error('invalid usage') try: sender_address = args[1] except IndexError: sender_address = None try: addr.verify(sender_address) print "STATUS: VALID" if addr.tag() in Defaults.TAGS_DATED: print "EXPIRES: %s" % formattime(addr.timestamp()) except Address.ExpiredAddressError, msg: print "STATUS:", msg print "EXPIRED: %s" % formattime(addr.timestamp()) except Address.AddressError, msg: print "STATUS:", msg if __name__ == '__main__': main()