This commit is contained in:
Alireza Ahmadi
2023-12-04 22:28:38 +01:00
5 changed files with 110 additions and 56 deletions

View File

@@ -1,4 +1,4 @@
# x-ui
# X-UI
![](https://img.shields.io/github/v/release/alireza0/x-ui.svg)
![](https://img.shields.io/docker/pulls/alireza7/x-ui.svg)
@@ -8,7 +8,7 @@
> **Disclaimer: This project is only for personal learning and communication, please do not use it for illegal purposes, please do not use it in a production environment**
xray panel supporting multi-protocol, **Multi-lang (English,Farsi,Chinese,Russian)**
**Xray Panel Supporting Multi-Protocol, Multi-lang (English,Farsi,Chinese,Russian)**
| Features | Enable? |
| ------------------------------------ | :----------------: |
@@ -32,13 +32,13 @@ xray panel supporting multi-protocol, **Multi-lang (English,Farsi,Chinese,Russia
- Tron USDT (TRC20): `TYTq73Gj6dJ67qe58JVPD9zpjW2cc9XgVz`
- Tezos (XTZ): tz2Wnh2SsY1eezXrcLChu6idWpgdHzUFQcts
# Install & Upgrade to latest version
## Install & Upgrade to latest Version
```sh
bash <(curl -Ls https://raw.githubusercontent.com/alireza0/x-ui/master/install.sh)
```
## Install custom version
## Install Custom Version
To install your desired version you can add the version to the end of install command. Example for ver `0.5.2`:
@@ -46,7 +46,7 @@ To install your desired version you can add the version to the end of install co
bash <(curl -Ls https://raw.githubusercontent.com/alireza0/x-ui/master/install.sh) 0.5.2
```
## Manual install & upgrade
## Manual Install & Upgrade
1. First download the latest compressed package from https://github.com/alireza0/x-ui/releases, generally choose Architecture `amd64`
2. Then upload the compressed package to the server's `/root/` directory and login to the server with user `root`
@@ -68,15 +68,15 @@ systemctl enable x-ui
systemctl restart x-ui
```
## Install using docker
## Install Using Docker
1. install docker
1. Install Docker
```shell
curl -fsSL https://get.docker.com | sh
```
2. install x-ui
2. Install X-UI
```shell
mkdir x-ui && cd x-ui
@@ -95,7 +95,7 @@ docker run -itd \
docker build -t x-ui .
```
# Features
## Features
- System Status Monitoring
- Search within all inbounds and clients
@@ -114,14 +114,14 @@ docker build -t x-ui .
- Support export/import database from panel
- Show online users
## suggestion system
## Recommended OS
- CentOS 8+
- Ubuntu 20+
- Debian 10+
- Fedora 36+
## API routes
## API Routes
- `/login` with `PUSH` user data: `{username: '', password: ''}` for login
- `/xui/API/inbounds` base for following actions:
@@ -150,7 +150,7 @@ docker build -t x-ui .
- `client.password` for TROJAN
- `client.email` for Shadowsocks
# Environment Variables
## Environment Variables
| Variable | Type | Default |
| -------------- | :--------------------------------------------: | :------------ |
@@ -159,14 +159,14 @@ docker build -t x-ui .
| XUI_BIN_FOLDER | `string` | `"bin"` |
| XUI_DB_FOLDER | `string` | `"/etc/x-ui"` |
# Screenshots
## Screenshots
![inbounds](./media/inbounds.png)
![Dark inbounds](./media/inbounds-dark.png)
![outbounds](./media/outbounds.png)
![rules](./media/rules.png)
## SSL certificate application
## SSL Certificate Application
<details>
<summary>Click for details</summary>
@@ -183,7 +183,7 @@ certbot certonly --standalone --register-unsafely-without-email --non-interactiv
</details>
## Tg robot use
## Telegram Bot
<details>
<summary>Click for details</summary>
@@ -224,18 +224,18 @@ Reference syntax:
- Multi language bot
</details>
# T-Shoots:
## T-Shoots
**If you upgrade from an old version or other forks, for enable traffic for users you should do :**
**Please be aware if you upgrade from an old X-UI version or other forks, by default data traffic usage for users may not work! it's recommended to follow below steps for enabeling:**
find this in config :
1. Find this section in config file
```json
"policy": {
"system": {
```
**and add this just after ` "policy": {` :**
2. Add below section just after ` "policy": {` :
```json
"levels": {
@@ -246,7 +246,7 @@ find this in config :
},
```
**the final output is like :**
- The final output is like:
```json
"policy": {
@@ -265,20 +265,20 @@ find this in config :
"routing": {
```
restart panel
3. Save and restart panel
</details>
# a special thanks to
## a Special Thanks to
- [HexaSoftwareTech](https://github.com/HexaSoftwareTech/)
- [MHSanaei](https://github.com/MHSanaei)
# Acknowledgment
## Acknowledgment
- [Iran Hosted Domains](https://github.com/bootmortis/iran-hosted-domains) (License: **MIT**): _A comprehensive list of Iranian domains and services that are hosted within the country._
- [PersianBlocker](https://github.com/MasterKia/PersianBlocker) (License: **AGPLv3**): _An optimal and extensive list to block ads and trackers on Persian websites._
## Stargazers over time
## Stargazers over Time
[![Stargazers over time](https://starchart.cc/alireza0/x-ui.svg)](https://starchart.cc/alireza0/x-ui)

View File

@@ -1741,7 +1741,7 @@
// is needed on Webkit to be able to get line-level bounding
// rectangles for it (in measureChar).
var content = eltP("span", null, null, webkit ? "padding-right: .1px" : null);
var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content,
var builder = {pre: eltP("pre", [content], "CodeMirror-line Line-Hover"), content: content,
col: 0, pos: 0, cm: cm,
trailingSpace: false,
splitSpaces: cm.getOption("lineWrapping")};

View File

@@ -21,17 +21,19 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
.cm-s-xq.CodeMirror { border-radius: 1.5rem; border: 1px solid #d9d9d9; height: auto; }
.cm-s-xq.CodeMirror:hover { background-color: #edf4fa; border-color: #2f67c2; transition: all .3s; }
.cm-s-xq .CodeMirror-gutters { border-right: 1px solid #ddd; background-color: rgb(221 221 221 / 20%); white-space: nowrap; }
.cm-s-xq span.cm-keyword { line-height: 1em; font-weight: bold; color: #5A5CAD; }
.cm-s-xq span.cm-atom { color: #6C8CD5; }
.cm-s-xq span.cm-number { color: #164; }
.cm-s-xq span.cm-atom { color: #7A316F; font-weight:bold; }
.cm-s-xq span.cm-number { color: #389E0D; }
.cm-s-xq span.cm-def { text-decoration:underline; }
.cm-s-xq span.cm-variable { color: black; }
.cm-s-xq span.cm-variable-2 { color:black; }
.cm-s-xq span.cm-variable-3, .cm-s-xq span.cm-type { color: black; }
.cm-s-xq span.cm-property {}
.cm-s-xq span.cm-operator {}
.cm-s-xq span.cm-comment { color: #0080FF; font-style: italic; }
.cm-s-xq span.cm-string { color: #e04141; }
.cm-s-xq span.cm-comment { color: #bbbbbb; font-style: italic; }
.cm-s-xq span.cm-string { color: #0e49b5; }
.cm-s-xq span.cm-meta { color: yellow; }
.cm-s-xq span.cm-qualifier { color: grey; }
.cm-s-xq span.cm-builtin { color: #7EA656; }
@@ -44,18 +46,19 @@ THE SOFTWARE.
.cm-s-xq .CodeMirror-matchingbracket { outline:1px solid grey;color:black !important;background:yellow; }
.dark .cm-s-xq.CodeMirror { background-color: #222D42; border-color: #2c3950; color: rgb(255 255 255 / 65%); }
.dark .cm-s-xq div.CodeMirror-selected { background: #27007A; }
.dark .cm-s-xq.CodeMirror:hover { background-color: #0e2040; border-color: #0e49b5; transition: all .3s; }
.dark .cm-s-xq div.CodeMirror-selected { background: rgba(0, 0, 0, 0.5); }
.dark .cm-s-xq .CodeMirror-line::selection, .dark .cm-s-xq .CodeMirror-line > span::selection, .dark .cm-s-xq .CodeMirror-line > span > span::selection { background: rgba(39, 0, 122, 0.99); }
.dark .cm-s-xq .CodeMirror-line::-moz-selection, .dark .cm-s-xq .CodeMirror-line > span::-moz-selection, .dark .cm-s-xq .CodeMirror-line > span > span::-moz-selection { background: rgba(39, 0, 122, 0.99); }
.dark .cm-s-xq .CodeMirror-gutters { background: #222D42; border-right: 1px solid #2c3950; }
.dark .cm-s-xq .CodeMirror-gutters { background: rgb(0 0 0 / 30%); border-right: 1px solid #2c3950; }
.dark .cm-s-xq .CodeMirror-guttermarker { color: #FFBD40; }
.dark .cm-s-xq .CodeMirror-guttermarker-subtle { color: #f8f8f8; }
.dark .cm-s-xq .CodeMirror-linenumber { color: #f8f8f8; }
.dark .cm-s-xq .CodeMirror-guttermarker-subtle { color: rgb(255 255 255 / 70%); }
.dark .cm-s-xq .CodeMirror-linenumber { color: rgb(255 255 255 / 50%); }
.dark .cm-s-xq .CodeMirror-cursor { border-left: 1px solid white; }
.dark .cm-s-xq span.cm-keyword { color: #FFBD40; }
.dark .cm-s-xq span.cm-atom { color: #6C8CD5; }
.dark .cm-s-xq span.cm-number { color: #164; }
.dark .cm-s-xq span.cm-atom { color: #c099ff; }
.dark .cm-s-xq span.cm-number { color: #9ccfd8; }
.dark .cm-s-xq span.cm-def { color: #FFF; text-decoration:underline; }
.dark .cm-s-xq span.cm-variable { color: #FFF; }
.dark .cm-s-xq span.cm-variable-2 { color: #EEE; }
@@ -63,7 +66,7 @@ THE SOFTWARE.
.dark .cm-s-xq span.cm-property {}
.dark .cm-s-xq span.cm-operator {}
.dark .cm-s-xq span.cm-comment { color: gray; }
.dark .cm-s-xq span.cm-string { color: #9FEE00; }
.dark .cm-s-xq span.cm-string { color: #f6c177 }
.dark .cm-s-xq span.cm-meta { color: yellow; }
.dark .cm-s-xq span.cm-qualifier { color: #FFF700; }
.dark .cm-s-xq span.cm-builtin { color: #30a; }
@@ -73,4 +76,11 @@ THE SOFTWARE.
.dark .cm-s-xq span.cm-error { color: #e04141; }
.dark .cm-s-xq .CodeMirror-activeline-background { background: #27282E; }
.dark .cm-s-xq .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
.dark .cm-s-xq .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
.Line-Hover{transition: all .2s;}
.Line-Hover:hover{ background-color: rgb(4 48 143 / 5%) !important; }
.dark .Line-Hover:hover{ background-color: rgb(0 0 0 / 20%) !important; }
.CodeMirror-foldmarker { color: #fc8800; text-shadow: #ffd8aa 1px 1px 2px, #ffd8aa -1px -1px 2px, #ffd8aa 1px -1px 2px, #ffd8aa -1px 1px 2px; font-family: arial; line-height: .3; cursor: pointer; }
.dark .CodeMirror-foldmarker { color: #ffffff; text-shadow: #bbb 1px 1px 2px, #bbb -1px -1px 2px, #bbb 1px -1px 2px, #bbb -1px 1px 2px; font-family: arial; line-height: .3; cursor: pointer; }

View File

@@ -26,7 +26,7 @@ html {
::selection {
color: #0e49b5;
background-color: #0e49b530;
background-color: #d2ddf1;
}
#app {
@@ -750,5 +750,47 @@ style attribute {
}
.dark .ant-spin-dot-item {
background-color: #ffffffff;
}
background-color: #ffffff;
}
.ant-radio-button-wrapper {
user-select: none;
}
.ant-menu {
user-select: none;
}
.ant-calendar-date:hover {
background: #dae9f5;
cursor: pointer
}
.ant-calendar-date:active {
background: #dae9f5;
color: rgba(0, 0, 0, 0.65);
}
.ant-calendar-today .ant-calendar-date {
color: #0e49b5;
font-weight: 700;
border-color: #0e49b5
}
.dark .ant-calendar-today .ant-calendar-date {
color: #ffffff;
font-weight: 700;
border-color: #0e49b5
}
.ant-calendar-selected-day .ant-calendar-date {
background: #0E49B5;
color: #ffffff;
}
li.ant-select-dropdown-menu-item:empty:after {
content: "None";
font-weight:normal;
color:rgb(0 0 0 / 25%);
}

34
x-ui.sh
View File

@@ -613,27 +613,29 @@ ssl_cert_issue_CF() {
}
show_usage() {
echo "x-ui control menu usages: "
echo "X-UI Control Menu Usage"
echo "------------------------------------------"
echo "x-ui - Enter Admin menu"
echo "x-ui start - Start x-ui"
echo "x-ui stop - Stop x-ui"
echo "x-ui restart - Restart x-ui"
echo "x-ui status - Show x-ui status"
echo "x-ui enable - Enable x-ui on system startup"
echo "x-ui disable - Disable x-ui on system startup"
echo "x-ui log - Check x-ui logs"
echo "x-ui update - Update x-ui"
echo "x-ui install - Install x-ui"
echo "x-ui uninstall - Uninstall x-ui"
echo "SUBCOMMANDS:"
echo "x-ui - Admin management script"
echo "x-ui start - Start X-UI"
echo "x-ui stop - Stop X-UI"
echo "x-ui restart - Restart X-UI"
echo "x-ui status - Current X-UI status"
echo "x-ui enable - Enable X-UI on system startup"
echo "x-ui disable - Disable X-UI on system startup"
echo "x-ui log - Check X-UI logs"
echo "x-ui update - Update X-UI"
echo "x-ui install - Install X-UI"
echo "x-ui uninstall - Uninstall X-UI"
echo "x-ui help - Control menu usage"
echo "------------------------------------------"
}
show_menu() {
echo -e "
${green}X-UI Panel Management Script${plain}
${green}X-UI Admin Management Script ${plain}
————————————————
${green}0.${plain} Exit Script
${green}0.${plain} Exit
————————————————
${green}1.${plain} Install X-UI
${green}2.${plain} Update X-UI
@@ -646,7 +648,7 @@ show_menu() {
————————————————
${green}8.${plain} Start X-UI
${green}9.${plain} Stop X-UI
${green}10.${plain} Reboot X-UI
${green}10.${plain} Restart X-UI
${green}11.${plain} Check X-UI State
${green}12.${plain} Check X-UI Logs
————————————————
@@ -717,7 +719,7 @@ show_menu() {
ssl_cert_issue_CF
;;
*)
LOGE "Please enter the correct number [0-16]"
LOGE "Please enter the correct number [0-17]"
;;
esac
}