shadowsocks2022.jsont 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. {{if assertExists . "root_!kind" | not}} Unknown environment {{end}}
  2. {{if assertIsOneOf . "root_!kind" "json" | not}} This template only works for json input. {{end}}
  3. {{ $methodName := tryGet . "root_!json_method_!unquoted" "root_!json_protocol_!unquoted"}}
  4. {{if assertValueIsOneOf $methodName "2022-blake3-aes-128-gcm" "2022-blake3-aes-256-gcm" | not}}
  5. This template only works for ss2022. {{end}}
  6. {{ $server_address := tryGet . "root_!json_server" "root_!json_address" "root_!json_endpoint"}}
  7. {{ $server_port := tryGet . "root_!json_port" "root_!json_server_port" "root_!json_endpoint"}}
  8. {{if $server_address | splitAndGetAfterNth ":" 0 | len | gt 1}}
  9. {{ $server_addressport_unquoted := tryGet . "root_!json_endpoint_!unquoted"}}
  10. {{ $server_port = $server_addressport_unquoted | splitAndGetAfterNth ":" -1}}
  11. {{ $server_portWithSep := printf ":%v" $server_port}}
  12. {{ $server_address = $server_addressport_unquoted | stringCutSuffix $server_portWithSep | jsonEncode}}
  13. {{end}}
  14. {{ $name_annotation := tryGet . "root_!json_name_!unquoted" "root_!json_id_!unquoted" "root_!json_tag_!unquoted" "root_!json_remarks_!unquoted" "<default>"}}
  15. {{ $psk := tryGet . "root_!json_password_!unquoted" "root_!json_psk_!unquoted"}}
  16. {{ $ipsk_encoded := "" }}
  17. {{if $psk | splitAndGetAfterNth ":" 0 | len | ne 1}}
  18. {{ $origpsk := $psk }}
  19. {{ $psk = $psk | splitAndGetNth ":" -1 }}
  20. {{ $pskWithSep := printf ":%v" $psk}}
  21. {{ $ipsk_encoded = $origpsk | stringCutSuffix $pskWithSep | splitAndGetAfterNth ":" 0 | jsonEncode}}
  22. {{else}}
  23. {{$ipsk_encoded = tryGet . "root_!json_iPSKs" "<default>"}}
  24. {{end}}
  25. {
  26. "protocol": "shadowsocks2022",
  27. "settings": {
  28. "address": {{$server_address}},
  29. "port": {{$server_port}},
  30. "method": {{$methodName | jsonEncode}},
  31. "psk": {{$psk | jsonEncode}}
  32. {{if $ipsk_encoded|len|ne 0}}
  33. ,
  34. "ipsk": {{$ipsk_encoded}}
  35. {{end}}
  36. },
  37. "metadata":{
  38. "TagName": {{print $name_annotation "_" $server_address | jsonEncode}},
  39. "DisplayName": {{print $name_annotation | jsonEncode}}
  40. }
  41. }