generate.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import glob
  2. import getopt
  3. import os
  4. import sys
  5. print("Anti-CF hosts file generator v1.0")
  6. print("Licensed under CC0 1.0")
  7. print("")
  8. #functions
  9. def progress(value, filename):
  10. sys.stdout.write('\033[2K\033[1G') #wipe the line before printing
  11. sys.stdout.write("Compiling rules [%s] %s" % ("{:,}".format(value), filename))
  12. sys.stdout.flush()
  13. opts, argv = getopt.getopt(sys.argv[1:], "o:d:")
  14. def process(outputf, inputd):
  15. if not os.path.isdir(inputd):
  16. print("Input not directory");
  17. sys.exit(1)
  18. with open(outputf, 'a') as outfile:
  19. rulescom = 0 #counter for counting how much rules compiled
  20. files = glob.glob(os.path.join(inputd, "*.txt")) #filter out anything but txt files
  21. for f in files:
  22. with open(f) as ruleso:
  23. for line in ruleso:
  24. outfile.write("0.0.0.0 {}\n".format(line.rstrip())) #this does the job
  25. rulescom = rulescom + 1
  26. progress(rulescom, f)
  27. if len(sys.argv) < 5: #check if theres argv
  28. print("Usage: generate.py -o <output file> -d <input directory>")
  29. print("Example: generate.py -o filter.txt -d ../../cloudflare_users/domains/")
  30. sys.exit(1)
  31. #argv parsing
  32. for k, v in opts:
  33. if k == '-o':
  34. outputfile = v
  35. if k == '-d':
  36. inputdirectory = v
  37. process(outputfile, inputdirectory)