mirror of
				https://github.com/MHSanaei/3x-ui.git
				synced 2025-10-27 10:30:08 +00:00 
			
		
		
		
	Compare commits
	
		
			5 commits
		
	
	
		
			fb79081aa1
			...
			14cdde371f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 14cdde371f | ||
|   | 99a23f25d5 | ||
|   | 653ec90451 | ||
|   | 91a84db479 | ||
|   | 0f97eca314 | 
					 10 changed files with 234 additions and 158 deletions
				
			
		
							
								
								
									
										2
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -83,7 +83,7 @@ jobs: | ||||||
|           cd x-ui/bin |           cd x-ui/bin | ||||||
|            |            | ||||||
|           # Download dependencies |           # Download dependencies | ||||||
|           Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.2.21/" |           Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.3.3/" | ||||||
|           if [ "${{ matrix.platform }}" == "amd64" ]; then |           if [ "${{ matrix.platform }}" == "amd64" ]; then | ||||||
|             wget -q ${Xray_URL}Xray-linux-64.zip |             wget -q ${Xray_URL}Xray-linux-64.zip | ||||||
|             unzip Xray-linux-64.zip |             unzip Xray-linux-64.zip | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ case $1 in | ||||||
| esac | esac | ||||||
| mkdir -p build/bin | mkdir -p build/bin | ||||||
| cd build/bin | cd build/bin | ||||||
| wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.2.21/Xray-linux-${ARCH}.zip" | wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.3.3/Xray-linux-${ARCH}.zip" | ||||||
| unzip "Xray-linux-${ARCH}.zip" | unzip "Xray-linux-${ARCH}.zip" | ||||||
| rm -f "Xray-linux-${ARCH}.zip" geoip.dat geosite.dat | rm -f "Xray-linux-${ARCH}.zip" geoip.dat geosite.dat | ||||||
| mv xray "xray-linux-${FNAME}" | mv xray "xray-linux-${FNAME}" | ||||||
|  |  | ||||||
							
								
								
									
										16
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								go.mod
									
									
									
									
									
								
							|  | @ -12,9 +12,9 @@ require ( | ||||||
| 	github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 | 	github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 | ||||||
| 	github.com/pelletier/go-toml/v2 v2.2.3 | 	github.com/pelletier/go-toml/v2 v2.2.3 | ||||||
| 	github.com/robfig/cron/v3 v3.0.1 | 	github.com/robfig/cron/v3 v3.0.1 | ||||||
| 	github.com/shirou/gopsutil/v4 v4.25.1 | 	github.com/shirou/gopsutil/v4 v4.25.2 | ||||||
| 	github.com/valyala/fasthttp v1.59.0 | 	github.com/valyala/fasthttp v1.59.0 | ||||||
| 	github.com/xtls/xray-core v1.8.25-0.20250225132654-06b4a7ce4d2c | 	github.com/xtls/xray-core v1.8.25-0.20250303153022-e15dff94b5bd | ||||||
| 	go.uber.org/atomic v1.11.0 | 	go.uber.org/atomic v1.11.0 | ||||||
| 	golang.org/x/text v0.22.0 | 	golang.org/x/text v0.22.0 | ||||||
| 	google.golang.org/grpc v1.70.0 | 	google.golang.org/grpc v1.70.0 | ||||||
|  | @ -24,7 +24,7 @@ require ( | ||||||
| 
 | 
 | ||||||
| require ( | require ( | ||||||
| 	github.com/andybalholm/brotli v1.1.1 // indirect | 	github.com/andybalholm/brotli v1.1.1 // indirect | ||||||
| 	github.com/bytedance/sonic v1.12.9 // indirect | 	github.com/bytedance/sonic v1.12.10 // indirect | ||||||
| 	github.com/bytedance/sonic/loader v0.2.3 // indirect | 	github.com/bytedance/sonic/loader v0.2.3 // indirect | ||||||
| 	github.com/cloudflare/circl v1.6.0 // indirect | 	github.com/cloudflare/circl v1.6.0 // indirect | ||||||
| 	github.com/cloudwego/base64x v0.1.5 // indirect | 	github.com/cloudwego/base64x v0.1.5 // indirect | ||||||
|  | @ -39,7 +39,7 @@ require ( | ||||||
| 	github.com/go-playground/validator/v10 v10.25.0 // indirect | 	github.com/go-playground/validator/v10 v10.25.0 // indirect | ||||||
| 	github.com/go-task/slim-sprig/v3 v3.0.0 // indirect | 	github.com/go-task/slim-sprig/v3 v3.0.0 // indirect | ||||||
| 	github.com/google/btree v1.1.3 // indirect | 	github.com/google/btree v1.1.3 // indirect | ||||||
| 	github.com/google/pprof v0.0.0-20250208200701-d0013a598941 // indirect | 	github.com/google/pprof v0.0.0-20250302191652-9094ed2288e7 // indirect | ||||||
| 	github.com/gorilla/context v1.1.2 // indirect | 	github.com/gorilla/context v1.1.2 // indirect | ||||||
| 	github.com/gorilla/securecookie v1.1.2 // indirect | 	github.com/gorilla/securecookie v1.1.2 // indirect | ||||||
| 	github.com/gorilla/sessions v1.4.0 // indirect | 	github.com/gorilla/sessions v1.4.0 // indirect | ||||||
|  | @ -52,7 +52,7 @@ require ( | ||||||
| 	github.com/klauspost/cpuid/v2 v2.2.10 // indirect | 	github.com/klauspost/cpuid/v2 v2.2.10 // indirect | ||||||
| 	github.com/kr/text v0.2.0 // indirect | 	github.com/kr/text v0.2.0 // indirect | ||||||
| 	github.com/leodido/go-urn v1.4.0 // indirect | 	github.com/leodido/go-urn v1.4.0 // indirect | ||||||
| 	github.com/lufia/plan9stats v0.0.0-20250224150550-a661cff19cfb // indirect | 	github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d // indirect | ||||||
| 	github.com/mattn/go-isatty v0.0.20 // indirect | 	github.com/mattn/go-isatty v0.0.20 // indirect | ||||||
| 	github.com/mattn/go-sqlite3 v1.14.24 // indirect | 	github.com/mattn/go-sqlite3 v1.14.24 // indirect | ||||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||||
|  | @ -65,7 +65,7 @@ require ( | ||||||
| 	github.com/refraction-networking/utls v1.6.7 // indirect | 	github.com/refraction-networking/utls v1.6.7 // indirect | ||||||
| 	github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect | 	github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect | ||||||
| 	github.com/rogpeppe/go-internal v1.14.1 // indirect | 	github.com/rogpeppe/go-internal v1.14.1 // indirect | ||||||
| 	github.com/sagernet/sing v0.6.1 // indirect | 	github.com/sagernet/sing v0.6.2 // indirect | ||||||
| 	github.com/sagernet/sing-shadowsocks v0.2.7 // indirect | 	github.com/sagernet/sing-shadowsocks v0.2.7 // indirect | ||||||
| 	github.com/savsgio/gotils v0.0.0-20240704082632-aef3928b8a38 // indirect | 	github.com/savsgio/gotils v0.0.0-20240704082632-aef3928b8a38 // indirect | ||||||
| 	github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771 // indirect | 	github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771 // indirect | ||||||
|  | @ -84,7 +84,7 @@ require ( | ||||||
| 	go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect | 	go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect | ||||||
| 	golang.org/x/arch v0.14.0 // indirect | 	golang.org/x/arch v0.14.0 // indirect | ||||||
| 	golang.org/x/crypto v0.35.0 // indirect | 	golang.org/x/crypto v0.35.0 // indirect | ||||||
| 	golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa // indirect | 	golang.org/x/exp v0.0.0-20250228200357-dead58393ab7 // indirect | ||||||
| 	golang.org/x/mod v0.23.0 // indirect | 	golang.org/x/mod v0.23.0 // indirect | ||||||
| 	golang.org/x/net v0.35.0 // indirect | 	golang.org/x/net v0.35.0 // indirect | ||||||
| 	golang.org/x/sync v0.11.0 // indirect | 	golang.org/x/sync v0.11.0 // indirect | ||||||
|  | @ -93,7 +93,7 @@ require ( | ||||||
| 	golang.org/x/tools v0.30.0 // indirect | 	golang.org/x/tools v0.30.0 // indirect | ||||||
| 	golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect | 	golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect | ||||||
| 	golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect | 	golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect | ||||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20250224174004-546df14abb99 // indirect | 	google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect | ||||||
| 	google.golang.org/protobuf v1.36.5 // indirect | 	google.golang.org/protobuf v1.36.5 // indirect | ||||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
| 	gvisor.dev/gvisor v0.0.0-20240320123526-dc6abceb7ff0 // indirect | 	gvisor.dev/gvisor v0.0.0-20240320123526-dc6abceb7ff0 // indirect | ||||||
|  |  | ||||||
							
								
								
									
										32
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								go.sum
									
									
									
									
									
								
							|  | @ -4,8 +4,8 @@ github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0 h1:Wo41lDOevRJS | ||||||
| github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0/go.mod h1:FVGavL/QEBQDcBpr3fAojoK17xX5k9bicBphrOpP7uM= | github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0/go.mod h1:FVGavL/QEBQDcBpr3fAojoK17xX5k9bicBphrOpP7uM= | ||||||
| github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= | github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= | ||||||
| github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= | github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= | ||||||
| github.com/bytedance/sonic v1.12.9 h1:Od1BvK55NnewtGaJsTDeAOSnLVO2BTSLOe0+ooKokmQ= | github.com/bytedance/sonic v1.12.10 h1:uVCQr6oS5669E9ZVW0HyksTLfNS7Q/9hV6IVS4nEMsI= | ||||||
| github.com/bytedance/sonic v1.12.9/go.mod h1:uVvFidNmlt9+wa31S1urfwwthTWteBgG0hWuoKAXTx8= | github.com/bytedance/sonic v1.12.10/go.mod h1:uVvFidNmlt9+wa31S1urfwwthTWteBgG0hWuoKAXTx8= | ||||||
| github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= | github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= | ||||||
| github.com/bytedance/sonic/loader v0.2.3 h1:yctD0Q3v2NOGfSWPLPvG2ggA2kV6TS6s4wioyEqssH0= | github.com/bytedance/sonic/loader v0.2.3 h1:yctD0Q3v2NOGfSWPLPvG2ggA2kV6TS6s4wioyEqssH0= | ||||||
| github.com/bytedance/sonic/loader v0.2.3/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= | github.com/bytedance/sonic/loader v0.2.3/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= | ||||||
|  | @ -67,8 +67,8 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX | ||||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||||
| github.com/google/pprof v0.0.0-20250208200701-d0013a598941 h1:43XjGa6toxLpeksjcxs1jIoIyr+vUfOqY2c6HB4bpoc= | github.com/google/pprof v0.0.0-20250302191652-9094ed2288e7 h1:+J3r2e8+RsmN3vKfo75g0YSY61ms37qzPglu4p0sGro= | ||||||
| github.com/google/pprof v0.0.0-20250208200701-d0013a598941/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= | github.com/google/pprof v0.0.0-20250302191652-9094ed2288e7/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= | ||||||
| github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= | github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= | ||||||
| github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
| github.com/gorilla/context v1.1.2 h1:WRkNAv2uoa03QNIc1A6u4O7DAGMUVoopZhkiXWA2V1o= | github.com/gorilla/context v1.1.2 h1:WRkNAv2uoa03QNIc1A6u4O7DAGMUVoopZhkiXWA2V1o= | ||||||
|  | @ -99,8 +99,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||||
| github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||||
| github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= | github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= | ||||||
| github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= | github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= | ||||||
| github.com/lufia/plan9stats v0.0.0-20250224150550-a661cff19cfb h1:YU0XAr3+rMpM8fP80KEesn32Qa9qkbquokvuwzWyYuA= | github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d h1:fjMbDVUGsMQiVZnSQsmouYJvMdwsGiDipOZoN66v844= | ||||||
| github.com/lufia/plan9stats v0.0.0-20250224150550-a661cff19cfb/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= | github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= | ||||||
| github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= | github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= | ||||||
| github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | ||||||
| github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= | github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= | ||||||
|  | @ -144,16 +144,16 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= | ||||||
| github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= | github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= | ||||||
| github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= | github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= | ||||||
| github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= | github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= | ||||||
| github.com/sagernet/sing v0.6.1 h1:mJ6e7Ir2wtCoGLbdnnXWBsNJu5YHtbXmv66inoE0zFA= | github.com/sagernet/sing v0.6.2 h1:TR9WeH0yDJMjSFThqgFYe/i2pdH69Gb0tDJzJLPuVec= | ||||||
| github.com/sagernet/sing v0.6.1/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= | github.com/sagernet/sing v0.6.2/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= | ||||||
| github.com/sagernet/sing-shadowsocks v0.2.7 h1:zaopR1tbHEw5Nk6FAkM05wCslV6ahVegEZaKMv9ipx8= | github.com/sagernet/sing-shadowsocks v0.2.7 h1:zaopR1tbHEw5Nk6FAkM05wCslV6ahVegEZaKMv9ipx8= | ||||||
| github.com/sagernet/sing-shadowsocks v0.2.7/go.mod h1:0rIKJZBR65Qi0zwdKezt4s57y/Tl1ofkaq6NlkzVuyE= | github.com/sagernet/sing-shadowsocks v0.2.7/go.mod h1:0rIKJZBR65Qi0zwdKezt4s57y/Tl1ofkaq6NlkzVuyE= | ||||||
| github.com/savsgio/gotils v0.0.0-20240704082632-aef3928b8a38 h1:D0vL7YNisV2yqE55+q0lFuGse6U8lxlg7fYTctlT5Gc= | github.com/savsgio/gotils v0.0.0-20240704082632-aef3928b8a38 h1:D0vL7YNisV2yqE55+q0lFuGse6U8lxlg7fYTctlT5Gc= | ||||||
| github.com/savsgio/gotils v0.0.0-20240704082632-aef3928b8a38/go.mod h1:sM7Mt7uEoCeFSCBM+qBrqvEo+/9vdmj19wzp3yzUhmg= | github.com/savsgio/gotils v0.0.0-20240704082632-aef3928b8a38/go.mod h1:sM7Mt7uEoCeFSCBM+qBrqvEo+/9vdmj19wzp3yzUhmg= | ||||||
| github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771 h1:emzAzMZ1L9iaKCTxdy3Em8Wv4ChIAGnfiz18Cda70g4= | github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771 h1:emzAzMZ1L9iaKCTxdy3Em8Wv4ChIAGnfiz18Cda70g4= | ||||||
| github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= | github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= | ||||||
| github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= | github.com/shirou/gopsutil/v4 v4.25.2 h1:NMscG3l2CqtWFS86kj3vP7soOczqrQYIEhO/pMvvQkk= | ||||||
| github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= | github.com/shirou/gopsutil/v4 v4.25.2/go.mod h1:34gBYJzyqCDT11b6bMHP0XCvWeU3J61XRT7a2EmCRTA= | ||||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||||
| github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | ||||||
| github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | ||||||
|  | @ -190,8 +190,8 @@ github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zd | ||||||
| github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= | github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= | ||||||
| github.com/xtls/reality v0.0.0-20240909153216-e26ae2305463 h1:g1Cj7d+my6k/HHxLAyxPwyX8i7FGRr6ulBDMkBzg2BM= | github.com/xtls/reality v0.0.0-20240909153216-e26ae2305463 h1:g1Cj7d+my6k/HHxLAyxPwyX8i7FGRr6ulBDMkBzg2BM= | ||||||
| github.com/xtls/reality v0.0.0-20240909153216-e26ae2305463/go.mod h1:BjIOLmkEEtAgloAiVUcYj0Mt+YU00JARZw8AEU0IwAg= | github.com/xtls/reality v0.0.0-20240909153216-e26ae2305463/go.mod h1:BjIOLmkEEtAgloAiVUcYj0Mt+YU00JARZw8AEU0IwAg= | ||||||
| github.com/xtls/xray-core v1.8.25-0.20250225132654-06b4a7ce4d2c h1:kQuEvKaDu9+xYXs6bxz/5YRLSsz5283AEFJx/GHtLRs= | github.com/xtls/xray-core v1.8.25-0.20250303153022-e15dff94b5bd h1:xzZCYhdr1pL1kZe7GysAMuVNtlzXqsQKTFbc1xvR+bI= | ||||||
| github.com/xtls/xray-core v1.8.25-0.20250225132654-06b4a7ce4d2c/go.mod h1:0n4A2nJD1yZlxuXexV5rJODKcJJo8zpbTFcESVg8fgM= | github.com/xtls/xray-core v1.8.25-0.20250303153022-e15dff94b5bd/go.mod h1:0n4A2nJD1yZlxuXexV5rJODKcJJo8zpbTFcESVg8fgM= | ||||||
| github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= | github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= | ||||||
| github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= | github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= | ||||||
| github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= | github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= | ||||||
|  | @ -216,8 +216,8 @@ golang.org/x/arch v0.14.0 h1:z9JUEZWr8x4rR0OU6c4/4t6E6jOZ8/QBS2bBYBm4tx4= | ||||||
| golang.org/x/arch v0.14.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= | golang.org/x/arch v0.14.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= | ||||||
| golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= | golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= | ||||||
| golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= | golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= | ||||||
| golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa h1:t2QcU6V556bFjYgu4L6C+6VrCPyJZ+eyRsABUPs1mz4= | golang.org/x/exp v0.0.0-20250228200357-dead58393ab7 h1:aWwlzYV971S4BXRS9AmqwDLAD85ouC6X+pocatKY58c= | ||||||
| golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk= | golang.org/x/exp v0.0.0-20250228200357-dead58393ab7/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk= | ||||||
| golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= | golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= | ||||||
| golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= | golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= | ||||||
| golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= | golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= | ||||||
|  | @ -242,8 +242,8 @@ golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeu | ||||||
| golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= | golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= | ||||||
| golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4= | golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4= | ||||||
| golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= | golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= | ||||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250224174004-546df14abb99 h1:ZSlhAUqC4r8TPzqLXQ0m3upBNZeF+Y8jQ3c4CR3Ujms= | google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= | ||||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250224174004-546df14abb99/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= | google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= | ||||||
| google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= | google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= | ||||||
| google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= | google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= | ||||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
|         <a-input-number v-model.number="inbound.stream.reality.xver" :min="0"></a-input-number> |         <a-input-number v-model.number="inbound.stream.reality.xver" :min="0"></a-input-number> | ||||||
|     </a-form-item> |     </a-form-item> | ||||||
|     <a-form-item label='uTLS'> |     <a-form-item label='uTLS'> | ||||||
|         <a-select v-model="inbound.stream.reality.settings.fingerprint" style="width: 50%" |         <a-select v-model="inbound.stream.reality.settings.fingerprint" style="width: 100%" | ||||||
|             :dropdown-class-name="themeSwitcher.currentTheme"> |             :dropdown-class-name="themeSwitcher.currentTheme"> | ||||||
|             <a-select-option v-for="key in UTLS_FINGERPRINT" :value="key">[[ key ]]</a-select-option> |             <a-select-option v-for="key in UTLS_FINGERPRINT" :value="key">[[ key ]]</a-select-option> | ||||||
|         </a-select> |         </a-select> | ||||||
|  | @ -43,11 +43,11 @@ | ||||||
|     <a-form-item label='SpiderX'> |     <a-form-item label='SpiderX'> | ||||||
|         <a-input v-model.trim="inbound.stream.reality.settings.spiderX"></a-input> |         <a-input v-model.trim="inbound.stream.reality.settings.spiderX"></a-input> | ||||||
|     </a-form-item> |     </a-form-item> | ||||||
|     <a-form-item label='{{ i18n "pages.inbounds.privatekey" }}'> |  | ||||||
|         <a-input v-model.trim="inbound.stream.reality.privateKey"></a-input> |  | ||||||
|     </a-form-item> |  | ||||||
|     <a-form-item label='{{ i18n "pages.inbounds.publicKey" }}'> |     <a-form-item label='{{ i18n "pages.inbounds.publicKey" }}'> | ||||||
|         <a-input v-model.trim="inbound.stream.reality.settings.publicKey"></a-input> |         <a-input v-model="inbound.stream.reality.settings.publicKey"></a-input> | ||||||
|  |     </a-form-item> | ||||||
|  |     <a-form-item label='{{ i18n "pages.inbounds.privatekey" }}'> | ||||||
|  |         <a-input type="password" v-model="inbound.stream.reality.privateKey"></a-input> | ||||||
|     </a-form-item> |     </a-form-item> | ||||||
|     <a-form-item label=" "> |     <a-form-item label=" "> | ||||||
|         <a-button type="primary" icon="import" @click="getNewX25519Cert">Get New Cert</a-button> |         <a-button type="primary" icon="import" @click="getNewX25519Cert">Get New Cert</a-button> | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ | ||||||
|       </a-input-group> |       </a-input-group> | ||||||
|     </a-form-item> |     </a-form-item> | ||||||
|     <a-form-item label="uTLS"> |     <a-form-item label="uTLS"> | ||||||
|       <a-select v-model="inbound.stream.tls.settings.fingerprint" style="width: 50%" |       <a-select v-model="inbound.stream.tls.settings.fingerprint" style="width: 100%" | ||||||
|         :dropdown-class-name="themeSwitcher.currentTheme"> |         :dropdown-class-name="themeSwitcher.currentTheme"> | ||||||
|         <a-select-option value=''>None</a-select-option> |         <a-select-option value=''>None</a-select-option> | ||||||
|         <a-select-option v-for="key in UTLS_FINGERPRINT" :value="key">[[ key ]]</a-select-option> |         <a-select-option v-for="key in UTLS_FINGERPRINT" :value="key">[[ key ]]</a-select-option> | ||||||
|  | @ -85,10 +85,10 @@ | ||||||
|       </template> |       </template> | ||||||
|       <template v-else> |       <template v-else> | ||||||
|         <a-form-item label='{{ i18n "pages.inbounds.publicKey" }}'> |         <a-form-item label='{{ i18n "pages.inbounds.publicKey" }}'> | ||||||
|           <a-input type="textarea" :rows="3" v-model="cert.cert"></a-input> |           <a-input v-model="cert.cert"></a-input> | ||||||
|         </a-form-item> |         </a-form-item> | ||||||
|         <a-form-item label='{{ i18n "pages.inbounds.privatekey" }}'> |         <a-form-item label='{{ i18n "pages.inbounds.privatekey" }}'> | ||||||
|           <a-input type="textarea" :rows="3" v-model="cert.key"></a-input> |           <a-input type="password" v-model="cert.key"></a-input> | ||||||
|         </a-form-item> |         </a-form-item> | ||||||
|       </template> |       </template> | ||||||
|       <a-form-item label='OCSP stapling'> |       <a-form-item label='OCSP stapling'> | ||||||
|  |  | ||||||
|  | @ -185,25 +185,89 @@ | ||||||
|                   </a-list-item> |                   </a-list-item> | ||||||
|                 </a-list> |                 </a-list> | ||||||
|               </a-tab-pane> |               </a-tab-pane> | ||||||
|               <a-tab-pane key="2" tab='{{ i18n "pages.settings.securitySettings"}}' style="padding: 20px;"> |               <a-tab-pane key="2" tab='{{ i18n "pages.settings.securitySettings"}}' style="padding-top: 20px;"> | ||||||
|                 <a-divider>{{ i18n "pages.settings.security.admin"}}</a-divider> |                 <a-collapse> | ||||||
|                 <a-form layout="horizontal" :colon="false" style="float: left; margin-bottom: 2rem;" :label-col="{ md: {span:10} }" :wrapper-col="{ md: {span:14} }"> |                   <a-collapse-panel header='{{ i18n "pages.settings.security.admin"}}'> | ||||||
|                   <a-form-item label='{{ i18n "pages.settings.oldUsername"}}'> |                     <a-list-item> | ||||||
|  |                       <a-row style="padding: 0 20px; padding-bottom: 10px;"> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <a-list-item-meta title='{{ i18n "pages.settings.oldUsername"}}'></a-list-item-meta> | ||||||
|  |                         </a-col> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <template> | ||||||
|                             <a-input autocomplete="username" v-model="user.oldUsername"></a-input> |                             <a-input autocomplete="username" v-model="user.oldUsername"></a-input> | ||||||
|                   </a-form-item> |                           </template> | ||||||
|                   <a-form-item label='{{ i18n "pages.settings.currentPassword"}}'> |                         </a-col> | ||||||
|  |                       </a-row> | ||||||
|  |                       <a-row style="padding: 10px 20px"> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <a-list-item-meta title='{{ i18n "pages.settings.currentPassword"}}'></a-list-item-meta> | ||||||
|  |                         </a-col> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <template> | ||||||
|                             <password-input autocomplete="current-password" v-model="user.oldPassword"></password-input> |                             <password-input autocomplete="current-password" v-model="user.oldPassword"></password-input> | ||||||
|                   </a-form-item> |                           </template> | ||||||
|                   <a-form-item label='{{ i18n "pages.settings.newUsername"}}'> |                         </a-col> | ||||||
|  |                       </a-row> | ||||||
|  |                       <a-row style="padding: 10px 20px"> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <a-list-item-meta title='{{ i18n "pages.settings.newUsername"}}'></a-list-item-meta> | ||||||
|  |                         </a-col> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <template> | ||||||
|                             <a-input v-model="user.newUsername"></a-input> |                             <a-input v-model="user.newUsername"></a-input> | ||||||
|                   </a-form-item> |                           </template> | ||||||
|                   <a-form-item label='{{ i18n "pages.settings.newPassword"}}'> |                         </a-col> | ||||||
|  |                       </a-row> | ||||||
|  |                       <a-row style="padding: 10px 20px"> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <a-list-item-meta title='{{ i18n "pages.settings.newPassword"}}'></a-list-item-meta> | ||||||
|  |                         </a-col> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <template> | ||||||
|                             <password-input autocomplete="new-password" v-model="user.newPassword"></password-input> |                             <password-input autocomplete="new-password" v-model="user.newPassword"></password-input> | ||||||
|                   </a-form-item> |                           </template> | ||||||
|                   <a-form-item label=" "> |                         </a-col> | ||||||
|  |                       </a-row> | ||||||
|  |                       <a-space direction="horizontal" style="padding: 0 20px; padding-top: 20px;"> | ||||||
|                         <a-button type="primary" @click="updateUser">{{ i18n "confirm" }}</a-button> |                         <a-button type="primary" @click="updateUser">{{ i18n "confirm" }}</a-button> | ||||||
|                   </a-form-item> |                       </a-space> | ||||||
|                 </a-form> |                     </a-list-item> | ||||||
|  |                   </a-collapse-panel> | ||||||
|  |                   <a-collapse-panel header='{{ i18n "pages.settings.security.secret"}}'> | ||||||
|  |                     <a-list-item> | ||||||
|  |                       <a-row style="padding: 0 20px; padding-bottom: 10px;"> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <a-list-item-meta title='{{ i18n "pages.settings.security.loginSecurity" }}' | ||||||
|  |                             description='{{ i18n "pages.settings.security.loginSecurityDesc" }}'> | ||||||
|  |                           </a-list-item-meta> | ||||||
|  |                         </a-col> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <template> | ||||||
|  |                             <a-switch @change="toggleToken(allSetting.secretEnable)" v-model="allSetting.secretEnable"></a-switch> | ||||||
|  |                             <a-icon style="margin-left: 1rem;" v-if="allSetting.secretEnable" :spin="this.changeSecret" type="sync" @click="getNewSecret"></a-icon> | ||||||
|  |                           </template> | ||||||
|  |                         </a-col> | ||||||
|  |                       </a-row> | ||||||
|  |                       <a-row style="padding: 10px 20px"> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <a-list-item-meta title='{{ i18n "pages.settings.security.secretToken" }}' | ||||||
|  |                             description='{{ i18n "pages.settings.security.secretTokenDesc" }}'> | ||||||
|  |                           </a-list-item-meta> | ||||||
|  |                         </a-col> | ||||||
|  |                         <a-col :lg="24" :xl="12"> | ||||||
|  |                           <template> | ||||||
|  |                             <a-textarea type="text" :disabled="!allSetting.secretEnable" v-model="user.loginSecret"></a-textarea> | ||||||
|  |                           </template> | ||||||
|  |                         </a-col> | ||||||
|  |                       </a-row> | ||||||
|  |                       <a-space direction="horizontal" style="padding: 0 20px; padding-top: 20px;"> | ||||||
|  |                         <a-button type="primary" :loading="this.changeSecret" @click="updateSecret">{{ i18n "confirm" }}</a-button> | ||||||
|  |                       </a-space> | ||||||
|  |                     </a-list-item> | ||||||
|  |                   </a-collapse-panel> | ||||||
|  |                 </a-collapse> | ||||||
|  |                 <!-- | ||||||
|                 <a-divider>{{ i18n "pages.settings.security.secret"}}</a-divider> |                 <a-divider>{{ i18n "pages.settings.security.secret"}}</a-divider> | ||||||
|                 <a-form style="padding: 0 20px;"> |                 <a-form style="padding: 0 20px;"> | ||||||
|                   <a-list-item> |                   <a-list-item> | ||||||
|  | @ -221,22 +285,9 @@ | ||||||
|                       </a-col> |                       </a-col> | ||||||
|                     </a-row> |                     </a-row> | ||||||
|                   </a-list-item> |                   </a-list-item> | ||||||
|                   <a-list-item> |                    | ||||||
|                     <a-row> |  | ||||||
|                       <a-col :lg="24" :xl="12"> |  | ||||||
|                         <a-list-item-meta title='{{ i18n "pages.settings.security.secretToken" }}' |  | ||||||
|                           description='{{ i18n "pages.settings.security.secretTokenDesc" }}'> |  | ||||||
|                         </a-list-item-meta> |  | ||||||
|                       </a-col> |  | ||||||
|                       <a-col :lg="24" :xl="12"> |  | ||||||
|                         <template> |  | ||||||
|                           <a-textarea type="text" :disabled="!allSetting.secretEnable" v-model="user.loginSecret"></a-textarea> |  | ||||||
|                         </template> |  | ||||||
|                       </a-col> |  | ||||||
|                     </a-row> |  | ||||||
|                   </a-list-item> |  | ||||||
|                   <a-button type="primary" :loading="this.changeSecret" @click="updateSecret">{{ i18n "confirm" }}</a-button> |                   <a-button type="primary" :loading="this.changeSecret" @click="updateSecret">{{ i18n "confirm" }}</a-button> | ||||||
|                 </a-form> |                 </a-form> --> | ||||||
|               </a-tab-pane> |               </a-tab-pane> | ||||||
|               <a-tab-pane key="3" tab='{{ i18n "pages.settings.TGBotSettings"}}'> |               <a-tab-pane key="3" tab='{{ i18n "pages.settings.TGBotSettings"}}'> | ||||||
|                 <a-list item-layout="horizontal"> |                 <a-list item-layout="horizontal"> | ||||||
|  |  | ||||||
|  | @ -661,13 +661,33 @@ | ||||||
|                 <textarea style="position:absolute; left: -800px;" id="obsSetting"></textarea> |                 <textarea style="position:absolute; left: -800px;" id="obsSetting"></textarea> | ||||||
|               </a-tab-pane> |               </a-tab-pane> | ||||||
|             <a-tab-pane key="tpl-dns" tab='DNS' style="padding-top: 20px;" force-render="true"> |             <a-tab-pane key="tpl-dns" tab='DNS' style="padding-top: 20px;" force-render="true"> | ||||||
|                 <setting-list-item type="switch" title='{{ i18n "pages.xray.dns.enable" }}' |                 <a-collapse> | ||||||
|                     desc='{{ i18n "pages.xray.dns.enableDesc" }}' v-model="enableDNS"></setting-list-item> |                     <a-collapse-panel header='{{ i18n "pages.xray.generalConfigs"}}'> | ||||||
|  |                         <a-list-item> | ||||||
|  |                             <a-row style="padding: 10px 20px; padding-top: 0;"> | ||||||
|  |                                 <a-col :lg="24" :xl="12"> | ||||||
|  |                                     <a-list-item-meta title='{{ i18n "pages.xray.dns.enable" }}' | ||||||
|  |                                         description='{{ i18n "pages.xray.dns.enableDesc" }}' /> | ||||||
|  |                                 </a-col> | ||||||
|  |                                 <a-col :lg="24" :xl="12"> | ||||||
|  |                                     <a-switch v-model="enableDNS"></a-switch> | ||||||
|  |                                 </a-col> | ||||||
|  |                             </a-row> | ||||||
|  |                         </a-list-item> | ||||||
|                         <template v-if="enableDNS">   |                         <template v-if="enableDNS">   | ||||||
|                     <setting-list-item style="padding: 10px 20px" type="text" title='{{ i18n "pages.xray.dns.tag" }}' |                             <a-list-item> | ||||||
|                         desc='{{ i18n "pages.xray.dns.tagDesc" }}' v-model="dnsTag"></setting-list-item> |                                 <a-row style="padding: 10px 20px;"> | ||||||
|                     <a-list-item style="padding: 10px 20px"> |                                     <a-col :lg="24" :xl="12"> | ||||||
|                         <a-row> |                                         <a-list-item-meta title='{{ i18n "pages.xray.dns.tag" }}' | ||||||
|  |                                             description='{{ i18n "pages.xray.dns.tagDesc" }}' /> | ||||||
|  |                                     </a-col> | ||||||
|  |                                     <a-col :lg="24" :xl="12"> | ||||||
|  |                                         <a-input type="text" v-model="dnsTag"></a-input> | ||||||
|  |                                     </a-col> | ||||||
|  |                                 </a-row> | ||||||
|  |                             </a-list-item> | ||||||
|  |                             <a-list-item> | ||||||
|  |                                 <a-row style="padding: 10px 20px;"> | ||||||
|                                     <a-col :lg="24" :xl="12"> |                                     <a-col :lg="24" :xl="12"> | ||||||
|                                         <a-list-item-meta title='{{ i18n "pages.xray.dns.strategy" }}' |                                         <a-list-item-meta title='{{ i18n "pages.xray.dns.strategy" }}' | ||||||
|                                             description='{{ i18n "pages.xray.dns.strategyDesc" }}' /> |                                             description='{{ i18n "pages.xray.dns.strategyDesc" }}' /> | ||||||
|  | @ -682,12 +702,15 @@ | ||||||
|                                     </a-col> |                                     </a-col> | ||||||
|                                 </a-row> |                                 </a-row> | ||||||
|                             </a-list-item> |                             </a-list-item> | ||||||
|                     <a-divider>DNS</a-divider> |                         </template> | ||||||
|                     <a-button type="primary" icon="plus" @click="addDNSServer()" style="margin-bottom: 10px;">{{ i18n |                     </a-collapse-panel> | ||||||
|  |                     <template v-if="enableDNS"> | ||||||
|  |                         <a-collapse-panel header='DNS'> | ||||||
|  |                             <a-button type="primary" icon="plus" @click="addDNSServer()" style="margin: 10px;">{{ i18n | ||||||
|                                 "pages.xray.dns.add" }}</a-button> |                                 "pages.xray.dns.add" }}</a-button> | ||||||
|                             <a-table :columns="dnsColumns" bordered v-if="dnsServers.length>0" :row-key="r => r.key" |                             <a-table :columns="dnsColumns" bordered v-if="dnsServers.length>0" :row-key="r => r.key" | ||||||
|                                 :data-source="dnsServers" :scroll="isMobile ? {} : { x: 200 }" :pagination="false" :indent-size="0" |                                 :data-source="dnsServers" :scroll="isMobile ? {} : { x: 200 }" :pagination="false" :indent-size="0" | ||||||
|                         :style="isMobile ? 'padding: 5px 0' : 'margin-left: 1px;'"> |                                 style="margin: 10px; margin-top: 10px;"> | ||||||
|                                 <template slot="action" slot-scope="text,dns,index"> |                                 <template slot="action" slot-scope="text,dns,index"> | ||||||
|                                     [[ index+1 ]] |                                     [[ index+1 ]] | ||||||
|                                     <a-dropdown :trigger="['click']"> |                                     <a-dropdown :trigger="['click']"> | ||||||
|  | @ -717,12 +740,13 @@ | ||||||
|                                     <span v-if="typeof dns == 'object'">[[ dns.expectIPs.join(",") ]]</span> |                                     <span v-if="typeof dns == 'object'">[[ dns.expectIPs.join(",") ]]</span> | ||||||
|                                 </template> |                                 </template> | ||||||
|                             </a-table> |                             </a-table> | ||||||
|                     <a-divider>Fake DNS</a-divider> |                         </a-collapse-panel> | ||||||
|                     <a-button type="primary" icon="plus" @click="addFakedns()" style="margin-bottom: 10px;">{{ i18n |                         <a-collapse-panel header='FakeDNS'> | ||||||
|  |                             <a-button type="primary" icon="plus" @click="addFakedns()" style="margin: 10px;">{{ i18n | ||||||
|                                 "pages.xray.fakedns.add" }}</a-button> |                                 "pages.xray.fakedns.add" }}</a-button> | ||||||
|                             <a-table :columns="fakednsColumns" bordered v-if="fakeDns && fakeDns.length>0" :row-key="r => r.key" |                             <a-table :columns="fakednsColumns" bordered v-if="fakeDns && fakeDns.length>0" :row-key="r => r.key" | ||||||
|                                 :data-source="fakeDns" :scroll="isMobile ? {} : { x: 200 }" :pagination="false" :indent-size="0" |                                 :data-source="fakeDns" :scroll="isMobile ? {} : { x: 200 }" :pagination="false" :indent-size="0" | ||||||
|                         :style="isMobile ? 'padding: 5px 0' : 'margin-left: 1px;'"> |                                 style="margin: 10px; margin-top: 10px;"> | ||||||
|                                 <template slot="action" slot-scope="text,fakedns,index"> |                                 <template slot="action" slot-scope="text,fakedns,index"> | ||||||
|                                     [[ index+1 ]] |                                     [[ index+1 ]] | ||||||
|                                     <a-dropdown :trigger="['click']"> |                                     <a-dropdown :trigger="['click']"> | ||||||
|  | @ -742,7 +766,9 @@ | ||||||
|                                     </a-dropdown> |                                     </a-dropdown> | ||||||
|                                 </template> |                                 </template> | ||||||
|                             </a-table> |                             </a-table> | ||||||
|  |                         </a-collapse-panel> | ||||||
|                     </template> |                     </template> | ||||||
|  |                 </a-collapse> | ||||||
|             </a-tab-pane> |             </a-tab-pane> | ||||||
|               <a-tab-pane key="tpl-advanced" tab='{{ i18n "pages.xray.advancedTemplate"}}' style="padding-top: 20px;" force-render="true"> |               <a-tab-pane key="tpl-advanced" tab='{{ i18n "pages.xray.advancedTemplate"}}' style="padding-top: 20px;" force-render="true"> | ||||||
|                 <a-list-item-meta title='{{ i18n "pages.xray.Template"}}' description='{{ i18n "pages.xray.TemplateDesc"}}'></a-list-item-meta> |                 <a-list-item-meta title='{{ i18n "pages.xray.Template"}}' description='{{ i18n "pages.xray.TemplateDesc"}}'></a-list-item-meta> | ||||||
|  |  | ||||||
|  | @ -285,7 +285,7 @@ func (s *ServerService) GetXrayVersions() ([]string, error) { | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if major > 25 || (major == 25 && minor > 2) || (major == 25 && minor == 2 && patch >= 18) { | 		if major > 25 || (major == 25 && minor > 3) || (major == 25 && minor == 3 && patch >= 3) { | ||||||
| 			versions = append(versions, release.TagName) | 			versions = append(versions, release.TagName) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								x-ui.sh
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								x-ui.sh
									
									
									
									
									
								
							|  | @ -878,7 +878,6 @@ delete_ports() { | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| update_geo() { | update_geo() { | ||||||
|     echo -e "${green}\t1.${plain} Loyalsoldier (geoip.dat, geosite.dat)" |     echo -e "${green}\t1.${plain} Loyalsoldier (geoip.dat, geosite.dat)" | ||||||
|     echo -e "${green}\t2.${plain} chocolate4u (geoip_IR.dat, geosite_IR.dat)" |     echo -e "${green}\t2.${plain} chocolate4u (geoip_IR.dat, geosite_IR.dat)" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue