maza-ad-blocking/maza
2020-01-04 08:32:22 +01:00

146 lines
3.1 KiB
Bash
Executable File

#!/bin/sh
# START
set -e
# VARIABLES
PROGNAME=$(basename $0)
CONFIG=($HOME/.maza/)
HOST_FILE=(/etc/hosts)
COLOR_RED=`tput setaf 1`
COLOR_GREEN=`tput setaf 2`
COLOR_RESET=`tput sgr0`
LIST="list"
LIST_DNSMASQ="dnsmasq.conf"
START_TAG="## MAZA - List ad blocking"
PROJECT="### https://github.com/tanrax/maza-ad-blocking"
AUTHOR="### Created by Andros Fenollosa (https://programadorwebvalencia.com/)"
END_TAG="## END MAZA"
# FUNCTIONS
## HELP
usage() {
if [ "$*" != "" ] ; then
echo "Error: $*"
fi
cat << EOF
Usage: $PROGNAME [OPTION]
Simple and efficient local ad blocking throughout the network.
Options:
status Check if it's active or not
update Update the list of DNS to be blocked
start Activate blocking DNS.
stop Stop blocking DNS.
--help Display this usage message and exit
EOF
exit 1
}
status() {
if grep -qF "$START_TAG" "$HOST_FILE";then
echo "${COLOR_GREEN}ENABLED${COLOR_RESET}"
else
echo "${COLOR_RED}DISABLED${COLOR_RESET}"
fi
}
update() {
# Make conf folder
rm -f $CONFIG/$LIST
rm -f $CONFIG/$LIST_DNSMASQ
mkdir -p $CONFIG
# Download DNS list
curl -L -s "https://pgl.yoyo.org/adservers/serverlist.php?showintro=0&mimetype=plaintext" -o "$CONFIG/$LIST"
# Clear list
## Remove comments
sed -i .bak '/^#/ d' "$CONFIG/$LIST"
# Make dnsmasq format
## 127.0.0.1 doubleclick.net to address=/doubleclick.net/127.0.0.1
cp "$CONFIG/$LIST" "$CONFIG/$LIST_DNSMASQ"
sed -i .bak 's/127.0.0.1 /address=\//g' "$CONFIG/$LIST_DNSMASQ"
sed -i .bak 's/$/\/127.0.0.1/g' "$CONFIG/$LIST_DNSMASQ"
## Add start tag DNS list in first line
sed -i .bak "1i\\
$AUTHOR
" "$CONFIG/$LIST"
sed -i .bak "1i\\
$PROJECT
" "$CONFIG/$LIST"
sed -i .bak "1i\\
$START_TAG
" "$CONFIG/$LIST"
## Add end tag DNS list in first line
echo $END_TAG >> "$CONFIG/$LIST"
## Add start tag DNS dnsmasq in first line
sed -i .bak "1i\\
$AUTHOR
" "$CONFIG/$LIST_DNSMASQ"
sed -i .bak "1i\\
$PROJECT
" "$CONFIG/$LIST_DNSMASQ"
sed -i .bak "1i\\
$START_TAG
" "$CONFIG/$LIST_DNSMASQ"
## Add end tag DNS DNSMASQ in first line
echo $END_TAG >> "$CONFIG/$LIST_DNSMASQ"
# Remove temp file
rm "$CONFIG$LIST.bak"
# Notify user
echo "${COLOR_GREEN}Done!${COLOR_RESET}"
}
start() {
# Add List to host file
cat "$CONFIG/$LIST" >> "$HOST_FILE"
# Notify user
echo "${COLOR_GREEN}ENABLED!${COLOR_RESET}"
}
stop() {
# Remove list to host file
sed -i -n "/$START_TAG/,/$END_TAG/d" "$HOST_FILE"
# Remove temp file
#rm "$HOST_FILE.bak"
# Notify user
echo "${COLOR_GREEN}DISABLED!${COLOR_RESET}"
}
# CONTROLE ARGUMENTS
isArg=""
while [ $# -gt 0 ] ; do
case "$1" in
--help)
usage
;;
status)
isArg="1"
status
;;
update)
isArg="1"
update
;;
start)
isArg="1"
start
;;
stop)
isArg="1"
stop
;;
*)
esac
shift
done
if [ -z $isArg ] ; then
usage "Not enough arguments"
fi