Avoid signed overflow in some xrange calculations, and extend
[python.git] / Mac / Demo / example1 / dnslookup-1.py
blob6eb2c73f736ad8704773d219b05569c838c2c0ae
1 """Sample program performing domain name lookups and showing off EasyDialogs,
2 Res and Dlg in the process"""
4 import EasyDialogs
5 from Carbon import Res
6 from Carbon import Dlg
7 import socket
8 import string
9 import macresource
11 # Definitions for our resources
12 ID_MAIN=512
14 ITEM_LOOKUP_ENTRY=1
15 ITEM_RESULT=2
16 ITEM_LOOKUP_BUTTON=3
17 ITEM_QUIT_BUTTON=4
19 def main():
20 """Main routine: open resource file, call dialog handler"""
21 macresource.need("DLOG", ID_MAIN, "dnslookup-1.rsrc")
22 do_dialog()
24 def 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)
33 tp, h, rect = my_dlg.GetDialogItem(ITEM_RESULT)
34 Dlg.SetDialogItemText(h, dnslookup(txt))
35 elif n == ITEM_QUIT_BUTTON:
36 break
38 def 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
55 main()