拒绝或允许具有Apache .htaccess的国家/地区

拒绝或允许国家与Apache .htaccess

介绍

以下脚本使用blogama.org IP地理位置API自动生成Apache .htaccess文件以拒绝或允许特定国家/地区。 您可以将此脚本放在crontab下,并自动更新.htaccess规则。 此外,它可以更新多个.htaccess文件。

资料来源: http : //blogama.org

拒绝还是允许?

首先,您需要了解这两个规则在.htaccess文件中的含义。 如果在“美国,加州”(美国和加拿大)的国家/地区的脚本中设置“拒绝”,则美国或加拿大的所有流量将被阻止。 另一方面,如果您设置“允许”,则只接受来自这两个国家的流量,所有其他国家都被阻止。

国家代码

您需要知道要拒绝/允许的ISO国家/地区代码。 列表在这里可用。

没有自动脚本的用法

去:

http://blogama.org/country_query.php?country=CA,US&output=htaccess_deny

哪个国家是列表或国家,它们之间的逗号和输出是htaccess_denyhtaccess_allow

脚本如何工作?

您将必须创建一个文本文件,其中包含希望使用脚本更新的所有.htaccess文件(具有完整路径)。 如果您的.htaccess文件中有其他信息,它们将仍然保留在该位置,脚本将仅更新标签“#COUNTRY_BLOCK_START”和“#COUNTRY_BLOCK_END”之间的部分。

在开始脚本之前

创建一个名为htaccessfile.txt的文本文件(在脚本的WORKDIR中,见下文)。 在该文件中,放置要更新的所有(现有的).htaccess文件。 例如:

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

脚本配置

在脚本之上,您可以找到本节。 如果需要,您需要修改这些变量:

###MODIFY THIS SECTION###
WORKDIR="/root/"
HTACCESSFILE="htaccessfile.txt"
HTACCESSBLOCK="htaccess-blocklist.txt"
TEMPFILE="htaccess.temp"
COUNTRIES="US,CA"
TYPE="allow"
#########################

WORKDIR :是脚本所在的可写目录。
HTACCESSFILE :是您将放置.htaccess路径的文件。
HTACCESSBLOCKTEMPFILE :是脚本执行结束时将被删除的临时文件。
COUNTRIES :是要拒绝/允许的国家/地区列表,用逗号分隔。
类型 :“允许”或“拒绝”访问这些国家。

剧本

#!/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
使其可执行:
chmod +x whatever_you_called_this_script
将其添加到您的crontab中:
* * * * * /path/to/whatever_you_called_this_script >/dev/null 2>&1

注意:使用此脚本您自担风险。 如果您发现任何错误或看不到应有的功能,请发布在Blogama.org论坛的论坛

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏