mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-04-19 21:42:24 +00:00
update README.md
This commit is contained in:
parent
672fd1da19
commit
44cede41fd
7 changed files with 428 additions and 170 deletions
103
README.md
103
README.md
|
@ -1,11 +1,11 @@
|
||||||
# 3x-ui
|
# 3x-ui
|
||||||
|
|
||||||
[](https://github.com/MHSanaei/3x-ui/releases)
|
[](https://github.com/MHSanaei/3x-ui/releases)
|
||||||
[](#)
|
[](#)
|
||||||
[](#)
|
[](#)
|
||||||
[](#)
|
[](#)
|
||||||
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||||
|
|
||||||
|
|
||||||
> **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**
|
> **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)**
|
xray panel supporting multi-protocol, **Multi-lang (English,Farsi,Chinese)**
|
||||||
|
@ -15,19 +15,24 @@ xray panel supporting multi-protocol, **Multi-lang (English,Farsi,Chinese)**
|
||||||
```
|
```
|
||||||
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
|
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-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 `v1.0.9`:
|
To install your desired version you can add the version to the end of install command. Example for ver `v1.0.9`:
|
||||||
|
|
||||||
```
|
```
|
||||||
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v1.0.9
|
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v1.0.9
|
||||||
```
|
```
|
||||||
|
|
||||||
# SSL
|
# SSL
|
||||||
|
|
||||||
```
|
```
|
||||||
apt-get install certbot -y
|
apt-get install certbot -y
|
||||||
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
|
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
|
||||||
certbot renew --dry-run
|
certbot renew --dry-run
|
||||||
```
|
```
|
||||||
|
|
||||||
**If you think this project is helpful to you, you may wish to give a** :star2:
|
**If you think this project is helpful to you, you may wish to give a** :star2:
|
||||||
|
|
||||||
# Default settings
|
# Default settings
|
||||||
|
|
||||||
|
@ -36,18 +41,58 @@ certbot renew --dry-run
|
||||||
- database path: /etc/x-ui/x-ui.db
|
- database path: /etc/x-ui/x-ui.db
|
||||||
- xray config path: /usr/local/x-ui/bin/config.json
|
- xray config path: /usr/local/x-ui/bin/config.json
|
||||||
|
|
||||||
before you set ssl on settings
|
Before you set ssl on settings
|
||||||
- http:// ip or domain:2053/xui
|
|
||||||
|
- http://ip:2053/xui
|
||||||
|
- http://domain:2053/xui
|
||||||
|
|
||||||
|
After you set ssl on settings
|
||||||
|
|
||||||
After you set ssl on settings
|
|
||||||
- https://yourdomain:2053/xui
|
- https://yourdomain:2053/xui
|
||||||
|
|
||||||
# Enable Traffic For Users:
|
# Environment Variables
|
||||||
|
|
||||||
|
| Variable | Type | Default |
|
||||||
|
| -------------- | :--------------------------------------------: | :------------ |
|
||||||
|
| XUI_LOG_LEVEL | `"debug"` \| `"info"` \| `"warn"` \| `"error"` | `"info"` |
|
||||||
|
| XUI_DEBUG | `boolean` | `false` |
|
||||||
|
| XUI_BIN_FOLDER | `string` | `"bin"` |
|
||||||
|
| XUI_DB_FOLDER | `string` | `"/etc/x-ui"` |
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
XUI_BIN_FOLDER="bin" XUI_DB_FOLDER="/etc/x-ui" go build main.go
|
||||||
|
```
|
||||||
|
|
||||||
|
# Xray Configurations:
|
||||||
|
|
||||||
**copy and paste to xray Configuration :** (you don't need to do this if you have a fresh install)
|
**copy and paste to xray Configuration :** (you don't need to do this if you have a fresh install)
|
||||||
- [enable traffic](./media/enable-traffic.txt)
|
|
||||||
- [enable traffic+block all IR IP address](./media/enable-traffic+block-IR-IP.txt)
|
- [traffic](./media/configs/traffic.json)
|
||||||
- [enable traffic+block all IR domain](./media/enable-traffic+block-IR-domain.txt)
|
- [traffic + Block all Iran IP address](./media/configs/traffic+block-iran-ip.json)
|
||||||
|
- [traffic + Block all Iran Domains](./media/configs/traffic+block-iran-domains.json)
|
||||||
|
- [traffic + Block Ads + Use IPv4 for Google](./media/configs/traffic+block-ads+ipv4-google.json)
|
||||||
|
- [traffic + Block Ads + Route Iran domains + Google + Netflix + Spotify + OpenAI (ChatGPT) to WARP](./media/configs/traffic+block-ads+warp-global+iran-domains.json)
|
||||||
|
|
||||||
|
# [WARP Configuration](https://github.com/fscarmen/warp) (Optional)
|
||||||
|
|
||||||
|
If you want to use routing to WARP follow steps as below:
|
||||||
|
|
||||||
|
1. Install WARP on **socks proxy mode**:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -fsSL https://gist.githubusercontent.com/hamid-gh98/dc5dd9b0cc5b0412af927b1ccdb294c7/raw/install_warp_proxy.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
2. [Copy and paste this file to Xray Configuration](./media/configs/traffic+block-ads+warp-global+iran-domains.json) or Turn on the config you need in panel
|
||||||
|
|
||||||
|
Config Features:
|
||||||
|
|
||||||
|
- Block Ads
|
||||||
|
- Route Google + Netflix + Spotify + OpenAI (ChatGPT) to WARP
|
||||||
|
- Route Iran Domains to WARP
|
||||||
|
- Fix Google 403 error
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|
||||||
|
@ -62,7 +107,8 @@ After you set ssl on settings
|
||||||
- Support https access panel (self-provided domain name + ssl certificate)
|
- Support https access panel (self-provided domain name + ssl certificate)
|
||||||
- Support one-click SSL certificate application and automatic renewal
|
- Support one-click SSL certificate application and automatic renewal
|
||||||
- For more advanced configuration items, please refer to the panel
|
- For more advanced configuration items, please refer to the panel
|
||||||
- fix api routes (user setting will create with api)
|
- Fix api routes (user setting will create with api)
|
||||||
|
- Support to change switch config by different type of items provided in panel
|
||||||
|
|
||||||
# Tg robot use
|
# Tg robot use
|
||||||
|
|
||||||
|
@ -79,8 +125,8 @@ Set the robot-related parameters in the panel background, including:
|
||||||
|
|
||||||
Reference syntax:
|
Reference syntax:
|
||||||
|
|
||||||
- 30 * * * * * //Notify at the 30s of each point
|
- 30 \* \* \* \* \* //Notify at the 30s of each point
|
||||||
- 0 */10 * * * * //Notify at the first second of each 10 minutes
|
- 0 \*/10 \* \* \* \* //Notify at the first second of each 10 minutes
|
||||||
- @hourly // hourly notification
|
- @hourly // hourly notification
|
||||||
- @daily // Daily notification (00:00 in the morning)
|
- @daily // Daily notification (00:00 in the morning)
|
||||||
- @every 8h // notify every 8 hours
|
- @every 8h // notify every 8 hours
|
||||||
|
@ -100,33 +146,34 @@ Reference syntax:
|
||||||
- Check depleted users
|
- Check depleted users
|
||||||
- Receive backup by request and in periodic reports
|
- Receive backup by request and in periodic reports
|
||||||
|
|
||||||
|
|
||||||
## API routes
|
## API routes
|
||||||
|
|
||||||
- `/login` with `PUSH` user data: `{username: '', password: ''}` for login
|
- `/login` with `PUSH` user data: `{username: '', password: ''}` for login
|
||||||
- `/xui/API/inbounds` base for following actions:
|
- `/xui/API/inbounds` base for following actions:
|
||||||
|
|
||||||
| Method | Path | Action |
|
| Method | Path | Action |
|
||||||
| ------------- | ------------- | ------------- |
|
| :----: | ---------------------------------- | ------------------------------------------- |
|
||||||
| GET | "/list" | Get all inbounds |
|
| `GET` | `"/list"` | Get all inbounds |
|
||||||
| GET | "/get/:id" | Get inbound with inbound.id |
|
| `GET` | `"/get/:id"` | Get inbound with inbound.id |
|
||||||
| POST | "/add" | Add inbound |
|
| `POST` | `"/add"` | Add inbound |
|
||||||
| POST | "/del/:id" | Delete Inbound |
|
| `POST` | `"/del/:id"` | Delete Inbound |
|
||||||
| POST | "/update/:id" | Update Inbound |
|
| `POST` | `"/update/:id"` | Update Inbound |
|
||||||
| POST | "/clientIps/:email" | Client Ip address |
|
| `POST` | `"/clientIps/:email"` | Client Ip address |
|
||||||
| POST | "/clearClientIps/:email" | Clear Client Ip address |
|
| `POST` | `"/clearClientIps/:email"` | Clear Client Ip address |
|
||||||
| POST | "/addClient/" | Add Client to inbound |
|
| `POST` | `"/addClient/"` | Add Client to inbound |
|
||||||
| POST | "/delClient/:email" | Delete Client |
|
| `POST` | `"/delClient/:email"` | Delete Client |
|
||||||
| POST | "/updateClient/:index" | Update Client |
|
| `POST` | `"/updateClient/:index"` | Update Client |
|
||||||
| POST | "/:id/resetClientTraffic/:email" | Reset Client's Traffic |
|
| `POST` | `"/:id/resetClientTraffic/:email"` | Reset Client's Traffic |
|
||||||
| POST | "/resetAllTraffics" | Reset traffics of all inbounds |
|
| `POST` | `"/resetAllTraffics"` | Reset traffics of all inbounds |
|
||||||
| POST | "/resetAllClientTraffics/:id" | Reset traffics of all clients in an inbound |
|
| `POST` | `"/resetAllClientTraffics/:id"` | Reset traffics of all clients in an inbound |
|
||||||
|
|
||||||
# A Special Thanks To
|
# A Special Thanks To
|
||||||
|
|
||||||
- [alireza0](https://github.com/alireza0/)
|
- [alireza0](https://github.com/alireza0/)
|
||||||
- [FranzKafkaYu](https://github.com/FranzKafkaYu)
|
- [FranzKafkaYu](https://github.com/FranzKafkaYu)
|
||||||
|
|
||||||
# Suggestion System
|
# Suggestion System
|
||||||
|
|
||||||
- Ubuntu 20.04+
|
- Ubuntu 20.04+
|
||||||
- Debian 10+
|
- Debian 10+
|
||||||
- CentOS 8+
|
- CentOS 8+
|
||||||
|
|
88
media/configs/traffic+block-ads+ipv4-google.json
Normal file
88
media/configs/traffic+block-ads+ipv4-google.json
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{
|
||||||
|
"log": {
|
||||||
|
"loglevel": "warning",
|
||||||
|
"access": "./access.log",
|
||||||
|
"error": "./error.log"
|
||||||
|
},
|
||||||
|
"api": {
|
||||||
|
"tag": "api",
|
||||||
|
"services": ["HandlerService", "LoggerService", "StatsService"]
|
||||||
|
},
|
||||||
|
"inbounds": [
|
||||||
|
{
|
||||||
|
"tag": "api",
|
||||||
|
"listen": "127.0.0.1",
|
||||||
|
"port": 62789,
|
||||||
|
"protocol": "dokodemo-door",
|
||||||
|
"settings": {
|
||||||
|
"address": "127.0.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outbounds": [
|
||||||
|
{
|
||||||
|
"protocol": "freedom",
|
||||||
|
"settings": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "blocked",
|
||||||
|
"protocol": "blackhole",
|
||||||
|
"settings": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "IPv4",
|
||||||
|
"protocol": "freedom",
|
||||||
|
"settings": {
|
||||||
|
"domainStrategy": "UseIPv4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"policy": {
|
||||||
|
"levels": {
|
||||||
|
"0": {
|
||||||
|
"statsUserDownlink": true,
|
||||||
|
"statsUserUplink": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"statsInboundDownlink": true,
|
||||||
|
"statsInboundUplink": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"routing": {
|
||||||
|
"domainStrategy": "IPIfNonMatch",
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"inboundTag": ["api"],
|
||||||
|
"outboundTag": "api"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"ip": ["geoip:private"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"protocol": ["bittorrent"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"domain": [
|
||||||
|
"geosite:category-ads-all",
|
||||||
|
"geosite:category-ads",
|
||||||
|
"geosite:google-ads",
|
||||||
|
"geosite:spotify-ads"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "IPv4",
|
||||||
|
"domain": ["geosite:google"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stats": {}
|
||||||
|
}
|
127
media/configs/traffic+block-ads+warp-global+iran-domains.json
Normal file
127
media/configs/traffic+block-ads+warp-global+iran-domains.json
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
{
|
||||||
|
"log": {
|
||||||
|
"loglevel": "warning",
|
||||||
|
"access": "./access.log",
|
||||||
|
"error": "./error.log"
|
||||||
|
},
|
||||||
|
"api": {
|
||||||
|
"tag": "api",
|
||||||
|
"services": ["HandlerService", "LoggerService", "StatsService"]
|
||||||
|
},
|
||||||
|
"inbounds": [
|
||||||
|
{
|
||||||
|
"tag": "api",
|
||||||
|
"listen": "127.0.0.1",
|
||||||
|
"port": 62789,
|
||||||
|
"protocol": "dokodemo-door",
|
||||||
|
"settings": {
|
||||||
|
"address": "127.0.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outbounds": [
|
||||||
|
{
|
||||||
|
"protocol": "freedom",
|
||||||
|
"settings": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "blocked",
|
||||||
|
"protocol": "blackhole",
|
||||||
|
"settings": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "WARP",
|
||||||
|
"protocol": "socks",
|
||||||
|
"settings": {
|
||||||
|
"servers": [
|
||||||
|
{
|
||||||
|
"address": "127.0.0.1",
|
||||||
|
"port": 40000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"policy": {
|
||||||
|
"levels": {
|
||||||
|
"0": {
|
||||||
|
"statsUserDownlink": true,
|
||||||
|
"statsUserUplink": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"statsInboundDownlink": true,
|
||||||
|
"statsInboundUplink": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"routing": {
|
||||||
|
"domainStrategy": "IPIfNonMatch",
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"inboundTag": ["api"],
|
||||||
|
"outboundTag": "api"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"ip": ["geoip:private"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"protocol": ["bittorrent"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"domain": [
|
||||||
|
"geosite:category-ads-all",
|
||||||
|
"geosite:category-ads",
|
||||||
|
"geosite:google-ads",
|
||||||
|
"geosite:spotify-ads"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "WARP",
|
||||||
|
"domain": [
|
||||||
|
"geosite:google",
|
||||||
|
"geosite:netflix",
|
||||||
|
"geosite:spotify",
|
||||||
|
"geosite:openai"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "WARP",
|
||||||
|
"domain": [
|
||||||
|
"regexp:.*\\.ir$",
|
||||||
|
"ext:iran.dat:ir",
|
||||||
|
"ext:iran.dat:other",
|
||||||
|
"geosite:category-ir",
|
||||||
|
"bank",
|
||||||
|
"tapsi",
|
||||||
|
"snapp",
|
||||||
|
"blogfa",
|
||||||
|
"digikala",
|
||||||
|
"Torob.com",
|
||||||
|
"sheypoor.com",
|
||||||
|
"Tgju.org",
|
||||||
|
"sb24.com",
|
||||||
|
"tebyan.net",
|
||||||
|
"beytoote.com",
|
||||||
|
"telewebion.com",
|
||||||
|
"Film2movie.ws",
|
||||||
|
"Setare.com",
|
||||||
|
"Filimo.com",
|
||||||
|
"downloadha.com",
|
||||||
|
"P30download.com",
|
||||||
|
"Sarzamindownload.com",
|
||||||
|
"Sanjesh.org"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stats": {}
|
||||||
|
}
|
95
media/configs/traffic+block-iran-domains.json
Normal file
95
media/configs/traffic+block-iran-domains.json
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
{
|
||||||
|
"log": {
|
||||||
|
"loglevel": "warning",
|
||||||
|
"access": "./access.log",
|
||||||
|
"error": "./error.log"
|
||||||
|
},
|
||||||
|
"api": {
|
||||||
|
"tag": "api",
|
||||||
|
"services": ["HandlerService", "LoggerService", "StatsService"]
|
||||||
|
},
|
||||||
|
"inbounds": [
|
||||||
|
{
|
||||||
|
"tag": "api",
|
||||||
|
"listen": "127.0.0.1",
|
||||||
|
"port": 62789,
|
||||||
|
"protocol": "dokodemo-door",
|
||||||
|
"settings": {
|
||||||
|
"address": "127.0.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outbounds": [
|
||||||
|
{
|
||||||
|
"protocol": "freedom",
|
||||||
|
"settings": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "blocked",
|
||||||
|
"protocol": "blackhole",
|
||||||
|
"settings": {}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"policy": {
|
||||||
|
"levels": {
|
||||||
|
"0": {
|
||||||
|
"statsUserDownlink": true,
|
||||||
|
"statsUserUplink": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"statsInboundDownlink": true,
|
||||||
|
"statsInboundUplink": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"routing": {
|
||||||
|
"domainStrategy": "IPIfNonMatch",
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"inboundTag": ["api"],
|
||||||
|
"outboundTag": "api"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"ip": ["geoip:private"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"protocol": ["bittorrent"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"domain": [
|
||||||
|
"regexp:.*\\.ir$",
|
||||||
|
"ext:iran.dat:ir",
|
||||||
|
"ext:iran.dat:other",
|
||||||
|
"geosite:category-ir",
|
||||||
|
"bank",
|
||||||
|
"tapsi",
|
||||||
|
"snapp",
|
||||||
|
"blogfa",
|
||||||
|
"digikala",
|
||||||
|
"Torob.com",
|
||||||
|
"sheypoor.com",
|
||||||
|
"Tgju.org",
|
||||||
|
"sb24.com",
|
||||||
|
"tebyan.net",
|
||||||
|
"beytoote.com",
|
||||||
|
"telewebion.com",
|
||||||
|
"Film2movie.ws",
|
||||||
|
"Setare.com",
|
||||||
|
"Filimo.com",
|
||||||
|
"downloadha.com",
|
||||||
|
"P30download.com",
|
||||||
|
"Sarzamindownload.com",
|
||||||
|
"Sanjesh.org"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stats": {}
|
||||||
|
}
|
|
@ -1,25 +1,22 @@
|
||||||
{
|
{
|
||||||
"log": {
|
"log": {
|
||||||
"loglevel": "warning",
|
"loglevel": "warning",
|
||||||
"access": "./access.log"
|
"access": "./access.log",
|
||||||
|
"error": "./error.log"
|
||||||
},
|
},
|
||||||
"api": {
|
"api": {
|
||||||
"services": [
|
"tag": "api",
|
||||||
"HandlerService",
|
"services": ["HandlerService", "LoggerService", "StatsService"]
|
||||||
"LoggerService",
|
|
||||||
"StatsService"
|
|
||||||
],
|
|
||||||
"tag": "api"
|
|
||||||
},
|
},
|
||||||
"inbounds": [
|
"inbounds": [
|
||||||
{
|
{
|
||||||
|
"tag": "api",
|
||||||
"listen": "127.0.0.1",
|
"listen": "127.0.0.1",
|
||||||
"port": 62789,
|
"port": 62789,
|
||||||
"protocol": "dokodemo-door",
|
"protocol": "dokodemo-door",
|
||||||
"settings": {
|
"settings": {
|
||||||
"address": "127.0.0.1"
|
"address": "127.0.0.1"
|
||||||
},
|
}
|
||||||
"tag": "api"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"outbounds": [
|
"outbounds": [
|
||||||
|
@ -28,16 +25,16 @@
|
||||||
"settings": {}
|
"settings": {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"tag": "blocked",
|
||||||
"protocol": "blackhole",
|
"protocol": "blackhole",
|
||||||
"settings": {},
|
"settings": {}
|
||||||
"tag": "blocked"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"policy": {
|
"policy": {
|
||||||
"levels": {
|
"levels": {
|
||||||
"0": {
|
"0": {
|
||||||
"statsUserUplink": true,
|
"statsUserDownlink": true,
|
||||||
"statsUserDownlink": true
|
"statsUserUplink": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"system": {
|
"system": {
|
||||||
|
@ -49,34 +46,31 @@
|
||||||
"domainStrategy": "IPIfNonMatch",
|
"domainStrategy": "IPIfNonMatch",
|
||||||
"rules": [
|
"rules": [
|
||||||
{
|
{
|
||||||
"inboundTag": [
|
"type": "field",
|
||||||
"api"
|
"inboundTag": ["api"],
|
||||||
],
|
"outboundTag": "api"
|
||||||
"outboundTag": "api",
|
|
||||||
"type": "field"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"type": "field",
|
||||||
"outboundTag": "blocked",
|
"outboundTag": "blocked",
|
||||||
"protocol": [
|
"ip": ["geoip:private"]
|
||||||
"bittorrent"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"type": "field",
|
||||||
"outboundTag": "blocked",
|
"outboundTag": "blocked",
|
||||||
"ip": [
|
"protocol": ["bittorrent"]
|
||||||
"geoip:private"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"type": "field",
|
||||||
"outboundTag": "blocked",
|
"outboundTag": "blocked",
|
||||||
"ip": [
|
"ip": ["geoip:private"]
|
||||||
"geoip:ir"
|
},
|
||||||
],
|
{
|
||||||
"type": "field"
|
"type": "field",
|
||||||
|
"outboundTag": "blocked",
|
||||||
|
"ip": ["geoip:ir"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"stats": {}
|
"stats": {}
|
||||||
}
|
}
|
|
@ -1,25 +1,22 @@
|
||||||
{
|
{
|
||||||
"log": {
|
"log": {
|
||||||
"loglevel": "warning",
|
"loglevel": "warning",
|
||||||
"access": "./access.log"
|
"access": "./access.log",
|
||||||
|
"error": "./error.log"
|
||||||
},
|
},
|
||||||
"api": {
|
"api": {
|
||||||
"services": [
|
"tag": "api",
|
||||||
"HandlerService",
|
"services": ["HandlerService", "LoggerService", "StatsService"]
|
||||||
"LoggerService",
|
|
||||||
"StatsService"
|
|
||||||
],
|
|
||||||
"tag": "api"
|
|
||||||
},
|
},
|
||||||
"inbounds": [
|
"inbounds": [
|
||||||
{
|
{
|
||||||
|
"tag": "api",
|
||||||
"listen": "127.0.0.1",
|
"listen": "127.0.0.1",
|
||||||
"port": 62789,
|
"port": 62789,
|
||||||
"protocol": "dokodemo-door",
|
"protocol": "dokodemo-door",
|
||||||
"settings": {
|
"settings": {
|
||||||
"address": "127.0.0.1"
|
"address": "127.0.0.1"
|
||||||
},
|
}
|
||||||
"tag": "api"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"outbounds": [
|
"outbounds": [
|
||||||
|
@ -28,16 +25,16 @@
|
||||||
"settings": {}
|
"settings": {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"tag": "blocked",
|
||||||
"protocol": "blackhole",
|
"protocol": "blackhole",
|
||||||
"settings": {},
|
"settings": {}
|
||||||
"tag": "blocked"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"policy": {
|
"policy": {
|
||||||
"levels": {
|
"levels": {
|
||||||
"0": {
|
"0": {
|
||||||
"statsUserUplink": true,
|
"statsUserDownlink": true,
|
||||||
"statsUserDownlink": true
|
"statsUserUplink": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"system": {
|
"system": {
|
||||||
|
@ -49,27 +46,21 @@
|
||||||
"domainStrategy": "IPIfNonMatch",
|
"domainStrategy": "IPIfNonMatch",
|
||||||
"rules": [
|
"rules": [
|
||||||
{
|
{
|
||||||
"inboundTag": [
|
"type": "field",
|
||||||
"api"
|
"inboundTag": ["api"],
|
||||||
],
|
"outboundTag": "api"
|
||||||
"outboundTag": "api",
|
|
||||||
"type": "field"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"type": "field",
|
||||||
"outboundTag": "blocked",
|
"outboundTag": "blocked",
|
||||||
"ip": [
|
"ip": ["geoip:private"]
|
||||||
"geoip:private"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"type": "field",
|
||||||
"outboundTag": "blocked",
|
"outboundTag": "blocked",
|
||||||
"protocol": [
|
"protocol": ["bittorrent"]
|
||||||
"bittorrent"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"stats": {}
|
"stats": {}
|
||||||
}
|
}
|
|
@ -1,84 +0,0 @@
|
||||||
{
|
|
||||||
"log": {
|
|
||||||
"loglevel": "warning",
|
|
||||||
"access": "./access.log"
|
|
||||||
},
|
|
||||||
"api": {
|
|
||||||
"services": [
|
|
||||||
"HandlerService",
|
|
||||||
"LoggerService",
|
|
||||||
"StatsService"
|
|
||||||
],
|
|
||||||
"tag": "api"
|
|
||||||
},
|
|
||||||
"inbounds": [
|
|
||||||
{
|
|
||||||
"listen": "127.0.0.1",
|
|
||||||
"port": 62789,
|
|
||||||
"protocol": "dokodemo-door",
|
|
||||||
"settings": {
|
|
||||||
"address": "127.0.0.1"
|
|
||||||
},
|
|
||||||
"tag": "api"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"outbounds": [
|
|
||||||
{
|
|
||||||
"protocol": "freedom",
|
|
||||||
"settings": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"protocol": "blackhole",
|
|
||||||
"settings": {},
|
|
||||||
"tag": "blocked"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"policy": {
|
|
||||||
"levels": {
|
|
||||||
"0": {
|
|
||||||
"statsUserUplink": true,
|
|
||||||
"statsUserDownlink": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"statsInboundDownlink": true,
|
|
||||||
"statsInboundUplink": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"routing": {
|
|
||||||
"domainStrategy": "IPIfNonMatch",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"inboundTag": [
|
|
||||||
"api"
|
|
||||||
],
|
|
||||||
"outboundTag": "api",
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ip": [
|
|
||||||
"geoip:private"
|
|
||||||
],
|
|
||||||
"outboundTag": "blocked",
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"outboundTag": "blocked",
|
|
||||||
"protocol": [
|
|
||||||
"bittorrent"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"outboundTag": "blocked",
|
|
||||||
"domain": [
|
|
||||||
"regexp:.+.ir$",
|
|
||||||
"ext:iran.dat:ir",
|
|
||||||
"ext:iran.dat:other"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"stats": {}
|
|
||||||
}
|
|
Loading…
Reference in a new issue