QuantumultX.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Components\Client;
  3. class QuantumultX
  4. {
  5. public static function buildShadowsocks($server)
  6. {
  7. $config = array_filter([
  8. "shadowsocks={$server['host']}:{$server['port']}",
  9. "method={$server['method']}",
  10. "password={$server['passwd']}",
  11. 'fast-open=true',
  12. "udp-relay={$server['udp']}",
  13. "tag={$server['name']}",
  14. ]);
  15. return implode(',', $config).PHP_EOL;
  16. }
  17. public static function buildShadowsocksr($server)
  18. {
  19. $config = array_filter([
  20. "shadowsocks={$server['host']}:{$server['port']}",
  21. "method={$server['method']}",
  22. "password={$server['passwd']}",
  23. "ssr-protocol={$server['protocol']}",
  24. "ssr-protocol-param={$server['protocol_param']}",
  25. "obfs={$server['obfs']}",
  26. "obfs-host={$server['obfs_param']}",
  27. 'fast-open=true',
  28. "udp-relay={$server['udp']}",
  29. "tag={$server['name']}",
  30. ]);
  31. return implode(',', $config).PHP_EOL;
  32. }
  33. public static function buildVmess($server)
  34. {
  35. $config = [
  36. "vmess={$server['host']}:{$server['port']}",
  37. "method={$server['method']}",
  38. "password={$server['uuid']}",
  39. 'fast-open=true',
  40. 'udp-relay=true',
  41. "tag={$server['name']}",
  42. ];
  43. if ($server['v2_tls']) {
  44. if ($server['v2_net'] === 'tcp') {
  45. $config[] = 'obfs=over-tls';
  46. } else {
  47. $config[] = 'obfs=wss';
  48. }
  49. } elseif ($server['v2_net'] === 'ws') {
  50. $config[] = 'obfs=ws';
  51. }
  52. if ($server['v2_tls']) {
  53. $config[] = 'tls-verification=true';
  54. if (! empty($server['v2_host'])) {
  55. $config[] = "tls-host={$server['v2_host']}";
  56. }
  57. }
  58. if ($server['v2_type'] === 'ws' && ! empty($server['v2_path'])) {
  59. $config[] = "obfs-uri={$server['v2_path']}";
  60. $config[] = "obfs-host={$server['v2_host']}";
  61. }
  62. return implode(',', $config).PHP_EOL;
  63. }
  64. public static function buildTrojan($server)
  65. {
  66. $config = array_filter([
  67. "trojan={$server['host']}:{$server['port']}",
  68. "password={$server['passwd']}",
  69. 'over-tls=true',
  70. $server['host'] ? "tls-host={$server['host']}" : '',
  71. // Tips: allowInsecure=false = tls-verification=true
  72. // $server['allow_insecure'] ? 'tls-verification=false' : 'tls-verification=true',
  73. 'fast-open=true',
  74. 'udp-relay=true',
  75. "tag={$server['name']}",
  76. ]);
  77. return implode(',', $config).PHP_EOL;
  78. }
  79. }