diff --git a/x-ui.sh b/x-ui.sh
index 0f625b5f..1c0d4fa8 100644
--- a/x-ui.sh
+++ b/x-ui.sh
@@ -408,6 +408,16 @@ restart() {
fi
}
+restart_xray() {
+ systemctl reload x-ui
+ LOGI "xray-core Restart signal sent successfully, Please check the log information to confirm whether xray restarted successfully"
+ sleep 2
+ show_xray_status
+ if [[ $# == 0 ]]; then
+ before_show_menu
+ fi
+}
+
status() {
if [[ $release == "alpine" ]]; then
rc-service x-ui status
@@ -1662,82 +1672,94 @@ run_speedtest() {
}
run_librespeed() {
- #Test GO
- if command -v go &>/dev/null; then
- echo -e "${green}${plain} GO installed!"
+
+ if command -v librespeed-cli &>/dev/null; then
+ librespeed-cli
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!"
+ #Intalling LibreSpeed
+ echo -e "${yellow} Installing LibreSpeed..."
+ 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
+ librespeed-cli
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
+ echo -e "${plain}Do you want to use: ${green}Apache ${plain}or ${green}Nginx"
- if [[ -z $pkg_manager ]]; then
- echo "Error: Package manager not found. You may need to install HoneyPot manually."
- return 1
- fi
+ read -p "Apache or Nginx: " nginx_or_apache
- # Start apache server for HoneyPot
- systemctl enable apache2
- systemctl start apache2
-
- echo -e "${yellow}${plain}Installing HoneyPot..."
+ echo -e "${yellow}Downloading sources and Utilites..."
- git clone https://github.com/d3l1f3r/SpaceSaver.git
- mv SpaceSaver/ /var/www/html/
+ 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
- # Configs
- echo """
-
- ServerName SpaceSaver
- DocumentRoot /var/www/html/SpaceSaver
+ # 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
-
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
-
- ErrorLog ${APACHE_LOG_DIR}/error.log
- CustomLog ${APACHE_LOG_DIR}/access.log combined
-""" >> /etc/apache2/sites-enabled/spacesaver.conf
+ echo -e "${yellow}Installing HoneyPot..."
+ mv SpaceSaver/ /var/www/html/
- echo """
+ # Config for apache2
+ echo """
ServerName SpaceSaver
DocumentRoot /var/www/html/SpaceSaver
@@ -1751,19 +1773,121 @@ create_honeypot() {
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
""" >> /etc/apache2/sites-available/spacesaver.conf
+
+ ln -sf /etc/apache2/sites-available/spacesaver.conf /etc/apache2/sites-enabled/
- # Restarting apache server
- sudo systemctl reload apache2
+ # 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
- 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
+ # 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
- sudo systemctl reload apache2
+ echo -e "${plain}Done!"
+ echo -e "${green}Available here -> http://$server_ip:80"
- echo -e "${green}${plain}Done!"
- echo -e "${green}${plain}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
+
+ #Downloading HoneyPot's files
+ git clone https://github.com/d3l1f3r/SpaceSaver.git
+ 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() {
@@ -2170,11 +2294,11 @@ iplimit_remove_conflicts() {
SSH_port_forwarding() {
local URL_lists=(
"https://api4.ipify.org"
- "https://ipv4.icanhazip.com"
- "https://v4.api.ipinfo.io/ip"
- "https://ipv4.myexternalip.com/raw"
- "https://4.ident.me"
- "https://check-host.net/ip"
+ "https://ipv4.icanhazip.com"
+ "https://v4.api.ipinfo.io/ip"
+ "https://ipv4.myexternalip.com/raw"
+ "https://4.ident.me"
+ "https://check-host.net/ip"
)
local server_ip=""
for ip_address in "${URL_lists[@]}"; do
@@ -2305,28 +2429,29 @@ show_menu() {
│ ${green}11.${plain} Start │
│ ${green}12.${plain} Stop │
│ ${green}13.${plain} Restart │
-│ ${green}14.${plain} Check Status │
-│ ${green}15.${plain} Logs Management │
+| ${green}14.${plain} Restart Xray │
+│ ${green}15.${plain} Check Status │
+│ ${green}16.${plain} Logs Management │
│────────────────────────────────────────────────│
-│ ${green}16.${plain} Enable Autostart │
-│ ${green}17.${plain} Disable Autostart │
+│ ${green}17.${plain} Enable Autostart │
+│ ${green}18.${plain} Disable Autostart │
│────────────────────────────────────────────────│
-│ ${green}18.${plain} SSL Certificate Management │
-│ ${green}19.${plain} Cloudflare SSL Certificate │
-│ ${green}20.${plain} IP Limit Management │
-│ ${green}21.${plain} Firewall Management │
-│ ${green}22.${plain} SSH Port Forwarding Management │
-│ ${green}23.${plain} HoneyPot (Fakesite) │
-│ ${green}24.${plain} Change DNS resolver │
+│ ${green}19.${plain} SSL Certificate Management │
+│ ${green}20.${plain} Cloudflare SSL Certificate │
+│ ${green}21.${plain} IP Limit Management │
+│ ${green}22.${plain} Firewall Management │
+│ ${green}23.${plain} SSH Port Forwarding Management │
+│ ${green}24.${plain} HoneyPot (Fakesite) │
+│ ${green}25.${plain} Change DNS resolver │
│────────────────────────────────────────────────│
-│ ${green}25.${plain} Enable BBR │
-│ ${green}26.${plain} Update Geo Files │
-│ ${green}27.${plain} Speedtest by Ookla │
-│ ${green}28.${plain} Librespeed │
+│ ${green}26.${plain} Enable BBR │
+│ ${green}27.${plain} Update Geo Files │
+│ ${green}28.${plain} Speedtest by Ookla │
+│ ${green}29.${plain} Librespeed │
╚────────────────────────────────────────────────╝
"
show_status
- echo && read -rp "Please enter your selection [0-28]: " num
+ echo && read -rp "Please enter your selection [0-29]: " num
case "${num}" in
0)
@@ -2372,52 +2497,55 @@ show_menu() {
check_install && restart
;;
14)
- check_install && status
+ check_install && restart_xray
;;
15)
- check_install && show_log
+ check_install && status
;;
16)
- check_install && enable
+ check_install && show_log
;;
17)
- check_install && disable
+ check_install && enable
;;
18)
- ssl_cert_issue_main
+ check_install && disable
;;
19)
- ssl_cert_issue_CF
+ ssl_cert_issue_main
;;
20)
- iplimit_main
+ ssl_cert_issue_CF
;;
21)
- firewall_menu
+ iplimit_main
;;
22)
- SSH_port_forwarding
+ firewall_menu
;;
23)
- create_honeypot
+ SSH_port_forwarding
;;
24)
- change_dns
+ create_honeypot
;;
25)
- bbr_menu
+ change_dns
;;
26)
- update_geo
+ bbr_menu
;;
27)
- run_speedtest
+ update_geo
;;
28)
+ run_speedtest
+ ;;
+ 29)
run_librespeed
;;
*)
- LOGE "Please enter the correct number [0-28]"
+ LOGE "Please enter the correct number [0-29]"
;;
esac
}
@@ -2470,4 +2598,4 @@ if [[ $# > 0 ]]; then
esac
else
show_menu
-fi
+fi
\ No newline at end of file