forked from helloxz/ccaa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ccaa.sh
236 lines (220 loc) · 6.33 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
#!/bin/bash
##### 一键安装Caddy + Aria2 + AriaNg #####
##### 作者:xiaoz.me #####
##### 更新时间:2019-05-15 #####
#导入环境变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin
export PATH
#安装之前的准备
function setout(){
if [ -e "/usr/bin/yum" ]
then
yum -y install curl gcc gcc+ make bzip2
else
#更新软件,否则可能make命令无法安装
sudo apt-get update
sudo apt-get install -y curl make
fi
}
#安装Aria2
function install_aria2(){
#yum -y update
#安装aria2静态编译版本,来源于https://github.com/q3aql/aria2-static-builds/
wget -c http://soft.xiaoz.org/linux/aria2-1.34.0-linux-gnu-64bit-build1.tar.bz2
tar jxvf aria2-1.34.0-linux-gnu-64bit-build1.tar.bz2
cd aria2-1.34.0-linux-gnu-64bit-build1
make install
cd ..
}
#安装caddy
function install_caddy(){
#一键安装https://caddyserver.com/download/linux/amd64?plugins=http.filemanager&license=personal&telemetry=off
#curl https://getcaddy.com | bash -s personal http.filemanager
#安装caddy
wget http://soft.xiaoz.org/linux/caddy_v0.11.0_linux_amd64_custom_personal.tar.gz -O caddy.tar.gz
tar -zxvf caddy.tar.gz
mv caddy /usr/sbin/
chmod +x /usr/sbin/caddy
#添加服务
#mv init/linux-systemd/caddy.service /lib/systemd/system
#chmod +x /lib/systemd/system/caddy.service
#开机启动
#systemctl enable caddy.service
}
#处理配置文件
function dealconf(){
#创建目录和文件
mkdir -p /etc/ccaa/
touch /etc/ccaa/aria2.session
touch /etc/ccaa/aria2.log
touch /etc/ccaa/caddy.log
cp aria2.conf /etc/ccaa/
cp caddy.conf /etc/ccaa/
cp upbt.sh /etc/ccaa/
chmod +x /etc/ccaa/upbt.sh
chmod +x ccaa
cp ccaa /usr/sbin
}
#自动放行端口
function chk_firewall(){
if [ -e "/etc/sysconfig/iptables" ]
then
iptables -I INPUT -p tcp --dport 6080 -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=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 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 '/^.*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=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 6800/tcp
sudo ufw delete 6998/tcp
sudo ufw delete 51413/tcp
fi
}
#设置账号密码
function setting(){
echo '-------------------------------------------------------------'
read -p "设置下载路径(请填写绝对地址,默认/data/ccaaDown):" downpath
read -p "Aria2 RPC 密钥:(字母或数字组合,不要含有特殊字符):" secret
#如果Aria2密钥为空
while [ -z "${secret}" ]
do
read -p "Aria2 RPC 密钥:(字母或数字组合,不要含有特殊字符):" secret
done
read -p "设置Caddy用户名:" caddyuser
while [ -z "${caddyuser}" ]
do
read -p "设置Caddy用户名:" caddyuser
done
read -p "设置Caddy密码:" caddypass
while [ -z "${caddypass}" ]
do
read -p "设置Caddy密码:" caddypass
done
#如果下载路径为空,设置默认下载路径
if [ -z "${downpath}" ]
then
downpath='/data/ccaaDown'
fi
#执行替换操作
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
sed -i "s/username/${caddyuser}/g" /etc/ccaa/caddy.conf
sed -i "s/password/${caddypass}/g" /etc/ccaa/caddy.conf
#sed -i "s%/home%${downpath}%g" /etc/ccaa/caddy.conf
sed -i "s%/admin%/admin ${downpath}%g" /etc/ccaa/caddy.conf
#更新tracker
bash ./upbt.sh
#安装AriaNg
wget http://soft.xiaoz.org/website/AriaNg.zip
unzip AriaNg.zip
cp -a AriaNg /etc/ccaa
#启动服务
nohup aria2c --conf-path=/etc/ccaa/aria2.conf > /etc/ccaa/aria2.log 2>&1 &
nohup caddy -conf="/etc/ccaa/caddy.conf" > /etc/ccaa/caddy.log 2>&1 &
#获取ip
osip=$(curl -4s https://api.ip.sb/ip)
echo '-------------------------------------------------------------'
echo "大功告成,请访问: http://${osip}:6080/"
echo '用户名:' ${caddyuser}
echo '密码:' ${caddypass}
echo 'Aria2 RPC 密钥:' ${secret}
echo '帮助文档: https://dwz.ovh/ccaa (必看)'
echo '-------------------------------------------------------------'
}
#清理工作
function cleanup(){
rm -rf *.zip
rm -rf *.gz
rm -rf *.txt
rm -rf aria2-1.34*
#rm -rf *.conf
rm -rf init
}
#卸载
function uninstall(){
#停止所有服务
kill -9 $(pgrep 'aria2c')
kill -9 $(pgrep 'caddy')
#删除服务
#systemctl disable caddy.service
#rm -rf /lib/systemd/system/caddy.service
#删除文件
rm -rf /etc/ccaa
rm -rf /usr/sbin/caddy
rm -rf /usr/sbin/ccaa
rm -rf /usr/bin/aria2c
rm -rf aria2-1.*
rm -rf AriaNg*
rm -rf /usr/share/man/man1/aria2c.1
rm -rf /etc/ssl/certs/ca-certificates.crt
#删除端口
del_post
echo "------------------------------------------------"
echo '卸载完成!'
echo "------------------------------------------------"
}
#选择安装方式
echo "------------------------------------------------"
echo "Linux + Caddy + Aria2 + AriaNg一键安装脚本(CCAA)"
echo "1) 安装CCAA"
echo "2) 卸载CCAA"
echo "3) 更新bt-tracker"
echo "q) 退出!"
read -p ":" istype
case $istype in
1)
setout
install_aria2 && \
install_caddy && \
dealconf && \
chk_firewall && \
setting && \
cleanup
;;
2)
uninstall
;;
3)
bash ./upbt.sh
;;
q)
exit
;;
*) echo '参数错误!'
esac