@@ -17,6 +17,7 @@ class General extends AbstractProtocol
1717 Server::TYPE_SHADOWSOCKS ,
1818 Server::TYPE_TROJAN ,
1919 Server::TYPE_HYSTERIA ,
20+ Server::TYPE_ANYTLS ,
2021 Server::TYPE_SOCKS ,
2122 ];
2223
@@ -38,6 +39,7 @@ public function handle()
3839 Server::TYPE_SHADOWSOCKS => self ::buildShadowsocks ($ item ['password ' ], $ item ),
3940 Server::TYPE_TROJAN => self ::buildTrojan ($ item ['password ' ], $ item ),
4041 Server::TYPE_HYSTERIA => self ::buildHysteria ($ item ['password ' ], $ item ),
42+ Server::TYPE_ANYTLS => self ::buildAnyTLS ($ item ['password ' ], $ item ),
4143 Server::TYPE_SOCKS => self ::buildSocks ($ item ['password ' ], $ item ),
4244 default => '' ,
4345 };
@@ -255,6 +257,20 @@ public static function buildHysteria($password, $server)
255257 return $ uri ;
256258 }
257259
260+ public static function buildAnyTLS ($ password , $ server )
261+ {
262+ $ protocol_settings = $ server ['protocol_settings ' ];
263+ $ name = rawurlencode ($ server ['name ' ]);
264+ $ params = [
265+ 'sni ' => data_get ($ protocol_settings , 'tls.server_name ' ),
266+ 'insecure ' => data_get ($ protocol_settings , 'tls.allow_insecure ' )
267+ ];
268+ $ query = http_build_query ($ params );
269+ $ uri = "anytls:// {$ password }@ {$ server ['host ' ]}: {$ server ['port ' ]}? {$ query }# {$ name }" ;
270+ $ uri .= "\r\n" ;
271+ return $ uri ;
272+ }
273+
258274 public static function buildSocks ($ password , $ server )
259275 {
260276 $ name = rawurlencode ($ server ['name ' ]);
0 commit comments