| """Sample program performing domain name lookups and showing off EasyDialogs, |
| Res and Dlg in the process""" |
| |
| import EasyDialogs |
| import Res |
| import Dlg |
| import sys |
| import socket |
| import string |
| # |
| # Definitions for our resources |
| ID_MAIN=512 |
| |
| ITEM_LOOKUP_ENTRY=1 |
| ITEM_RESULT=2 |
| ITEM_LOOKUP_BUTTON=3 |
| ITEM_QUIT_BUTTON=4 |
| |
| |
| def main(): |
| """Main routine: open resource file, call dialog handler""" |
| try: |
| Res.FSpOpenResFile("dnslookup-1.rsrc", 1) |
| except Res.Error: |
| EasyDialogs.Message("Cannot open dnslookup-1.rsrc") |
| sys.exit(1) |
| do_dialog() |
| |
| def do_dialog(): |
| """Post dialog and handle user interaction until quit""" |
| my_dlg = Dlg.GetNewDialog(ID_MAIN, -1) |
| while 1: |
| n = Dlg.ModalDialog(None) |
| if n == ITEM_LOOKUP_BUTTON: |
| tp, h, rect = my_dlg.GetDialogItem(ITEM_LOOKUP_ENTRY) |
| txt = Dlg.GetDialogItemText(h) |
| |
| tp, h, rect = my_dlg.GetDialogItem(ITEM_RESULT) |
| Dlg.SetDialogItemText(h, dnslookup(txt)) |
| elif n == ITEM_QUIT_BUTTON: |
| break |
| |
| def dnslookup(str): |
| """ Perform DNS lookup on str. If first character of digit is numeric, |
| assume that str contains an IP address. Otherwise, assume that str |
| contains a hostname.""" |
| if str == '': str = ' ' |
| if str[0] in string.digits: |
| try: |
| value = socket.gethostbyaddr(str)[0] |
| except: |
| value = 'Lookup failed' |
| else: |
| try: |
| value = socket.gethostbyname(str) |
| except: |
| value = 'Lookup failed' |
| return value |
| |
| main() |
| |