QuantumultX.php 2.9 KB

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