An attempt at adding UDP support to aiosocks. Untested due to lack of server support.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

44 lines
1.3 KiB

  1. from collections import namedtuple
  2. __all__ = ('Socks4Auth', 'Socks5Auth', 'Socks4Addr', 'Socks5Addr', 'SocksAddr')
  3. class Socks4Auth(namedtuple('Socks4Auth', ['login', 'encoding'])):
  4. def __new__(cls, login, encoding='utf-8'):
  5. if login is None:
  6. raise ValueError('None is not allowed as login value')
  7. return super().__new__(cls, login.encode(encoding), encoding)
  8. class Socks5Auth(namedtuple('Socks5Auth', ['login', 'password', 'encoding'])):
  9. def __new__(cls, login, password, encoding='utf-8'):
  10. if login is None:
  11. raise ValueError('None is not allowed as login value')
  12. if password is None:
  13. raise ValueError('None is not allowed as password value')
  14. return super().__new__(cls,
  15. login.encode(encoding),
  16. password.encode(encoding), encoding)
  17. class SocksAddr(namedtuple('SocksServer', ['host', 'port'])):
  18. def __new__(cls, host, port=1080):
  19. if host is None:
  20. raise ValueError('None is not allowed as host value')
  21. if port is None:
  22. port = 1080 # default socks server port
  23. return super().__new__(cls, host, port)
  24. class Socks4Addr(SocksAddr):
  25. pass
  26. class Socks5Addr(SocksAddr):
  27. pass