blob: 2aa7c88c4ffb66fa5ba2d778dcb78d03ca7ffa2b [file] [log] [blame]
Jack Jansen2450a251999-12-03 15:15:28 +00001"""Sample program performing domain name lookups and showing off EasyDialogs,
2Res and Dlg in the process"""
3
4import EasyDialogs
Jack Jansen5a6fdcd2001-08-25 12:15:04 +00005from Carbon import Res
6from Carbon import Dlg
Jack Jansen2450a251999-12-03 15:15:28 +00007import sys
8import socket
9import string
Jack Jansen3c06b9a2001-08-27 21:41:23 +000010import macresource
Jack Jansen2450a251999-12-03 15:15:28 +000011#
12# Definitions for our resources
13ID_MAIN=512
14
15ITEM_LOOKUP_ENTRY=1
16ITEM_RESULT=2
17ITEM_LOOKUP_BUTTON=3
18ITEM_QUIT_BUTTON=4
Jack Jansen3c06b9a2001-08-27 21:41:23 +000019
Jack Jansen2450a251999-12-03 15:15:28 +000020def main():
21 """Main routine: open resource file, call dialog handler"""
Jack Jansen3c06b9a2001-08-27 21:41:23 +000022 macresource.need("DLOG", ID_MAIN, "dnslookup-1.rsrc")
Jack Jansen2450a251999-12-03 15:15:28 +000023 do_dialog()
24
25def do_dialog():
26 """Post dialog and handle user interaction until quit"""
27 my_dlg = Dlg.GetNewDialog(ID_MAIN, -1)
28 while 1:
29 n = Dlg.ModalDialog(None)
30 if n == ITEM_LOOKUP_BUTTON:
31 tp, h, rect = my_dlg.GetDialogItem(ITEM_LOOKUP_ENTRY)
32 txt = Dlg.GetDialogItemText(h)
33
34 tp, h, rect = my_dlg.GetDialogItem(ITEM_RESULT)
35 Dlg.SetDialogItemText(h, dnslookup(txt))
36 elif n == ITEM_QUIT_BUTTON:
37 break
38
39def dnslookup(str):
40 """ Perform DNS lookup on str. If first character of digit is numeric,
41 assume that str contains an IP address. Otherwise, assume that str
42 contains a hostname."""
43 if str == '': str = ' '
44 if str[0] in string.digits:
45 try:
46 value = socket.gethostbyaddr(str)[0]
47 except:
48 value = 'Lookup failed'
49 else:
50 try:
51 value = socket.gethostbyname(str)
52 except:
53 value = 'Lookup failed'
54 return value
55
56main()
57