· 5 years ago · Feb 13, 2021, 12:42 PM
1#!/bin/bash
2
3cat << "EOF"
4 _____ __
5 _____/ ____\ _____ __ ___/ |_ ____ __ _______ _____
6_/ ___\ __\ ______ \__ \ | | \ __\/ _ \ ______ | | \__ \ / \
7\ \___| | /_____/ / __ \| | /| | ( <_> ) /_____/ | | // __ \| Y Y \
8 \___ >__| (____ /____/ |__| \____/ |____/(____ /__|_| /
9 \/ \/ \/ \/
10EOF
11
12printf "\033[1;34mWelcome to the cf-auto-uam installer.\r\nVersion 1.0\033[0m"
13printf "\r\n\r\n"
14
15if [ -d "/root/cf-auto-uam/" ]; then
16 printf "\033[1;31mDetected previous installation of cf-auto-uam.\r\n"
17 sleep .5
18 printf "Removing it...\r\n\033[0m"
19 rm -rf /root/cf-auto-uam
20fi
21
22sleep .5
23
24printf "\033[1;34m\nCloudFlare E-Mail (example@mail.com) :\n> \033[0m"
25read cfemail
26
27emailregex="^([A-Za-z]+[A-Za-z0-9]*((\.|\-|\_)?[A-Za-z]+[A-Za-z0-9]*){1,})@(([A-Za-z]+[A-Za-z0-9]*)+((\.|\-|\_)?([A-Za-z]+[A-Za-z0-9]*)+){1,})+\.([A-Za-z]{2,})+"
28
29if ! [[ $cfemail =~ $emailregex ]] ; then
30
31 printf "\033[1;31mInvalid email.\r\n\033[0m"
32 exit
33
34fi
35
36printf "\033[1;34m\nCloudFlare API Key :\n> \033[0m"
37read cfapikey
38
39printf "\033[1;34m\nCloudFlare Zone ID :\n> \033[0m"
40read cfzoneid
41
42if [[ -e /etc/debian_version ]]; then
43
44 printf "\033[1;32mUpdating and upgrading your system.\r\n\033[0m"
45 sleep 1
46 apt upgrade -y
47 apt update -y
48 sleep 1
49 printf "\033c"
50 printf "\033[1;32mInstalling depencies.\r\n\033[0m"
51 sleep 1
52 apt install cron curl bsdmainutils -y
53 sleep 1
54 printf "\033c"
55 printf "\033[1;32mBuilding files.\r\n\033[0m"
56 sleep 1
57 mkdir /root/cf-auto-uam
58 cd /root/cf-auto-uam
59cat > activate.sh << EOF
60#!/bin/bash
61loadavg=load.avg
62cat /proc/loadavg | colrm 6 > \$loadavg
63grep -w "[0.00-10.00]" \$loadavg > /dev/null
64if [ \$? -eq 0 ]
65then
66exit
67else
68bash /root/cf-auto-uam/uam.sh
69fi
70EOF
71cat > deactivate.sh << EOF
72#!/bin/bash
73loadavg=load.avg
74cat /proc/loadavg | colrm 6 > \$loadavg
75grep -w "[0.00-9.00]" \$loadavg > /dev/null
76if [ \$? -eq 0 ]
77then
78bash /root/cf-auto-uam/high.sh
79else
80exit
81fi
82EOF
83cat > high.sh << EOF
84curl -X PUT \
85 -H "X-Auth-Email: $cfemail" \
86 -H "X-Auth-Key: $cfapikey" \
87 -H "Content-Type: application/json" \
88 -d '{
89 "id": "f93c52a2b10e4dfabac0d59264c0d7b3",
90 "paused": false,
91 "description": "do not challenge login from office IPv6",
92 "action": "allow",
93 "priority": null,
94 "filter": {
95 "id": "c276ec914e19488c9a88a19ab6665f98",
96 "paused": false
97 }
98}' "https://api.cloudflare.com/client/v4/zones/$cfzoneid/firewall/rules/f93c52a2b10e4dfabac0d59264c0d7b3"
99EOF
100cat > uam.sh << EOF
101curl -X PUT \
102 -H "X-Auth-Email: $cfemail" \
103 -H "X-Auth-Key: $cfapikey" \
104 -H "Content-Type: application/json" \
105 -d '{
106 "id": "f93c52a2b10e4dfabac0d59264c0d7b3",
107 "paused": false,
108 "description": "do not challenge login from office IPv6",
109 "action": "js_challenge",
110 "priority": null,
111 "filter": {
112 "id": "c276ec914e19488c9a88a19ab6665f98",
113 "paused": false
114 }
115}' "https://api.cloudflare.com/client/v4/zones/$cfzoneid/firewall/rules/f93c52a2b10e4dfabac0d59264c0d7b3"
116EOF
117
118 touch /root/cf-auto-uam/load.avg
119 chmod 500 /root/cf-auto-uam/
120 chmod 500 /root/cf-auto-uam/activate.sh
121 chmod 500 /root/cf-auto-uam/deactivate.sh
122 chmod 500 /root/cf-auto-uam/high.sh
123 chmod 500 /root/cf-auto-uam/uam.sh
124 chmod 600 /root/cf-auto-uam/load.avg
125 crontab -l > cron1
126 echo "* * * * * cd /root/cf-auto-uam/ ; bash activate.sh" >> cron1
127 crontab cron1
128 rm cron1
129 crontab -l > cron2
130 echo "* * * * * cd /root/cf-auto-uam/ ; sleep 15 ; bash activate.sh" >> cron2
131 crontab cron2
132 rm cron2
133 crontab -l > cron3
134 echo "* * * * * cd /root/cf-auto-uam/ ; sleep 30 ; bash activate.sh" >> cron3
135 crontab cron3
136 rm cron3
137 crontab -l > cron4
138 echo "* * * * * cd /root/cf-auto-uam/ ; sleep 45 ; bash activate.sh" >> cron4
139 crontab cron4
140 rm cron4
141 crontab -l > cron5
142 echo "10,10 * * * * cd /root/cf-auto-uam/ ; bash deactivate.sh" >> cron5
143 crontab cron5
144 rm cron5
145 service cron restart
146
147elif [[ -e /etc/centos-release ]]; then
148
149 printf "\033[1;32mUpdating and upgrading your system.\r\n\033[0m"
150 sleep 1
151 yum upgrade -y
152 yum update -y
153 sleep 1
154 printf "\033c"
155 printf "\033[1;32mInstalling depencies.\r\n\033[0m"
156 sleep 1
157 yum install cronie curl util-linux-ng -y
158 sleep 1
159 printf "\033c"
160 printf "\033[1;32mBuilding files.\r\n\033[0m"
161 sleep 1
162 mkdir /root/cf-auto-uam
163 cd /root/cf-auto-uam
164cat > activate.sh << EOF
165#!/bin/bash
166loadavg=load.avg
167cat /proc/loadavg | colrm 6 > \$loadavg
168grep -w "[0.00-10.00]" \$loadavg > /dev/null
169if [ \$? -eq 0 ]
170then
171exit
172else
173bash /root/cf-auto-uam/uam.sh
174fi
175EOF
176cat > deactivate.sh << EOF
177#!/bin/bash
178loadavg=load.avg
179cat /proc/loadavg | colrm 6 > \$loadavg
180grep -w "[0.00-9.00]" \$loadavg > /dev/null
181if [ \$? -eq 0 ]
182then
183bash /root/cf-auto-uam/high.sh
184else
185exit
186fi
187EOF
188cat > high.sh << EOF
189curl -X PUT \
190 -H "X-Auth-Email: $cfemail" \
191 -H "X-Auth-Key: $cfapikey" \
192 -H "Content-Type: application/json" \
193 -d '{
194 "id": "f93c52a2b10e4dfabac0d59264c0d7b3",
195 "paused": false,
196 "description": "do not challenge login from office IPv6",
197 "action": "allow",
198 "priority": null,
199 "filter": {
200 "id": "c276ec914e19488c9a88a19ab6665f98",
201 "paused": false
202 }
203}' "https://api.cloudflare.com/client/v4/zones/$cfzoneid/firewall/rules/f93c52a2b10e4dfabac0d59264c0d7b3"
204EOF
205cat > uam.sh << EOF
206curl -X PUT \
207 -H "X-Auth-Email: $cfemail" \
208 -H "X-Auth-Key: $cfapikey" \
209 -H "Content-Type: application/json" \
210 -d '{
211 "id": "f93c52a2b10e4dfabac0d59264c0d7b3",
212 "paused": false,
213 "description": "do not challenge login from office IPv6",
214 "action": "js_challenge",
215 "priority": null,
216 "filter": {
217 "id": "c276ec914e19488c9a88a19ab6665f98",
218 "paused": false
219 }
220}' "https://api.cloudflare.com/client/v4/zones/$cfzoneid/firewall/rules/f93c52a2b10e4dfabac0d59264c0d7b3"
221EOF
222
223 touch /root/cf-auto-uam/load.avg
224 chmod 500 /root/cf-auto-uam/
225 chmod 500 /root/cf-auto-uam/activate.sh
226 chmod 500 /root/cf-auto-uam/deactivate.sh
227 chmod 500 /root/cf-auto-uam/high.sh
228 chmod 500 /root/cf-auto-uam/uam.sh
229 chmod 600 /root/cf-auto-uam/load.avg
230 crontab -l > cron1
231 echo "* * * * * cd /root/cf-auto-uam/ ; bash activate.sh" >> cron1
232 crontab cron1
233 rm cron1
234 crontab -l > cron2
235 echo "* * * * * cd /root/cf-auto-uam/ ; sleep 15 ; bash activate.sh" >> cron2
236 crontab cron2
237 rm cron2
238 crontab -l > cron3
239 echo "* * * * * cd /root/cf-auto-uam/ ; sleep 30 ; bash activate.sh" >> cron3
240 crontab cron3
241 rm cron3
242 crontab -l > cron4
243 echo "* * * * * cd /root/cf-auto-uam/ ; sleep 45 ; bash activate.sh" >> cron4
244 crontab cron4
245 rm cron4
246 crontab -l > cron5
247 echo "9,10 * * * * cd /root/cf-auto-uam/ ; bash deactivate.sh" >> cron5
248 crontab cron5
249 rm cron5
250 service crond restart
251
252else
253 printf "Looks like you aren't running this installer on Debian, Ubuntu or CentOS."
254 exit 1
255fi
256
257printf "\033[1;32mInstallation finished successfully without any errors!\033[0m"
258printf "\r\n\r\n"
259exit