| 1 | + | #!/bin/bash |
| 2 | + | |
| 3 | + | # ss-local -s 0.0.0.1 -p 1 -l 1080 -k password --plugin dnstt-client-plugin --plugin-opts 'doh=https://doh.example/dns-query;domain=<domain>;pubkey=<pubkey>' |
| 4 | + | |
| 5 | + | DNSTT_CLIENT="./dnstt-client" |
| 6 | + | |
| 7 | + | unset TRANSPORT RESOLVER PUBKEY DOMAIN |
| 8 | + | IFS=";" read -a OPTIONS <<<"$SS_PLUGIN_OPTIONS" |
| 9 | + | for opt in "${OPTIONS[@]}"; do |
| 10 | + | IFS="=" read key value <<<"$opt" |
| 11 | + | case "$key" in |
| 12 | + | doh ) TRANSPORT=-doh; RESOLVER="$value";; |
| 13 | + | dot ) TRANSPORT=-dot; RESOLVER="$value";; |
| 14 | + | udp ) TRANSPORT=-udp; RESOLVER="$value";; |
| 15 | + | pubkey ) PUBKEY="$value";; |
| 16 | + | domain ) DOMAIN="$value";; |
| 17 | + | esac |
| 18 | + | done |
| 19 | + | |
| 20 | + | TRANSPORT="${TRANSPORT:?need doh=, dot=, or udp=}" |
| 21 | + | RESOLVER="${RESOLVER:?need doh=, dot=, or udp=}" |
| 22 | + | PUBKEY="${PUBKEY:?need pubkey=}" |
| 23 | + | DOMAIN="${DOMAIN:?need domain=}" |
| 24 | + | SS_LOCAL_HOST="${SS_LOCAL_HOST:?}" |
| 25 | + | SS_LOCAL_PORT="${SS_LOCAL_PORT:?}" |
| 26 | + | |
| 27 | + | exec "$DNSTT_CLIENT" "$TRANSPORT" "$RESOLVER" -pubkey "$PUBKEY" "$DOMAIN" "$SS_LOCAL_HOST:$SS_LOCAL_PORT" |
| 28 | + | |