Surge.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Components\Client;
  3. class Surge
  4. {
  5. public static function buildShadowsocks($server)
  6. {
  7. $config = array_filter([
  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. return implode(',', $config).PHP_EOL;
  17. }
  18. public static function buildVmess($server)
  19. {
  20. $config = [
  21. "{$server['name']}=vmess",
  22. $server['host'],
  23. $server['port'],
  24. "username={$server['uuid']}",
  25. 'vmess-aead=true',
  26. 'tfo=true',
  27. "udp-relay={$server['udp']}",
  28. ];
  29. if ($server['v2_tls']) {
  30. array_push($config, 'tls=true', "sni={$server['v2_host']}");
  31. }
  32. if ($server['v2_net'] === 'ws') {
  33. array_push($config, 'ws=true', "ws-path={$server['v2_path']}", "ws-headers=Host:{$server['v2_host']}");
  34. }
  35. return implode(',', $config).PHP_EOL;
  36. }
  37. public static function buildTrojan($server)
  38. {
  39. $config = array_filter([
  40. "{$server['name']}=trojan",
  41. $server['host'],
  42. $server['port'],
  43. "password={$server['passwd']}",
  44. $server['sni'] ? "sni={$server['sni']}" : '',
  45. 'tfo=true',
  46. "udp-relay={$server['udp']}",
  47. // "skip-cert-verify={$server['allow_insecure']}"
  48. ]);
  49. return implode(',', $config).PHP_EOL;
  50. }
  51. }