diff --git a/.dev-tools/install-nginx-2.sh b/.dev-tools/install-nginx-2.sh new file mode 100755 index 000000000..7b9635f29 --- /dev/null +++ b/.dev-tools/install-nginx-2.sh @@ -0,0 +1,142 @@ +#!/bin/bash +# Travis CI Generating and Building for the Nginx Ultimate Bad Bot Blocker (using non standard folder locations) +# Created by: Mitchell Krog (mitchellkrog@gmail.com) +# Copyright: Mitchell Krog - https://github.com/mitchellkrogza +# Repo Url: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker + +# MIT License + +# Copyright (c) 2017 Mitchell Krog - mitchellkrog@gmail.com +# https://github.com/mitchellkrogza + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# *************************************************************** +# Start Getting Nginx Ready for Testing the Nginx Bad Bot Blocker +# *************************************************************** + +# ************************************************* +# Delete default site created by Nginx Installation +# ************************************************* + +sudo rm /etc/nginx/sites-available/default +sudo rm /etc/nginx/sites-enabled/default +sudo rm /var/www/html/* + +# ******************************************************** +# Copy our default.vhost file into Nginx /sites-available/ +# ******************************************************** + +sudo cp $TRAVIS_BUILD_DIR/.dev-tools/default.vhost /etc/nginx/sites-available/default.vhost + +# ********************************************** +# Link the vhost file into Nginx /sites-enabled/ +# ********************************************** + +sudo ln -s /etc/nginx/sites-available/default.vhost /etc/nginx/sites-enabled/default.vhost + +# *********************************************************** +# Copy our index.php file into the default site's root folder +# *********************************************************** + +sudo cp $TRAVIS_BUILD_DIR/.dev-tools/index.php /var/www/html/index.php + +# *********************************************************************** +# Download the Nginx Bad Bot Blocker setup files from the Live Repository +# *********************************************************************** + +sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -O /usr/sbin/install-ngxblocker +sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/setup-ngxblocker -O /usr/sbin/setup-ngxblocker +sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/update-ngxblocker -O /usr/sbin/update-ngxblocker + +# ************************************************** +# Set our install and setup scripts to be executable +# ************************************************** + +sudo chmod +x /usr/sbin/install-ngxblocker +sudo chmod +x /usr/sbin/setup-ngxblocker +sudo chmod +x /usr/sbin/update-ngxblocker + +# ************************************************************************* +# Let's create a folder for the bots.d and conf.d not using Nginx standards +# ************************************************************************* + +sudo mkdir /usr/local/nginx +sudo mkdir /usr/local/nginx/conf.d +sudo mkdir /usr/local/nginx/bots.d + +# ********************** +# Run Install-NgxBlocker +# ********************** + +cd /usr/sbin +sudo ./install-ngxblocker -x -b /usr/local/bots.d -c /usr/local/nginx/conf.d + +# ******************** +# Run setup-ngxblocker +# ******************** + +cd /usr/sbin +sudo ./setup-ngxblocker -x -b /usr/local/bots.d -c /usr/local/nginx/conf.d + +# ************************ +# Load our Nginx.conf file +# ************************ + +sudo nginx -c /etc/nginx/nginx.conf + +# **************************************************************************************** +# Run update-ngxblocker test which downloads latest globalblacklist.conf and reloads Nginx +# **************************************************************************************** + +cd /usr/sbin +sudo ./update-ngxblocker -b /usr/local/bots.d -e mitchellkrog@gmail.com + +# ********************* +# Force reload of Nginx +# ********************* + +sudo service nginx reload + +# ***************************************************************************************** +# Travis now moves into running the rest of the tests in the script: section of .travis.yml +# ***************************************************************************************** + +# MIT License + +# Copyright (c) 2017 Mitchell Krog - mitchellkrog@gmail.com +# https://github.com/mitchellkrogza + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. \ No newline at end of file diff --git a/.dev-tools/install-nginx.sh b/.dev-tools/install-nginx.sh index d2ac456ff..bbaa94ecf 100755 --- a/.dev-tools/install-nginx.sh +++ b/.dev-tools/install-nginx.sh @@ -125,7 +125,9 @@ sudo chmod +x $TRAVIS_BUILD_DIR/.dev-tools/generate-regex-format-referrers.php sudo chmod +x $TRAVIS_BUILD_DIR/.dev-tools/modify-config-readme-files.sh sudo chmod +x $TRAVIS_BUILD_DIR/.dev-tools/modify-files-and-commit.sh sudo chmod +x $TRAVIS_BUILD_DIR/.dev-tools/run-curl-tests.sh +sudo chmod +x $TRAVIS_BUILD_DIR/.dev-tools/run-curl-tests2.sh sudo chmod +x $TRAVIS_BUILD_DIR/.dev-tools/prepare-robots-input.sh +sudo chmod +x $TRAVIS_BUILD_DIR/.dev-tools/install-nginx-2.sh # ***************************************************************************************** # Travis now moves into running the rest of the tests in the script: section of .travis.yml diff --git a/.dev-tools/run-curl-tests-2.sh b/.dev-tools/run-curl-tests-2.sh new file mode 100755 index 000000000..42b61cff9 --- /dev/null +++ b/.dev-tools/run-curl-tests-2.sh @@ -0,0 +1,132 @@ +#!/bin/bash +# Curl Testing Script for Nginx Ultimate Bad Bot Blocker (using non standard folder locations) +# Created by: Mitchell Krog (mitchellkrog@gmail.com) +# Copyright: Mitchell Krog - https://github.com/mitchellkrogza +# Repo Url: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker + +# ******************************************* +# Set Location of our Curl Test Results Files +# ******************************************* + +_curltest1=$TRAVIS_BUILD_DIR/.dev-tools/_curl_tests/curltest1.txt +_curltest2=$TRAVIS_BUILD_DIR/.dev-tools/_curl_tests/curltest2.txt +_curltest3=$TRAVIS_BUILD_DIR/.dev-tools/_curl_tests/curltest3.txt +_curltest4=$TRAVIS_BUILD_DIR/.dev-tools/_curl_tests/curltest4.txt +_curltest5=$TRAVIS_BUILD_DIR/.dev-tools/_curl_tests/curltest5.txt +_curltest6=$TRAVIS_BUILD_DIR/.dev-tools/_curl_tests/curltest6.txt +_now="$(date)" + +# ************************************************* +# Function Curl Test 1 - Check for Bad Bot "80legs" +# ************************************************* + +run_curltest1 () { +truncate -s 0 $_curltest1 +printf '%s%s\n\n' "Last Tested: " "$_now" >> "$_curltest1" +curl -A "80legs" http://localhost:9000/index.php 2>> $_curltest1 +if grep -i '(52)' $_curltest1; then + echo 'BAD BOT DETECTED - TEST PASSED' +else + echo 'BAD BOT NOT DETECTED - TEST FAILED' + #exit 1 +fi +} + +# ************************************************** +# Function Curl Test 2 - Check for Bad Bot "masscan" +# ************************************************** + +run_curltest2 () { +truncate -s 0 $_curltest2 +printf '%s%s\n\n' "Last Tested: " "$_now" >> "$_curltest2" +curl -A "masscan" http://localhost:9000/index.php 2>> $_curltest2 +if grep -i '(52)' $_curltest2; then + echo 'BAD BOT DETECTED - TEST PASSED' +else + echo 'BAD BOT NOT DETECTED - TEST FAILED' + #exit 1 +fi +} + +# ****************************************************************** +# Function Curl Test 3 - Check for Bad Referrer "100dollars-seo.com" +# ****************************************************************** + +run_curltest3 () { +truncate -s 0 $_curltest3 +printf '%s%s\n\n' "Last Tested: " "$_now" >> "$_curltest3" +curl -I http://localhost:9000/index.php -e http://100dollars-seo.com 2>> $_curltest3 +if grep -i '(52)' $_curltest3; then + echo 'BAD REFERRER DETECTED - TEST PASSED' +else + echo 'BAD REFERRER NOT DETECTED - TEST FAILED' + #exit 1 +fi +} + +# ****************************************************** +# Function Curl Test 4 - Check for Bad Referrer "zx6.ru" +# ****************************************************** + +run_curltest4 () { +truncate -s 0 $_curltest4 +printf '%s%s\n\n' "Last Tested: " "$_now" >> "$_curltest4" +curl -I http://localhost:9000/index.php -e http://zx6.ru 2>> $_curltest4 +if grep -i '(52)' $_curltest4; then + echo 'BAD REFERRER DETECTED - TEST PASSED' +else + echo 'BAD REFERRER NOT DETECTED - TEST FAILED' + #exit 1 +fi +} + +# ***************************************************** +# Function Curl Test 5 - Check for Good Bot "GoogleBot" +# ***************************************************** + +run_curltest5 () { +truncate -s 0 $_curltest5 +printf '%s%s\n\n' "Last Tested: " "$_now" >> "$_curltest5" +curl -v -A "GoogleBot" http://localhost:9000/index.php 2>&1 >> $_curltest5 +if grep -i 'Welcome' $_curltest5; then + echo 'GOOD BOT ALLOWED THROUGH - TEST PASSED' +else + echo 'GOOD BOT NOT ALLOWED THROUGH - TEST FAILED' + #exit 1 +fi +} + +# *************************************************** +# Function Curl Test 6 - Check for Good Bot "BingBot" +# *************************************************** + +run_curltest6 () { +truncate -s 0 $_curltest6 +printf '%s%s\n\n' "Last Tested: " "$_now" >> "$_curltest6" +curl -v -A "BingBot" http://localhost:9000/index.php 2>&1 >> $_curltest6 +if grep -i 'Welcome' $_curltest6; then + echo 'GOOD BOT ALLOWED THROUGH - TEST PASSED' +else + echo 'GOOD BOT NOT ALLOWED THROUGH - TEST FAILED' + #exit 1 +fi +} + + +# ********************************* +# Trigger our curl functions to run +# ********************************* + +run_curltest1 +run_curltest2 +run_curltest3 +run_curltest4 +run_curltest5 +run_curltest6 + +# **************************************** +# If everything passed then we exit with 0 +# **************************************** + +exit 0 + diff --git a/.travis.yml b/.travis.yml index f262eac1c..afcac1bb9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,6 +34,8 @@ install: script: - bash .dev-tools/install-nginx.sh - bash .dev-tools/run-curl-tests.sh + - bash -x .dev-tools/install-nginx-2.sh + - bash .dev-tools/run-curl-tests-2.sh - bash -x .dev-tools/modify-files-and-commit.sh before_deploy: