Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHo3ein <ho3ein.sanaei@gmail.com>2023-12-10 17:42:52 +0300
committerGitHub <noreply@github.com>2023-12-10 17:42:52 +0300
commite3f1d3c892a1af48f27fdc36f273a55f38d13b40 (patch)
treeb11d0c1ed3c15c8f6f891a5e6df8e021d5db8ab6
parent36cf7c0a8fda915b51e75958ce729fd9a61a5c90 (diff)
parent9fbe80f87f950673058f0001b3704251fa8b9243 (diff)
huge changes
-rw-r--r--README.md5
-rw-r--r--database/db.go9
-rw-r--r--database/model/model.go1
-rw-r--r--docker-compose.yml2
-rw-r--r--go.mod3
-rw-r--r--go.sum48
-rw-r--r--logger/logger.go18
-rw-r--r--sub/subService.go332
-rw-r--r--web/assets/Vazirmatn-UI-NL-Regular.woff2bin0 -> 21840 bytes
-rw-r--r--web/assets/ant-design-vue@1.7.2/antd-with-locales.min.js3
-rw-r--r--web/assets/ant-design-vue@1.7.2/antd.less2
-rw-r--r--web/assets/ant-design-vue@1.7.2/antd.min.css4498
-rw-r--r--web/assets/ant-design-vue@1.7.2/antd.min.js2
-rw-r--r--web/assets/ant-design-vue@1.7.8/antd-with-locales.min.js3
-rw-r--r--web/assets/ant-design-vue@1.7.8/antd.less7
-rw-r--r--web/assets/ant-design-vue@1.7.8/antd.min.css8
-rw-r--r--web/assets/ant-design-vue@1.7.8/antd.min.js3
-rw-r--r--web/assets/ant-design-vue@1.7.8/antd.min.js.map1
-rw-r--r--web/assets/codemirror/codemirror.css344
-rw-r--r--web/assets/codemirror/codemirror.js9874
-rw-r--r--web/assets/codemirror/fold/brace-fold.js119
-rw-r--r--web/assets/codemirror/fold/foldcode.js159
-rw-r--r--web/assets/codemirror/fold/foldgutter.css20
-rw-r--r--web/assets/codemirror/fold/foldgutter.js169
-rw-r--r--web/assets/codemirror/hint/javascript-hint.js162
-rw-r--r--web/assets/codemirror/javascript.js960
-rw-r--r--web/assets/codemirror/jshint.js32076
-rw-r--r--web/assets/codemirror/jsonlint.js1
-rw-r--r--web/assets/codemirror/lint/javascript-lint.js65
-rw-r--r--web/assets/codemirror/lint/lint.css79
-rw-r--r--web/assets/codemirror/lint/lint.js288
-rw-r--r--web/assets/codemirror/xq.css86
-rw-r--r--web/assets/css/custom.css1114
-rw-r--r--web/assets/js/model/dbinbound.js (renamed from web/assets/js/model/models.js)97
-rw-r--r--web/assets/js/model/outbound.js900
-rw-r--r--web/assets/js/model/setting.js48
-rw-r--r--web/assets/js/model/xray.js403
-rw-r--r--web/assets/js/util/common.js61
-rw-r--r--web/assets/js/util/utils.js20
-rw-r--r--web/controller/api.go6
-rw-r--r--web/controller/inbound.go32
-rw-r--r--web/controller/setting.go57
-rw-r--r--web/controller/xray_setting.go63
-rw-r--r--web/controller/xui.go11
-rw-r--r--web/entity/entity.go86
-rw-r--r--web/html/common/head.html16
-rw-r--r--web/html/common/js.html8
-rw-r--r--web/html/common/prompt_modal.html3
-rw-r--r--web/html/common/qrcode_modal.html33
-rw-r--r--web/html/common/text_modal.html7
-rw-r--r--web/html/login.html303
-rw-r--r--web/html/xui/client_bulk_modal.html310
-rw-r--r--web/html/xui/client_modal.html27
-rw-r--r--web/html/xui/common_sider.html10
-rw-r--r--web/html/xui/component/password.html4
-rw-r--r--web/html/xui/component/setting.html6
-rw-r--r--web/html/xui/component/themeSwitch.html26
-rw-r--r--web/html/xui/form/client.html374
-rw-r--r--web/html/xui/form/inbound.html134
-rw-r--r--web/html/xui/form/outbound.html544
-rw-r--r--web/html/xui/form/protocol/dokodemo.html56
-rw-r--r--web/html/xui/form/protocol/http.html24
-rw-r--r--web/html/xui/form/protocol/shadowsocks.html147
-rw-r--r--web/html/xui/form/protocol/socks.html77
-rw-r--r--web/html/xui/form/protocol/trojan.html160
-rw-r--r--web/html/xui/form/protocol/vless.html162
-rw-r--r--web/html/xui/form/protocol/vmess.html90
-rw-r--r--web/html/xui/form/stream/external_proxy.html32
-rw-r--r--web/html/xui/form/stream/stream_grpc.html24
-rw-r--r--web/html/xui/form/stream/stream_http.html28
-rw-r--r--web/html/xui/form/stream/stream_kcp.html125
-rw-r--r--web/html/xui/form/stream/stream_quic.html60
-rw-r--r--web/html/xui/form/stream/stream_settings.html3
-rw-r--r--web/html/xui/form/stream/stream_sockopt.html2
-rw-r--r--web/html/xui/form/stream/stream_tcp.html155
-rw-r--r--web/html/xui/form/stream/stream_ws.html10
-rw-r--r--web/html/xui/form/tls_settings.html592
-rw-r--r--web/html/xui/inbound_client_table.html246
-rw-r--r--web/html/xui/inbound_info_modal.html131
-rw-r--r--web/html/xui/inbound_modal.html32
-rw-r--r--web/html/xui/inbounds.html599
-rw-r--r--web/html/xui/index.html137
-rw-r--r--web/html/xui/settings.html993
-rw-r--r--web/html/xui/xray.html1401
-rw-r--r--web/html/xui/xray_outbound_modal.html127
-rw-r--r--web/html/xui/xray_reverse_modal.html176
-rw-r--r--web/html/xui/xray_rule_modal.html277
-rw-r--r--web/service/inbound.go225
-rw-r--r--web/service/server.go15
-rw-r--r--web/service/setting.go85
-rw-r--r--web/service/tgbot.go7
-rw-r--r--web/service/xray.go26
-rw-r--r--web/service/xray_setting.go28
-rw-r--r--web/translation/translate.en_US.toml82
-rw-r--r--web/translation/translate.es_ES.toml78
-rw-r--r--web/translation/translate.fa_IR.toml70
-rw-r--r--web/translation/translate.ru_RU.toml82
-rw-r--r--web/translation/translate.vi_VN.toml78
-rw-r--r--web/translation/translate.zh_Hans.toml76
-rw-r--r--web/web.go2
-rw-r--r--xray/client_traffic.go1
-rw-r--r--xray/log_writer.go53
-rw-r--r--xray/process.go74
103 files changed, 52914 insertions, 7984 deletions
diff --git a/README.md b/README.md
index 896c4462..99656ad6 100644
--- a/README.md
+++ b/README.md
@@ -311,6 +311,7 @@ Enter the user ID in input field number 4. The Telegram accounts with this id wi
| `POST` | `"/resetAllTraffics"` | Reset traffics of all inbounds |
| `POST` | `"/resetAllClientTraffics/:id"` | Reset traffics of all clients in an inbound |
| `POST` | `"/delDepletedClients/:id"` | Delete inbound depleted clients (-1: all) |
+| `POST` | `"/onlines"` | Get Online users ( list of emails ) |
\*- The field `clientId` should be filled by:
@@ -318,7 +319,9 @@ Enter the user ID in input field number 4. The Telegram accounts with this id wi
- `client.password` for TROJAN
- `client.email` for Shadowsocks
-- [Postman Collection](https://gist.github.com/mehdikhody/9a862801a2e41f6b5fb6bbc7e1326044)
+
+- [API Documentation](https://documenter.getpostman.com/view/16802678/2s9YkgD5jm)
+- [<img src="https://run.pstmn.io/button.svg" alt="Run In Postman" style="width: 128px; height: 32px;">](https://app.getpostman.com/run-collection/16802678-1a4c9270-ac77-40ed-959a-7aa56dc4a415?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D16802678-1a4c9270-ac77-40ed-959a-7aa56dc4a415%26entityType%3Dcollection%26workspaceId%3D2cd38c01-c851-4a15-a972-f181c23359d9)
</details>
# Environment Variables
diff --git a/database/db.go b/database/db.go
index aaeb8bd9..8bd0fb49 100644
--- a/database/db.go
+++ b/database/db.go
@@ -112,3 +112,12 @@ func IsSQLiteDB(file io.ReaderAt) (bool, error) {
}
return bytes.Equal(buf, signature), nil
}
+
+func Checkpoint() error {
+ // Update WAL
+ err := db.Exec("PRAGMA wal_checkpoint;").Error
+ if err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/database/model/model.go b/database/model/model.go
index 087e8b07..c9f9c105 100644
--- a/database/model/model.go
+++ b/database/model/model.go
@@ -83,4 +83,5 @@ type Client struct {
Enable bool `json:"enable" form:"enable"`
TgID string `json:"tgId" form:"tgId"`
SubID string `json:"subId" form:"subId"`
+ Reset int `json:"reset" form:"reset"`
}
diff --git a/docker-compose.yml b/docker-compose.yml
index d1399a9b..b0a89399 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,5 +1,5 @@
---
-version: "3.8"
+version: "3"
services:
3x-ui:
diff --git a/go.mod b/go.mod
index 9f4464b0..02c8802c 100644
--- a/go.mod
+++ b/go.mod
@@ -4,7 +4,7 @@ go 1.21.4
require (
github.com/Calidity/gin-sessions v1.3.1
- github.com/Workiva/go-datastructures v1.1.1
+ github.com/gin-contrib/gzip v0.0.6
github.com/gin-gonic/gin v1.9.1
github.com/goccy/go-json v0.10.2
github.com/mymmrac/telego v0.28.0
@@ -50,7 +50,6 @@ require (
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.17.2 // indirect
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
- github.com/kr/text v0.2.0 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
diff --git a/go.sum b/go.sum
index 1ee1a56c..c1a2c5aa 100644
--- a/go.sum
+++ b/go.sum
@@ -12,8 +12,6 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/Calidity/gin-sessions v1.3.1 h1:nF3dCBWa7TZ4j26iYLwGRmzZy9YODhWoOS3fmi+snyE=
github.com/Calidity/gin-sessions v1.3.1/go.mod h1:I0+QE6qkO50TeN/n6If6novvxHk4Isvr23U8EdvPdns=
-github.com/Workiva/go-datastructures v1.1.1 h1:9G5u1UqKt6ABseAffHGNfbNQd7omRlWE5QaxNruzhE0=
-github.com/Workiva/go-datastructures v1.1.1/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A=
github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
@@ -56,8 +54,11 @@ github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67d
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344 h1:Arcl6UOIS/kgO2nW3A65HN+7CMjSDP/gofXL4CZt1V4=
github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I=
+github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4=
+github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
@@ -67,16 +68,21 @@ github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ4
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
github.com/go-playground/validator/v10 v10.15.5 h1:LEBecTWb/1j5TNY1YYG2RcOUN3R7NLylN+x8TTueE24=
github.com/go-playground/validator/v10 v10.15.5/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
@@ -137,6 +143,8 @@ github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/4
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@@ -144,6 +152,7 @@ github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177cc