shadowsocks.jsont 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. {{if assertExists . "root_!kind" | not}} Unknown environment {{end}}
  2. {{if assertIsOneOf . "root_!kind" "json" "link" | not}} This template only works for json input. {{end}}
  3. {{ $type := tryGet . "root_!kind"}}
  4. {{ $methodName := tryGet . "root_!json_method_!unquoted" "root_!json_protocol_!unquoted" "root_!json_cipher_!unquoted" "root_!link_userinfo_!value_!rawContent"}}
  5. {{ if eq $type "link" }}
  6. {{ $methodName = splitAndGetNth ":" 0 $methodName}}
  7. {{end}}
  8. {{if assertValueIsOneOf $methodName "chacha20-ietf-poly1305" "chacha20-poly1305" "aes-128-gcm" "aes-256-gcm" | not}}
  9. This template only works for ss. {{end}}
  10. {{ $server_address := tryGet . "root_!json_server" "root_!json_address" "root_!json_endpoint" "root_!link_host"}}
  11. {{ $server_port := tryGet . "root_!json_port" "root_!json_server_port" "root_!json_endpoint" "root_!link_host"}}
  12. {{if $server_address | splitAndGetAfterNth ":" 0 | len | lt 1}}
  13. {{ $server_addressport_unquoted := tryGet . "root_!json_endpoint_!unquoted" "root_!link_host"}}
  14. {{ $server_port = $server_addressport_unquoted | splitAndGetNth ":" -1}}
  15. {{ $server_portWithSep := printf ":%v" $server_port}}
  16. {{ $server_address = $server_addressport_unquoted | stringCutSuffix $server_portWithSep | jsonEncode}}
  17. {{end}}
  18. {{ $name_annotation := tryGet . "root_!json_name_!unquoted" "root_!json_id_!unquoted" "root_!json_tag_!unquoted" "root_!json_remarks_!unquoted" "root_!link_fragment" "<default>"}}
  19. {{$password := tryGet . "root_!json_password" "root_!json_psk" "root_!link_userinfo_!value_!rawContent"}}
  20. {{ if eq $type "link" }}
  21. {{ $password = splitAndGetNth ":" 1 $password | jsonEncode}}
  22. {{end}}
  23. {
  24. "protocol": "shadowsocks",
  25. "settings": {
  26. "address": {{$server_address}},
  27. "port": {{$server_port}},
  28. "method": {{$methodName | jsonEncode}},
  29. "password": {{$password}}
  30. },
  31. "metadata":{
  32. "TagName": {{print $name_annotation "_" $server_address | jsonEncode}}
  33. }
  34. }