diff --git a/Dockerfile.amd64 b/Dockerfile.amd64 index 1e4e724..7a942fd 100644 --- a/Dockerfile.amd64 +++ b/Dockerfile.amd64 @@ -14,16 +14,21 @@ FROM alpine:3.14 COPY --from=builder /go/src/XTLS/Xray-core/xray /usr/local/bin/ +RUN cd /usr/local/bin; curl -sSLO https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat +RUN cd /usr/local/bin; curl -sSLO https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat + RUN apk update && apk add bash openssl curl jq moreutils \ - bind-tools whois dnscrypt-proxy ca-certificates proxychains-ng npm + bind-tools whois dnsmasq ca-certificates proxychains-ng npm RUN npm config set unsafe-perm true RUN npm install -g qrcode-terminal +RUN mkdir -p /etc/dnsmasq-china.d +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf + ENV DNSPORT="53" -RUN sed -i "s/^listen_addresses = .*/listen_addresses = \[\'0.0.0.0:$DNSPORT\'\]/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml -RUN sed -i "s/^dnscrypt_servers = .*/dnscrypt_servers = false/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml -RUN sed -i "s/^doh_servers = .*/doh_servers = true/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml RUN sed -i "s/^socks4.*/socks5\t127.0.0.1 1080/g" /etc/proxychains/proxychains.conf ADD proxy-ltx.sh /proxy-ltx.sh diff --git a/Dockerfile.arm b/Dockerfile.arm index c8bbc0c..54a9e65 100644 --- a/Dockerfile.arm +++ b/Dockerfile.arm @@ -14,16 +14,21 @@ FROM arm32v6/alpine:3.14 COPY --from=builder /go/src/XTLS/Xray-core/xray /usr/local/bin/ +RUN cd /usr/local/bin; curl -sSLO https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat +RUN cd /usr/local/bin; curl -sSLO https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat + RUN apk update && apk add bash openssl curl jq moreutils \ - bind-tools whois dnscrypt-proxy ca-certificates proxychains-ng npm + bind-tools whois dnsmasq ca-certificates proxychains-ng npm RUN npm config set unsafe-perm true RUN npm install -g qrcode-terminal +RUN mkdir -p /etc/dnsmasq-china.d +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf + ENV DNSPORT="53" -RUN sed -i "s/^listen_addresses = .*/listen_addresses = \[\'0.0.0.0:$DNSPORT\'\]/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml -RUN sed -i "s/^dnscrypt_servers = .*/dnscrypt_servers = false/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml -RUN sed -i "s/^doh_servers = .*/doh_servers = true/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml RUN sed -i "s/^socks4.*/socks5\t127.0.0.1 1080/g" /etc/proxychains/proxychains.conf ADD proxy-ltx.sh /proxy-ltx.sh diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 index 2cc45bf..6f7ea49 100644 --- a/Dockerfile.arm64 +++ b/Dockerfile.arm64 @@ -14,16 +14,21 @@ FROM arm64v8/alpine:3.14 COPY --from=builder /go/src/XTLS/Xray-core/xray /usr/local/bin/ +RUN cd /usr/local/bin; curl -sSLO https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat +RUN cd /usr/local/bin; curl -sSLO https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat + RUN apk update && apk add bash openssl curl jq moreutils \ - bind-tools whois dnscrypt-proxy ca-certificates proxychains-ng npm + bind-tools whois dnsmasq ca-certificates proxychains-ng npm RUN npm config set unsafe-perm true RUN npm install -g qrcode-terminal +RUN mkdir -p /etc/dnsmasq-china.d +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf +RUN cd /etc/dnsmasq-china.d; curl -sSLO https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf + ENV DNSPORT="53" -RUN sed -i "s/^listen_addresses = .*/listen_addresses = \[\'0.0.0.0:$DNSPORT\'\]/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml -RUN sed -i "s/^dnscrypt_servers = .*/dnscrypt_servers = false/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml -RUN sed -i "s/^doh_servers = .*/doh_servers = true/g" /etc/dnscrypt-proxy/dnscrypt-proxy.toml RUN sed -i "s/^socks4.*/socks5\t127.0.0.1 1080/g" /etc/proxychains/proxychains.conf ADD proxy-ltx.sh /proxy-ltx.sh diff --git a/proxy-ltt.sh b/proxy-ltt.sh index 1562af6..931eb81 100755 --- a/proxy-ltt.sh +++ b/proxy-ltt.sh @@ -45,14 +45,17 @@ Jvnext=`echo '{}' | jq --arg host "${host}" --arg port "${port}" --argjson juser JstreamSettings=`echo '{}' | jq --arg host "${host}" \ '. += {"network":"tcp", "security":"tls", "tlsSettings":{"serverName":$host}}' ` -Joutbounds=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ -'. += { "protocol":"vless", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ +'. += { "tag": "proxy", "protocol":"vless", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' +Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibSOCKS=`echo '{}' | jq '. +={"port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +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 jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" --argjson joutbounds "${Joutbounds}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$joutbounds]}' ` +jroot=`echo '{}' | jq --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +--argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-lttg.sh b/proxy-lttg.sh index f4dff66..b4634a2 100755 --- a/proxy-lttg.sh +++ b/proxy-lttg.sh @@ -46,14 +46,17 @@ Jvnext=`echo '{}' | jq --arg host "${host}" --arg port "${port}" --argjson juser JstreamSettings=`echo '{}' | jq --arg host "${host}" --arg path "${path}" \ '. += {"network":"grpc", "security":"tls", "tlsSettings":{"serverName":$host}, "grpcSettings":{"serviceName":$path}}' ` -Joutbounds=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ -'. += { "protocol":"vless", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ +'. += { "tag": "proxy", "protocol":"vless", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' +Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibSOCKS=`echo '{}' | jq '. +={"port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +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 jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" --argjson joutbounds "${Joutbounds}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$joutbounds]}' ` +jroot=`echo '{}' | jq --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +--argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-lttw.sh b/proxy-lttw.sh index c6a72a6..ea6075c 100755 --- a/proxy-lttw.sh +++ b/proxy-lttw.sh @@ -46,14 +46,17 @@ Jvnext=`echo '{}' | jq --arg host "${host}" --arg port "${port}" --argjson juser JstreamSettings=`echo '{}' | jq --arg host "${host}" --arg path "${path}" \ '. += {"network":"ws", "security":"tls", "tlsSettings":{"serverName":$host}, "wsSettings":{"path":$path}}' ` -Joutbounds=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ -'. += { "protocol":"vless", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ +'. += { "tag": "proxy", "protocol":"vless", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' +Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibSOCKS=`echo '{}' | jq '. +={"port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +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 jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" --argjson joutbounds "${Joutbounds}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$joutbounds]}' ` +jroot=`echo '{}' | jq --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +--argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-ltx.sh b/proxy-ltx.sh index 49646b6..b570f84 100755 --- a/proxy-ltx.sh +++ b/proxy-ltx.sh @@ -45,14 +45,17 @@ Jvnext=`echo '{}' | jq --arg host "${host}" --arg port "${port}" --argjson juser JstreamSettings=`echo '{}' | jq --arg host "${host}" \ '. += {"network":"tcp", "security":"xtls", "xtlsSettings":{"serverName":$host}}' ` -Joutbounds=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ -'. += { "protocol":"vless", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ +'. += { "tag": "proxy", "protocol":"vless", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' +Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibSOCKS=`echo '{}' | jq '. +={"port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +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 jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" --argjson joutbounds "${Joutbounds}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$joutbounds]}' ` +jroot=`echo '{}' | jq --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +--argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-mtt.sh b/proxy-mtt.sh index cef4724..848d206 100755 --- a/proxy-mtt.sh +++ b/proxy-mtt.sh @@ -52,14 +52,17 @@ Jvnext=`echo '{}' | jq --arg host "${host}" --arg port "${port}" --argjson juser JstreamSettings=`echo '{}' | jq --arg host "${host}" \ '. += {"network":"tcp", "security":"tls", "tlsSettings":{"serverName":$host}}' ` -Joutbounds=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ -'. += { "protocol":"vmess", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ +'. += { "tag": "proxy", "protocol":"vmess", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' +Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibSOCKS=`echo '{}' | jq '. +={"port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +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 jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" --argjson joutbounds "${Joutbounds}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$joutbounds]}' ` +jroot=`echo '{}' | jq --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +--argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-mttw.sh b/proxy-mttw.sh index 54e8ccf..2cb44ea 100755 --- a/proxy-mttw.sh +++ b/proxy-mttw.sh @@ -46,14 +46,17 @@ Jvnext=`echo '{}' | jq --arg host "${host}" --arg port "${port}" --argjson juser JstreamSettings=`echo '{}' | jq --arg host "${host}" --arg path "${path}" \ '. += {"network":"ws", "security":"tls", "tlsSettings":{"serverName":$host}, "wsSettings":{"path":$path}}' ` -Joutbounds=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ -'. += { "protocol":"vmess", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jvnext "${Jvnext}" --argjson jstreamSettings "${JstreamSettings}" \ +'. += { "tag": "proxy", "protocol":"vmess", "settings":{"vnext":[$jvnext]}, "streamSettings":$jstreamSettings }' ` +Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' +Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibSOCKS=`echo '{}' | jq '. +={"port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +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 jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" --argjson joutbounds "${Joutbounds}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$joutbounds]}' ` +jroot=`echo '{}' | jq --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +--argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-ttt.sh b/proxy-ttt.sh index f37475f..3dd80d7 100755 --- a/proxy-ttt.sh +++ b/proxy-ttt.sh @@ -49,14 +49,17 @@ Jservers=`echo '{}' | jq --arg host "${host}" --arg port "${port}" --arg passwd JstreamSettings=`echo '{}' | jq --arg host "${host}" \ '. += {"network":"tcp", "security":"tls", "tlsSettings":{"serverName":$host}}' ` -Joutbounds=`echo '{}' | jq --arg host "${host}" --argjson jservers "${Jservers}" --argjson jstreamSettings "${JstreamSettings}" \ -'. += { "protocol":"trojan", "settings":{"servers":[$jservers]}, "streamSettings":$jstreamSettings }' ` +Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jservers "${Jservers}" --argjson jstreamSettings "${JstreamSettings}" \ +'. += { "tag": "proxy", "protocol":"trojan", "settings":{"servers":[$jservers]}, "streamSettings":$jstreamSettings }' ` +Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' +Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibSOCKS=`echo '{}' | jq '. +={"port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +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 jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" --argjson joutbounds "${Joutbounds}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$joutbounds]}' ` +jroot=`echo '{}' | jq --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +--argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/proxy-tttw.sh b/proxy-tttw.sh index 73fcf60..a67fe7f 100755 --- a/proxy-tttw.sh +++ b/proxy-tttw.sh @@ -49,14 +49,17 @@ Jservers=`echo '{}' | jq --arg host "${host}" --arg port "${port}" --arg passwd JstreamSettings=`echo '{}' | jq --arg host "${host}" --arg path "${path}" \ '. += {"network":"ws", "security":"tls", "tlsSettings":{"serverName":$host}, "wsSettings":{"path":$path}}' ` -Joutbounds=`echo '{}' | jq --arg host "${host}" --argjson jservers "${Jservers}" --argjson jstreamSettings "${JstreamSettings}" \ -'. += { "protocol":"trojan", "settings":{"servers":[$jservers]}, "streamSettings":$jstreamSettings }' ` +Jproxy=`echo '{}' | jq --arg host "${host}" --argjson jservers "${Jservers}" --argjson jstreamSettings "${JstreamSettings}" \ +'. += { "tag": "proxy", "protocol":"trojan", "settings":{"servers":[$jservers]}, "streamSettings":$jstreamSettings }' ` +Jdirect='{"tag": "direct", "protocol": "freedom", "settings": {}}' +Jblocked='{"tag": "blocked", "protocol": "blackhole", "settings": {}}' -JibSOCKS=`echo '{}' | jq '. +={"port":1080, "listen":"0.0.0.0", "protocol":"socks", "settings":{"udp":true}}' ` -JibHTTP=`echo '{}' | jq '. +={"port":8123, "listen":"0.0.0.0", "protocol":"http"}' ` +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 jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" --argjson joutbounds "${Joutbounds}" \ -'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$joutbounds]}' ` +jroot=`echo '{}' | jq --argjson jibsocks "${JibSOCKS}" --argjson jibhttp "${JibHTTP}" \ +--argjson jproxy "${Jproxy}" --argjson jdirect "${Jdirect}" --argjson jblocked "${Jblocked}" \ +'. += {"log":{"loglevel":"warning"}, "inbounds":[$jibsocks, $jibhttp], "outbounds":[$jproxy, $jdirect, $jblocked]}' ` echo "$jroot" exit 0 diff --git a/run.sh b/run.sh index 502adf2..d181790 100755 --- a/run.sh +++ b/run.sh @@ -8,6 +8,11 @@ usage() { echo "proxy-xray -- [connect options] [-i|--stdin] [-d|--debug]" echo " -i|--stdin [Optional] Read config from stdin instead of auto generation" echo " -d|--debug [Optional] Start in debug mode with verbose output" + echo " --ignore-china [Optional] Add rules to avoid domain and ip located in China being proxied" + echo " --ignore-domain [Optional] Add a non-proxy routing rule for domain, like sina.cn or geosite:apple-cn" + echo " --ignore-ip [Optional] Add a non-proxy routing rule for ip, like geoip:\!us" + echo " --proxy-domain [Optional] Add a proxy routing rule for domain, like geosite:apple-cn" + echo " --proxy-ip [Optional] Add a proxy routing rule for ip, like 1.1.1.1/32 or geoip:netflix" echo " --ltx id@host:port" echo " --ltt id@host:port" echo " --lttw id@host:port:/webpath" @@ -20,7 +25,10 @@ usage() { # echo " --sst password:method@host:port" } -TEMP=`getopt -o di --long ltx:,ltt:,lttw:,lttg:,mtt:,mttw:,ttt:,tttw:,ssa:,sst:stdin,debug -n "$0" -- $@` + +Jrules='{"rules":[]}' + +TEMP=`getopt -o di --long ltx:,ltt:,lttw:,lttg:,mtt:,mttw:,ttt:,tttw:,ssa:,sst:,ignore-domain:,ignore-ip:,ignore-china,proxy-domain:,proxy-ip:,stdin,debug -n "$0" -- $@` if [ $? != 0 ] ; then usage; exit 1 ; fi eval set -- "$TEMP" @@ -37,8 +45,39 @@ while true ; do fi shift 2 ;; + --ignore-domain) + Jrules=`echo "${Jrules}" | jq --arg igdomain "$2" \ + '.rules += [{"type":"field", "outboundTag":"direct", "domain":[$igdomain]}]'` + shift 2 + ;; + --ignore-ip) + Jrules=`echo "${Jrules}" | jq --arg igip "$2" \ + '.rules += [{"type":"field", "outboundTag":"direct", "ip":[$igip]}]'` + shift 2 + ;; + --ignore-china) + Jrules=`echo "${Jrules}" | jq --arg igdomain "geosite:apple-cn" \ + '.rules += [{"type":"field", "outboundTag":"direct", "domain":[$igdomain]}]'` + Jrules=`echo "${Jrules}" | jq --arg igdomain "geosite:geolocation-cn" \ + '.rules += [{"type":"field", "outboundTag":"direct", "domain":[$igdomain]}]'` + Jrules=`echo "${Jrules}" | jq --arg igip "geoip:cn" \ + '.rules += [{"type":"field", "outboundTag":"direct", "ip":[$igip]}]'` + IGCHINA=1 + shift 1 + ;; + --proxy-domain) + Jrules=`echo "${Jrules}" | jq --arg pxdomain "$2" \ + '.rules += [{"type":"field", "outboundTag":"proxy", "domain":[$pxdomain]}]'` + shift 2 + ;; + --proxy-ip) + Jrules=`echo "${Jrules}" | jq --arg pxip "$2" \ + '.rules += [{"type":"field", "outboundTag":"proxy", "ip":[$pxip]}]'` + shift 2 + ;; -i|--stdin) STDINCONF=1 + XRAY=1 shift 1 ;; -d|--debug) @@ -56,22 +95,30 @@ while true ; do esac done -if [ "${STDINCONF}" = "1" ]; then - exec /usr/local/bin/xray -else - if [ "${XRAY}" = "1" ]; then - if [ "${DEBUG}" = "1" ]; then - cat $XCONF |jq '.log.loglevel |="debug"' |sponge $XCONF - echo - cat $XCONF - echo - else - /usr/bin/dnscrypt-proxy -config /etc/dnscrypt-proxy/dnscrypt-proxy.toml & - fi - else - usage - exit 1 - fi +if [ "${XRAY}" != "1" ]; then + usage + exit 1 fi -exec /usr/local/bin/xray -c $XCONF +if [ "${IGCHINA}" = "1" ]; then + cp -a /etc/dnsmasq-china.d/*.conf /etc/dnsmasq.d/ +else + rm -rf /etc/dnsmasq.d/*.china.conf +fi +dnsmasq + +Jrouting='{"routing": {"domainStrategy":"AsIs"}}' +Jrouting=`echo "${Jrouting}" |jq --argjson jrules "${Jrules}" '.routing += $jrules'` +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 +fi + +#exec /usr/local/bin/xray -c $XCONF +