Skip to content

Commit

Permalink
improve updatenginxblocker.sh
Browse files Browse the repository at this point in the history
adds compatibility for reloading Nginx on:

* Arch Linux (does not have a 'service' command)
* OpenRC (older versions do not have /sbin/service)

tested on Debian / Arch / Centos / Alpine Linux
  • Loading branch information
itoffshore committed Mar 25, 2017
1 parent 05a7835 commit 41797e4
Showing 1 changed file with 40 additions and 11 deletions.
51 changes: 40 additions & 11 deletions updatenginxblocker.sh
Original file line number Diff line number Diff line change
@@ -1,26 +1,55 @@
#!/bin/bash
# Bash Script for Auto Updating the Nginx Bad Bot Blocker
#!/bin/sh

# Shell Script for Auto Updating the Nginx Bad Bot Blocker
# Copyright - https://github.com/mitchellkrogza
# Project Url: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker
# Alpine / Arch Linux / Debian / Centos script compatibility by Stuart Cardall

# MAKE SURE you have your whitelist-ips.conf and whitelist-domains.conf files in /etc/nginx/bots.d
# A major change to using include files was introduced in
# https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/commit/c7acdfa8228d2f19a83e5bb14d54355db86fcebf

# PLEASE READ UPDATED CONFIGURATION INSTRUCTIONS BEFORE USING THIS

# Save this file as /bin/updatenginxblocker.sh
# Make it Executable chmod +x /bin/updatenginxblocker.sh
# Save this file as /usr/sbin/updatenginxblocker
# Make it Executable chmod 700 /usr/sbin/updatenginxblocker

# RUN THE UPDATE
# Here our script runs, pulls the latest update, reloads nginx and emails you a notification
# Place your own valid email address where it says "[email protected]"

cd /etc/nginx/conf.d
sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/conf.d/globalblacklist.conf -O globalblacklist.conf
sudo service nginx reload | mail -s "Nginx Bad Bot Blocker Updated" [email protected]
exit 0

email="[email protected]"
conf_dir=/etc/nginx/conf.d
url=https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/conf.d/globalblacklist.conf

service_cmd() {
# arch linux does not have a 'service' command
local svc= svc_list="service systemctl rc-service"

for svc in $svc_list; do
svc=$(which $svc 2>/dev/null)
if [ -n "$svc" ]; then
echo $svc
exit 0
fi
done
}

# require root
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi

# default to service (centos does not have 'which' by default)
service=${service_cmd:-"service"}

# download update & email notification
mkdir -p $conf_dir
wget $url -O $conf_dir/globalblacklist.conf
$service nginx reload | mail -s "Nginx Bad Bot Blocker Updated" $email

exit $?

# Add this as a cron to run daily / weekly as you like
# Here's a sample CRON entry to update every day at 10pm
# 00 22 * * * /bin/updatenginxblocker.sh
# 00 22 * * * /usr/sbin/updatenginxblocker

0 comments on commit 41797e4

Please sign in to comment.