mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-04-20 05:52:24 +00:00
v2.1.0
This commit is contained in:
parent
fc56a1acac
commit
2a20243751
4 changed files with 10 additions and 13 deletions
|
@ -25,10 +25,10 @@ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.
|
||||||
|
|
||||||
## Install Custom Version
|
## Install Custom Version
|
||||||
|
|
||||||
To install your desired version, add the version to the end of the installation command. e.g., ver `v2.0.2`:
|
To install your desired version, add the version to the end of the installation command. e.g., ver `v2.1.0`:
|
||||||
|
|
||||||
```
|
```
|
||||||
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v2.0.2
|
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v2.1.0
|
||||||
```
|
```
|
||||||
## Manual Install & Upgrade
|
## Manual Install & Upgrade
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ systemctl restart x-ui
|
||||||
- Search within all inbounds and clients
|
- Search within all inbounds and clients
|
||||||
- Dark/Light theme
|
- Dark/Light theme
|
||||||
- Supports multi-user and multi-protocol
|
- Supports multi-user and multi-protocol
|
||||||
- Supports protocols, including VMess, VLESS, Trojan, Shadowsocks, Dokodemo-door, Socks, HTTP
|
- Supports protocols, including VMess, VLESS, Trojan, Shadowsocks, Dokodemo-door, Socks, HTTP, wireguard
|
||||||
- Supports XTLS native Protocols, including RPRX-Direct, Vision, REALITY
|
- Supports XTLS native Protocols, including RPRX-Direct, Vision, REALITY
|
||||||
- Traffic statistics, traffic limit, expiration time limit
|
- Traffic statistics, traffic limit, expiration time limit
|
||||||
- Customizable Xray configuration templates
|
- Customizable Xray configuration templates
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
2.0.2
|
2.1.0
|
|
@ -76,7 +76,7 @@
|
||||||
</table>
|
</table>
|
||||||
<a-divider style="margin: 10px 0;">WARP {{ i18n "pages.xray.rules.outbound" }}</a-divider>
|
<a-divider style="margin: 10px 0;">WARP {{ i18n "pages.xray.rules.outbound" }}</a-divider>
|
||||||
<a-form :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }">
|
<a-form :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }">
|
||||||
<a-form-item label="{{ i18n "status" }}">
|
<a-form-item label='{{ i18n "status" }}'>
|
||||||
<template v-if="warpOutboundIndex>=0">
|
<template v-if="warpOutboundIndex>=0">
|
||||||
<a-tag color="green">{{ i18n "enabled" }}</a-tag>
|
<a-tag color="green">{{ i18n "enabled" }}</a-tag>
|
||||||
<a-button @click="resetOutbound" :loading="warpModal.confirmLoading">{{ i18n "reset" }}</a-button>
|
<a-button @click="resetOutbound" :loading="warpModal.confirmLoading">{{ i18n "reset" }}</a-button>
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
},
|
},
|
||||||
async getData(){
|
async getData(){
|
||||||
this.loading(true);
|
this.loading(true);
|
||||||
const msg = await HttpUtil.post('/xui/xray/warp/data');
|
const msg = await HttpUtil.post('/panel/xray/warp/data');
|
||||||
this.loading(false);
|
this.loading(false);
|
||||||
if (msg.success) {
|
if (msg.success) {
|
||||||
this.warpData = msg.obj.length>0 ? JSON.parse(msg.obj): null;
|
this.warpData = msg.obj.length>0 ? JSON.parse(msg.obj): null;
|
||||||
|
@ -152,7 +152,7 @@
|
||||||
async register(){
|
async register(){
|
||||||
warpModal.loading(true);
|
warpModal.loading(true);
|
||||||
keys = Wireguard.generateKeypair();
|
keys = Wireguard.generateKeypair();
|
||||||
const msg = await HttpUtil.post('/xui/xray/warp/reg',keys);
|
const msg = await HttpUtil.post('/panel/xray/warp/reg',keys);
|
||||||
if (msg.success) {
|
if (msg.success) {
|
||||||
resp = JSON.parse(msg.obj);
|
resp = JSON.parse(msg.obj);
|
||||||
warpModal.warpData = resp.data;
|
warpModal.warpData = resp.data;
|
||||||
|
@ -163,7 +163,7 @@
|
||||||
},
|
},
|
||||||
async updateLicense(l){
|
async updateLicense(l){
|
||||||
warpModal.loading(true);
|
warpModal.loading(true);
|
||||||
const msg = await HttpUtil.post('/xui/xray/warp/license',{license: l});
|
const msg = await HttpUtil.post('/panel/xray/warp/license',{license: l});
|
||||||
if (msg.success) {
|
if (msg.success) {
|
||||||
warpModal.warpData = JSON.parse(msg.obj);
|
warpModal.warpData = JSON.parse(msg.obj);
|
||||||
warpModal.warpConfig = null;
|
warpModal.warpConfig = null;
|
||||||
|
@ -173,7 +173,7 @@
|
||||||
},
|
},
|
||||||
async getConfig(){
|
async getConfig(){
|
||||||
warpModal.loading(true);
|
warpModal.loading(true);
|
||||||
const msg = await HttpUtil.post('/xui/xray/warp/config');
|
const msg = await HttpUtil.post('/panel/xray/warp/config');
|
||||||
warpModal.loading(false);
|
warpModal.loading(false);
|
||||||
if (msg.success) {
|
if (msg.success) {
|
||||||
warpModal.warpConfig = JSON.parse(msg.obj);
|
warpModal.warpConfig = JSON.parse(msg.obj);
|
||||||
|
|
|
@ -228,6 +228,7 @@
|
||||||
<setting-list-item type="switch" title='{{ i18n "pages.xray.NetflixWARP"}}' desc='{{ i18n "pages.xray.NetflixWARPDesc"}}' v-model="NetflixWARPSettings"></setting-list-item>
|
<setting-list-item type="switch" title='{{ i18n "pages.xray.NetflixWARP"}}' desc='{{ i18n "pages.xray.NetflixWARPDesc"}}' v-model="NetflixWARPSettings"></setting-list-item>
|
||||||
<setting-list-item type="switch" title='{{ i18n "pages.xray.SpotifyWARP"}}' desc='{{ i18n "pages.xray.SpotifyWARPDesc"}}' v-model="SpotifyWARPSettings"></setting-list-item>
|
<setting-list-item type="switch" title='{{ i18n "pages.xray.SpotifyWARP"}}' desc='{{ i18n "pages.xray.SpotifyWARPDesc"}}' v-model="SpotifyWARPSettings"></setting-list-item>
|
||||||
</template>
|
</template>
|
||||||
|
<a-button v-else style="margin: 10px 0;" @click="showWarp">WARP {{ i18n "pages.xray.rules.outbound" }}</a-button>
|
||||||
</a-collapse-panel>
|
</a-collapse-panel>
|
||||||
</a-collapse>
|
</a-collapse>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
@ -1141,10 +1142,6 @@
|
||||||
get: function () { return JSON.stringify(this.ipv4Domains, null, 2); },
|
get: function () { return JSON.stringify(this.ipv4Domains, null, 2); },
|
||||||
set: debounce(function (value) { this.ipv4Domains = JSON.parse(value); }, 1000)
|
set: debounce(function (value) { this.ipv4Domains = JSON.parse(value); }, 1000)
|
||||||
},
|
},
|
||||||
manualWARPDomains: {
|
|
||||||
get: function () { return JSON.stringify(this.warpDomains, null, 2); },
|
|
||||||
set: debounce(function (value) { this.warpDomains = JSON.parse(value); }, 1000)
|
|
||||||
},
|
|
||||||
torrentSettings: {
|
torrentSettings: {
|
||||||
get: function () {
|
get: function () {
|
||||||
return doAllItemsExist(this.settingsData.protocols.bittorrent, this.blockedProtocols);
|
return doAllItemsExist(this.settingsData.protocols.bittorrent, this.blockedProtocols);
|
||||||
|
|
Loading…
Reference in a new issue