From 4bc59b4858b24b504042b6c6804cfe997a792e5b Mon Sep 17 00:00:00 2001 From: Whispering Wind <151555003+ReturnFI@users.noreply.github.com> Date: Sun, 6 Oct 2024 21:40:30 +0330 Subject: [PATCH] Create normalsub.sh --- core/scripts/normalsub/normalsub.sh | 109 ++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 core/scripts/normalsub/normalsub.sh diff --git a/core/scripts/normalsub/normalsub.sh b/core/scripts/normalsub/normalsub.sh new file mode 100644 index 0000000..78f65ca --- /dev/null +++ b/core/scripts/normalsub/normalsub.sh @@ -0,0 +1,109 @@ +#!/bin/bash +source /etc/hysteria/core/scripts/utils.sh +define_colors + +install_dependencies() { + echo "Installing necessary dependencies..." + apt-get install certbot -y > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo -e "${red}Error: Failed to install certbot. ${NC}" + exit 1 + fi + echo -e "${green}Certbot installed successfully. ${NC}" +} + +update_env_file() { + local domain=$1 + local port=$2 + local cert_dir="/etc/letsencrypt/live/$domain" + + cat < /etc/hysteria/core/scripts/normalsub/.env +HYSTERIA_DOMAIN=$domain +HYSTERIA_PORT=$port +HYSTERIA_CERTFILE=$cert_dir/fullchain.pem +HYSTERIA_KEYFILE=$cert_dir/privkey.pem +EOL +} + +create_service_file() { + cat < /etc/systemd/system/normalsub.service +[Unit] +Description=normalsub Python Service +After=network.target + +[Service] +ExecStart=/bin/bash -c 'source /etc/hysteria/hysteria2_venv/bin/activate && /etc/hysteria/hysteria2_venv/bin/python /etc/hysteria/core/scripts/normalsub/normalsub.py' +WorkingDirectory=/etc/hysteria/core/scripts/normalsub +EnvironmentFile=/etc/hysteria/core/scripts/normalsub/.env +Restart=always +User=root +Group=root + +[Install] +WantedBy=multi-user.target +EOL +} + +start_service() { + local domain=$1 + local port=$2 + + if systemctl is-active --quiet normalsub.service; then + echo "The normalsub.service is already running." + return + fi + + install_dependencies + + echo "Generating SSL certificates for $domain..." + certbot certonly --standalone --agree-tos --register-unsafely-without-email -d "$domain" + if [ $? -ne 0 ]; then + echo -e "${red}Error: Failed to generate SSL certificates. ${NC}" + exit 1 + fi + + update_env_file "$domain" "$port" + create_service_file + chown -R hysteria:hysteria "/etc/letsencrypt/live/$domain" + chown -R hysteria:hysteria /etc/hysteria/core/scripts/normalsub + systemctl daemon-reload + systemctl enable normalsub.service > /dev/null 2>&1 + systemctl start normalsub.service > /dev/null 2>&1 + systemctl daemon-reload > /dev/null 2>&1 + + if systemctl is-active --quiet normalsub.service; then + echo -e "${green}normalsub service setup completed. The service is now running on port $port. ${NC}" + else + echo -e "${red}normalsub setup completed. The service failed to start. ${NC}" + fi +} + +stop_service() { + systemctl stop normalsub.service > /dev/null 2>&1 + systemctl disable normalsub.service > /dev/null 2>&1 + systemctl daemon-reload > /dev/null 2>&1 + + rm -f /etc/hysteria/core/scripts/normalsub/.env + echo -e "\n" + + echo -e "${yellow}normalsub service stopped and disabled. .env file removed. ${NC}" +} + +case "$1" in + start) + if [ -z "$2" ] || [ -z "$3" ]; then + echo -e "${red}Usage: $0 start ${NC}" + exit 1 + fi + start_service "$2" "$3" + ;; + stop) + stop_service + ;; + *) + echo -e "${red}Usage: $0 {start|stop} ${NC}" + exit 1 + ;; +esac + +define_colors