Guest User

Untitled

a guest
Sep 17th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. import socket
  2. import socks # PySocks
  3.  
  4. from smtplib import SMTP
  5.  
  6. class SocksSMTP(SMTP):
  7.  
  8. def __init__(self,
  9. host='',
  10. port=0,
  11. local_hostname=None,
  12. timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
  13. source_address=None,
  14. proxy_type=None,
  15. proxy_addr=None,
  16. proxy_port=None,
  17. proxy_rdns=True,
  18. proxy_username=None,
  19. proxy_password=None,
  20. socket_options=None):
  21.  
  22. self.proxy_type=proxy_type
  23. self.proxy_addr=proxy_addr
  24. self.proxy_port=proxy_port
  25. self.proxy_rdns=proxy_rdns
  26. self.proxy_username=proxy_username
  27. self.proxy_password=proxy_password
  28. self.socket_options=socket_options
  29. # if proxy_type is provided then change the socket to socksocket
  30. # else behave like a normal SMTP class.
  31. if self.proxy_type:
  32. self._get_socket = self.socks_get_socket
  33.  
  34. super(SocksSMTP, self).__init__(host, port, local_hostname, timeout, source_address)
  35.  
  36. def socks_get_socket(self, host, port, timeout):
  37. if self.debuglevel>0:
  38. self._print_debug('connect: to', (host, port), self.source_address)
  39. return socks.create_connection((host, port),
  40. timeout=timeout,
  41. source_address=self.source_address,
  42. proxy_type=self.proxy_type,
  43. proxy_addr=self.proxy_addr,
  44. proxy_port=self.proxy_port,
  45. proxy_rdns=self.proxy_rdns,
  46. proxy_username=self.proxy_username,
  47. proxy_password=self.proxy_password,
  48. socket_options=self.socket_options)
Add Comment
Please, Sign In to add comment