From 13511f80b53d8d68254f22e9d3adbde07dfb1810 Mon Sep 17 00:00:00 2001 From: Samuel Huang Date: Fri, 30 Aug 2024 10:37:55 +1000 Subject: [PATCH] JSON merge support --- run.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/run.sh b/run.sh index b0c4bb2..4ccbb93 100755 --- a/run.sh +++ b/run.sh @@ -33,12 +33,13 @@ usage() { echo " -r|--request-domain Domain name to request for letsencrypt cert" echo " -c|--cert-home Reading TLS certs from folder //" echo " -i|--stdin Read config from STDIN instead of auto generation" + echo " -j|--json Extra json snippet needs to merge into config" echo " -d|--debug Start in debug mode with verbose output" } Jrules='{"rules":[]}' -TEMP=`getopt -o u:k:r:c:di --long user:,hook:,request-domain:,cert-home:,ip-block:,domain-block:,cn-block,lx:,ls:,ms:,ts:,lsg:,lss:,lsw:,msw:,tsw:,lpg:,lps:,lpw:,mpw:,tpw:,ng-opt:,ng-proxy:,stdin,debug -n "$0" -- $@` +TEMP=`getopt -o u:k:r:c:j:di --long user:,hook:,request-domain:,cert-home:,ip-block:,domain-block:,cn-block,lx:,ls:,ms:,ts:,lsg:,lss:,lsw:,msw:,tsw:,lpg:,lps:,lpw:,mpw:,tpw:,ng-opt:,ng-proxy:,json:,stdin,debug -n "$0" -- $@` if [ $? != 0 ] ; then usage; exit 1 ; fi eval set -- "$TEMP" @@ -68,6 +69,10 @@ while true ; do UOPT+=("$2") shift 2 ;; + -j|--json) + INJECT+=("$2") + shift 2 + ;; --lx|--ls|--ms|--ts|--lsg|--lss|--lsw|--msw|--tsw|--lpg|--lps|--lpw|--mpw|--tpw) SVC=`echo $1|tr -d '\-\-'` SVCMD+=("${DIR}server-${SVC}.sh $2") @@ -145,6 +150,18 @@ fi echo '{"log":{"loglevel":"warning"}, "inbounds":[], "outbounds":[{"protocol":"freedom"}]}' |jq .|sponge $XCONF +if [ -n "${INJECT}" ]; then + for JSON_IN in "${INJECT[@]}" + do + echo "${JSON_IN}"|jq -ec >/tmp/merge.json + if [[ $? -ne 0 ]]; then + echo "Invalid json ${JSON_IN}" + exit 1 + fi + jq -s '.[0] * .[1]' $XCONF /tmp/merge.json |sponge $XCONF + done +fi + xopt="xconf=$XCONF" xopt="$xopt,certhome=$CERTHOME" for uopt in "${UOPT[@]}"