blob: 6eb2c73f736ad8704773d219b05569c838c2c0ae [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 socket
8import string
Jack Jansen3c06b9a2001-08-27 21:41:23 +00009import macresource
Jack Jansen2450a251999-12-03 15:15:28 +000010#
11# Definitions for our resources
12ID_MAIN=512
13
14ITEM_LOOKUP_ENTRY=1
15ITEM_RESULT=2
16ITEM_LOOKUP_BUTTON=3
17ITEM_QUIT_BUTTON=4
Jack Jansen3c06b9a2001-08-27 21:41:23 +000018
Jack Jansen2450a251999-12-03 15:15:28 +000019def main():
20 """Main routine: open resource file, call dialog handler"""
Jack Jansen3c06b9a2001-08-27 21:41:23 +000021 macresource.need("DLOG", ID_MAIN, "dnslookup-1.rsrc")
Jack Jansen2450a251999-12-03 15:15:28 +000022 do_dialog()
23
24def do_dialog():
25 """Post dialog and handle user interaction until quit"""
26 my_dlg = Dlg.GetNewDialog(ID_MAIN, -1)
27 while 1:
28 n = Dlg.ModalDialog(None)
29 if n == ITEM_LOOKUP_BUTTON:
30 tp, h, rect = my_dlg.GetDialogItem(ITEM_LOOKUP_ENTRY)
31 txt = Dlg.GetDialogItemText(h)
32
33 tp, h, rect = my_dlg.GetDialogItem(ITEM_RESULT)
Tim Peters182b5ac2004-07-18 06:16:08 +000034 Dlg.SetDialogItemText(h, dnslookup(txt))
Jack Jansen2450a251999-12-03 15:15:28 +000035 elif n == ITEM_QUIT_BUTTON:
36 break
37
38def dnslookup(str):
39 """ Perform DNS lookup on str. If first character of digit is numeric,
40 assume that str contains an IP address. Otherwise, assume that str
41 contains a hostname."""
42 if str == '': str = ' '
43 if str[0] in string.digits:
44 try:
45 value = socket.gethostbyaddr(str)[0]
46 except:
47 value = 'Lookup failed'
48 else:
49 try:
50 value = socket.gethostbyname(str)
51 except:
52 value = 'Lookup failed'
53 return value
54
55main()