-/var/ipfire/rpz/allowlist
-/var/ipfire/rpz/blocklist
+/var/ipfire/dns/rpz/allowlist
+/var/ipfire/dns/rpz/blocklist
/etc/unbound/zonefiles/allow.rpz
/etc/unbound/zonefiles/block.rpz
/etc/unbound/local.d/*rpz.conf
usr/sbin/rpz-metrics
usr/sbin/rpz-sleep
var/ipfire/backup/addons/includes/rpz
-var/ipfire/rpz
-var/ipfire/rpz/allowlist
-var/ipfire/rpz/blocklist
+var/ipfire/dns/rpz
+var/ipfire/dns/rpz/allowlist
+var/ipfire/dns/rpz/blocklist
# #
###############################################################################
-# v22 - 2024-07-12
+# v23 - 2024-07-30
############### Functions ###############
make_rpz_file () {
local theType="${1}" # allow or block
- theList="/var/ipfire/rpz/${theType}list" # input user list of domains
+ theList="/var/ipfire/dns/rpz/${theType}list" # input custom list of domains
theZoneFile="/etc/unbound/zonefiles/${theType}.rpz" # output file for RPZ
theAction='.'
- if [[ "${theType}" =~ "block" ]] ; then
+ if [[ "${theType}" =~ "allow" ]] ; then
theAction='rpz-passthru.'
fi
# set-up zone file
/usr/bin/touch "${rpzFile}"
# unbound requires these settings for rpz files
- /bin/chown --verbose nobody:nobody "${rpzFile}"
- /bin/chmod --verbose 644 "${rpzFile}"
+ /bin/chown nobody:nobody "${rpzFile}"
+ /bin/chmod 644 "${rpzFile}"
;;
# trash config file & rpz file
fi
msg_log "info: rpz: remove config file & rpz file \"${theName}\""
- /bin/rm --verbose "${rpzConfig}"
- /bin/rm --verbose "${rpzFile}"
+ /bin/rm "${rpzConfig}"
+ /bin/rm "${rpzFile}"
check_unbound_conf
;;
# #
###############################################################################
-# v18 on 2024-07-05
+# v19 on 2024-07-30
############### Main ###############
# get the list of RPZ names & counts from the message log(s)
rpzNameCount=$( for logf in ${messageLogs} ; do
- /usr/bin/zgrep --text --fixed-strings 'info: rpz: applied' "${logf}" |
+ /usr/bin/zgrep --text --extended-regexp 'info: rpz: applied.* A IN$' "${logf}" |
/usr/bin/awk '$10 ~ /\[\w*]/ { print $10 }' ;
done | /usr/bin/sort | /usr/bin/uniq --count )
theLines=$( /bin/echo "${output}" | /usr/bin/awk '{ print $1 }' )
totalLines=$(( totalLines + theLines ))
- #hitsPerLine=$( echo "scale=0 ; $theHits / $theLines" | bc )
- hitsPerLine=$(( 100 * theHits / theLines ))
+ if [[ "${theLines}" -gt 2 ]] ; then
+ hitsPerLine=$(( 100 * theHits / theLines ))
+ fi
fi
# get modification date
$(DIR_CONF)/rpz/{rpz-config,rpz-metrics,rpz-sleep} -t /usr/sbin
# Install settings folder and two empty files
- mkdir -pv /var/ipfire/rpz
- touch /var/ipfire/rpz/allowlist
- touch /var/ipfire/rpz/blocklist
+ mkdir -pv /var/ipfire/dns/rpz
+ touch /var/ipfire/dns/rpz/allowlist
+ touch /var/ipfire/dns/rpz/blocklist
# Add conf file to /etc directory
cp -vf $(DIR_CONF)/rpz/00-rpz.conf /etc/unbound/local.d
--- /dev/null
+#!/bin/bash
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2024 IPFire Team <info@ipfire.org> #
+# #
+# This program 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 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program 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, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+extract_files
+restore_backup ${NAME}
+
+# restart unbound to load config file
+/etc/init.d/unbound restart
--- /dev/null
+#!/bin/bash
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2024 IPFire Team <info@ipfire.org> #
+# #
+# This program 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 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program 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, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+
+# stop unbound to delete RPZ conf file
+/etc/init.d/unbound stop
+
+make_backup ${NAME}
+remove_files
+
+# start unbound to load unbound config file
+/etc/init.d/unbound start
--- /dev/null
+#!/bin/bash
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2024 IPFire Team <info@ipfire.org> #
+# #
+# This program 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 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program 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, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+extract_backup_includes
+./uninstall.sh
+./install.sh