convert.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import fs from "fs"
  2. import path from "path"
  3. const proxies = fs
  4. .readFileSync("links.txt", "utf8")
  5. .toString()
  6. .split("\n")
  7. .map(proxy => proxy.trim())
  8. .filter(i => !!i)
  9. .map(proxy => {
  10. return new URL(proxy)
  11. })
  12. const countries = ["RCS-ZA", "RCS-US", "RCS-TR"]
  13. const configTemplate = fs
  14. .readFileSync(path.resolve("config", "template.yaml"), "utf8")
  15. .toString()
  16. countries.forEach((country, index) => {
  17. let proxyArg = proxies
  18. .filter(proxy => proxy.hash.replace("#", "").startsWith(country))
  19. .map((proxy, i) => {
  20. return ` - {name: ${proxy.hash.replace("#", "")}, server: ${
  21. proxy.hostname
  22. }, port: ${
  23. proxy.port
  24. }, reality-opts: {public-key: ${proxy.searchParams.get(
  25. "pbk"
  26. )}, short-id: ${proxy.searchParams.get(
  27. "sid"
  28. )}}, client-fingerprint: chrome, type: vless, uuid: ${
  29. proxy.username
  30. }, tls: true, tfo: false, skip-cert-verify: false, servername: yahoo.com, network: tcp}`
  31. })
  32. .join("\n")
  33. let groupArg = ""
  34. let ruleArg = ["192.168.10", "192.168.11", "192.168.12"]
  35. .map((ip, index) => {
  36. return [...Array(200).keys()]
  37. .map(
  38. i =>
  39. ` - SRC-IP-CIDR,${ip}.${i + 50}/32,${country}-IPWEB-${
  40. Math.ceil(i / 3) + index * 67 + 1
  41. }`
  42. )
  43. .join("\n")
  44. })
  45. .join("\n")
  46. fs.writeFileSync(
  47. path.resolve("dist", `${country}.yaml`),
  48. configTemplate
  49. .replace("${proxy}", proxyArg)
  50. .replace("${group}", groupArg)
  51. .replace("${rule}", ruleArg)
  52. )
  53. })