Surge.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Components\Client;
  3. class Surge
  4. {
  5. public static function buildShadowsocks($server)
  6. {
  7. $config = [
  8. "{$server['name']}=ss",
  9. "{$server['host']}",
  10. "{$server['port']}",
  11. "encrypt-method={$server['method']}",
  12. "password={$server['passwd']}",
  13. 'tfo=true',
  14. "udp-relay={$server['udp']}",
  15. ];
  16. $config = array_filter($config);
  17. return implode(',', $config).PHP_EOL;
  18. }
  19. public static function buildVmess($server)
  20. {
  21. $config = [
  22. "{$server['name']}=vmess",
  23. "{$server['host']}",
  24. "{$server['port']}",
  25. "username={$server['uuid']}",
  26. 'vmess-aead=true',
  27. 'tfo=true',
  28. "udp-relay={$server['udp']}",
  29. ];
  30. if ($server['v2_tls']) {
  31. $config[] = 'tls=true';
  32. if(!empty($server['v2_sni']))
  33. {
  34. $config[] = 'skip-cert-verify=false';
  35. }
  36. else {
  37. $config[] = 'skip-cert-verify=true';
  38. }
  39. if(!empty($server['v2_host'])){
  40. $config[] = "sni={$server['v2_host']}";
  41. }
  42. else {
  43. $config[] = "sni={$server['v2_sni']}";
  44. }
  45. }
  46. if ($server['v2_net'] === 'ws') {
  47. $config[] = 'ws=true';
  48. $config[] = "ws-path={$server['v2_path']}";
  49. $config[] = "ws-headers=Host:{$server['v2_host']}";
  50. }
  51. return implode(',', $config).PHP_EOL;
  52. }
  53. public static function buildTrojan($server)
  54. {
  55. $config = [
  56. "{$server['name']}=trojan",
  57. "{$server['host']}",
  58. "{$server['port']}",
  59. "password={$server['passwd']}",
  60. $server['sni'] ? "sni={$server['sni']}" : '',
  61. 'tfo=true',
  62. "udp-relay={$server['udp']}",
  63. ];
  64. $config = array_filter($config);
  65. return implode(',', $config).PHP_EOL;
  66. }
  67. }