From 4dd1270e5dac7f98ff6ccb85f363b9c03b6fa8fb Mon Sep 17 00:00:00 2001 From: Samuel Huang Date: Thu, 26 Sep 2024 17:11:28 +1000 Subject: [PATCH] Updated QR code generation --- Dockerfile | 4 ++-- README.md | 32 +++++++++++++++++++------------- images/cli.png | Bin 0 -> 46574 bytes status.sh => qrcode.sh | 2 +- run.sh | 3 ++- 5 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 images/cli.png rename status.sh => qrcode.sh (99%) diff --git a/Dockerfile b/Dockerfile index 83371b5..6e6ac24 100644 --- a/Dockerfile +++ b/Dockerfile @@ -71,10 +71,10 @@ ADD proxy-ttt.sh /proxy-ttt.sh ADD proxy-twp.sh /proxy-twp.sh ADD proxy-twt.sh /proxy-twt.sh -ADD status.sh /status +ADD qrcode.sh /qrcode ADD run.sh /run.sh RUN chmod 755 /*.sh -RUN chmod 755 /status +RUN chmod 755 /qrcode ENTRYPOINT ["/run.sh"] diff --git a/README.md b/README.md index ebd4431..9449249 100644 --- a/README.md +++ b/README.md @@ -12,22 +12,22 @@ Please have a look over the sibling project [server-xray](https://github.com/sam The following command will create a VLESS-TCP-TLS-XTLS client connecting to mydomain.com port 443 with given uid. Expose Socks-proxy port 1080 as a local service. ```shell -$ docker run --name proxy-xray -p 1080:1080 -d samuelhbne/proxy-xray --lttx myid@mydomain.com:443 +$ docker run --name proxy-xray --rm -it -p 1080:1080 samuelhbne/proxy-xray --lttx myid@mydomain.com:443 ... ``` The following command will create a VLESS-SplitHTTP-TLS-HTTP3 client connecting to mydomain.com port 443 with given uid and webpath. Expose Socks-proxy port 1080 as a local service. ```shell -$ docker run --name proxy-xray -p 1080:1080 -d samuelhbne/proxy-xray --lst3 myid@mydomain.com:443:/split0 +$ docker run --name proxy-xray --rm -it -p 1080:1080 samuelhbne/proxy-xray --lst3 myid@mydomain.com:443:/split0 ... ``` The following command will create a VLESS-TCP-REALITY-XTLS client connecting to mydomain.com port 443 with given uid, applying yahoo.com as fake destnation, exposing Socks-proxy port 1080, http-proxy port 8123, DNS port 53 as local services. Websites and IP located in China will not been proxied. China-accessible domains will be resolved locally hence to accelerate the local access. ```shell -$ docker run --name proxy-xray -p 1080:1080 -p 1080:1080/udp -p 8123:8123 -p 53:53/udp \ --d samuelhbne/proxy-xray --cn-direct --dns-local-cn \ +$ docker run --name proxy-xray --rm -it -p 1080:1080 -p 1080:1080/udp -p 8123:8123 -p 53:53/udp \ +samuelhbne/proxy-xray --cn-direct --dns-local-cn \ --ltrx myid@mydomain.com:443,d=yahoo.com,pub=qAaJnTE_zYWNuXuIdlpIfSt5beveuV4PyBaP76WE7jU ... ``` @@ -66,13 +66,19 @@ OrgId: TWITT ## How to get the XRay QR code for mobile connection +proxy-xray always display the QR code after the successful config file generation. + ```shell -$ docker exec -t proxy-xray /status -VPS-Server: mydomain.duckdns.org -Xray-URL: vless://myid@mydomain.duckdns.org:443?security=xtls&type=tcp&flow=xtls-rprx-direct#mydomain.duckdns.org:443 +$ docker run --name proxy-xray --rm -it -p 1080:1080 samuelhbne/proxy-xray --ltt myid@mydomain.com ``` -![QR code example](https://github.com/samuelhbne/proxy-xray/blob/master/images/qr-xray4.png) +CLI example + +Also, you can always retrive the QR code as following in case you ran the container in daemon mode hence did not get it from the console output. + +```shell +$ docker exec -t proxy-xray /qrcode +``` ## Full usage @@ -128,7 +134,7 @@ $ docker rm proxy-xray The following instruction connect to mydomain.duckdns.org port 443 in Vless+TCP+XTLS mode. Connection made via IP address to avoid DNS contamination. TLS servername provided via parameter. All destination sites and IP located in China will not been proxied. ```shell -$ docker run --name proxy-xray -p 1080:1080 -p 1080:1080/udp -d samuelhbne/proxy-xray \ +$ docker run --name proxy-xray --rm -it -p 1080:1080 -p 1080:1080/udp samuelhbne/proxy-xray \ --lttx myid@12.34.56.78:443,serverName=mydomain.duckdns.org --cn-direct ``` @@ -137,7 +143,7 @@ $ docker run --name proxy-xray -p 1080:1080 -p 1080:1080/udp -d samuelhbne/proxy The following instruction connect to Xray server port 443 in Vless+TCP+TLS+Websocket mode with given id. All apple-cn sites will be proxied. All sites located in China will not be proxied. ```shell -$ docker run --name proxy-xray -p 1080:1080 -d samuelhbne/proxy-xray \ +$ docker run --name proxy-xray --rm -it -p 1080:1080 samuelhbne/proxy-xray \ --lwt myid@mydomain.duckdns.org:443:/websocket \ --domain-proxy geosite:apple-cn --domain-direct geosite:geolocation-cn ``` @@ -147,7 +153,7 @@ $ docker run --name proxy-xray -p 1080:1080 -d samuelhbne/proxy-xray \ The following instruction connect to Xray server port 443 in Vless-gRPC-TLS mode with given password. All sites not located in China will be proxied. You need to escape '!' character in --domain-proxy parameter to be accepted by shell. ```shell -$ docker run --name proxy-xray -p 1080:1080 samuelhbne/proxy-xray \ +$ docker run --name proxy-xray --rm -it -p 1080:1080 samuelhbne/proxy-xray \ --lgt myid@mydomain.duckdns.org:443:gsvc --domain-proxy geosite:geolocation-\!cn ``` @@ -161,7 +167,7 @@ $ cd /tmp/rules $ wget -c -t3 -T30 https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat $ wget -c -t3 -T30 https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat $ wget -c -t3 -T30 https://github.com/SamadiPour/iran-hosted-domains/releases/download/202108210015/iran.dat -$ docker run --name proxy-xray -p 1080:1080 -v /tmp/rules:/opt/rules -d samuelhbne/proxy-xray \ +$ docker run --name proxy-xray --rm -it -p 1080:1080 -v /tmp/rules:/opt/rules samuelhbne/proxy-xray \ --ttt trojan_pass@mydomain.duckdns.org:8443 \ --rules-path /opt/rules --domain-direct ext:iran.dat:ir --ip-direct geoip:ir ``` @@ -171,7 +177,7 @@ $ docker run --name proxy-xray -p 1080:1080 -v /tmp/rules:/opt/rules -d samuelhb The following instruction start proxy-xray in debug mode. Output Xray config file generated and the Xray log to console for connection diagnosis. ```shell -$ docker run --rm -p 1080:1080 samuelhbne/proxy-xray \ +$ docker run --rm -it -p 1080:1080 samuelhbne/proxy-xray \ --mwt myid@mydomain.duckdns.org:443:/websocket --debug ``` diff --git a/images/cli.png b/images/cli.png new file mode 100644 index 0000000000000000000000000000000000000000..c773381cb782a5109d7853d80221ab33d93f282d GIT binary patch literal 46574 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 echo -e "Missing Xray connection option.\n"; usag # Add outbounds config Joutbound=`$PXCMD` if [ $? != 0 ]; then >&2 echo -e "${subcmd} Config failed: $PXCMD\n"; exit 2; fi -# First outbound will be the DEFAULT outbound +# First outbound will be the DEFAULT Jroot=`jq -nc --argjson Joutbound "${Joutbound}" '.outbounds += [$Joutbound]'` Jroot=`echo $Jroot|jq '.outbounds += [{"tag":"direct","protocol":"freedom"},{"tag":"blocked","protocol":"blackhole"}]'` @@ -200,4 +200,5 @@ echo -e "no-resolv\nserver=127.0.0.1#5353" >/etc/dnsmasq.d/upstream.conf jq -n "$Jroot" jq -n "$Jroot">$XCONF +/qrcode exec /usr/local/bin/xray -c $XCONF