|
@@ -31,11 +31,11 @@
|
31
|
31
|
# You should have received a copy of the GNU Affero General Public License
|
32
|
32
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
33
|
33
|
|
34
|
|
-VARIANTS=''
|
|
34
|
+VARIANTS='full full-vim adblocker'
|
35
|
35
|
|
36
|
36
|
PIHOLE_IFACE=eth0
|
37
|
|
-PIHOLE_DNS1='8.8.8.8'
|
38
|
|
-PIHOLE_DNS2='8.8.4.4'
|
|
37
|
+PIHOLE_DNS1='85.214.73.63'
|
|
38
|
+PIHOLE_DNS2='213.73.91.35'
|
39
|
39
|
|
40
|
40
|
piholeBasename=pihole
|
41
|
41
|
piholeDir=/etc/$piholeBasename
|
|
@@ -51,6 +51,16 @@ pihole_variables=(ONION_ONLY
|
51
|
51
|
PIHOLE_DNS1
|
52
|
52
|
PIHOLE_DNS2)
|
53
|
53
|
|
|
54
|
+function pihole_copy_files {
|
|
55
|
+ cp $INSTALL_DIR/pihole/adlists.default $piholeDir/adlists.default
|
|
56
|
+ if [ ! -f $PIHOLE_ADLIST ]; then
|
|
57
|
+ cp $INSTALL_DIR/pihole/adlists.default $PIHOLE_ADLIST
|
|
58
|
+ fi
|
|
59
|
+ cp $INSTALL_DIR/pihole/advanced/Scripts/* /opt/$piholeBasename
|
|
60
|
+ cp $INSTALL_DIR/pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf
|
|
61
|
+ cp $INSTALL_DIR/pihole/advanced/pihole.cron /etc/cron.d/pihole
|
|
62
|
+}
|
|
63
|
+
|
54
|
64
|
function pihole_update {
|
55
|
65
|
if [ ! -f /usr/local/bin/gravity.sh ]; then
|
56
|
66
|
return
|
|
@@ -67,12 +77,138 @@ function pihole_update {
|
67
|
77
|
echo "piholeDNS1=${PIHOLE_DNS1}" >> ${setupVars}
|
68
|
78
|
echo "piholeDNS2=${PIHOLE_DNS1}" >> ${setupVars}
|
69
|
79
|
|
70
|
|
- /usr/local/bin/gravity.sh
|
|
80
|
+ echo 'domain-needed' > /etc/dnsmasq.conf
|
|
81
|
+ echo 'bogus-priv' >> /etc/dnsmasq.conf
|
|
82
|
+ echo 'no-resolv' >> /etc/dnsmasq.conf
|
|
83
|
+ echo "server=${PIHOLE_DNS1}" >> /etc/dnsmasq.conf
|
|
84
|
+ echo "server=${PIHOLE_DNS2}" >> /etc/dnsmasq.conf
|
|
85
|
+ echo "interface=${PIHOLE_IFACE}" >> /etc/dnsmasq.conf
|
|
86
|
+ echo 'listen-address=127.0.0.1' >> /etc/dnsmasq.conf
|
|
87
|
+ echo 'cache-size=10000' >> /etc/dnsmasq.conf
|
|
88
|
+ echo 'log-queries' >> /etc/dnsmasq.conf
|
|
89
|
+ echo 'log-facility=/var/log/pihole.log' >> /etc/dnsmasq.conf
|
|
90
|
+ echo 'local-ttl=300' >> /etc/dnsmasq.conf
|
|
91
|
+ echo 'log-async' >> /etc/dnsmasq.conf
|
|
92
|
+
|
|
93
|
+ systemctl reload dnsmasq
|
|
94
|
+
|
|
95
|
+ pihole -g
|
|
96
|
+}
|
|
97
|
+
|
|
98
|
+function pihole_change_upstream_dns {
|
|
99
|
+ data=$(tempfile 2>/dev/null)
|
|
100
|
+ trap "rm -f $data" 0 1 2 5 15
|
|
101
|
+ dialog --backtitle $"Ad Blocker Upstream DNS" \
|
|
102
|
+ --radiolist $"Pick a domain name service (DNS):" 25 50 16 \
|
|
103
|
+ 1 $"Digital Courage" on \
|
|
104
|
+ 2 $"German Privacy Foundation 1" off \
|
|
105
|
+ 3 $"German Privacy Foundation 2" off \
|
|
106
|
+ 4 $"Chaos Computer Club" off \
|
|
107
|
+ 5 $"ClaraNet" off \
|
|
108
|
+ 6 $"OpenNIC 1" off \
|
|
109
|
+ 7 $"OpenNIC 2" off \
|
|
110
|
+ 8 $"OpenNIC 3" off \
|
|
111
|
+ 9 $"OpenNIC 4" off \
|
|
112
|
+ 10 $"OpenNIC 5" off \
|
|
113
|
+ 11 $"OpenNIC 6" off \
|
|
114
|
+ 12 $"OpenNIC 7" off \
|
|
115
|
+ 13 $"PowerNS" off \
|
|
116
|
+ 14 $"ValiDOM" off \
|
|
117
|
+ 15 $"Freie Unzensierte" off \
|
|
118
|
+ 16 $"Google" off 2> $data
|
|
119
|
+ sel=$?
|
|
120
|
+ case $sel in
|
|
121
|
+ 1) exit 1;;
|
|
122
|
+ 255) exit 1;;
|
|
123
|
+ esac
|
|
124
|
+ case $(cat $data) in
|
|
125
|
+ 1) PIHOLE_DNS1='85.214.73.63'
|
|
126
|
+ PIHOLE_DNS2='213.73.91.35'
|
|
127
|
+ ;;
|
|
128
|
+ 2) PIHOLE_DNS1='87.118.100.175'
|
|
129
|
+ PIHOLE_DNS2='94.75.228.29'
|
|
130
|
+ ;;
|
|
131
|
+ 3) PIHOLE_DNS1='85.25.251.254'
|
|
132
|
+ PIHOLE_DNS2='2.141.58.13'
|
|
133
|
+ ;;
|
|
134
|
+ 4) PIHOLE_DNS1='213.73.91.35'
|
|
135
|
+ PIHOLE_DNS2='85.214.73.63'
|
|
136
|
+ ;;
|
|
137
|
+ 5) PIHOLE_DNS1='212.82.225.7'
|
|
138
|
+ PIHOLE_DNS2='212.82.226.212'
|
|
139
|
+ ;;
|
|
140
|
+ 6) PIHOLE_DNS1='58.6.115.42'
|
|
141
|
+ PIHOLE_DNS2='58.6.115.43'
|
|
142
|
+ ;;
|
|
143
|
+ 7) PIHOLE_DNS1='119.31.230.42'
|
|
144
|
+ PIHOLE_DNS2='200.252.98.162'
|
|
145
|
+ ;;
|
|
146
|
+ 8) PIHOLE_DNS1='217.79.186.148'
|
|
147
|
+ PIHOLE_DNS2='81.89.98.6'
|
|
148
|
+ ;;
|
|
149
|
+ 9) PIHOLE_DNS1='78.159.101.37'
|
|
150
|
+ PIHOLE_DNS2='203.167.220.153'
|
|
151
|
+ ;;
|
|
152
|
+ 10) PIHOLE_DNS1='82.229.244.191'
|
|
153
|
+ PIHOLE_DNS2='82.229.244.191'
|
|
154
|
+ ;;
|
|
155
|
+ 11) PIHOLE_DNS1='216.87.84.211'
|
|
156
|
+ PIHOLE_DNS2='66.244.95.20'
|
|
157
|
+ ;;
|
|
158
|
+ 12) PIHOLE_DNS1='207.192.69.155'
|
|
159
|
+ PIHOLE_DNS2='72.14.189.120'
|
|
160
|
+ ;;
|
|
161
|
+ 13) PIHOLE_DNS1='194.145.226.26'
|
|
162
|
+ PIHOLE_DNS2='77.220.232.44'
|
|
163
|
+ ;;
|
|
164
|
+ 14) PIHOLE_DNS1='78.46.89.147'
|
|
165
|
+ PIHOLE_DNS2='88.198.75.145'
|
|
166
|
+ ;;
|
|
167
|
+ 15) PIHOLE_DNS1='85.25.149.144'
|
|
168
|
+ PIHOLE_DNS2='87.106.37.196'
|
|
169
|
+ ;;
|
|
170
|
+ 16) PIHOLE_DNS1='8.8.8.8'
|
|
171
|
+ PIHOLE_DNS2='4.4.4.4'
|
|
172
|
+ ;;
|
|
173
|
+ 255) exit 1;;
|
|
174
|
+ esac
|
|
175
|
+ write_config_param "PIHOLE_DNS1" "$PIHOLE_DNS1"
|
|
176
|
+ write_config_param "PIHOLE_DNS2" "$PIHOLE_DNS2"
|
|
177
|
+ pihole_update
|
71
|
178
|
}
|
72
|
179
|
|
73
|
180
|
function configure_interactive_pihole {
|
74
|
|
- echo -n ''
|
75
|
|
- # TODO allow editing of blacklist
|
|
181
|
+ while true
|
|
182
|
+ do
|
|
183
|
+ data=$(tempfile 2>/dev/null)
|
|
184
|
+ trap "rm -f $data" 0 1 2 5 15
|
|
185
|
+ dialog --backtitle $"Freedombone Control Panel" \
|
|
186
|
+ --title $"Ad Blocker" \
|
|
187
|
+ --radiolist $"Choose an operation:" 14 70 5 \
|
|
188
|
+ 1 $"Edit ads list" off \
|
|
189
|
+ 2 $"Edit blacklisted domain names" off \
|
|
190
|
+ 3 $"Edit whitelisted domain names" off \
|
|
191
|
+ 4 $"Change upstream DNS servers" off \
|
|
192
|
+ 5 $"Exit" on 2> $data
|
|
193
|
+ sel=$?
|
|
194
|
+ case $sel in
|
|
195
|
+ 1) exit 1;;
|
|
196
|
+ 255) exit 1;;
|
|
197
|
+ esac
|
|
198
|
+ case $(cat $data) in
|
|
199
|
+ 1) editor $PIHOLE_ADLIST
|
|
200
|
+ pihole_update
|
|
201
|
+ ;;
|
|
202
|
+ 2) editor $PIHOLE_BLACKLIST
|
|
203
|
+ pihole_update
|
|
204
|
+ ;;
|
|
205
|
+ 3) editor $PIHOLE_WHITELIST
|
|
206
|
+ pihole_update
|
|
207
|
+ ;;
|
|
208
|
+ 4) pihole_change_upstream_dns;;
|
|
209
|
+ 5) break;;
|
|
210
|
+ esac
|
|
211
|
+ done
|
76
|
212
|
}
|
77
|
213
|
|
78
|
214
|
function install_interactive_pihole {
|
|
@@ -88,23 +224,31 @@ function reconfigure_pihole {
|
88
|
224
|
}
|
89
|
225
|
|
90
|
226
|
function upgrade_pihole {
|
|
227
|
+ function_check set_repo_commit
|
|
228
|
+ set_repo_commit $INSTALL_DIR/pihole "pihole commit" "$PIHOLE_COMMIT" $PIHOLE_REPO
|
|
229
|
+
|
|
230
|
+ pihole_copy_files
|
91
|
231
|
pihole_update
|
92
|
232
|
}
|
93
|
233
|
|
94
|
234
|
function backup_local_pihole {
|
95
|
|
- echo -n ''
|
|
235
|
+ function_check backup_directory_to_usb
|
|
236
|
+ backup_directory_to_usb $piholeDir pihole
|
96
|
237
|
}
|
97
|
238
|
|
98
|
239
|
function restore_local_pihole {
|
99
|
|
- echo -n ''
|
|
240
|
+ function_check restore_directory_from_usb
|
|
241
|
+ restore_directory_from_usb / pihole
|
100
|
242
|
}
|
101
|
243
|
|
102
|
244
|
function backup_remote_pihole {
|
103
|
|
- echo -n ''
|
|
245
|
+ function_check backup_directory_to_friend
|
|
246
|
+ backup_directory_to_friend $piholeDir pihole
|
104
|
247
|
}
|
105
|
248
|
|
106
|
249
|
function restore_remote_pihole {
|
107
|
|
- echo -n ''
|
|
250
|
+ function_check restore_directory_from_friend
|
|
251
|
+ restore_directory_from_friend / pihole
|
108
|
252
|
}
|
109
|
253
|
|
110
|
254
|
function remove_pihole {
|
|
@@ -146,17 +290,22 @@ function install_pihole {
|
146
|
290
|
adduser --disabled-login --gecos 'pi-hole' pihole
|
147
|
291
|
usermod -a -G www-data pihole
|
148
|
292
|
|
|
293
|
+ systemctl enable dnsmasq
|
|
294
|
+
|
149
|
295
|
if [ ! -d $INSTALL_DIR ]; then
|
150
|
296
|
mkdir -p $INSTALL_DIR
|
151
|
297
|
fi
|
152
|
298
|
|
153
|
|
- cd $INSTALL_DIR
|
154
|
|
- git_clone $PIHOLE_REPO pihole
|
155
|
299
|
if [ ! -d $INSTALL_DIR/pihole ]; then
|
156
|
|
- exit 523925
|
|
300
|
+ cd $INSTALL_DIR
|
|
301
|
+ git_clone $PIHOLE_REPO pihole
|
|
302
|
+ if [ ! -d $INSTALL_DIR/pihole ]; then
|
|
303
|
+ exit 523925
|
|
304
|
+ fi
|
|
305
|
+ cd $INSTALL_DIR/pihole
|
|
306
|
+ git checkout $PIHOLE_COMMIT -b $PIHOLE_COMMIT
|
|
307
|
+ set_completion_param "pihole commit" "$PIHOLE_COMMIT"
|
157
|
308
|
fi
|
158
|
|
- cd $INSTALL_DIR/pihole
|
159
|
|
- git checkout $PIHOLE_COMMIT -b $PIHOLE_COMMIT
|
160
|
309
|
|
161
|
310
|
if [ ! -d /var/www/pihole/htdocs ]; then
|
162
|
311
|
mkdir -p /var/www/pihole/htdocs
|
|
@@ -168,25 +317,16 @@ function install_pihole {
|
168
|
317
|
echo '</body>' >> /var/www/pihole/htdocs/index.html
|
169
|
318
|
echo '</html>' >> /var/www/pihole/htdocs/index.html
|
170
|
319
|
|
171
|
|
- echo 'domain-needed' > /etc/dnsmasq.conf
|
172
|
|
- echo 'bogus-priv' >> /etc/dnsmasq.conf
|
173
|
|
- echo 'no-resolv' >> /etc/dnsmasq.conf
|
174
|
|
- echo "server=${PIHOLE_DNS1}" >> /etc/dnsmasq.conf
|
175
|
|
- echo "server=${PIHOLE_DNS2}" >> /etc/dnsmasq.conf
|
176
|
|
- echo "interface=${PIHOLE_IFACE}" >> /etc/dnsmasq.conf
|
177
|
|
- echo 'listen-address=127.0.0.1' >> /etc/dnsmasq.conf
|
178
|
|
- echo 'cache-size=10000' >> /etc/dnsmasq.conf
|
179
|
|
- echo 'log-queries' >> /etc/dnsmasq.conf
|
180
|
|
- echo 'log-facility=/var/log/pihole.log' >> /etc/dnsmasq.conf
|
181
|
|
- echo 'local-ttl=300' >> /etc/dnsmasq.conf
|
182
|
|
- echo 'log-async' >> /etc/dnsmasq.conf
|
183
|
|
-
|
184
|
320
|
if [ ! -f $INSTALL_DIR/pihole/gravity.sh ]; then
|
185
|
321
|
exit 26738
|
186
|
322
|
fi
|
187
|
323
|
cp $INSTALL_DIR/pihole/gravity.sh /usr/local/bin/gravity.sh
|
188
|
|
- cp $INSTALL_DIR/pihole/pihole /usr/local/bin/pihole
|
189
|
324
|
chmod 755 /usr/local/bin/gravity.sh
|
|
325
|
+
|
|
326
|
+ if [ ! -f $INSTALL_DIR/pihole/pihole ]; then
|
|
327
|
+ exit 52935
|
|
328
|
+ fi
|
|
329
|
+ cp $INSTALL_DIR/pihole/pihole /usr/local/bin/pihole
|
190
|
330
|
chmod 755 /usr/local/bin/pihole
|
191
|
331
|
|
192
|
332
|
if [ ! -d $piholeDir ]; then
|
|
@@ -195,12 +335,9 @@ function install_pihole {
|
195
|
335
|
if [ ! -d /opt/pihole ]; then
|
196
|
336
|
mkdir -p /opt/pihole
|
197
|
337
|
fi
|
198
|
|
- cp $INSTALL_DIR/pihole/adlists.default $piholeDir/adlists.default:
|
199
|
|
- cp $INSTALL_DIR/pihole/advanced/Scripts/* /opt/$piholeBasename
|
200
|
|
- cp $INSTALL_DIR/pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf
|
201
|
|
- cp $INSTALL_DIR/pihole/advanced/pihole.cron /etc/cron.d/pihole
|
202
|
338
|
|
203
|
|
- systemctl enable dnsmasq
|
|
339
|
+ pihole_copy_files
|
|
340
|
+
|
204
|
341
|
chown -R www-data:www-data /var/www/pihole/htdocs
|
205
|
342
|
|
206
|
343
|
pihole_update
|