mirror of
https://github.com/samuelhbne/proxy-xray.git
synced 2025-12-18 13:14:36 +03:00
Initial routing support
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
15
proxy-ltt.sh
15
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
15
proxy-ltx.sh
15
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
|
||||
|
||||
15
proxy-mtt.sh
15
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
|
||||
|
||||
@@ -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
|
||||
|
||||
15
proxy-ttt.sh
15
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
|
||||
|
||||
@@ -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
|
||||
|
||||
83
run.sh
83
run.sh
@@ -8,6 +8,11 @@ usage() {
|
||||
echo "proxy-xray --<ltx|ltt|lttw|mtt|mttw|ttt|tttw|ssa|sst|stdin> [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 <domain rule> [Optional] Add a non-proxy routing rule for domain, like sina.cn or geosite:apple-cn"
|
||||
echo " --ignore-ip <ip rule> [Optional] Add a non-proxy routing rule for ip, like geoip:\!us"
|
||||
echo " --proxy-domain <domain rule> [Optional] Add a proxy routing rule for domain, like geosite:apple-cn"
|
||||
echo " --proxy-ip <ip rule> [Optional] Add a proxy routing rule for ip, like 1.1.1.1/32 or geoip:netflix"
|
||||
echo " --ltx <VLESS-TCP-XTLS option> id@host:port"
|
||||
echo " --ltt <VLESS-TCP-TLS option> id@host:port"
|
||||
echo " --lttw <VLESS-TCP-TLS-WS option> id@host:port:/webpath"
|
||||
@@ -20,7 +25,10 @@ usage() {
|
||||
# echo " --sst <Shadowsocks-TCP option> 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user