Clash.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace App\Components\Client;
  3. /*
  4. * 本文件依据Clash文件编辑
  5. * https://github.com/Dreamacro/clash/tree/master/adapters/outbound
  6. *
  7. */
  8. class Clash
  9. {
  10. public static function buildShadowsocks($server)
  11. {
  12. return [
  13. 'name' => $server['name'],
  14. 'type' => 'ss',
  15. 'server' => $server['host'],
  16. 'port' => $server['port'],
  17. 'password' => $server['passwd'],
  18. 'cipher' => $server['method'],
  19. 'udp' => $server['udp'],
  20. ];
  21. }
  22. public static function buildShadowsocksr($server)
  23. {
  24. return [
  25. 'name' => $server['name'],
  26. 'type' => 'ssr',
  27. 'server' => $server['host'],
  28. 'port' => $server['port'],
  29. 'password' => $server['passwd'],
  30. 'cipher' => $server['method'],
  31. 'obfs' => $server['obfs'],
  32. 'obfsparam' => $server['obfs_param'],
  33. 'protocol' => $server['protocol'],
  34. 'protocolparam' => $server['protocol_param'],
  35. 'udp' => $server['udp'],
  36. ];
  37. }
  38. public static function buildVmess($server)
  39. {
  40. $array = [
  41. 'name' => $server['name'],
  42. 'type' => 'vmess',
  43. 'server' => $server['host'],
  44. 'port' => $server['port'],
  45. 'uuid' => $server['uuid'],
  46. 'alterId' => $server['v2_alter_id'],
  47. 'cipher' => $server['method'],
  48. 'udp' => $server['udp'],
  49. ];
  50. if ($server['v2_tls']) {
  51. $array['tls'] = true;
  52. if (! empty($server['sni'])) {
  53. $array['servername'] = $server['sni'];
  54. } else if(!empty($server['v2_host'])){
  55. $array['servername'] = $server['v2_host'];
  56. }
  57. }
  58. $array['network'] = $server['v2_net'];
  59. if ($server['v2_net'] === 'ws') {
  60. $array['ws-path'] = $server['v2_path'];
  61. $array['ws-headers'] = ['Host' => $server['v2_host']];
  62. }
  63. return $array;
  64. }
  65. public static function buildVless($server)
  66. {
  67. $array = [
  68. 'name' => $server['name'],
  69. 'type' => 'vless',
  70. 'server' => $server['host'],
  71. 'port' => $server['port'],
  72. 'uuid' => $server['uuid'],
  73. 'alterId' => $server['v2_alter_id'],
  74. 'udp' => $server['udp'],
  75. 'flow' => 'xtls-rprx-vision',
  76. 'servername' => $server['v2_sni'],
  77. 'tls' => true
  78. ];
  79. //'reality-opts' => $server['v2_sni'],
  80. $array['reality-opts'] = ['public-key' => $server['vless_pulkey']];
  81. $array['client-fingerprint'] = 'chrome';
  82. return $array;
  83. }
  84. public static function buildTrojan($server)
  85. {
  86. $array = [
  87. 'name' => $server['name'],
  88. 'type' => 'trojan',
  89. 'server' => $server['host'],
  90. 'port' => $server['port'],
  91. 'password' => $server['passwd'],
  92. 'udp' => $server['udp'],
  93. ];
  94. if (! empty($server['sni'])) {
  95. $array['sni'] = $server['sni'];
  96. }
  97. return $array;
  98. }
  99. }