/Mac/Demo/example1/dnslookup-1.py

http://unladen-swallow.googlecode.com/ · Python · 55 lines · 48 code · 3 blank · 4 comment · 1 complexity · 13c3cda960b60b3111770a75c7bb80f6 MD5 · raw file

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