#!/bin/bash ################################# # main domain # ################################# export main_domain="your.domain.com" # Change this to the correct value export main_domain_crt="\/path\/to\/main\/domain\/fullchain.pem" # Change this to the correct value export main_domain_key="\/path\/to\/main\/domain\/privkey.pem" # Change this to the correct value ################################# # behind cdn domain # ################################# export cdn_domain="" # Change this to the correct value export cdn_domain_crt="\/path\/to\/cdn\/domain\/fullchain.pem" # Change this to the correct value export cdn_domain_key="\/path\/to\/cdn\/domain\/privkey.pem" # Change this to the correct value ################################# # uuid/pass # ################################# export myid=`xray uuid` # (optional) Let xray pick a random uuid or change it export mypass=`date | md5sum | cut -c -15` # (optional) Set a password or let script pick one at random ####################################################################################### ####################################################################################### ###### Do not change anything below this line unless you know what you're doing. ###### ####################################################################################### ####################################################################################### ################################# # fake data # ################################# export fake_domain="example.com" export fake_cdn_domain="behindcdn.com" export fakepass="desdemona99" export fakeid="90e4903e-66a4-45f7-abda-fd5d5ed7f797" export fake_domain_crt_path="\/etc\/ssl\/example.com\/domain.pem" export fake_domain_key_path="\/etc\/ssl\/example.com\/domain-key.pem" export fake_cdn_domain_crt_path="\/etc\/ssl\/behindcdn.com\/domain.pem" export fake_cdn_domain_key_path="\/etc\/ssl\/behindcdn.com\/domain-key.pem" Help() { echo "*************************************************************************" echo "*************************************************************************" echo "Please read the contents of this file and change all the required fields." echo "*************************************************************************" echo "*************************************************************************" echo echo echo "Commands" echo echo "m Make and store the configs in result.txt." echo "r Revert all the changes." echo "q Print the qr codes of configs in terminal. Run this after running with -m." echo "b Print one base64 link for all configs in terminal. Run this after running with -m." echo echo echo "Usage: " echo echo " bash setup.sh <-command> " echo } Revert() { git restore client.configs/* server.json nginx.conf } Make() { ################################# # main domain # ################################# sed -i "s/$fake_domain_crt_path/$main_domain_crt/g" server.json client.configs/* nginx.conf sed -i "s/$fake_domain_key_path/$main_domain_key/g" server.json client.configs/* nginx.conf sed -i "s/$fake_domain/$main_domain/g" server.json client.configs/* nginx.conf ################################# # behind cdn domain # ################################# if [ "$cdn_domain" == "" ]; then echo "No domain behind cdn set. Removing related fields." sed -i "146 s/.$//" server.json sed -i "147,152d" server.json fi sed -i "s/$fake_cdn_domain_crt_path/$cdn_domain_crt/g" server.json client.configs/* nginx.conf sed -i "s/$fake_cdn_domain_key_path/$cdn_domain_key/g" server.json client.configs/* nginx.conf sed -i "s/$fake_cdn_domain/$cdn_domain/g" server.json client.configs/* nginx.conf ################################# # uuid/pass # ################################# sed -i "s/$fakeid/$myid/g" server.json client.configs/* nginx.conf sed -i "s/$fakepass/$mypass/g" server.json client.configs/* nginx.conf ################################# # configs # ################################# rm result.txt touch result.txt #grep "| Trojan-TCP |" README.md | cut -f2 -d"\`" | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakepass/$mypass/g" >> result.txt grep "| Trojan-WS |" README.md | cut -f2 -d"\`" | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakepass/$mypass/g" >> result.txt grep "| Trojan-gRPC |" README.md | cut -f2 -d"\`" | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakepass/$mypass/g" >> result.txt #grep "| Trojan-H2 |" README.md | cut -f2 -d"\`" | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakepass/$mypass/g" >> result.txt #grep "| Vless-TCP |" README.md | cut -f2 -d"\`" | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakeid/$myid/g" >> result.txt grep "| Vless-WS |" README.md | cut -f2 -d"\`" | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakeid/$myid/g" >> result.txt grep "| Vless-gRPC |" README.md | cut -f2 -d"\`" | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakeid/$myid/g" >> result.txt #grep "| Vless-H2 |" README.md | cut -f2 -d"\`" | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakeid/$myid/g" >> result.txt #grep "| VMESS-TCP |" README.md | cut -f2 -d"\`" | cut -c 9- | base64 -d | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakeid/$myid/g" | base64 -w 0 | sed "s/^/vmess:\/\//" >> result.txt grep "| VMESS-WS |" README.md | cut -f2 -d"\`" | cut -c 9- | base64 -d | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakeid/$myid/g" | base64 -w 0 | sed "s/^/\nvmess:\/\//" >> result.txt grep "| VMESS-gRPC |" README.md | cut -f2 -d"\`" | cut -c 9- | base64 -d | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakeid/$myid/g" | base64 -w 0 | sed "s/^/\nvmess:\/\//" >> result.txt #grep "| VMESS-H2 |" README.md | cut -f2 -d"\`" | cut -c 9- | base64 -d | sed "s/$fake_domain/$main_domain/g" | sed "s/$fakeid/$myid/g" | base64 -w 0 | sed "s/^/\nvmess:\/\//" >> result.txt echo >> result.txt } Print64() { cat result.txt | base64 -w 0 echo } Printqr() { while read line; do export t=`echo $line | cut -c -2` if [ "$t" == "vm" ]; then echo $line | cut -c 9- | base64 -d | grep "\"ps\":" | sed -n -e 's/"ps": "//p' | sed -n -e 's/",//p' | sed -n -e 's/ *//p' curl qrcode.show -d $line else echo $line | sed -n -e 's/^.*#//p' curl qrcode.show -d $line fi done < result } while getopts "mrqb" option; do case $option in r) Revert exit;; m) Make exit;; b) Print64 exit;; q) Printqr exit;; \?) Help exit;; esac done Help