mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-04-18 05:25:49 +00:00
Add DNS-Changer
This commit is contained in:
parent
ce99588e0d
commit
865a823660
1 changed files with 11 additions and 250 deletions
261
x-ui.sh
261
x-ui.sh
|
|
@ -1671,234 +1671,11 @@ run_speedtest() {
|
||||||
speedtest
|
speedtest
|
||||||
}
|
}
|
||||||
|
|
||||||
run_librespeed() {
|
|
||||||
echo -e "${yellow}What do you want to do?\n1) Use\n2) Install/Update\n3) Delete"
|
|
||||||
read -p ": " action
|
|
||||||
|
|
||||||
if [ "$action" = 1 ]; then
|
|
||||||
if command -v librespeed-cli &>/dev/null; then
|
|
||||||
librespeed-cli
|
|
||||||
else
|
|
||||||
echo -e "${red}LibreSpeed is not installed!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$action" = 2 ]; then
|
|
||||||
echo -e "${yellow} Installing\Updating LibreSpeed..."
|
|
||||||
#Uninstall old version, or actual version
|
|
||||||
rm -f librespeed-cli_*_linux_amd64.tar.gz && rm -rf /usr/bin/librespeed-cli
|
|
||||||
VERSION=$(curl -s "https://api.github.com/repos/librespeed/speedtest-cli/releases/latest"| grep '"tag_name":' | sed -E 's/.*"v?([^"]+)".*/\1/')
|
|
||||||
wget https://github.com/librespeed/speedtest-cli/releases/download/v${VERSION}/librespeed-cli_${VERSION}_linux_amd64.tar.gz
|
|
||||||
tar -xzvf librespeed-cli_${VERSION}_linux_amd64.tar.gz && mv librespeed-cli /usr/bin
|
|
||||||
echo -e "${green}Starting libreSpeed... (Delete old archive)"
|
|
||||||
librespeed-cli
|
|
||||||
elif [ "$action" = 3 ]; then
|
|
||||||
#Uninstall LibreSpeed
|
|
||||||
rm -f librespeed-cli_*_linux_amd64.tar.gz && rm -rf /usr/bin/librespeed-cli
|
|
||||||
echo -e "${green}LibreSpeed was deleted!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
create_honeypot() {
|
|
||||||
local server_ip=$(curl -s --max-time 3 https://4.ident.me)
|
|
||||||
|
|
||||||
echo -e "${plain}Do you want to use: ${green}Apache ${plain}or ${green}Nginx"
|
|
||||||
|
|
||||||
read -p "Apache or Nginx: " nginx_or_apache
|
|
||||||
|
|
||||||
echo -e "${yellow}Downloading sources and Utilites..."
|
|
||||||
|
|
||||||
if [ "$nginx_or_apache" = "Apache" ]; then
|
|
||||||
case "${release}" in
|
|
||||||
ubuntu)
|
|
||||||
apt-get update
|
|
||||||
apt-get install apache2 -y
|
|
||||||
;;
|
|
||||||
debian)
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y apache2
|
|
||||||
;;
|
|
||||||
armbian)
|
|
||||||
apt-get update && apt-get install apache2 -y
|
|
||||||
;;
|
|
||||||
fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol)
|
|
||||||
dnf -y update && dnf -y install httpd
|
|
||||||
;;
|
|
||||||
centos)
|
|
||||||
yum -y install apache2
|
|
||||||
;;
|
|
||||||
arch | manjaro | parch)
|
|
||||||
pacman -Syu --noconfirm apache
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Start apache server for HoneyPot
|
|
||||||
case "${release}" in
|
|
||||||
ubuntu)
|
|
||||||
systemctl enable apache2
|
|
||||||
systemctl start apache2
|
|
||||||
;;
|
|
||||||
debian)
|
|
||||||
systemctl enable apache2
|
|
||||||
systemctl start apache2
|
|
||||||
;;
|
|
||||||
armbian)
|
|
||||||
systemctl enable apache2
|
|
||||||
systemctl start apache2
|
|
||||||
;;
|
|
||||||
fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol)
|
|
||||||
systemctl enable httpd
|
|
||||||
systemctl start httpd
|
|
||||||
;;
|
|
||||||
centos)
|
|
||||||
systemctl enable httpd
|
|
||||||
systemctl start httpd
|
|
||||||
;;
|
|
||||||
arch | manjaro | parch)
|
|
||||||
systemctl enable apache
|
|
||||||
systemctl start apache
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo -e "${red}Cannot start apache service.${plain}\n"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
echo -e "${yellow}Installing HoneyPot..."
|
ip_validation() {
|
||||||
mv SpaceSaver/ /var/www/html/
|
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]))$"
|
||||||
|
ipv4_regex="^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)$"
|
||||||
# Config for apache2
|
|
||||||
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
|
|
||||||
|
|
||||||
ln -sf /etc/apache2/sites-available/spacesaver.conf /etc/apache2/sites-enabled/
|
|
||||||
|
|
||||||
# Restarting apache server
|
|
||||||
case "${release}" in
|
|
||||||
ubuntu)
|
|
||||||
systemctl reload apache2
|
|
||||||
;;
|
|
||||||
debian)
|
|
||||||
systemctl reload apache2
|
|
||||||
;;
|
|
||||||
armbian)
|
|
||||||
systemctl reload apache2
|
|
||||||
;;
|
|
||||||
fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol)
|
|
||||||
systemctl reload httpd
|
|
||||||
;;
|
|
||||||
centos)
|
|
||||||
systemctl reload httpd
|
|
||||||
;;
|
|
||||||
arch | manjaro | parch)
|
|
||||||
systemctl reload httpd
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo -e "${red}Cannot reload apache service.${plain}\n"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Access rights to HoneyPot's files
|
|
||||||
chown -R www-data:www-data /var/www/html/SpaceSaver
|
|
||||||
chmod -R 755 /var/www/html/SpaceSaver
|
|
||||||
chmod 644 /var/www/html/SpaceSaver/index.html
|
|
||||||
|
|
||||||
echo -e "${plain}Done!"
|
|
||||||
echo -e "${green}Available here -> http://$server_ip:80"
|
|
||||||
|
|
||||||
elif [ "$nginx_or_apache" = "Nginx" ]; then
|
|
||||||
case "${release}" in
|
|
||||||
ubuntu)
|
|
||||||
apt-get update
|
|
||||||
apt-get install nginx -y
|
|
||||||
;;
|
|
||||||
debian)
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y nginx
|
|
||||||
;;
|
|
||||||
armbian)
|
|
||||||
apt-get update && apt-get install nginx -y
|
|
||||||
;;
|
|
||||||
fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol)
|
|
||||||
dnf -y update && dnf -y install nginx
|
|
||||||
;;
|
|
||||||
centos)
|
|
||||||
yum -y install nginx
|
|
||||||
;;
|
|
||||||
arch | manjaro | parch)
|
|
||||||
pacman -Syu --noconfirm nginx
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Start nginx server for HoneyPot
|
|
||||||
systemctl enable nginx
|
|
||||||
systemctl start nginx
|
|
||||||
|
|
||||||
mv SpaceSaver/ /var/www/html/
|
|
||||||
|
|
||||||
# Config for nginx
|
|
||||||
tee /etc/nginx/sites-available/spacesaver.conf >/dev/null << 'EOF'
|
|
||||||
server {
|
|
||||||
listen 80 default_server; # ← важно для локального доступа
|
|
||||||
server_name 127.0.0.1 localhost SpaceSaver _;
|
|
||||||
|
|
||||||
root /var/www/html/SpaceSaver;
|
|
||||||
index index.html;
|
|
||||||
|
|
||||||
# Security Headers
|
|
||||||
add_header X-Content-Type-Options nosniff always;
|
|
||||||
add_header X-Frame-Options SAMEORIGIN always;
|
|
||||||
add_header X-XSS-Protection "1; mode=block" always;
|
|
||||||
add_header Referrer-Policy strict-origin-when-cross-origin always;
|
|
||||||
add_header Permissions-Policy "interest-cohort=()" always;
|
|
||||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
|
||||||
|
|
||||||
server_tokens off;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ /index.html;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ /\. {
|
|
||||||
deny all;
|
|
||||||
access_log off;
|
|
||||||
log_not_found off;
|
|
||||||
}
|
|
||||||
|
|
||||||
access_log /var/log/nginx/spacesaver.access.log;
|
|
||||||
error_log /var/log/nginx/spacesaver.error.log;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
ln -sf /etc/nginx/sites-available/spacesaver.conf /etc/nginx/sites-enabled/
|
|
||||||
systemctl reload nginx
|
|
||||||
|
|
||||||
echo -e "${plain}Done!"
|
|
||||||
echo -e "${green}Available here -> http://$server_ip:80"
|
|
||||||
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
change_dns() {
|
change_dns() {
|
||||||
|
|
@ -1931,11 +1708,6 @@ change_dns() {
|
||||||
echo -e "${green}${plain}Done!"
|
echo -e "${green}${plain}Done!"
|
||||||
}
|
}
|
||||||
|
|
||||||
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]))$"
|
|
||||||
ipv4_regex="^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)$"
|
|
||||||
}
|
|
||||||
|
|
||||||
iplimit_main() {
|
iplimit_main() {
|
||||||
echo -e "\n${green}\t1.${plain} Install Fail2ban and configure IP Limit"
|
echo -e "\n${green}\t1.${plain} Install Fail2ban and configure IP Limit"
|
||||||
echo -e "${green}\t2.${plain} Change Ban Duration"
|
echo -e "${green}\t2.${plain} Change Ban Duration"
|
||||||
|
|
@ -2470,17 +2242,15 @@ show_menu() {
|
||||||
│ ${green}21.${plain} IP Limit Management │
|
│ ${green}21.${plain} IP Limit Management │
|
||||||
│ ${green}22.${plain} Firewall Management │
|
│ ${green}22.${plain} Firewall Management │
|
||||||
│ ${green}23.${plain} SSH Port Forwarding Management │
|
│ ${green}23.${plain} SSH Port Forwarding Management │
|
||||||
│ ${green}24.${plain} HoneyPot (Fakesite) │
|
│ ${green}24.${plain} DNS Changer │
|
||||||
│ ${green}25.${plain} DNS Changer │
|
|
||||||
│────────────────────────────────────────────────│
|
│────────────────────────────────────────────────│
|
||||||
│ ${green}26.${plain} Enable BBR │
|
│ ${green}24.${plain} Enable BBR │
|
||||||
│ ${green}27.${plain} Update Geo Files │
|
│ ${green}25.${plain} Update Geo Files │
|
||||||
│ ${green}28.${plain} Speedtest by Ookla │
|
│ ${green}26.${plain} Speedtest by Ookla │
|
||||||
│ ${green}29.${plain} Librespeed │
|
|
||||||
╚────────────────────────────────────────────────╝
|
╚────────────────────────────────────────────────╝
|
||||||
"
|
"
|
||||||
show_status
|
show_status
|
||||||
echo && read -rp "Please enter your selection [0-29]: " num
|
echo && read -rp "Please enter your selection [0-26]: " num
|
||||||
|
|
||||||
case "${num}" in
|
case "${num}" in
|
||||||
0)
|
0)
|
||||||
|
|
@ -2556,25 +2326,16 @@ show_menu() {
|
||||||
SSH_port_forwarding
|
SSH_port_forwarding
|
||||||
;;
|
;;
|
||||||
24)
|
24)
|
||||||
create_honeypot
|
|
||||||
;;
|
|
||||||
25)
|
|
||||||
change_dns
|
|
||||||
;;
|
|
||||||
26)
|
|
||||||
bbr_menu
|
bbr_menu
|
||||||
;;
|
;;
|
||||||
27)
|
25)
|
||||||
update_geo
|
update_geo
|
||||||
;;
|
;;
|
||||||
28)
|
26)
|
||||||
run_speedtest
|
run_speedtest
|
||||||
;;
|
;;
|
||||||
29)
|
|
||||||
run_librespeed
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
LOGE "Please enter the correct number [0-29]"
|
LOGE "Please enter the correct number [0-26]"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue