On Wed, 05 Mar 2003, [EMAIL PROTECTED] wrote:
> I wrote this little script to block out IPs in the ranges specified
> in some blacklists (see URL list in the script) by rewriting
> /etc/sysconfig/iptables, but perhaps it will be useful for other
> purposes as well. I would appreciate suggestions for improvements,
> or notes on how I'm doing it all wrong :)
>
> The marker I use to detect lines previously generated by this
> program is "-i+" (all interfaces), which is redundant and thus not
> specified normally. I couldn't find another way to easily mark
> lines without actually generating a new chain, which was more time
> than I wanted to spend writing this script...
Oops, apparently "-i+" does not work properly (I must have had the old
rules in place when I was testing). Patch attached to make it use
"-i e+" instead. Sorry.
Ted
Index: rewrite-iptables.pl
===================================================================
RCS file: /usr/home/lifelogs/cvsroot/articles/snippets/rewrite-iptables.pl,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- rewrite-iptables.pl 5 Mar 2003 16:05:44 -0000 1.3
+++ rewrite-iptables.pl 6 Mar 2003 11:15:31 -0000 1.4
@@ -30,7 +30,7 @@
# printf ("%s/%s\n", $_->base, $_->size) foreach @ranges;
};
-if (m/-i\+ -j REJECT$/)
+if (m/-i e\+ -j REJECT$/)
{
# don't print anything (remove the old range)
}
@@ -44,7 +44,7 @@
$line = $_; # save in case $_ gets corrupted
if ($chainfound)
{
- printf ("$chainfind -s %s/%s -i+ -j REJECT\n", $_->base, $_->bits) foreach @ranges;
+ printf ("$chainfind -s %s/%s -i e+ -j REJECT\n", $_->base, $_->bits) foreach @ranges;
}
print $line;