Guest User

Untitled

a guest
Mar 23rd, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. #/usr/bin/env authbind python3
  2.  
  3. from dnslib.label import DNSLabel
  4. from dnslib.server import DNSServer, DNSLogger, DNSRecord, RR
  5. from dnslib.dns import TXT
  6. import re
  7. import sys
  8. import os
  9. from os import listdir
  10.  
  11. def find_challenge(s_un):
  12. s = s_un.lower()
  13. PREFIX = "_acme-challenge."
  14. SUFFIX = "."
  15. if re.match("^[A-Za-z0-9_.-]*$", s) and (s.replace(".", "") != '') and s.startswith(PREFIX) and s.endswith(SUFFIX):
  16. name = s[len(PREFIX):-len(SUFFIX)]
  17. dirname = path+os.sep+name
  18. try:
  19. files = listdir(dirname)
  20. except FileNotFoundError:
  21. return []
  22. responses = []
  23. for file in files:
  24. with open(dirname+os.sep+file, 'r') as f:
  25. responses.append(f.read().replace('\n', ''))
  26. return responses
  27. else:
  28. return []
  29.  
  30. class TestResolver:
  31. def resolve(self,request,handler):
  32. reply = request.reply()
  33. for q in request.questions:
  34. name = str(q.qname)
  35. challenges = find_challenge(name)
  36. if (q.qtype == 16):
  37. for challenge in challenges:
  38. reply.add_answer(RR(rname=DNSLabel(name), rtype=16, rdata=TXT(challenge)))
  39. return reply
  40.  
  41. path = sys.argv[1]
  42.  
  43. logger = DNSLogger(prefix=False)
  44. resolver = TestResolver()
  45. server = DNSServer(resolver, port=53, address="0.0.0.0", logger=logger, tcp=False)
  46. server.start()
Add Comment
Please, Sign In to add comment