Управление доступом стран к Web-серверу через .htaccess

Вступление

Следующий скрипт использует географическое API для автоматического создания .htaccess файла с разрешением доступа конкретным странам.Вы можете использовать этот скрипт в Crontab-е и .htaccess правила будут автоматически обновляться. Кроме того, он может изменить несколько .htaccess файлов.

Источник: http://blogama.org

Запрещать или разрешать?

Сначала вы должны понять смысл этих двух правил в. htaccess файле.Если Вы установите опцию «deny» в сценарий для стран «US, CA» (США и Канада), весь трафик из США или Канады будет заблокирован.С другой стороны, если вы установите «allow», он будет принимать только трафик из этих двух стран, все остальные локируются.

Код страны

Вы должны знать, ISO код страны для deny / allow. Список доступен здесь .

Использование без автоматизированного сценария

Перейти к:http://blogama.org/country_query.php?country=CA,US&output=htaccess_deny

В тех случаях, когда страна или список стран, ставится запятая между ними и получаем вывода либо htaccess_deny или htaccess_allow.

Как скрипт работает?

Вы должны создать текстовый файл со всеми. htaccess файлами (с полными путями), которые вы хотели бы обновить в сценарие. Если у вас есть другие настройки, в .htaccess файлах они остануться там, скрипт будет обновлять только часть между тегами «# COUNTRY_BLOCK_START» и «# COUNTRY_BLOCK_END».

Перед началом работы со сценарием

Создайте текстовый файл с именем htaccessfile.txt (в WorkDir сценария, см. ниже). В этом файле перечислете все (существующий) .htaccess файлы какие вы хотите обновить. Например:

/var/www/example.com/.htaccess
/var/www/mydomain.com/.htaccess

Скрипт конфигурации

На начале сценария, вы найдете этот раздел. Вы должны изменить эти переменные, если это необходимо:

[bash]###MODIFY THIS SECTION###
WORKDIR=»/root/»
HTACCESSFILE=»htaccessfile.txt»
HTACCESSBLOCK=»htaccess-blocklist.txt»
TEMPFILE=»htaccess.temp»
COUNTRIES=»US,CA»
TYPE=»allow»
#########################[/bash]
WorkDir: это запись в каталог, где скрипт будет располагаться.
HTACCESSFILE: это файл, где вы можете указать свои .htaccess.
HTACCESSBLOCK и TEMPFILE: временные файлы, будут удалены в конце работы скрипта.
COUNTRIES: это список стран, которые вы хотите deny/allow, разделенных запятыми.
TYPE: «allow» или «deny» доступ в эти страны.

Скрипт

[bash]

#!/bin/bash
###BLOGAMA.ORG###
###MODIFY THIS SECTION###
WORKDIR="/root/"
HTACCESSFILE="htaccessfile.txt"
HTACCESSBLOCK="htaccess-blocklist.txt"
TEMPFILE="htaccess.temp"
COUNTRIES="US,CA"
TYPE="deny"
#########################
#####DO NOT MAKE MODIFICATIONS BELOW#####
cd $WORKDIR
#Get the file from blogama.org API
wget -c --output-document=$HTACCESSBLOCK "http://blogama.org/country_query.php?country=$COUNTRIES&output=htaccess_$TYPE"
for i in $( cat $WORKDIR$HTACCESSFILE ); do
        if [ -f $i ]; then
                cat $i 2>&1 | grep "COUNTRY_BLOCK_START"
                if [ "$?" -ne "1" ]; then #ALREADY IN HTACCESS
                        sed '/#COUNTRY_BLOCK_START/,/#COUNTRY_BLOCK_END/d' $i > $WORKDIR$TEMPFILE
                        cat $WORKDIR$HTACCESSBLOCK >> $WORKDIR$TEMPFILE
                        mv $WORKDIR$TEMPFILE $i
                else #NOT IN HTACCESS
                        cat $WORKDIR$HTACCESSBLOCK >> $i
                fi
        fi
done
rm -f $WORKDIR$HTACCESSBLOCK

[/bash]
Сделайте его исполняемым:
[sh]chmod +x whatever_you_called_this_script[/sh]
Добавьте его на ваш Crontab:
[sh]* * * * * /path/to/whatever_you_called_this_script >/dev/null 2>&1[/sh]
Примечание: Используйте этот скрипт на свой страх и риск. Если вы обнаружите какую-либо ошибку или увидите
что скрипт не работает как следует, пожалуйста, задайте вопрос на форумах в Blogama.org форумах.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой:

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.