forked from XrayR-project/XrayR-release
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
213 lines (192 loc) · 7.47 KB
/
install.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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
#!/bin/bash
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
plain='\033[0m'
cur_dir=$(pwd)
# check root
[[ $EUID -ne 0 ]] && echo -e "${red}mistake : ${plain} The root user must be used to run this script!\n" && exit 1
# check os
if [[ -f /etc/redhat-release ]]; then
release="centos"
elif cat /etc/issue | grep -Eqi "debian"; then
release="debian"
elif cat /etc/issue | grep -Eqi "ubuntu"; then
release="ubuntu"
elif cat /etc/issue | grep -Eqi "centos|red hat|redhat"; then
release="centos"
elif cat /proc/version | grep -Eqi "debian"; then
release="debian"
elif cat /proc/version | grep -Eqi "ubuntu"; then
release="ubuntu"
elif cat /proc/version | grep -Eqi "centos|red hat|redhat"; then
release="centos"
else
echo -e "${red}System version not detected, please contact the script author ${plain}\n" && exit 1
fi
arch=$(arch)
if [[ $arch == "x86_64" || $arch == "x64" || $arch == "amd64" ]]; then
arch="64"
elif [[ $arch == "aarch64" || $arch == "arm64" ]]; then
arch="arm64-v8a"
elif [[ $arch == "s390x" ]]; then
arch="s390x"
else
arch="64"
echo -e "${red}Detect schema failed, use default schema: ${arch}${plain}"
fi
echo "Architecture: ${arch}"
if [ "$(getconf WORD_BIT)" != '32' ] && [ "$(getconf LONG_BIT)" != '64' ] ; then
echo "This software does not support 32-bit system (x86), please use 64-bit system (x86_64), if the detection is wrong, please contact the author"
exit 2
fi
os_version=""
# os version
if [[ -f /etc/os-release ]]; then
os_version=$(awk -F'[= ."]' '/VERSION_ID/{print $3}' /etc/os-release)
fi
if [[ -z "$os_version" && -f /etc/lsb-release ]]; then
os_version=$(awk -F'[= ."]+' '/DISTRIB_RELEASE/{print $2}' /etc/lsb-release)
fi
if [[ x"${release}" == x"centos" ]]; then
if [[ ${os_version} -le 6 ]]; then
echo -e "${red}Please use CentOS 7 or later! ${plain}\n" && exit 1
fi
elif [[ x"${release}" == x"ubuntu" ]]; then
if [[ ${os_version} -lt 16 ]]; then
echo -e "${red}Please use Ubuntu 16 or higher! ${plain}\n" && exit 1
fi
elif [[ x"${release}" == x"debian" ]]; then
if [[ ${os_version} -lt 8 ]]; then
echo -e "${red}Please use Debian 8 or later! ${plain}\n" && exit 1
fi
fi
install_base() {
if [[ x"${release}" == x"centos" ]]; then
yum install epel-release -y
yum install wget curl unzip tar crontabs socat -y
else
apt update -y
apt install wget curl unzip tar cron socat -y
fi
}
# 0: running, 1: not running, 2: not installed
check_status() {
if [[ ! -f /etc/systemd/system/XrayR.service ]]; then
return 2
fi
temp=$(systemctl status XrayR | grep Active | awk '{print $3}' | cut -d "(" -f2 | cut -d ")" -f1)
if [[ x"${temp}" == x"running" ]]; then
return 0
else
return 1
fi
}
install_acme() {
curl https://get.acme.sh | sh
}
install_XrayR() {
if [[ -e /usr/local/XrayR/ ]]; then
rm /usr/local/XrayR/ -rf
fi
mkdir /usr/local/XrayR/ -p
cd /usr/local/XrayR/
if [ $# == 0 ] ;then
last_version=$(curl -Ls "https://api.github.com/repos/XrayR-project/XrayR/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
if [[ ! -n "$last_version" ]]; then
echo -e "${red}Failed to detect XrayR version, it may be beyond the Github API limit, please try again later, or manually specify the XrayR version to install{plain}"
exit 1
fi
echo -e "Detected the latest version of XrayR: ${last_version}, started the installation"
wget -q -N --no-check-certificate -O /usr/local/XrayR/XrayR-linux.zip https://github.com/XrayR-project/XrayR/releases/download/${last_version}/XrayR-linux-${arch}.zip
if [[ $? -ne 0 ]]; then
echo -e "${red}Failed to download XrayR, please make sure your server can download files from Github${plain}"
exit 1
fi
else
if [[ $1 == v* ]]; then
last_version=$1
else
last_version="v"$1
fi
url="https://github.com/XrayR-project/XrayR/releases/download/${last_version}/XrayR-linux-${arch}.zip"
echo -e "start installation XrayR ${last_version}"
wget -q -N --no-check-certificate -O /usr/local/XrayR/XrayR-linux.zip ${url}
if [[ $? -ne 0 ]]; then
echo -e "${red}Failed to download XrayR ${last_version}, please make sure this version exists${plain}"
exit 1
fi
fi
unzip XrayR-linux.zip
rm XrayR-linux.zip -f
chmod +x XrayR
mkdir /etc/XrayR/ -p
rm /etc/systemd/system/XrayR.service -f
file="https://github.com/arta-tm/XrayR-release/raw/master/XrayR.service"
wget -q -N --no-check-certificate -O /etc/systemd/system/XrayR.service ${file}
#cp -f XrayR.service /etc/systemd/system/
systemctl daemon-reload
systemctl stop XrayR
systemctl enable XrayR
echo -e "${green}XrayR ${last_version}${plain} 安装完成,已设置开机自启"
cp geoip.dat /etc/XrayR/
cp geosite.dat /etc/XrayR/
if [[ ! -f /etc/XrayR/config.yml ]]; then
cp config.yml /etc/XrayR/
echo -e ""
echo -e "For new installation, please refer to the tutorial first: https://github.com/XrayR-project/XrayR, configure the necessary content"
else
systemctl start XrayR
sleep 2
check_status
echo -e ""
if [[ $? == 0 ]]; then
echo -e "${green}XrayR restart successfully${plain}"
else
echo -e "${red}XrayR may fail to start, please use XrayR log to view the log information later, if it cannot start, the configuration format may have been changed, please go to the wiki to view: https://github.com/XrayR-project/XrayR/wiki${plain}"
fi
fi
if [[ ! -f /etc/XrayR/dns.json ]]; then
cp dns.json /etc/XrayR/
fi
if [[ ! -f /etc/XrayR/route.json ]]; then
cp route.json /etc/XrayR/
fi
if [[ ! -f /etc/XrayR/custom_outbound.json ]]; then
cp custom_outbound.json /etc/XrayR/
fi
if [[ ! -f /etc/XrayR/custom_inbound.json ]]; then
cp custom_inbound.json /etc/XrayR/
fi
if [[ ! -f /etc/XrayR/rulelist ]]; then
cp rulelist /etc/XrayR/
fi
curl -o /usr/bin/XrayR -Ls https://raw.githubusercontent.com/arta-tm/XrayR-release/master/XrayR.sh
chmod +x /usr/bin/XrayR
ln -s /usr/bin/XrayR /usr/bin/xrayr # 小写兼容
chmod +x /usr/bin/xrayr
cd $cur_dir
rm -f install.sh
echo -e ""
echo "XrayR Management script usage method (compatible with xrayr execution, case insensitive): "
echo "------------------------------------------"
echo "XrayR - Show admin menu (more features)"
echo "XrayR start - start up XrayR"
echo "XrayR stop - stop XrayR"
echo "XrayR restart - restart XrayR"
echo "XrayR status - View XrayR status"
echo "XrayR enable - Set XrayR to start automatically at boot"
echo "XrayR disable - Cancel XrayR autostart"
echo "XrayR log - View XrayR logs"
echo "XrayR update - Update XrayR"
echo "XrayR update x.x.x - Update the specified version of XrayR"
echo "XrayR config - Show configuration file content"
echo "XrayR install - Install XrayR"
echo "XrayR uninstall - Uninstall XrayR"
echo "XrayR version - View XrayR version"
echo "------------------------------------------"
}
echo -e "${green}start installation${plain}"
install_base
# install_acme
install_XrayR $1