diff --git a/README.md b/README.md index eedab67d..4ccaa4ef 100644 --- a/README.md +++ b/README.md @@ -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
Click for details @@ -183,7 +183,7 @@ certbot certonly --standalone --register-unsafely-without-email --non-interactiv
-## Tg robot use +## Telegram Bot
Click for details @@ -224,18 +224,18 @@ Reference syntax: - Multi language bot
-# 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 -# 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) diff --git a/web/assets/codemirror/codemirror.js b/web/assets/codemirror/codemirror.js index 156fc307..ef1810fa 100644 --- a/web/assets/codemirror/codemirror.js +++ b/web/assets/codemirror/codemirror.js @@ -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")}; diff --git a/web/assets/codemirror/xq.css b/web/assets/codemirror/xq.css index db1d24d6..a47b114b 100644 --- a/web/assets/codemirror/xq.css +++ b/web/assets/codemirror/xq.css @@ -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; } \ No newline at end of file +.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; } diff --git a/web/assets/css/custom.css b/web/assets/css/custom.css index cee6b026..5a727d99 100644 --- a/web/assets/css/custom.css +++ b/web/assets/css/custom.css @@ -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; -} \ No newline at end of file + 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%); +} diff --git a/x-ui.sh b/x-ui.sh index 46899692..97517fc0 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -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 }