vmess.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/python3
  2. import base64
  3. import yaml
  4. import json
  5. from pathlib import Path
  6. import random
  7. import ipaddress
  8. def config_generator(domain, uuid, ip=""):
  9. if ip == "":
  10. ip = domain
  11. name = domain
  12. j = json.dumps({
  13. "v": "2", "ps": name, "add": ip, "port": "443", "id": uuid,
  14. "aid": "0", "net": "ws", "type": "none", "sni": domain,
  15. "host": domain, "path": "/", "tls": "tls"
  16. })
  17. return("vmess://" + base64.b64encode(j.encode('ascii')).decode('ascii'))
  18. path = Path(__file__).parent
  19. v2ray_config_file = open(str(path.joinpath('v2ray/config/config.json')), 'r', encoding='utf-8')
  20. v2ray_config = json.load(v2ray_config_file)
  21. with open(str(path.joinpath('docker-compose.yml')), 'r') as f:
  22. dockerCompose = yaml.safe_load(f)
  23. uuid = v2ray_config['inbounds'][0]['settings']['clients'][0]['id']
  24. domain = dockerCompose["services"]["v2ray"]["environment"][1].split('=')[1];
  25. isUsingCloudFlareCDNProxy = 'no'
  26. isUsingCloudFlareCDNProxy = input("Are you using CloudFlare CDN Proxy? type 'yes' or 'no'. Default is no.\n")
  27. if isUsingCloudFlareCDNProxy == 'yes':
  28. for line in open(str(path.joinpath('cloudflare_ip_list.txt')), 'r'):
  29. tempIpList = []
  30. for tempIP in ipaddress.IPv4Network(str(line).strip()):
  31. tempIpList.append(tempIP)
  32. finalIP = str(random.choice(tempIpList)).strip()
  33. print(config_generator(domain, uuid, finalIP)+ "\n")
  34. else:
  35. print(config_generator(domain, uuid))