-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathmain.sh
151 lines (129 loc) · 6.41 KB
/
main.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
plain='\033[0m'
NC='\033[0m'
PROJECT_DIR="/opt/DVHOST"
SERVICE_FILE="/etc/systemd/system/DVHOST_TEMPLATE.service"
# [[ $EUID -ne 0 ]] && echo -e "${RED}Fatal error: ${plain} Please run this script with root privilege \n " && exit 1
install_jq() {
if ! command -v jq &> /dev/null; then
if command -v apt-get &> /dev/null; then
echo -e "${RED}jq is not installed. Installing...${NC}"
sleep 1
sudo apt-get update
sudo apt-get install -y jq
else
echo -e "${RED}Error: Unsupported package manager. Please install jq manually.${NC}\n"
read -p "Press any key to continue..."
exit 1
fi
fi
}
loader(){
install_jq
SERVER_IP=$(hostname -I | awk '{print $1}')
SERVER_COUNTRY=$(curl -sS "http://ip-api.com/json/$SERVER_IP" | jq -r '.country')
SERVER_ISP=$(curl -sS "http://ip-api.com/json/$SERVER_IP" | jq -r '.isp')
}
install_dependencies() {
echo "Installing Node.js and required tools..."
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt update
sudo apt install -y nodejs git
}
clone_project() {
echo "Cloning the project to $PROJECT_DIR..."
sudo rm -rf "$PROJECT_DIR"
sudo git clone https://github.com/dev-ir/xui-subscription-template.git "$PROJECT_DIR"
cd "$PROJECT_DIR" || exit
}
install_project_dependencies() {
echo "Installing project dependencies..."
cd "$PROJECT_DIR" || exit
npm install
}
create_service() {
echo "Creating a systemd service for the project..."
sudo bash -c "cat > $SERVICE_FILE" <<EOL
[Unit]
Description=DVHOST_TEMPLATE Service
After=network.target
[Service]
ExecStart=/usr/bin/node $PROJECT_DIR/server.js
Restart=always
User=$USER
Group=$USER
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=$PROJECT_DIR
[Install]
WantedBy=multi-user.target
EOL
sudo systemctl daemon-reload
sudo systemctl enable DVHOST_TEMPLATE
sudo systemctl start DVHOST_TEMPLATE
}
remove_project() {
echo "Removing the project and its service..."
sudo systemctl stop DVHOST_TEMPLATE
sudo systemctl disable DVHOST_TEMPLATE
sudo rm -rf "$PROJECT_DIR"
sudo rm -f "$SERVICE_FILE"
sudo systemctl daemon-reload
}
edit_config_file(){
nano /opt/DVHOST/dvhost.config
sudo systemctl daemon-reload
sudo systemctl enable DVHOST_TEMPLATE
sudo systemctl start DVHOST_TEMPLATE
}
menu(){
clear
echo "+-----------------------------------------------------------------------------------------------------------------------------+"
echo "| ██╗ ██╗██╗ ██╗██╗ ███████╗██╗ ██╗██████╗ ████████╗███████╗███╗ ███╗██████╗ ██╗ █████╗ ████████╗███████╗ |"
echo "| ╚██╗██╔╝██║ ██║██║ ██╔════╝██║ ██║██╔══██╗ ╚══██╔══╝██╔════╝████╗ ████║██╔══██╗██║ ██╔══██╗╚══██╔══╝██╔════╝ |"
echo "| ╚███╔╝ ██║ ██║██║ ███████╗██║ ██║██████╔╝ ██║ █████╗ ██╔████╔██║██████╔╝██║ ███████║ ██║ █████╗ |"
echo "| ██╔██╗ ██║ ██║██║ ╚════██║██║ ██║██╔══██╗ ██║ ██╔══╝ ██║╚██╔╝██║██╔═══╝ ██║ ██╔══██║ ██║ ██╔══╝ |"
echo "| ██╔╝ ██╗╚██████╔╝██║ ███████║╚██████╔╝██████╔╝ ██║ ███████╗██║ ╚═╝ ██║██║ ███████╗██║ ██║ ██║ ███████╗ |"
echo "| ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ |"
echo "+-----------------------------------------------------------------------------------------------------------------------------+"
echo -e "| Telegram Channel : ${YELLOW}@DVHOST_CLOUD ${NC} | YouTube : ${RED}youtube.com/@dvhost_cloud${NC} | Version : ${GREEN} 2.5${NC} "
echo "+-----------------------------------------------------------------------------------------------------------------------------+"
echo -e "${GREEN}|Server Location:${NC} $SERVER_COUNTRY"
echo -e "${GREEN}|Server IP:${NC} $SERVER_IP"
echo -e "${GREEN}|Server ISP:${NC} $SERVER_ISP"
echo "+-----------------------------------------------------------------------------------------------------------------------------+"
echo -e "${YELLOW}"
echo -e "| 1 - Install XUI Subscription Template"
echo -e "| 2 - Edit Configuation"
echo -e "| 3 - Unistall"
echo -e "| 0 - Exit"
echo -e "${NC}"
echo "+-----------------------------------------------------------------------------------------------------------------------------+"
read -p "Please choose an option: " choice
case $choice in
1)
install_dependencies
clone_project
install_project_dependencies
create_service
clear
echo "+---------------------------------------+"
echo -e "| ${YELLOW}Installation completed successfully! ${NC} |"
echo "+---------------------------------------+"
;;
2) edit_config_file ;;
3) remove_project ;;
0)
echo -e "${GREEN}Exiting program...${NC}"
exit 0
;;
*)
echo "Not valid"
;;
esac
}
loader
menu