mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-02-28 13:13:00 +00:00
Merge e726bd4a95 into 37f0880f8f
This commit is contained in:
commit
7849f4936a
4 changed files with 136 additions and 118 deletions
35
.vscode/launch.json
vendored
35
.vscode/launch.json
vendored
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
"$schema": "vscode://schemas/launch",
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Run 3x-ui (Debug)",
|
|
||||||
"type": "go",
|
|
||||||
"request": "launch",
|
|
||||||
"mode": "auto",
|
|
||||||
"program": "${workspaceFolder}",
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"env": {
|
|
||||||
"XUI_DEBUG": "true"
|
|
||||||
},
|
|
||||||
"console": "integratedTerminal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Run 3x-ui (Debug, custom env)",
|
|
||||||
"type": "go",
|
|
||||||
"request": "launch",
|
|
||||||
"mode": "auto",
|
|
||||||
"program": "${workspaceFolder}",
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"env": {
|
|
||||||
// Set to true to serve assets/templates directly from disk for development
|
|
||||||
"XUI_DEBUG": "true",
|
|
||||||
// Uncomment to override DB folder location (by default uses working dir on Windows when debug)
|
|
||||||
// "XUI_DB_FOLDER": "${workspaceFolder}",
|
|
||||||
// Example: override log level (debug|info|notice|warn|error)
|
|
||||||
// "XUI_LOG_LEVEL": "debug"
|
|
||||||
},
|
|
||||||
"console": "integratedTerminal"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
75
.vscode/tasks.json
vendored
75
.vscode/tasks.json
vendored
|
|
@ -1,75 +0,0 @@
|
||||||
{
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"label": "go: build",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "go",
|
|
||||||
"args": [
|
|
||||||
"build",
|
|
||||||
"-o",
|
|
||||||
"bin/3x-ui.exe",
|
|
||||||
"./main.go"
|
|
||||||
],
|
|
||||||
"options": {
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
},
|
|
||||||
"problemMatcher": [
|
|
||||||
"$go"
|
|
||||||
],
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "go: run",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "go",
|
|
||||||
"args": [
|
|
||||||
"run",
|
|
||||||
"./main.go"
|
|
||||||
],
|
|
||||||
"options": {
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"env": {
|
|
||||||
"XUI_DEBUG": "true"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"problemMatcher": [
|
|
||||||
"$go"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "go: test",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "go",
|
|
||||||
"args": [
|
|
||||||
"test",
|
|
||||||
"./..."
|
|
||||||
],
|
|
||||||
"options": {
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
},
|
|
||||||
"problemMatcher": [
|
|
||||||
"$go"
|
|
||||||
],
|
|
||||||
"group": "test"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "go: vet",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "go",
|
|
||||||
"args": [
|
|
||||||
"vet",
|
|
||||||
"./..."
|
|
||||||
],
|
|
||||||
"options": {
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
},
|
|
||||||
"problemMatcher": [
|
|
||||||
"$go"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -580,7 +580,7 @@ prompt_and_setup_ssl() {
|
||||||
|
|
||||||
# 3.1 Request Domain to compose Panel URL later
|
# 3.1 Request Domain to compose Panel URL later
|
||||||
read -rp "Please enter domain name certificate issued for: " custom_domain
|
read -rp "Please enter domain name certificate issued for: " custom_domain
|
||||||
custom_domain="${custom_domain// /}" # Убираем пробелы
|
custom_domain="${custom_domain// /}" # Delete spaces
|
||||||
|
|
||||||
# 3.2 Loop for Certificate Path
|
# 3.2 Loop for Certificate Path
|
||||||
while true; do
|
while true; do
|
||||||
|
|
|
||||||
142
x-ui.sh
142
x-ui.sh
|
|
@ -1661,7 +1661,123 @@ run_speedtest() {
|
||||||
speedtest
|
speedtest
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_librespeed() {
|
||||||
|
#Test GO
|
||||||
|
if command -v go &>/dev/null; then
|
||||||
|
echo -e "${green}${plain} GO installed!"
|
||||||
|
else
|
||||||
|
#Intalling GO
|
||||||
|
echo echo -e "${yellow}${plain} Installing GO..."
|
||||||
|
VERSION=$(curl -s https://go.dev/dl/?mode=json | grep -m 1 'version' | cut -d'"' -f4)
|
||||||
|
wget https://go.dev/dl/$VERSION.linux-amd64.tar.gz
|
||||||
|
rm -rf /usr/local/go && tar -C /usr/local -xzf $VERSION.linux-amd64.tar.gz
|
||||||
|
export PATH=$PATH:/usr/local/go/bin
|
||||||
|
echo -e "${green}${plain} GO installed!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
found=$(find / -type d -name "speedtest-cli" 2>/dev/null)
|
||||||
|
if [ -n "$found" ]; then
|
||||||
|
echo "Test speed..."
|
||||||
|
$found/out/librespeed-cli-linux-amd64
|
||||||
|
else
|
||||||
|
echo -e "${yellow}${plain}Installing Librespeed..."
|
||||||
|
git clone https://github.com/librespeed/speedtest-cli
|
||||||
|
cd speedtest-cli/ && ./build.sh
|
||||||
|
echo -e "${green}${plain}Start this option again!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
create_honeypot() {
|
||||||
|
|
||||||
|
local pkg_manager=""
|
||||||
|
local server_ip=$(curl -s --max-time 3 https://4.ident.me)
|
||||||
|
|
||||||
|
echo -e "${yellow}${plain}Downloading sources and Utilites..."
|
||||||
|
if command -v dnf &>/dev/null; then
|
||||||
|
pkg_manager="dnf"
|
||||||
|
dnf install httpd -y
|
||||||
|
elif command -v yum &>/dev/null; then
|
||||||
|
pkg_manager="yum"
|
||||||
|
yum install httpd
|
||||||
|
elif command -v apt-get &>/dev/null; then
|
||||||
|
pkg_manager="apt-get"
|
||||||
|
apt-get install apache2
|
||||||
|
elif command -v apt &>/dev/null; then
|
||||||
|
pkg_manager="apt"
|
||||||
|
apt install apache2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $pkg_manager ]]; then
|
||||||
|
echo "Error: Package manager not found. You may need to install HoneyPot manually."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start apache server for HoneyPot
|
||||||
|
systemctl enable apache2
|
||||||
|
systemctl start apache2
|
||||||
|
|
||||||
|
echo -e "${yellow}${plain}Installing HoneyPot..."
|
||||||
|
|
||||||
|
git clone https://github.com/d3l1f3r/SpaceSaver.git
|
||||||
|
mv SpaceSaver/ /var/www/html/
|
||||||
|
|
||||||
|
# Configs
|
||||||
|
echo """
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName SpaceSaver
|
||||||
|
DocumentRoot /var/www/html/SpaceSaver
|
||||||
|
|
||||||
|
<Directory /var/www/html/SpaceSaver>
|
||||||
|
Options Indexes FollowSymLinks
|
||||||
|
AllowOverride All
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||||
|
</VirtualHost>""" >> /etc/apache2/sites-enabled/spacesaver.conf
|
||||||
|
|
||||||
|
echo """
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName SpaceSaver
|
||||||
|
DocumentRoot /var/www/html/SpaceSaver
|
||||||
|
|
||||||
|
<Directory /var/www/html/SpaceSaver>
|
||||||
|
Options Indexes FollowSymLinks
|
||||||
|
AllowOverride All
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||||
|
</VirtualHost>""" >> /etc/apache2/sites-available/spacesaver.conf
|
||||||
|
|
||||||
|
# Restarting apache server
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
|
||||||
|
# Access rights to HoneyPot's files
|
||||||
|
sudo chown -R www-data:www-data /var/www/html/SpaceSaver
|
||||||
|
sudo chmod -R 755 /var/www/html/SpaceSaver
|
||||||
|
chmod 644 /var/www/html/SpaceSaver/index.html
|
||||||
|
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
|
||||||
|
echo -e "${green}${plain}Done!"
|
||||||
|
echo -e "${green}${plain}Available here -> http://$server_ip:80"
|
||||||
|
}
|
||||||
|
|
||||||
|
change_dns() {
|
||||||
|
echo -e "${yellow}${plain}Changing DNS resolver"
|
||||||
|
echo -e "${plain}Enter resolver (default: 9.9.9.9): "
|
||||||
|
read resolver
|
||||||
|
|
||||||
|
if [ -n "$resolver" ]; then
|
||||||
|
echo "nameserver $resolver" > /etc/resolv.conf
|
||||||
|
else
|
||||||
|
echo "nameserver 9.9.9.9" > /etc/resolv.conf
|
||||||
|
fi
|
||||||
|
echo -e "${green}${plain}Done!"
|
||||||
|
}
|
||||||
|
|
||||||
ip_validation() {
|
ip_validation() {
|
||||||
ipv6_regex="^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$"
|
ipv6_regex="^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$"
|
||||||
|
|
@ -2200,14 +2316,17 @@ show_menu() {
|
||||||
│ ${green}20.${plain} IP Limit Management │
|
│ ${green}20.${plain} IP Limit Management │
|
||||||
│ ${green}21.${plain} Firewall Management │
|
│ ${green}21.${plain} Firewall Management │
|
||||||
│ ${green}22.${plain} SSH Port Forwarding Management │
|
│ ${green}22.${plain} SSH Port Forwarding Management │
|
||||||
|
│ ${green}23.${plain} HoneyPot (Fakesite) │
|
||||||
|
│ ${green}24.${plain} Change DNS resolver │
|
||||||
│────────────────────────────────────────────────│
|
│────────────────────────────────────────────────│
|
||||||
│ ${green}23.${plain} Enable BBR │
|
│ ${green}25.${plain} Enable BBR │
|
||||||
│ ${green}24.${plain} Update Geo Files │
|
│ ${green}26.${plain} Update Geo Files │
|
||||||
│ ${green}25.${plain} Speedtest by Ookla │
|
│ ${green}27.${plain} Speedtest by Ookla │
|
||||||
|
│ ${green}28.${plain} Librespeed │
|
||||||
╚────────────────────────────────────────────────╝
|
╚────────────────────────────────────────────────╝
|
||||||
"
|
"
|
||||||
show_status
|
show_status
|
||||||
echo && read -rp "Please enter your selection [0-25]: " num
|
echo && read -rp "Please enter your selection [0-28]: " num
|
||||||
|
|
||||||
case "${num}" in
|
case "${num}" in
|
||||||
0)
|
0)
|
||||||
|
|
@ -2280,16 +2399,25 @@ show_menu() {
|
||||||
SSH_port_forwarding
|
SSH_port_forwarding
|
||||||
;;
|
;;
|
||||||
23)
|
23)
|
||||||
bbr_menu
|
create_honeypot
|
||||||
;;
|
;;
|
||||||
24)
|
24)
|
||||||
update_geo
|
change_dns
|
||||||
;;
|
;;
|
||||||
25)
|
25)
|
||||||
|
bbr_menu
|
||||||
|
;;
|
||||||
|
26)
|
||||||
|
update_geo
|
||||||
|
;;
|
||||||
|
27)
|
||||||
run_speedtest
|
run_speedtest
|
||||||
;;
|
;;
|
||||||
|
28)
|
||||||
|
run_librespeed
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
LOGE "Please enter the correct number [0-25]"
|
LOGE "Please enter the correct number [0-28]"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue