mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-10-29 11:22:51 +00:00
Compare commits
14 commits
11dc06863e
...
ae82373457
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae82373457 | ||
|
|
eb1b96643d | ||
|
|
d65233cc2c | ||
|
|
de5314c01f | ||
|
|
1088d1faf3 | ||
|
|
267024c43f | ||
|
|
0d595f56e4 | ||
|
|
a4c4f9efb3 | ||
|
|
73a5722cca | ||
|
|
30264043f8 | ||
|
|
c6062eb15c | ||
|
|
f1b7944828 | ||
|
|
7a57b31ff3 | ||
|
|
6e1b949081 |
26 changed files with 97 additions and 171 deletions
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
|
@ -97,7 +97,7 @@ jobs:
|
|||
cd x-ui/bin
|
||||
|
||||
# Download dependencies
|
||||
Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.7.26/"
|
||||
Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.8.3/"
|
||||
if [ "${{ matrix.platform }}" == "amd64" ]; then
|
||||
wget -q ${Xray_URL}Xray-linux-64.zip
|
||||
unzip Xray-linux-64.zip
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ case $1 in
|
|||
esac
|
||||
mkdir -p build/bin
|
||||
cd build/bin
|
||||
wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.7.26/Xray-linux-${ARCH}.zip"
|
||||
wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.8.3/Xray-linux-${ARCH}.zip"
|
||||
unzip "Xray-linux-${ARCH}.zip"
|
||||
rm -f "Xray-linux-${ARCH}.zip" geoip.dat geosite.dat
|
||||
mv xray "xray-linux-${FNAME}"
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
2.6.2
|
||||
2.6.3
|
||||
23
go.mod
23
go.mod
|
|
@ -14,23 +14,22 @@ require (
|
|||
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7
|
||||
github.com/pelletier/go-toml/v2 v2.2.4
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/shirou/gopsutil/v4 v4.25.6
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/valyala/fasthttp v1.63.0
|
||||
github.com/shirou/gopsutil/v4 v4.25.7
|
||||
github.com/valyala/fasthttp v1.64.0
|
||||
github.com/xlzd/gotp v0.1.0
|
||||
github.com/xtls/xray-core v1.250726.0
|
||||
github.com/xtls/xray-core v1.250803.0
|
||||
go.uber.org/atomic v1.11.0
|
||||
golang.org/x/crypto v0.40.0
|
||||
golang.org/x/text v0.27.0
|
||||
google.golang.org/grpc v1.74.2
|
||||
gorm.io/driver/sqlite v1.6.0
|
||||
gorm.io/gorm v1.30.0
|
||||
gorm.io/gorm v1.30.1
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/andybalholm/brotli v1.2.0 // indirect
|
||||
github.com/bytedance/sonic v1.13.3 // indirect
|
||||
github.com/bytedance/sonic/loader v0.2.4 // indirect
|
||||
github.com/bytedance/sonic v1.14.0 // indirect
|
||||
github.com/bytedance/sonic/loader v0.3.0 // indirect
|
||||
github.com/cloudflare/circl v1.6.1 // indirect
|
||||
github.com/cloudwego/base64x v0.1.5 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
|
|
@ -54,13 +53,13 @@ require (
|
|||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/juju/ratelimit v1.0.2 // indirect
|
||||
github.com/klauspost/compress v1.18.0 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.11 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
|
||||
github.com/kr/text v0.2.0 // indirect
|
||||
github.com/leodido/go-urn v1.4.0 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-sqlite3 v1.14.28 // indirect
|
||||
github.com/miekg/dns v1.1.67 // indirect
|
||||
github.com/mattn/go-sqlite3 v1.14.30 // indirect
|
||||
github.com/miekg/dns v1.1.68 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/pires/go-proxyproto v0.8.1 // indirect
|
||||
|
|
@ -84,7 +83,7 @@ require (
|
|||
github.com/valyala/fastjson v1.6.4 // indirect
|
||||
github.com/vishvananda/netlink v1.3.1 // indirect
|
||||
github.com/vishvananda/netns v0.0.5 // indirect
|
||||
github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7 // indirect
|
||||
github.com/xtls/reality v0.0.0-20250727231020-de3bb4d08f5a // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||
go.uber.org/mock v0.5.2 // indirect
|
||||
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
|
||||
|
|
@ -97,7 +96,7 @@ require (
|
|||
golang.org/x/tools v0.35.0 // indirect
|
||||
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
|
||||
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect
|
||||
google.golang.org/protobuf v1.36.6 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
gvisor.dev/gvisor v0.0.0-20250428193742-2d800c3129d5 // indirect
|
||||
|
|
|
|||
44
go.sum
44
go.sum
|
|
@ -2,11 +2,11 @@ github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg
|
|||
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
|
||||
github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
|
||||
github.com/bytedance/sonic v1.13.3 h1:MS8gmaH16Gtirygw7jV91pDCN33NyMrPbN7qiYhEsF0=
|
||||
github.com/bytedance/sonic v1.13.3/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4=
|
||||
github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ=
|
||||
github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA=
|
||||
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
|
||||
github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY=
|
||||
github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI=
|
||||
github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA=
|
||||
github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI=
|
||||
github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=
|
||||
github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
|
||||
github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4=
|
||||
|
|
@ -88,8 +88,8 @@ github.com/juju/ratelimit v1.0.2/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSg
|
|||
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
|
||||
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
|
||||
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU=
|
||||
github.com/klauspost/cpuid/v2 v2.2.11/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
|
||||
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
|
||||
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
|
||||
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
|
||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||
|
|
@ -101,10 +101,10 @@ github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 h1:PpXWgLPs+Fqr32
|
|||
github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35/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/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A=
|
||||
github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
||||
github.com/miekg/dns v1.1.67 h1:kg0EHj0G4bfT5/oOys6HhZw4vmMlnoZ+gDu8tJ/AlI0=
|
||||
github.com/miekg/dns v1.1.67/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps=
|
||||
github.com/mattn/go-sqlite3 v1.14.30 h1:bVreufq3EAIG1Quvws73du3/QgdeZ3myglJlrzSYYCY=
|
||||
github.com/mattn/go-sqlite3 v1.14.30/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
||||
github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA=
|
||||
github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
|
|
@ -146,8 +146,8 @@ github.com/savsgio/gotils v0.0.0-20250408102913-196191ec6287 h1:qIQ0tWF9vxGtkJa2
|
|||
github.com/savsgio/gotils v0.0.0-20250408102913-196191ec6287/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/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg=
|
||||
github.com/shirou/gopsutil/v4 v4.25.6 h1:kLysI2JsKorfaFPcYmcJqbzROzsBWEOAtw6A7dIfqXs=
|
||||
github.com/shirou/gopsutil/v4 v4.25.6/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c=
|
||||
github.com/shirou/gopsutil/v4 v4.25.7 h1:bNb2JuqKuAu3tRlPv5piSmBZyMfecwQ+t/ILq+1JqVM=
|
||||
github.com/shirou/gopsutil/v4 v4.25.7/go.mod h1:XV/egmwJtd3ZQjBpJVY5kndsiOO4IRqy9TQnmm6VP7U=
|
||||
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.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
|
|
@ -171,8 +171,8 @@ github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e h1:5QefA066A1tF
|
|||
github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e/go.mod h1:5t19P9LBIrNamL6AcMQOncg/r10y3Pc01AbHeMhwlpU=
|
||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||
github.com/valyala/fasthttp v1.63.0 h1:DisIL8OjB7ul2d7cBaMRcKTQDYnrGy56R4FCiuDP0Ns=
|
||||
github.com/valyala/fasthttp v1.63.0/go.mod h1:REc4IeW+cAEyLrRPa5A81MIjvz0QE1laoTX2EaPHKJM=
|
||||
github.com/valyala/fasthttp v1.64.0 h1:QBygLLQmiAyiXuRhthf0tuRkqAFcrC42dckN2S+N3og=
|
||||
github.com/valyala/fasthttp v1.64.0/go.mod h1:dGmFxwkWXSK0NbOSJuF7AMVzU+lkHz0wQVvVITv2UQA=
|
||||
github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ=
|
||||
github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
|
||||
github.com/vishvananda/netlink v1.3.1 h1:3AEMt62VKqz90r0tmNhog0r/PpWKmrEShJU0wJW6bV0=
|
||||
|
|
@ -181,10 +181,10 @@ github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zd
|
|||
github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
|
||||
github.com/xlzd/gotp v0.1.0 h1:37blvlKCh38s+fkem+fFh7sMnceltoIEBYTVXyoa5Po=
|
||||
github.com/xlzd/gotp v0.1.0/go.mod h1:ndLJ3JKzi3xLmUProq4LLxCuECL93dG9WASNLpHz8qg=
|
||||
github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7 h1:Ript0vN+nSO33+Vj4n0mgNY5M+oOxFQJdrJ1VnwTBO0=
|
||||
github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7/go.mod h1:XxvnCCgBee4WWE0bc4E+a7wbk8gkJ/rS0vNVNtC5qp0=
|
||||
github.com/xtls/xray-core v1.250726.0 h1:uTUHUt/CQ1JQLip1pLkiwoS0pMvl6oCHJgur4M4orWQ=
|
||||
github.com/xtls/xray-core v1.250726.0/go.mod h1:z2vn2o30flYEgpSz1iEhdZP1I46UZ3+gXINZyohH3yE=
|
||||
github.com/xtls/reality v0.0.0-20250727231020-de3bb4d08f5a h1:Fs8Pc0JAc/LDOf9Q4DzKrk+Ujf4ILlyvfvDVZcmOZ2o=
|
||||
github.com/xtls/reality v0.0.0-20250727231020-de3bb4d08f5a/go.mod h1:XxvnCCgBee4WWE0bc4E+a7wbk8gkJ/rS0vNVNtC5qp0=
|
||||
github.com/xtls/xray-core v1.250803.0 h1:sYdRC243UsujnePINH4IfM4MfHE4lj2p4wZFAfeE2GI=
|
||||
github.com/xtls/xray-core v1.250803.0/go.mod h1:z2vn2o30flYEgpSz1iEhdZP1I46UZ3+gXINZyohH3yE=
|
||||
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
||||
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
|
||||
|
|
@ -235,8 +235,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/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4=
|
||||
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 h1:qJW29YvkiJmXOYMu5Tf8lyrTp3dOS+K4z6IixtLaCf8=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
|
||||
google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4=
|
||||
google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM=
|
||||
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
||||
|
|
@ -252,8 +252,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ=
|
||||
gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8=
|
||||
gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs=
|
||||
gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
|
||||
gorm.io/gorm v1.30.1 h1:lSHg33jJTBxs2mgJRfRZeLDG+WZaHYCk3Wtfl6Ngzo4=
|
||||
gorm.io/gorm v1.30.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
|
||||
gvisor.dev/gvisor v0.0.0-20250428193742-2d800c3129d5 h1:sfK5nHuG7lRFZ2FdTT3RimOqWBg8IrVm+/Vko1FVOsk=
|
||||
gvisor.dev/gvisor v0.0.0-20250428193742-2d800c3129d5/go.mod h1:3r5CMtNQMKIvBlrmM9xWUNamjKBYPOWyXOjmg5Kts3g=
|
||||
lukechampine.com/blake3 v1.4.1 h1:I3Smz7gso8w4/TunLKec6K2fn+kyKtDxr/xcQEN84Wg=
|
||||
|
|
|
|||
|
|
@ -454,6 +454,11 @@ func (s *SubService) genVlessLink(inbound *model.Inbound, email string, server *
|
|||
params["fp"] = fp
|
||||
}
|
||||
}
|
||||
if pqvValue, ok := searchKey(realitySettings, "mldsa65Verify"); ok {
|
||||
if pqv, ok := pqvValue.(string); ok && len(pqv) > 0 {
|
||||
params["pqv"] = pqv
|
||||
}
|
||||
}
|
||||
params["spx"] = "/" + random.Seq(15)
|
||||
}
|
||||
|
||||
|
|
@ -644,6 +649,11 @@ func (s *SubService) genTrojanLink(inbound *model.Inbound, email string, server
|
|||
params["fp"] = fp
|
||||
}
|
||||
}
|
||||
if pqvValue, ok := searchKey(realitySettings, "mldsa65Verify"); ok {
|
||||
if pqv, ok := pqvValue.(string); ok && len(pqv) > 0 {
|
||||
params["pqv"] = pqv
|
||||
}
|
||||
}
|
||||
params["spx"] = "/" + random.Seq(15)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -559,7 +559,7 @@ class TlsStreamSettings extends XrayCommonClass {
|
|||
disableSystemRoot = false,
|
||||
enableSessionResumption = false,
|
||||
certificates = [new TlsStreamSettings.Cert()],
|
||||
alpn = [ALPN_OPTION.H3, ALPN_OPTION.H2, ALPN_OPTION.HTTP1],
|
||||
alpn = [ALPN_OPTION.H2, ALPN_OPTION.HTTP1],
|
||||
settings = new TlsStreamSettings.Settings()
|
||||
) {
|
||||
super();
|
||||
|
|
@ -725,11 +725,11 @@ class RealityStreamSettings extends XrayCommonClass {
|
|||
constructor(
|
||||
show = false,
|
||||
xver = 0,
|
||||
dest = 'yahoo.com:443',
|
||||
serverNames = 'yahoo.com,www.yahoo.com',
|
||||
dest = 'google.com:443',
|
||||
serverNames = 'google.com,www.google.com',
|
||||
privateKey = '',
|
||||
minClient = '',
|
||||
maxClient = '',
|
||||
minClientVer = '',
|
||||
maxClientVer = '',
|
||||
maxTimediff = 0,
|
||||
shortIds = RandomUtil.randomShortIds(),
|
||||
mldsa65Seed = '',
|
||||
|
|
@ -741,8 +741,8 @@ class RealityStreamSettings extends XrayCommonClass {
|
|||
this.dest = dest;
|
||||
this.serverNames = Array.isArray(serverNames) ? serverNames.join(",") : serverNames;
|
||||
this.privateKey = privateKey;
|
||||
this.minClient = minClient;
|
||||
this.maxClient = maxClient;
|
||||
this.minClientVer = minClientVer;
|
||||
this.maxClientVer = maxClientVer;
|
||||
this.maxTimediff = maxTimediff;
|
||||
this.shortIds = Array.isArray(shortIds) ? shortIds.join(",") : shortIds;
|
||||
this.mldsa65Seed = mldsa65Seed;
|
||||
|
|
@ -766,8 +766,8 @@ class RealityStreamSettings extends XrayCommonClass {
|
|||
json.dest,
|
||||
json.serverNames,
|
||||
json.privateKey,
|
||||
json.minClient,
|
||||
json.maxClient,
|
||||
json.minClientVer,
|
||||
json.maxClientVer,
|
||||
json.maxTimediff,
|
||||
json.shortIds,
|
||||
json.mldsa65Seed,
|
||||
|
|
@ -782,8 +782,8 @@ class RealityStreamSettings extends XrayCommonClass {
|
|||
dest: this.dest,
|
||||
serverNames: this.serverNames.split(","),
|
||||
privateKey: this.privateKey,
|
||||
minClient: this.minClient,
|
||||
maxClient: this.maxClient,
|
||||
minClientVer: this.minClientVer,
|
||||
maxClientVer: this.maxClientVer,
|
||||
maxTimediff: this.maxTimediff,
|
||||
shortIds: this.shortIds.split(","),
|
||||
mldsa65Seed: this.mldsa65Seed,
|
||||
|
|
@ -1394,6 +1394,9 @@ class Inbound extends XrayCommonClass {
|
|||
if (!ObjectUtil.isEmpty(this.stream.reality.settings.spiderX)) {
|
||||
params.set("spx", this.stream.reality.settings.spiderX);
|
||||
}
|
||||
if (!ObjectUtil.isEmpty(this.stream.reality.settings.mldsa65Verify)) {
|
||||
params.set("pqv", this.stream.reality.settings.mldsa65Verify);
|
||||
}
|
||||
if (type == 'tcp' && !ObjectUtil.isEmpty(flow)) {
|
||||
params.set("flow", flow);
|
||||
}
|
||||
|
|
@ -1568,6 +1571,9 @@ class Inbound extends XrayCommonClass {
|
|||
if (!ObjectUtil.isEmpty(this.stream.reality.settings.spiderX)) {
|
||||
params.set("spx", this.stream.reality.settings.spiderX);
|
||||
}
|
||||
if (!ObjectUtil.isEmpty(this.stream.reality.settings.mldsa65Verify)) {
|
||||
params.set("pqv", this.stream.reality.settings.mldsa65Verify);
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -388,7 +388,8 @@ class RealityStreamSettings extends CommonClass {
|
|||
fingerprint = '',
|
||||
serverName = '',
|
||||
shortId = '',
|
||||
spiderX = '/'
|
||||
spiderX = '',
|
||||
mldsa65Verify = ''
|
||||
) {
|
||||
super();
|
||||
this.publicKey = publicKey;
|
||||
|
|
@ -396,6 +397,7 @@ class RealityStreamSettings extends CommonClass {
|
|||
this.serverName = serverName;
|
||||
this.shortId = shortId
|
||||
this.spiderX = spiderX;
|
||||
this.mldsa65Verify = mldsa65Verify;
|
||||
}
|
||||
static fromJson(json = {}) {
|
||||
return new RealityStreamSettings(
|
||||
|
|
@ -404,6 +406,7 @@ class RealityStreamSettings extends CommonClass {
|
|||
json.serverName,
|
||||
json.shortId,
|
||||
json.spiderX,
|
||||
json.mldsa65Verify
|
||||
);
|
||||
}
|
||||
toJson() {
|
||||
|
|
@ -413,6 +416,7 @@ class RealityStreamSettings extends CommonClass {
|
|||
serverName: this.serverName,
|
||||
shortId: this.shortId,
|
||||
spiderX: this.spiderX,
|
||||
mldsa65Verify: this.mldsa65Verify
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
@ -787,7 +791,8 @@ class Outbound extends CommonClass {
|
|||
let sni = url.searchParams.get('sni') ?? '';
|
||||
let sid = url.searchParams.get('sid') ?? '';
|
||||
let spx = url.searchParams.get('spx') ?? '';
|
||||
stream.reality = new RealityStreamSettings(pbk, fp, sni, sid, spx);
|
||||
let pqv = url.searchParams.get('pqv') ?? '';
|
||||
stream.reality = new RealityStreamSettings(pbk, fp, sni, sid, spx, pqv);
|
||||
}
|
||||
|
||||
const regex = /([^@]+):\/\/([^@]+)@(.+):(\d+)(.*)$/;
|
||||
|
|
|
|||
|
|
@ -444,13 +444,16 @@
|
|||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="Short ID">
|
||||
<a-input v-model.trim="outbound.stream.reality.shortId" :style="{ width: '250px' }"></a-input>
|
||||
<a-input v-model.trim="outbound.stream.reality.shortId"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="SpiderX">
|
||||
<a-input v-model.trim="outbound.stream.reality.spiderX" :style="{ width: '250px' }"></a-input>
|
||||
<a-input v-model.trim="outbound.stream.reality.spiderX"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="Public Key">
|
||||
<a-input v-model.trim="outbound.stream.reality.publicKey"></a-input>
|
||||
<a-textarea v-model.trim="outbound.stream.reality.publicKey"></a-textarea>
|
||||
</a-form-item>
|
||||
<a-form-item label="mldsa65 Verify">
|
||||
<a-textarea v-model.trim="outbound.stream.reality.mldsa65Verify"></a-textarea>
|
||||
</a-form-item>
|
||||
</template>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -21,14 +21,12 @@
|
|||
<a-form-item label='Max Time Diff (ms)'>
|
||||
<a-input-number v-model.number="inbound.stream.reality.maxTimediff" :min="0"></a-input-number>
|
||||
</a-form-item>
|
||||
<!-- we also have this but i think it's not necessary
|
||||
<a-form-item label='Min Client'>
|
||||
<a-input v-model.trim="inbound.stream.reality.minClient"></a-input>
|
||||
<a-form-item label='Min Client Ver'>
|
||||
<a-input v-model.trim="inbound.stream.reality.minClientVer"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label='Max Client'>
|
||||
<a-input v-model.trim="inbound.stream.reality.maxClient"></a-input>
|
||||
<a-form-item label='Max Client Ver'>
|
||||
<a-input v-model.trim="inbound.stream.reality.maxClientVer"></a-input>
|
||||
</a-form-item>
|
||||
-->
|
||||
<a-form-item>
|
||||
<template slot="label">
|
||||
<a-tooltip>
|
||||
|
|
@ -38,22 +36,22 @@
|
|||
type="sync"></a-icon>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<a-input v-model.trim="inbound.stream.reality.shortIds"></a-input>
|
||||
<a-textarea v-model.trim="inbound.stream.reality.shortIds"></a-textarea>
|
||||
</a-form-item>
|
||||
<a-form-item label='SpiderX'>
|
||||
<a-input v-model.trim="inbound.stream.reality.settings.spiderX"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label='{{ i18n "pages.inbounds.publicKey" }}'>
|
||||
<a-input v-model="inbound.stream.reality.settings.publicKey"></a-input>
|
||||
<a-textarea v-model="inbound.stream.reality.settings.publicKey"></a-textarea>
|
||||
</a-form-item>
|
||||
<a-form-item label='{{ i18n "pages.inbounds.privatekey" }}'>
|
||||
<a-input type="password" v-model="inbound.stream.reality.privateKey"></a-input>
|
||||
<a-textarea v-model="inbound.stream.reality.privateKey"></a-textarea>
|
||||
</a-form-item>
|
||||
<a-form-item label=" ">
|
||||
<a-button type="primary" icon="import" @click="getNewX25519Cert">Get New Cert</a-button>
|
||||
</a-form-item>
|
||||
<a-form-item label="mldsa65 Seed">
|
||||
<a-input v-model="inbound.stream.reality.mldsa65Seed"></a-input>
|
||||
<a-textarea v-model="inbound.stream.reality.mldsa65Seed"></a-textarea>
|
||||
</a-form-item>
|
||||
<a-form-item label="mldsa65 Verify">
|
||||
<a-textarea v-model="inbound.stream.reality.settings.mldsa65Verify"></a-textarea>
|
||||
|
|
|
|||
|
|
@ -85,10 +85,10 @@
|
|||
</template>
|
||||
<template v-else>
|
||||
<a-form-item label='{{ i18n "pages.inbounds.publicKey" }}'>
|
||||
<a-input v-model="cert.cert"></a-input>
|
||||
<a-textarea v-model="cert.cert"></a-textarea>
|
||||
</a-form-item>
|
||||
<a-form-item label='{{ i18n "pages.inbounds.privatekey" }}'>
|
||||
<a-input type="password" v-model="cert.key"></a-input>
|
||||
<a-textarea v-model="cert.key"></a-textarea>
|
||||
</a-form-item>
|
||||
</template>
|
||||
<a-form-item label='OCSP stapling'>
|
||||
|
|
|
|||
|
|
@ -329,7 +329,7 @@ func (s *ServerService) GetXrayVersions() ([]string, error) {
|
|||
continue
|
||||
}
|
||||
|
||||
if major > 25 || (major == 25 && minor > 6) || (major == 25 && minor == 6 && patch >= 8) {
|
||||
if major > 25 || (major == 25 && minor > 7) || (major == 25 && minor == 7 && patch >= 26) {
|
||||
versions = append(versions, release.TagName)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -173,8 +173,6 @@
|
|||
"deleteClient" = "حذف العميل"
|
||||
"deleteClientContent" = "متأكد إنك عايز تحذف العميل؟"
|
||||
"resetTrafficContent" = "متأكد إنك عايز تعيد ضبط الترافيك؟"
|
||||
"inboundUpdateSuccess" = "تم تحديث الوارد بنجاح."
|
||||
"inboundCreateSuccess" = "تم إنشاء الوارد بنجاح."
|
||||
"copyLink" = "انسخ الرابط"
|
||||
"address" = "العنوان"
|
||||
"network" = "الشبكة"
|
||||
|
|
@ -645,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 اتحدّث في: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ أيوه"
|
||||
"no" = "❌ لأ"
|
||||
|
||||
"received_id" = "🔑📥 الـ ID اتحدث."
|
||||
"received_password" = "🔑📥 الباسورد اتحدث."
|
||||
"received_email" = "📧📥 الإيميل اتحدث."
|
||||
|
|
@ -665,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 البريد الإلكتروني: {{ .ClientEmail }}\n🏁 النتيجة: ❌ فشل \n\n🛠️ الخطأ: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 عملية إعادة ضبط الترافيك خلصت لكل العملاء."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ اقفل الكيبورد"
|
||||
"cancel" = "❌ إلغاء"
|
||||
|
|
@ -699,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 حد الترافيك"
|
||||
"getBanLogs" = "احصل على سجلات الحظر"
|
||||
"allClients" = "كل العملاء"
|
||||
|
||||
"addClient" = "إضافة عميل"
|
||||
"submitDisable" = "إرسال كمعطّل ☑️"
|
||||
"submitEnable" = "إرسال كمفعّل ✅"
|
||||
|
|
@ -711,7 +706,6 @@
|
|||
"ResetAllTraffics" = "إعادة ضبط جميع الترافيك"
|
||||
"SortedTrafficUsageReport" = "تقرير استخدام الترافيك المرتب"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ العملية نجحت!"
|
||||
"errorOperation" = "❗ حصل خطأ في العملية."
|
||||
|
|
|
|||
|
|
@ -643,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 Refreshed On: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ Yes"
|
||||
"no" = "❌ No"
|
||||
|
||||
"received_id" = "🔑📥 ID updated."
|
||||
"received_password" = "🔑📥 Password updated."
|
||||
"received_email" = "📧📥 Email updated."
|
||||
|
|
@ -663,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 Email: {{ .ClientEmail }}\n🏁 Result: ❌ Failed \n\n🛠️ Error: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 Traffic reset process finished for all clients."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ Close Keyboard"
|
||||
"cancel" = "❌ Cancel"
|
||||
|
|
@ -697,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 Traffic Limit"
|
||||
"getBanLogs" = "Get Ban Logs"
|
||||
"allClients" = "All Clients"
|
||||
|
||||
"addClient" = "Add Client"
|
||||
"submitDisable" = "Submit As Disable ☑️"
|
||||
"submitEnable" = "Submit As Enable ✅"
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "Tiempo de Funcionamiento"
|
||||
"systemLoad" = "Carga del Sistema"
|
||||
"systemLoadDesc" = "promedio de carga del sistema en los últimos 1, 5 y 15 minutos"
|
||||
"connectionTcpCountDesc" = "Conexiones TCP totales en todas las tarjetas de red."
|
||||
"connectionUdpCountDesc" = "Conexiones UDP totales en todas las tarjetas de red."
|
||||
"connectionCount" = "Número de Conexiones"
|
||||
"ipAddresses" = "Direcciones IP"
|
||||
"toggleIpVisibility" = "Alternar visibilidad de la IP"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "Eliminar cliente"
|
||||
"deleteClientContent" = "¿Está seguro de que desea eliminar el cliente?"
|
||||
"resetTrafficContent" = "¿Confirmar restablecimiento de tráfico?"
|
||||
"inboundUpdateSuccess" = "La entrada se ha actualizado correctamente."
|
||||
"inboundCreateSuccess" = "La entrada se ha creado correctamente."
|
||||
"copyLink" = "Copiar Enlace"
|
||||
"address" = "Dirección"
|
||||
"network" = "Red"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 Actualizado en: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ Sí"
|
||||
"no" = "❌ No"
|
||||
|
||||
"received_id" = "🔑📥 ID actualizado."
|
||||
"received_password" = "🔑📥 Contraseña actualizada."
|
||||
"received_email" = "📧📥 Correo electrónico actualizado."
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 Correo: {{ .ClientEmail }}\n🏁 Resultado: ❌ Fallido \n\n🛠️ Error: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 Proceso de reinicio de tráfico finalizado para todos los clientes."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ Cerrar Teclado"
|
||||
"cancel" = "❌ Cancelar"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 Límite de tráfico"
|
||||
"getBanLogs" = "Registros de prohibición"
|
||||
"allClients" = "Todos los Clientes"
|
||||
|
||||
"addClient" = "Añadir cliente"
|
||||
"submitDisable" = "Enviar como deshabilitado ☑️"
|
||||
"submitEnable" = "Enviar como habilitado ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "Reiniciar todo el tráfico"
|
||||
"SortedTrafficUsageReport" = "Informe de uso de tráfico ordenado"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ ¡Exitosa!"
|
||||
"errorOperation" = "❗ Error en la Operación."
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "مدتکارکرد"
|
||||
"systemLoad" = "بارسیستم"
|
||||
"systemLoadDesc" = "میانگین بار سیستم برای 1، 5 و 15 دقیقه گذشته"
|
||||
"connectionTcpCountDesc" = "در تمامشبکهها TCP مجموعاتصالات"
|
||||
"connectionUdpCountDesc" = "در تمامشبکهها UDP مجموعاتصالات"
|
||||
"connectionCount" = "تعداد کانکشن ها"
|
||||
"ipAddresses" = "آدرسهای IP"
|
||||
"toggleIpVisibility" = "تغییر وضعیت نمایش IP"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "حذف کاربر"
|
||||
"deleteClientContent" = "آیا مطمئن به حذف کاربر هستید؟"
|
||||
"resetTrafficContent" = "آیا مطمئن به ریست ترافیک هستید؟"
|
||||
"inboundUpdateSuccess" = "ورودی با موفقیت بهروزرسانی شد."
|
||||
"inboundCreateSuccess" = "ورودی با موفقیت ایجاد شد."
|
||||
"copyLink" = "کپی لینک"
|
||||
"address" = "آدرس"
|
||||
"network" = "شبکه"
|
||||
|
|
@ -359,16 +355,16 @@
|
|||
"subDomainDesc" = "آدرس دامنه برای سرویس سابسکریپشن. برای گوش دادن به تمام دامنهها و آیپیها خالیبگذارید"
|
||||
"subUpdates" = "فاصله بروزرسانی سابسکریپشن"
|
||||
"subUpdatesDesc" = "(فاصله مابین بروزرسانی در برنامههای کاربری. (واحد: ساعت"
|
||||
"externalTrafficInformEnable" = "اطلاع رسانی خارجی مصرف ترافیک"
|
||||
"externalTrafficInformEnableDesc" = "مصرف ترافیک به سرویس خارجی ارسال می شود"
|
||||
"externalTrafficInformURI" = "لینک اطلاع رسانی خارجی مصرف ترافیک"
|
||||
"externalTrafficInformURIDesc" = "ترافیک های مصرفی به این لینک هم ارسال می شود"
|
||||
"subEncrypt" = "کدگذاری"
|
||||
"subEncryptDesc" = "کدگذاری خواهدشد Base64 محتوای برگشتی سرویس سابسکریپشن برپایه"
|
||||
"subShowInfo" = "نمایش اطلاعات مصرف"
|
||||
"subShowInfoDesc" = "ترافیک و زمان باقیمانده را در برنامههای کاربری نمایش میدهد"
|
||||
"subURI" = "پروکسی معکوس URI مسیر"
|
||||
"subURIDesc" = "سابسکریپشن را برای استفاده در پشت پراکسیها تغییر میدهد URI مسیر"
|
||||
"externalTrafficInformEnable" = "اطلاع رسانی خارجی مصرف ترافیک"
|
||||
"externalTrafficInformEnableDesc" = "مصرف ترافیک به سرویس خارجی ارسال می شود"
|
||||
"externalTrafficInformURI" = "لینک اطلاع رسانی خارجی مصرف ترافیک"
|
||||
"externalTrafficInformURIDesc" = "ترافیک های مصرفی به این لینک هم ارسال می شود"
|
||||
"fragment" = "فرگمنت"
|
||||
"fragmentDesc" = "فعال کردن فرگمنت برای بستهی نخست تیالاس"
|
||||
"fragmentSett" = "تنظیمات فرگمنت"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 تازهسازی شده در: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ بله"
|
||||
"no" = "❌ خیر"
|
||||
|
||||
"received_id" = "🔑📥 شناسه بهروزرسانی شد."
|
||||
"received_password" = "🔑📥 رمز عبور بهروزرسانی شد."
|
||||
"received_email" = "📧📥 ایمیل بهروزرسانی شد."
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 ایمیل: {{ .ClientEmail }}\n🏁 نتیجه: ❌ ناموفق \n\n🛠️ خطا: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 فرآیند بازنشانی ترافیک برای همه مشتریان به پایان رسید."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ بستن کیبورد"
|
||||
"cancel" = "❌ لغو"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 محدودیت ترافیک"
|
||||
"getBanLogs" = "گزارش های بلوک را دریافت کنید"
|
||||
"allClients" = "همه مشتریان"
|
||||
|
||||
"addClient" = "افزودن مشتری"
|
||||
"submitDisable" = "ارسال به عنوان غیرفعال ☑️"
|
||||
"submitEnable" = "ارسال به عنوان فعال ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "بازنشانی همه ترافیکها"
|
||||
"SortedTrafficUsageReport" = "گزارش استفاده از ترافیک مرتبشده"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ انجام شد!"
|
||||
"errorOperation" = "❗ خطا در عملیات."
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "Waktu Aktif"
|
||||
"systemLoad" = "Beban Sistem"
|
||||
"systemLoadDesc" = "Rata-rata beban sistem selama 1, 5, dan 15 menit terakhir"
|
||||
"connectionTcpCountDesc" = "Total koneksi TCP di seluruh sistem"
|
||||
"connectionUdpCountDesc" = "Total koneksi UDP di seluruh sistem"
|
||||
"connectionCount" = "Statistik Koneksi"
|
||||
"ipAddresses" = "Alamat IP"
|
||||
"toggleIpVisibility" = "Alihkan visibilitas IP"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "Hapus Klien"
|
||||
"deleteClientContent" = "Apakah Anda yakin ingin menghapus klien?"
|
||||
"resetTrafficContent" = "Apakah Anda yakin ingin mereset traffic?"
|
||||
"inboundUpdateSuccess" = "Inbound berhasil diperbarui."
|
||||
"inboundCreateSuccess" = "Inbound berhasil dibuat."
|
||||
"copyLink" = "Salin URL"
|
||||
"address" = "Alamat"
|
||||
"network" = "Jaringan"
|
||||
|
|
@ -422,7 +418,6 @@
|
|||
"RoutingStrategy" = "Strategi Pengalihan Keseluruhan"
|
||||
"RoutingStrategyDesc" = "Atur strategi pengalihan lalu lintas keseluruhan untuk menyelesaikan semua permintaan."
|
||||
"Torrent" = "Blokir Protokol BitTorrent"
|
||||
"TorrentDesc" = "Memblokir protokol BitTorrent."
|
||||
"Inbounds" = "Masuk"
|
||||
"InboundsDesc" = "Menerima klien tertentu."
|
||||
"Outbounds" = "Keluar"
|
||||
|
|
@ -648,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 Diperbarui Pada: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ Ya"
|
||||
"no" = "❌ Tidak"
|
||||
|
||||
"received_id" = "🔑📥 ID diperbarui."
|
||||
"received_password" = "🔑📥 Kata sandi diperbarui."
|
||||
"received_email" = "📧📥 Email diperbarui."
|
||||
|
|
@ -668,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 Email: {{ .ClientEmail }}\n🏁 Hasil: ❌ Gagal \n\n🛠️ Kesalahan: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 Proses reset traffic selesai untuk semua klien."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ Tutup Papan Ketik"
|
||||
"cancel" = "❌ Batal"
|
||||
|
|
@ -702,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 Batas Lalu Lintas"
|
||||
"getBanLogs" = "Dapatkan Log Pemblokiran"
|
||||
"allClients" = "Semua Klien"
|
||||
|
||||
"addClient" = "Tambah Klien"
|
||||
"submitDisable" = "Kirim Sebagai Nonaktif ☑️"
|
||||
"submitEnable" = "Kirim Sebagai Aktif ✅"
|
||||
|
|
@ -714,7 +706,6 @@
|
|||
"ResetAllTraffics" = "Reset Semua Lalu Lintas"
|
||||
"SortedTrafficUsageReport" = "Laporan Penggunaan Lalu Lintas yang Terurut"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ Operasi berhasil!"
|
||||
"errorOperation" = "❗ Kesalahan dalam operasi."
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "システム稼働時間"
|
||||
"systemLoad" = "システム負荷"
|
||||
"systemLoadDesc" = "過去1、5、15分間のシステム平均負荷"
|
||||
"connectionTcpCountDesc" = "システム内のすべてのTCP接続数"
|
||||
"connectionUdpCountDesc" = "システム内のすべてのUDP接続数"
|
||||
"connectionCount" = "接続数"
|
||||
"ipAddresses" = "IPアドレス"
|
||||
"toggleIpVisibility" = "IPの表示を切り替える"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "クライアント削除"
|
||||
"deleteClientContent" = "クライアントを削除してもよろしいですか?"
|
||||
"resetTrafficContent" = "トラフィックをリセットしてもよろしいですか?"
|
||||
"inboundUpdateSuccess" = "インバウンドが正常に更新されました。"
|
||||
"inboundCreateSuccess" = "インバウンドが正常に作成されました。"
|
||||
"copyLink" = "リンクをコピー"
|
||||
"address" = "アドレス"
|
||||
"network" = "ネットワーク"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 更新時間:{{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ はい"
|
||||
"no" = "❌ いいえ"
|
||||
|
||||
"received_id" = "🔑📥 IDが更新されました。"
|
||||
"received_password" = "🔑📥 パスワードが更新されました。"
|
||||
"received_email" = "📧📥 メールが更新されました。"
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 メール: {{ .ClientEmail }}\n🏁 結果: ❌ 失敗 \n\n🛠️ エラー: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 すべてのクライアントのトラフィックリセットが完了しました。"
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ キーボードを閉じる"
|
||||
"cancel" = "❌ キャンセル"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 トラフィック制限"
|
||||
"getBanLogs" = "禁止ログ"
|
||||
"allClients" = "すべてのクライアント"
|
||||
|
||||
"addClient" = "クライアントを追加"
|
||||
"submitDisable" = "無効として送信 ☑️"
|
||||
"submitEnable" = "有効として送信 ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "すべてのトラフィックをリセット"
|
||||
"SortedTrafficUsageReport" = "ソートされたトラフィック使用レポート"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ 成功!"
|
||||
"errorOperation" = "❗ 操作エラー。"
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "Tempo de Atividade"
|
||||
"systemLoad" = "Carga do Sistema"
|
||||
"systemLoadDesc" = "Média de carga do sistema nos últimos 1, 5 e 15 minutos"
|
||||
"connectionTcpCountDesc" = "Total de conexões TCP no sistema"
|
||||
"connectionUdpCountDesc" = "Total de conexões UDP no sistema"
|
||||
"connectionCount" = "Estatísticas de Conexão"
|
||||
"ipAddresses" = "Endereços IP"
|
||||
"toggleIpVisibility" = "Alternar visibilidade do IP"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "Excluir Cliente"
|
||||
"deleteClientContent" = "Tem certeza de que deseja excluir o cliente?"
|
||||
"resetTrafficContent" = "Tem certeza de que deseja redefinir o tráfego?"
|
||||
"inboundUpdateSuccess" = "A entrada foi atualizada com sucesso."
|
||||
"inboundCreateSuccess" = "A entrada foi criada com sucesso."
|
||||
"copyLink" = "Copiar URL"
|
||||
"address" = "Endereço"
|
||||
"network" = "Rede"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 Atualizado em: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ Sim"
|
||||
"no" = "❌ Não"
|
||||
|
||||
"received_id" = "🔑📥 ID atualizado."
|
||||
"received_password" = "🔑📥 Senha atualizada."
|
||||
"received_email" = "📧📥 E-mail atualizado."
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 Email: {{ .ClientEmail }}\n🏁 Resultado: ❌ Falhou \n\n🛠️ Erro: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 Processo de redefinição de tráfego concluído para todos os clientes."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ Fechar teclado"
|
||||
"cancel" = "❌ Cancelar"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 Limite de tráfego"
|
||||
"getBanLogs" = "Obter logs de banimento"
|
||||
"allClients" = "Todos os clientes"
|
||||
|
||||
"addClient" = "Adicionar Cliente"
|
||||
"submitDisable" = "Enviar como Desativado ☑️"
|
||||
"submitEnable" = "Enviar como Ativado ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "Redefinir Todo o Tráfego"
|
||||
"SortedTrafficUsageReport" = "Relatório de Uso de Tráfego Ordenado"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ Operação bem-sucedida!"
|
||||
"errorOperation" = "❗ Erro na operação."
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "Время работы системы"
|
||||
"systemLoad" = "Нагрузка на систему"
|
||||
"systemLoadDesc" = "Средняя загрузка системы за последние 1, 5 и 15 минут"
|
||||
"connectionTcpCountDesc" = "Общее количество подключений TCP по всем сетевым картам."
|
||||
"connectionUdpCountDesc" = "Общее количество подключений UDP по всем сетевым картам."
|
||||
"connectionCount" = "Количество соединений"
|
||||
"ipAddresses" = "IP-адреса сервера"
|
||||
"toggleIpVisibility" = "Переключить видимость IP-адресов сервера"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "Удалить клиента"
|
||||
"deleteClientContent" = "Вы уверены, что хотите удалить клиента?"
|
||||
"resetTrafficContent" = "Вы уверены, что хотите сбросить трафик?"
|
||||
"inboundUpdateSuccess" = "Инбаунд успешно обновлен."
|
||||
"inboundCreateSuccess" = "Инбаунд успешно создан."
|
||||
"copyLink" = "Копировать ссылку"
|
||||
"address" = "Адрес"
|
||||
"network" = "Сеть"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 Обновлено: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ Да"
|
||||
"no" = "❌ Нет"
|
||||
|
||||
"received_id" = "🔑📥 ID обновлён."
|
||||
"received_password" = "🔑📥 Пароль обновлён."
|
||||
"received_email" = "📧📥 Email обновлен."
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 Почта: {{ .ClientEmail }}\n🏁 Результат: ❌ Неудача \n\n🛠️ Ошибка: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 Сброс трафика завершён для всех клиентов."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ Закрыть клавиатуру"
|
||||
"cancel" = "❌ Отмена"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 Лимит трафика"
|
||||
"getBanLogs" = "📄 Лог банов"
|
||||
"allClients" = "👥 Все клиенты"
|
||||
|
||||
"addClient" = "➕ Новый клиент"
|
||||
"submitDisable" = "Добавить отключенным ☑️"
|
||||
"submitEnable" = "Добавить включенныи ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "Сбросить весь трафик"
|
||||
"SortedTrafficUsageReport" = "Отсортированный отчет об использовании трафика"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ Успешно!"
|
||||
"errorOperation" = "❗ Ошибка в операции."
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "Çalışma Süresi"
|
||||
"systemLoad" = "Sistem Yükü"
|
||||
"systemLoadDesc" = "Geçmiş 1, 5 ve 15 dakika için sistem yük ortalaması"
|
||||
"connectionTcpCountDesc" = "Sistem genelinde toplam TCP bağlantıları"
|
||||
"connectionUdpCountDesc" = "Sistem genelinde toplam UDP bağlantıları"
|
||||
"connectionCount" = "Bağlantı İstatistikleri"
|
||||
"ipAddresses" = "IP adresleri"
|
||||
"toggleIpVisibility" = "IP görünürlüğünü değiştir"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "Müşteriyi Sil"
|
||||
"deleteClientContent" = "Müşteriyi silmek istediğinizden emin misiniz?"
|
||||
"resetTrafficContent" = "Trafiği sıfırlamak istediğinizden emin misiniz?"
|
||||
"inboundUpdateSuccess" = "Gelen bağlantı başarıyla güncellendi."
|
||||
"inboundCreateSuccess" = "Gelen bağlantı başarıyla oluşturuldu."
|
||||
"copyLink" = "URL'yi Kopyala"
|
||||
"address" = "Adres"
|
||||
"network" = "Ağ"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 Yenilendi: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ Evet"
|
||||
"no" = "❌ Hayır"
|
||||
|
||||
"received_id" = "🔑📥 Kimlik güncellendi."
|
||||
"received_password" = "🔑📥 Şifre güncellendi."
|
||||
"received_email" = "📧📥 E-posta güncellendi."
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 E-posta: {{ .ClientEmail }}\n🏁 Sonuç: ❌ Başarısız \n\n🛠️ Hata: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 Tüm müşteriler için trafik sıfırlama işlemi tamamlandı."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ Klavyeyi Kapat"
|
||||
"cancel" = "❌ İptal"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 Trafik Sınırı"
|
||||
"getBanLogs" = "Yasak Günlüklerini Al"
|
||||
"allClients" = "Tüm Müşteriler"
|
||||
|
||||
"addClient" = "Müşteri Ekle"
|
||||
"submitDisable" = "Devre Dışı Olarak Gönder ☑️"
|
||||
"submitEnable" = "Etkin Olarak Gönder ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "Tüm Trafikleri Sıfırla"
|
||||
"SortedTrafficUsageReport" = "Sıralı Trafik Kullanım Raporu"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ İşlem başarılı!"
|
||||
"errorOperation" = "❗ İşlemde hata."
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "Час роботи"
|
||||
"systemLoad" = "Завантаження системи"
|
||||
"systemLoadDesc" = "Середнє завантаження системи за останні 1, 5 і 15 хвилин"
|
||||
"connectionTcpCountDesc" = "Загальна кількість TCP-з'єднань у системі"
|
||||
"connectionUdpCountDesc" = "Загальна кількість UDP-з'єднань у системі"
|
||||
"connectionCount" = "Статистика з'єднання"
|
||||
"ipAddresses" = "IP-адреси"
|
||||
"toggleIpVisibility" = "Перемкнути видимість IP"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "Видалити клієнта"
|
||||
"deleteClientContent" = "Ви впевнені, що хочете видалити клієнт?"
|
||||
"resetTrafficContent" = "Ви впевнені, що хочете скинути трафік?"
|
||||
"inboundUpdateSuccess" = "Вхідне підключення успішно оновлено."
|
||||
"inboundCreateSuccess" = "Вхідне підключення успішно створено."
|
||||
"copyLink" = "Копіювати URL"
|
||||
"address" = "Адреса"
|
||||
"network" = "Мережа"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 Оновлено: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ Так"
|
||||
"no" = "❌ Ні"
|
||||
|
||||
"received_id" = "🔑📥 ID оновлено."
|
||||
"received_password" = "🔑📥 Пароль оновлено."
|
||||
"received_email" = "📧📥 Електронна пошта оновлена."
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 Електронна пошта: {{ .ClientEmail }}\n🏁 Результат: ❌ Невдача \n\n🛠️ Помилка: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 Процес скидання трафіку завершено для всіх клієнтів."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ Закрити клавіатуру"
|
||||
"cancel" = "❌ Скасувати"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 Ліміт трафіку"
|
||||
"getBanLogs" = "Отримати журнали заборон"
|
||||
"allClients" = "Всі Клієнти"
|
||||
|
||||
"addClient" = "Додати клієнта"
|
||||
"submitDisable" = "Надіслати як вимкнено ☑️"
|
||||
"submitEnable" = "Надіслати як увімкнено ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "Скинути весь трафік"
|
||||
"SortedTrafficUsageReport" = "Відсортований звіт про використання трафіку"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ Операція успішна!"
|
||||
"errorOperation" = "❗ Помилка в роботі."
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "Thời gian hoạt động"
|
||||
"systemLoad" = "Tải hệ thống"
|
||||
"systemLoadDesc" = "trung bình tải hệ thống trong 1, 5 và 15 phút qua"
|
||||
"connectionTcpCountDesc" = "Tổng số kết nối TCP trên tất cả các thẻ mạng."
|
||||
"connectionUdpCountDesc" = "Tổng số kết nối UDP trên tất cả các thẻ mạng."
|
||||
"connectionCount" = "Số lượng kết nối"
|
||||
"ipAddresses" = "Địa chỉ IP"
|
||||
"toggleIpVisibility" = "Chuyển đổi hiển thị IP"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "Xóa người dùng"
|
||||
"deleteClientContent" = "Bạn có chắc chắn muốn xóa người dùng không?"
|
||||
"resetTrafficContent" = "Xác nhận đặt lại lưu lượng?"
|
||||
"inboundUpdateSuccess" = "Đã cập nhật kết nối inbound thành công."
|
||||
"inboundCreateSuccess" = "Đã tạo kết nối inbound thành công."
|
||||
"copyLink" = "Sao chép liên kết"
|
||||
"address" = "Địa chỉ"
|
||||
"network" = "Mạng"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 Đã cập nhật lần cuối vào: {{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ Có"
|
||||
"no" = "❌ Không"
|
||||
|
||||
"received_id" = "🔑📥 ID đã được cập nhật."
|
||||
"received_password" = "🔑📥 Mật khẩu đã được cập nhật."
|
||||
"received_email" = "📧📥 Email đã được cập nhật."
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 Email: {{ .ClientEmail }}\n🏁 Kết quả: ❌ Thất bại \n\n🛠️ Lỗi: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 Quá trình đặt lại lưu lượng đã hoàn tất cho tất cả khách hàng."
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ Đóng Bàn Phím"
|
||||
"cancel" = "❌ Hủy"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 Giới hạn lưu lượng"
|
||||
"getBanLogs" = "Cấm nhật ký"
|
||||
"allClients" = "Tất cả Khách hàng"
|
||||
|
||||
"addClient" = "Thêm Khách Hàng"
|
||||
"submitDisable" = "Gửi Dưới Dạng Vô Hiệu ☑️"
|
||||
"submitEnable" = "Gửi Dưới Dạng Kích Hoạt ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "Đặt lại tất cả lưu lượng"
|
||||
"SortedTrafficUsageReport" = "Báo cáo sử dụng lưu lượng đã sắp xếp"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ Thành công!"
|
||||
"errorOperation" = "❗ Lỗi Trong Quá Trình Thực Hiện."
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "系统正常运行时间"
|
||||
"systemLoad" = "系统负载"
|
||||
"systemLoadDesc" = "过去 1、5 和 15 分钟的系统平均负载"
|
||||
"connectionTcpCountDesc" = "系统中所有 TCP 连接数"
|
||||
"connectionUdpCountDesc" = "系统中所有 UDP 连接数"
|
||||
"connectionCount" = "连接数"
|
||||
"ipAddresses" = "IP地址"
|
||||
"toggleIpVisibility" = "切换IP可见性"
|
||||
|
|
@ -175,8 +173,6 @@
|
|||
"deleteClient" = "删除客户端"
|
||||
"deleteClientContent" = "确定要删除客户端吗?"
|
||||
"resetTrafficContent" = "确定要重置流量吗?"
|
||||
"inboundUpdateSuccess" = "入站连接已成功更新。"
|
||||
"inboundCreateSuccess" = "入站连接已成功创建。"
|
||||
"copyLink" = "复制链接"
|
||||
"address" = "地址"
|
||||
"network" = "网络"
|
||||
|
|
@ -647,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 刷新时间:{{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ 是的"
|
||||
"no" = "❌ 没有"
|
||||
|
||||
"received_id" = "🔑📥 ID 已更新。"
|
||||
"received_password" = "🔑📥 密码已更新。"
|
||||
"received_email" = "📧📥 邮箱已更新。"
|
||||
|
|
@ -667,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 邮箱: {{ .ClientEmail }}\n🏁 结果: ❌ 失败 \n\n🛠️ 错误: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 所有客户的流量重置已完成。"
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ 关闭键盘"
|
||||
"cancel" = "❌ 取消"
|
||||
|
|
@ -701,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 流量限制"
|
||||
"getBanLogs" = "禁止日志"
|
||||
"allClients" = "所有客户"
|
||||
|
||||
"addClient" = "添加客户"
|
||||
"submitDisable" = "提交为禁用 ☑️"
|
||||
"submitEnable" = "提交为启用 ✅"
|
||||
|
|
@ -713,7 +706,6 @@
|
|||
"ResetAllTraffics" = "重置所有流量"
|
||||
"SortedTrafficUsageReport" = "排序的流量使用报告"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ 成功!"
|
||||
"errorOperation" = "❗ 操作错误。"
|
||||
|
|
|
|||
|
|
@ -117,8 +117,6 @@
|
|||
"operationHours" = "系統正常執行時間"
|
||||
"systemLoad" = "系統負載"
|
||||
"systemLoadDesc" = "過去 1、5 和 15 分鐘的系統平均負載"
|
||||
"connectionTcpCountDesc" = "系統中所有 TCP 連線數"
|
||||
"connectionUdpCountDesc" = "系統中所有 UDP 連線數"
|
||||
"connectionCount" = "連線數"
|
||||
"ipAddresses" = "IP地址"
|
||||
"toggleIpVisibility" = "切換IP可見性"
|
||||
|
|
@ -169,16 +167,12 @@
|
|||
"generalActions" = "通用操作"
|
||||
"autoRefresh" = "自動刷新"
|
||||
"autoRefreshInterval" = "間隔"
|
||||
"create" = "新增"
|
||||
"update" = "修改"
|
||||
"modifyInbound" = "修改入站"
|
||||
"deleteInbound" = "刪除入站"
|
||||
"deleteInboundContent" = "確定要刪除入站嗎?"
|
||||
"deleteClient" = "刪除客戶端"
|
||||
"deleteClientContent" = "確定要刪除客戶端嗎?"
|
||||
"resetTrafficContent" = "確定要重置流量嗎?"
|
||||
"inboundUpdateSuccess" = "入站連接已成功更新。"
|
||||
"inboundCreateSuccess" = "入站連接已成功建立。"
|
||||
"copyLink" = "複製連結"
|
||||
"address" = "地址"
|
||||
"network" = "網路"
|
||||
|
|
@ -649,7 +643,6 @@
|
|||
"refreshedOn" = "\r\n📋🔄 重新整理時間:{{ .Time }}\r\n\r\n"
|
||||
"yes" = "✅ 是的"
|
||||
"no" = "❌ 沒有"
|
||||
|
||||
"received_id" = "🔑📥 ID 已更新。"
|
||||
"received_password" = "🔑📥 密碼已更新。"
|
||||
"received_email" = "📧📥 電子郵件已更新。"
|
||||
|
|
@ -669,7 +662,6 @@
|
|||
"FailedResetTraffic" = "📧 電子郵件: {{ .ClientEmail }}\n🏁 結果: ❌ 失敗 \n\n🛠️ 錯誤: [ {{ .ErrorMessage }} ]"
|
||||
"FinishProcess" = "🔚 所有客戶的流量重置已完成。"
|
||||
|
||||
|
||||
[tgbot.buttons]
|
||||
"closeKeyboard" = "❌ 關閉鍵盤"
|
||||
"cancel" = "❌ 取消"
|
||||
|
|
@ -703,7 +695,6 @@
|
|||
"limitTraffic" = "🚧 流量限制"
|
||||
"getBanLogs" = "禁止日誌"
|
||||
"allClients" = "所有客戶"
|
||||
|
||||
"addClient" = "新增客戶"
|
||||
"submitDisable" = "以停用方式送出 ☑️"
|
||||
"submitEnable" = "以啟用方式送出 ✅"
|
||||
|
|
@ -715,7 +706,6 @@
|
|||
"ResetAllTraffics" = "重設所有流量"
|
||||
"SortedTrafficUsageReport" = "排序過的流量使用報告"
|
||||
|
||||
|
||||
[tgbot.answers]
|
||||
"successfulOperation" = "✅ 成功!"
|
||||
"errorOperation" = "❗ 操作錯誤。"
|
||||
|
|
|
|||
|
|
@ -239,7 +239,12 @@ func (p *process) Stop() error {
|
|||
if !p.IsRunning() {
|
||||
return errors.New("xray is not running")
|
||||
}
|
||||
return p.cmd.Process.Signal(syscall.SIGTERM)
|
||||
|
||||
if runtime.GOOS == "windows" {
|
||||
return p.cmd.Process.Kill()
|
||||
} else {
|
||||
return p.cmd.Process.Signal(syscall.SIGTERM)
|
||||
}
|
||||
}
|
||||
|
||||
func writeCrashReport(m []byte) error {
|
||||
|
|
|
|||
Loading…
Reference in a new issue