#!/bin/sh
# Copyright 2019 Jordan Geoghegan

# Permission to use, copy, modify, and/or distribute this software for any 
# purpose with or without fee is hereby granted, provided that the above 
# copyright notice and this permission notice appear in all copies.

# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
# PERFORMANCE OF THIS SOFTWARE.

# Version 0.2 - Released October 2019

# Download and parse StevenBlack hosts file into unbound compatible format

tmpdir=$(mktemp -d)

function random_string {
	cat /dev/urandom | head -n 100 | sha256 
}

function abort {
	cp /dev/null /var/unbound/etc/adblock.conf ; rm -r $tmpdir ; exit 1
}
	
ftp -o $tmpdir/$(random_string) https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
awk 'BEGIN { OFS = "" } NF == 2 && $1 == "0.0.0.0" { print "local-zone: \"", $2, "\" static"}' $tmpdir/* > /var/unbound/etc/adblock.conf
unbound-checkconf || abort
doas rcctl reload unbound

# Clean up after ourselves
rm -r $tmpdir
