diff --git a/proxy-ltt.sh b/proxy-ltt.sh index d4d7017..c6a0f9f 100755 --- a/proxy-ltt.sh +++ b/proxy-ltt.sh @@ -50,13 +50,8 @@ Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjs Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` -JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` - -jroot=`echo '{}' | jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ ---argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibdkdemo, $jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` +jroot=`echo '{}' | jq --argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-lttg.sh b/proxy-lttg.sh index 13740cc..c7ba0b2 100755 --- a/proxy-lttg.sh +++ b/proxy-lttg.sh @@ -51,13 +51,8 @@ Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjs Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` -JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` - -jroot=`echo '{}' | jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ ---argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibdkdemo, $jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` +jroot=`echo '{}' | jq --argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-lttw.sh b/proxy-lttw.sh index 8f8eff6..a88ca2d 100755 --- a/proxy-lttw.sh +++ b/proxy-lttw.sh @@ -51,13 +51,8 @@ Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjs Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` -JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` - -jroot=`echo '{}' | jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ ---argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibdkdemo, $jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` +jroot=`echo '{}' | jq --argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-ltx.sh b/proxy-ltx.sh index a574ea3..9886395 100755 --- a/proxy-ltx.sh +++ b/proxy-ltx.sh @@ -50,13 +50,8 @@ Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjs Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` -JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` - -jroot=`echo '{}' | jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ ---argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibdkdemo, $jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` +jroot=`echo '{}' | jq --argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-mtt.sh b/proxy-mtt.sh index cc6b694..b782905 100755 --- a/proxy-mtt.sh +++ b/proxy-mtt.sh @@ -57,13 +57,8 @@ Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjs Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` -JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` - -jroot=`echo '{}' | jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ ---argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibdkdemo, $jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` +jroot=`echo '{}' | jq --argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-mttw.sh b/proxy-mttw.sh index 8fb1a0c..7466bf2 100755 --- a/proxy-mttw.sh +++ b/proxy-mttw.sh @@ -51,13 +51,8 @@ Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjs Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` -JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` - -jroot=`echo '{}' | jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ ---argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibdkdemo, $jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` +jroot=`echo '{}' | jq --argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-ttt.sh b/proxy-ttt.sh index 99c04ec..6560ff6 100755 --- a/proxy-ttt.sh +++ b/proxy-ttt.sh @@ -54,13 +54,8 @@ Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jservers "${Jservers}" --a Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` -JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` - -jroot=`echo '{}' | jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ ---argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibdkdemo, $jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` +jroot=`echo '{}' | jq --argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-tttw.sh b/proxy-tttw.sh index 2d71e56..5dd12f4 100755 --- a/proxy-tttw.sh +++ b/proxy-tttw.sh @@ -54,13 +54,8 @@ Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jservers "${Jservers}" --a Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` -JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` - -jroot=`echo '{}' | jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ ---argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibdkdemo, $jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` +jroot=`echo '{}' | jq --argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/run.sh b/run.sh index e649ca9..d9eea18 100755 --- a/run.sh +++ b/run.sh @@ -8,13 +8,13 @@ usage() { echo "proxy-xray " echo " -i|--stdin [Optional] Read config from stdin instead of auto generation" echo " -d|--debug [Optional] Start in debug mode with verbose output" - echo " --direct-china [Optional] Add routing rules to avoid domain and ip located in China being proxied" - echo " --direct-domain [Optional] Add a direct routing rule for domain, likegeosite:geosite:geolocation-cn" - echo " --direct-ip [Optional] Add a direct routing rule for ip, like geoip:cn" - echo " --proxy-domain [Optional] Add a proxy routing rule for domain, like twitter.com or geosite:google-cn" - echo " --proxy-ip [Optional] Add a proxy routing rule for ip, like 1.1.1.1/32 or geoip:netflix" - echo " --block-domain [Optional] Add a block routing rule for domain, like geosite:category-ads-all" - echo " --block-ip [Optional] Add a block routing rule for ip, like geoip:private" + echo " --china-direct [Optional] Add routing rules to avoid domain and ip located in China being proxied" + echo " --domain-direct [Optional] Add a domain rule for direct routing, likegeosite:geosite:geolocation-cn" + echo " --domain-proxy [Optional] Add a domain rule for proxy routing, like twitter.com or geosite:google-cn" + echo " --domain-block [Optional] Add a domain rule for block routing, like geosite:category-ads-all" + echo " --ip-direct [Optional] Add a ip-addr rule for direct routing, like 114.114.114.114/32 or geoip:cn" + echo " --ip-proxy [Optional] Add a ip-addr rule for proxy routing, like 1.1.1.1/32 or geoip:netflix" + echo " --ip-block [Optional] Add a ip-addr rule for block routing, like geoip:private" echo " --ltx id@host:port" echo " --ltt id@host:port" echo " --lttw id@host:port:/webpath" @@ -30,9 +30,8 @@ usage() { Jrules='{"rules":[]}' -TEMP=`getopt -o di --long ltx:,ltt:,lttw:,lttg:,mtt:,mttw:,ttt:,tttw:,ssa:,sst:,direct-domain:,direct-ip:,direct-china,proxy-domain:,proxy-ip:,block-domain:,block-ip:,stdin,debug -n "$0" -- $@` +TEMP=`getopt -o di --long ltx:,ltt:,lttw:,lttg:,mtt:,mttw:,ttt:,tttw:,ssa:,sst:,domain-direct:,domain-proxy:,domain-block:,ip-direct:,ip-proxy:,ip-block:,china-direct,stdin,debug -n "$0" -- $@` if [ $? != 0 ] ; then usage; exit 1 ; fi - eval set -- "$TEMP" while true ; do case "$1" in @@ -47,17 +46,7 @@ while true ; do fi shift 2 ;; - --direct-domain) - Jrules=`echo "${Jrules}" | jq --arg igndomain "$2" \ - '.rules += [{"type":"field", "outboundTag":"direct", "domain":[$igndomain]}]'` - shift 2 - ;; - --direct-ip) - Jrules=`echo "${Jrules}" | jq --arg ignip "$2" \ - '.rules += [{"type":"field", "outboundTag":"direct", "ip":[$ignip]}]'` - shift 2 - ;; - --direct-china) + --china-direct) Jrules=`echo "${Jrules}" | jq --arg igndomain "geosite:apple-cn" \ '.rules += [{"type":"field", "outboundTag":"direct", "domain":[$igndomain]}]'` Jrules=`echo "${Jrules}" | jq --arg igndomain "geosite:geolocation-cn" \ @@ -67,22 +56,32 @@ while true ; do IGCHINA=1 shift 1 ;; - --proxy-domain) + --domain-direct) + Jrules=`echo "${Jrules}" | jq --arg igndomain "$2" \ + '.rules += [{"type":"field", "outboundTag":"direct", "domain":[$igndomain]}]'` + shift 2 + ;; + --domain-proxy) Jrules=`echo "${Jrules}" | jq --arg pxydomain "$2" \ '.rules += [{"type":"field", "outboundTag":"proxy", "domain":[$pxydomain]}]'` shift 2 ;; - --proxy-ip) - Jrules=`echo "${Jrules}" | jq --arg pxyip "$2" \ - '.rules += [{"type":"field", "outboundTag":"proxy", "ip":[$pxyip]}]'` - shift 2 - ;; - --block-domain) + --domain-block) Jrules=`echo "${Jrules}" | jq --arg blkdomain "$2" \ '.rules += [{"type":"field", "outboundTag":"block", "domain":[$blkdomain]}]'` shift 2 ;; - --block-ip) + --ip-direct) + Jrules=`echo "${Jrules}" | jq --arg ignip "$2" \ + '.rules += [{"type":"field", "outboundTag":"direct", "ip":[$ignip]}]'` + shift 2 + ;; + --ip-proxy) + Jrules=`echo "${Jrules}" | jq --arg pxyip "$2" \ + '.rules += [{"type":"field", "outboundTag":"proxy", "ip":[$pxyip]}]'` + shift 2 + ;; + --ip-block) Jrules=`echo "${Jrules}" | jq --arg blkip "$2" \ '.rules += [{"type":"field", "outboundTag":"block", "ip":[$blkip]}]'` shift 2 @@ -119,18 +118,26 @@ else fi dnsmasq +# Add inbounds config +JibDKDEMO=`echo '{}' | jq '. +={"tag": "dns-in", "port":5353, "listen":"0.0.0.0", "protocol":"dokodemo-door", "settings":{"address": "1.1.1.1", "port":53, "network":"tcp,udp"}}' ` +JibSOCKS=`echo '{}' | jq '. +={"tag": "socks", "port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` +JibHTTP=`echo '{}' | jq '. +={"tag": "http", "port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +cat $XCONF| jq --argjson jibdkdemo "${JibDKDEMO}" --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +'. += {"inbounds":[$jibdkdemo, $jibsocks, $jibhttp]}' | sponge $XCONF + +# Add routing config Jrouting='{"routing": {"domainStrategy":"AsIs"}}' Jrouting=`echo "${Jrouting}" |jq --argjson jrules "${Jrules}" '.routing += $jrules'` -cat $XCONF| jq --argjson jrouting "${Jrouting}" '. += $jrouting' |sponge $XCONF +cat $XCONF| jq --argjson jrouting "${Jrouting}" '. += $jrouting' | sponge $XCONF if [ "${STDINCONF}" = "1" ]; then exec /usr/local/bin/xray fi if [ "${DEBUG}" = "1" ]; then - cat $XCONF |jq '.log.loglevel |="debug"' |sponge $XCONF + cat $XCONF |jq '.log.loglevel |="debug"' | sponge $XCONF cat $XCONF fi -#exec /usr/local/bin/xray -c $XCONF +exec /usr/local/bin/xray -c $XCONF