forked from helloxz/ccaa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ccaa.sh
265 lines (249 loc) · 7.36 KB
/
ccaa.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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
#!/bin/bash
##### 一键安装File Browser + Aria2 + AriaNg #####
##### 作者:xiaoz.me #####
##### 更新时间:2020-02-27 #####
#导入环境变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin
export PATH
#CDN域名设置
if [ $1 = 'cdn' ]
then
aria2_url='http://soft.xiaoz.top/linux/aria2-1.35.0-linux-gnu-64bit-build1.tar.bz2'
filebrowser_url='http://soft.xiaoz.top/linux/linux-amd64-filebrowser.tar.gz'
master_url='https://github.com/helloxz/ccaa/archive/master.zip'
ccaa_web_url='http://soft.xiaoz.top/linux/ccaa_web.tar.gz'
else
aria2_url='https://github.com/q3aql/aria2-static-builds/releases/download/v1.35.0/aria2-1.35.0-linux-gnu-64bit-build1.tar.bz2'
filebrowser_url='https://github.com/filebrowser/filebrowser/releases/download/v2.0.16/linux-amd64-filebrowser.tar.gz'
master_url='https://github.com/helloxz/ccaa/archive/master.zip'
ccaa_web_url='http://soft.xiaoz.org/linux/ccaa_web.tar.gz'
fi
#安装前的检查
function check(){
echo '-------------------------------------------------------------'
if [ -e "/etc/ccaa" ]
then
echo 'CCAA已经安装,若需要重新安装,请先卸载再安装!'
echo '-------------------------------------------------------------'
exit
else
echo '检测通过,即将开始安装。'
echo '-------------------------------------------------------------'
fi
}
#安装之前的准备
function setout(){
if [ -e "/usr/bin/yum" ]
then
yum -y install curl gcc make bzip2 gzip wget unzip tar
else
#更新软件,否则可能make命令无法安装
sudo apt-get update
sudo apt-get install -y curl make bzip2 gzip wget unzip sudo
fi
#创建临时目录
cd
mkdir ./ccaa_tmp
#创建用户和用户组
groupadd ccaa
useradd -M -g ccaa ccaa -s /sbin/nologin
}
#安装Aria2
function install_aria2(){
#进入临时目录
cd ./ccaa_tmp
#yum -y update
#安装aria2静态编译版本,来源于https://github.com/q3aql/aria2-static-builds/
wget -c ${aria2_url}
tar jxvf aria2-1.35.0-linux-gnu-64bit-build1.tar.bz2
cd aria2-1.35.0-linux-gnu-64bit-build1
make install
cd
}
#安装File Browser文件管理器
function install_file_browser(){
cd ./ccaa_tmp
#下载File Browser
wget ${filebrowser_url}
#解压
tar -zxvf linux-amd64-filebrowser.tar.gz
#移动位置
mv filebrowser /usr/sbin
cd
}
#处理配置文件
function dealconf(){
cd ./ccaa_tmp
#下载CCAA项目
wget ${master_url}
#解压
unzip master.zip
#复制CCAA核心目录
mv ccaa-master/ccaa_dir /etc/ccaa
#创建aria2日志文件
touch /var/log/aria2.log
#upbt增加执行权限
chmod +x /etc/ccaa/upbt.sh
chmod +x ccaa-master/ccaa
cp ccaa-master/ccaa /usr/sbin
cd
}
#自动放行端口
function chk_firewall(){
if [ -e "/etc/sysconfig/iptables" ]
then
iptables -I INPUT -p tcp --dport 6080 -j ACCEPT
iptables -I INPUT -p tcp --dport 6081 -j ACCEPT
iptables -I INPUT -p tcp --dport 6800 -j ACCEPT
iptables -I INPUT -p tcp --dport 6998 -j ACCEPT
iptables -I INPUT -p tcp --dport 51413 -j ACCEPT
service iptables save
service iptables restart
elif [ -e "/etc/firewalld/zones/public.xml" ]
then
firewall-cmd --zone=public --add-port=6080/tcp --permanent
firewall-cmd --zone=public --add-port=6081/tcp --permanent
firewall-cmd --zone=public --add-port=6800/tcp --permanent
firewall-cmd --zone=public --add-port=6998/tcp --permanent
firewall-cmd --zone=public --add-port=51413/tcp --permanent
firewall-cmd --reload
elif [ -e "/etc/ufw/before.rules" ]
then
sudo ufw allow 6080/tcp
sudo ufw allow 6081/tcp
sudo ufw allow 6800/tcp
sudo ufw allow 6998/tcp
sudo ufw allow 51413/tcp
fi
}
#删除端口
function del_post() {
if [ -e "/etc/sysconfig/iptables" ]
then
sed -i '/^.*6080.*/'d /etc/sysconfig/iptables
sed -i '/^.*6081.*/'d /etc/sysconfig/iptables
sed -i '/^.*6800.*/'d /etc/sysconfig/iptables
sed -i '/^.*6998.*/'d /etc/sysconfig/iptables
sed -i '/^.*51413.*/'d /etc/sysconfig/iptables
service iptables save
service iptables restart
elif [ -e "/etc/firewalld/zones/public.xml" ]
then
firewall-cmd --zone=public --remove-port=6080/tcp --permanent
firewall-cmd --zone=public --remove-port=6081/tcp --permanent
firewall-cmd --zone=public --remove-port=6800/tcp --permanent
firewall-cmd --zone=public --remove-port=6998/tcp --permanent
firewall-cmd --zone=public --remove-port=51413/tcp --permanent
firewall-cmd --reload
elif [ -e "/etc/ufw/before.rules" ]
then
sudo ufw delete 6080/tcp
sudo ufw delete 6081/tcp
sudo ufw delete 6800/tcp
sudo ufw delete 6998/tcp
sudo ufw delete 51413/tcp
fi
}
#添加服务
function add_service() {
if [ -d "/etc/systemd/system" ]
then
cp /etc/ccaa/services/* /etc/systemd/system
systemctl daemon-reload
fi
}
#设置账号密码
function setting(){
cd
cd ./ccaa_tmp
echo '-------------------------------------------------------------'
read -p "设置下载路径(请填写绝对地址,默认/data/ccaaDown):" downpath
read -p "Aria2 RPC 密钥:(字母或数字组合,不要含有特殊字符):" secret
#如果Aria2密钥为空
while [ -z "${secret}" ]
do
read -p "Aria2 RPC 密钥:(字母或数字组合,不要含有特殊字符):" secret
done
#如果下载路径为空,设置默认下载路径
if [ -z "${downpath}" ]
then
downpath='/data/ccaaDown'
fi
#获取ip
osip=$(curl -4s https://api.ip.sb/ip)
#执行替换操作
mkdir -p ${downpath}
sed -i "s%dir=%dir=${downpath}%g" /etc/ccaa/aria2.conf
sed -i "s/rpc-secret=/rpc-secret=${secret}/g" /etc/ccaa/aria2.conf
#替换filebrowser读取路径
sed -i "s%ccaaDown%${downpath}%g" /etc/ccaa/config.json
#替换AriaNg服务器链接
sed -i "s/server_ip/${osip}/g" /etc/ccaa/AriaNg/index.html
#更新tracker
bash /etc/ccaa/upbt.sh
#安装AriaNg
wget ${ccaa_web_url}
tar -zxvf ccaa_web.tar.gz
cp ccaa_web /usr/sbin/
chmod +x /usr/sbin/ccaa_web
#启动服务
nohup sudo -u ccaa aria2c --conf-path=/etc/ccaa/aria2.conf > /var/log/aria2.log 2>&1 &
#nohup caddy -conf="/etc/ccaa/caddy.conf" > /etc/ccaa/caddy.log 2>&1 &
nohup sudo -u ccaa /usr/sbin/ccaa_web > /var/log/ccaa_web.log 2>&1 &
#运行filebrowser
nohup sudo -u ccaa filebrowser -c /etc/ccaa/config.json > /var/log/fbrun.log 2>&1 &
#重置权限
chown -R ccaa:ccaa /etc/ccaa/
chown -R ccaa:ccaa ${downpath}
#注册服务
add_service
echo '-------------------------------------------------------------'
echo "大功告成,请访问: http://${osip}:6080/"
echo 'File Browser 用户名:ccaa'
echo 'File Browser 密码:admin'
echo 'Aria2 RPC 密钥:' ${secret}
echo '帮助文档: https://dwz.ovh/ccaa (必看)'
echo '-------------------------------------------------------------'
}
#清理工作
function cleanup(){
cd
rm -rf ccaa_tmp
#rm -rf *.conf
#rm -rf init
}
#卸载
function uninstall(){
wget -O ccaa-uninstall.sh https://raw.githubusercontent.com/helloxz/ccaa/master/uninstall.sh
bash ccaa-uninstall.sh
}
#选择安装方式
echo "------------------------------------------------"
echo "Linux + File Browser + Aria2 + AriaNg一键安装脚本(CCAA)"
echo "1) 安装CCAA"
echo "2) 卸载CCAA"
echo "3) 更新bt-tracker"
echo "q) 退出!"
read -p ":" istype
case $istype in
1)
check
setout
chk_firewall
install_aria2 && \
install_file_browser && \
dealconf && \
setting && \
cleanup
;;
2)
uninstall
;;
3)
bash /etc/ccaa/upbt.sh
;;
q)
exit
;;
*) echo '参数错误!'
esac