summaryrefslogtreecommitdiff
path: root/sbin/e2guardian-update-blacklists
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/e2guardian-update-blacklists')
-rwxr-xr-xsbin/e2guardian-update-blacklists147
1 files changed, 147 insertions, 0 deletions
diff --git a/sbin/e2guardian-update-blacklists b/sbin/e2guardian-update-blacklists
new file mode 100755
index 0000000..c58c96b
--- /dev/null
+++ b/sbin/e2guardian-update-blacklists
@@ -0,0 +1,147 @@
+#!/bin/bash
+
+# Copyright (C) 2016 by Mike Gabriel <mike.gabriel@it-zukunft-schule.de>
+
+# This script is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This script is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+set -e
+
+unset http_proxy
+unset https_proxy
+unset ftp_proxy
+
+BLACKLIST_URL="http://dsi.ut-capitole.fr/blacklists/download/blacklists_for_dansguardian.tar.gz"
+
+function update_blacklists() {
+ mkdir -p /var/lib/e2guardian/
+ curl "${BLACKLIST_URL}" 1> /var/lib/e2guardian/blacklists.tar.gz 2>/dev/null
+
+ if [ -e /var/lib/e2guardian/.blacklists.new ]; then
+ rm -Rf /var/lib/e2guardian/.blacklists.new
+ fi
+
+ mkdir -p /var/lib/e2guardian/.blacklists.new
+
+ cd /var/lib/e2guardian/.blacklists.new
+ tar xzf /var/lib/e2guardian/blacklists.tar.gz
+
+ mv blacklists/* .
+ rmdir blacklists/
+
+ cd - 1>/dev/null
+
+ if [ -e /var/lib/e2guardian/blacklists.old ]; then
+ rm -Rf /var/lib/e2guardian/blacklists.old
+ fi
+
+ if [ -d /var/lib/e2guardian/blacklists ]; then
+ mv /var/lib/e2guardian/blacklists /var/lib/e2guardian/blacklists.old
+ fi
+
+ if [ ! -e /var/lib/e2guardian/blacklists ]; then
+ mv /var/lib/e2guardian/.blacklists.new /var/lib/e2guardian/blacklists
+
+ LANG=C date 1> /var/lib/e2guardian/last-updated.txt
+
+ chown root:root -Rf /var/lib/e2guardian/blacklists
+ chmod -Rf a+r /var/lib/e2guardian/blacklists
+ cd /var/lib/e2guardian/blacklists
+ find * -type d | while read dir; do
+ chmod a+x "${dir}"
+ done
+ cd - 1> /dev/null
+
+ fi
+
+ if [ -e /var/lib/e2guardian/blacklists.tar.gz ]; then
+ rm -f /var/lib/e2guardian/blacklists.tar.gz
+ fi
+}
+
+function update_whitelists() {
+ if [ -d /var/lib/e2guardian/whitelists.old ]; then
+ rm -Rf /var/lib/e2guardian/whitelists.old
+ fi
+ if [ -d /var/lib/e2guardian/whitelists ]; then
+ mv /var/lib/e2guardian/whitelists /var/lib/e2guardian/whitelists.old
+ fi
+
+ mkdir -p /var/lib/e2guardian/whitelists
+ find /var/lib/e2guardian/blacklists/*/usage | while read usage; do
+ # skip symlinked dirs
+ if [ -h "$(dirname "${usage}")" ]; then
+ continue
+ fi
+ if grep -q "white" < "${usage}" && ! grep -q "black" < "${usage}"; then
+ mv "$(dirname "${usage}")" /var/lib/e2guardian/whitelists
+ fi
+ done
+}
+
+function init_config() {
+ if [ ! -e "/etc/debian-edu/e2guardian_blacklisted_categories" ]; then
+ find /var/lib/e2guardian/blacklists/* -maxdepth 1 -type d| cut -d "/" -f6 >> /etc/debian-edu/e2guardian_blacklisted_categories
+ fi
+ if [ ! -e "/etc/debian-edu/e2guardian_whitelisted_categories" ]; then
+ find /var/lib/e2guardian/whitelists/* -maxdepth 1 -type d| cut -d "/" -f6 >> /etc/debian-edu/e2guardian_whitelisted_categories
+ fi
+}
+
+function rearrange_lists() {
+ cat "/etc/debian-edu/e2guardian_whitelisted_categories" | while read whitelisted; do
+ if [ -d "/var/lib/e2guardian/blacklists/${whitelisted}" ] && \
+ [ ! -h "/var/lib/e2guardian/blacklists/${whitelisted}" ]; then
+ mv "/var/lib/e2guardian/blacklists/${whitelisted}" /var/lib/e2guardian/whitelists
+ fi
+ done
+
+ cat "/etc/debian-edu/e2guardian_blacklisted_categories" | while read blacklisted; do
+ if [ -d "/var/lib/e2guardian/whitelists/${blacklisted}" ] && \
+ [ ! -h "/var/lib/e2guardian/whitelists/${blacklisted}" ]; then
+ mv "/var/lib/e2guardian/whitelists/${blacklisted}" /var/lib/e2guardian/blacklists
+ fi
+ done
+}
+
+function update_lists() {
+ action=${1}
+ type="${2}"
+ list="${3}"
+
+ sed -i "/etc/e2guardian/lists/${list}" -Ee "/(#|).Include<.*\/${action}s\/.*>$/d"
+
+ find /var/lib/e2guardian/${action}s/*/${type} -type f -maxdepth 1 2>/dev/null | sort | while read path; do
+ # ignore symlinks pointing to another category dir
+ if [ ! -h "$(echo $path | cut -d "/" -f 1-6)" ]; then
+ echo "#.Include<${path}>" >> "/etc/e2guardian/lists/${list}"
+ fi
+ done
+
+ cat /etc/debian-edu/e2guardian_${action}ed_categories | grep -v "^#" | while read category; do
+ sed -i "/etc/e2guardian/lists/${list}" -Ee "s/#(.Include<.*\/${category}\/${type})/\1/"
+ done
+}
+
+update_blacklists
+update_whitelists
+init_config
+rearrange_lists
+update_lists blacklist domains bannedsitelist
+update_lists blacklist urls bannedurllist
+update_lists blacklist expressions bannedregexpurllist
+update_lists whitelist domains exceptionsitelist
+update_lists whitelist urls exceptionurllist
+#invoke-rc.d e2guardian restart 1>/dev/null 2>/dev/null