blob: a59fb8ee990a7f4c786767c03b5133b9bff0ab4b [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
5import Res
6import Dlg
7import sys
8import socket
9import string
10#
11# Definitions for our resources
12ID_MAIN=512
13
14ITEM_LOOKUP_ENTRY=1
15ITEM_RESULT=2
16ITEM_LOOKUP_BUTTON=3
17ITEM_QUIT_BUTTON=4
18
19
20def main():
21 """Main routine: open resource file, call dialog handler"""
22 try:
23 Res.OpenResFile("dnslookup-1.rsrc")
24 except Res.Error:
25 EasyDialogs.Message("Cannot open dnslookup-1.rsrc")
26 sys.exit(1)
27 do_dialog()
28
29def do_dialog():
30 """Post dialog and handle user interaction until quit"""
31 my_dlg = Dlg.GetNewDialog(ID_MAIN, -1)
32 while 1:
33 n = Dlg.ModalDialog(None)
34 if n == ITEM_LOOKUP_BUTTON:
35 tp, h, rect = my_dlg.GetDialogItem(ITEM_LOOKUP_ENTRY)
36 txt = Dlg.GetDialogItemText(h)
37
38 tp, h, rect = my_dlg.GetDialogItem(ITEM_RESULT)
39 Dlg.SetDialogItemText(h, dnslookup(txt))
40 elif n == ITEM_QUIT_BUTTON:
41 break
42
43def dnslookup(str):
44 """ Perform DNS lookup on str. If first character of digit is numeric,
45 assume that str contains an IP address. Otherwise, assume that str
46 contains a hostname."""
47 if str == '': str = ' '
48 if str[0] in string.digits:
49 try:
50 value = socket.gethostbyaddr(str)[0]
51 except:
52 value = 'Lookup failed'
53 else:
54 try:
55 value = socket.gethostbyname(str)
56 except:
57 value = 'Lookup failed'
58 return value
59
60main()
61