Mercurial > hg > nginx-vendor-current
annotate contrib/geo2nginx.pl @ 482:392c16f2d858 NGINX_0_7_53
nginx 0.7.53
*) Change: now a log set by --error-log-path is created from the very
start-up.
*) Feature: now the start up errors and warnings are outputted to an
error_log and stderr.
*) Feature: the empty --prefix= configure parameter forces nginx to use
a directory where it was run as prefix.
*) Feature: the -p switch.
*) Feature: the -s switch on Unix platforms.
*) Feature: the -? and -h switches.
Thanks to Jerome Loyet.
*) Feature: now switches may be set in condensed form.
*) Bugfix: nginx/Windows did not work if configuration file was given
by the -c switch.
*) Bugfix: temporary files might be not removed if the "proxy_store",
"fastcgi_store", "proxy_cache", or "fastcgi_cache" were used.
Thanks to Maxim Dounin.
*) Bugfix: an incorrect value was passed to mail proxy authentication
server in "Auth-Method" header line; the bug had appeared
in 0.7.34.
Thanks to Simon Lecaille.
*) Bugfix: system error text descriptions were not logged on Linux;
the bug had appeared in 0.7.45.
*) Bugfix: the "fastcgi_cache_min_uses" directive did not work.
Thanks to Andrew Vorobyoff.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 27 Apr 2009 00:00:00 +0400 |
parents | 962c43960644 |
children |
rev | line source |
---|---|
86 | 1 #!/usr/bin/perl -w |
2 | |
3 # (c) Andrei Nigmatulin, 2005 | |
4 # | |
5 # this script provided "as is", without any warranties. use it at your own risk. | |
6 # | |
7 # special thanx to Andrew Sitnikov for perl port | |
8 # | |
9 # this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country) | |
10 # to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx) | |
11 # | |
12 # for example, line with ip range | |
13 # | |
14 # "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation" | |
15 # | |
16 # will be converted to four subnetworks: | |
17 # | |
18 # 62.16.68.0/22 RU; | |
19 # 62.16.72.0/21 RU; | |
20 # 62.16.80.0/20 RU; | |
21 # 62.16.96.0/19 RU; | |
22 | |
23 | |
24 use warnings; | |
25 use strict; | |
26 | |
27 while( <STDIN> ){ | |
28 if (/"[^"]+","[^"]+","([^"]+)","([^"]+)","([^"]+)"/){ | |
29 print_subnets($1, $2, $3); | |
30 } | |
31 } | |
32 | |
33 sub print_subnets { | |
34 my ($a1, $a2, $c) = @_; | |
35 my $l; | |
36 while ($a1 <= $a2) { | |
37 for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){}; | |
38 print long2ip($a1) . "/" . (32 - $l) . " " . $c . ";\n"; | |
39 $a1 += (1 << $l); | |
40 } | |
41 } | |
42 | |
43 sub long2ip { | |
44 my $ip = shift; | |
45 | |
46 my $str = 0; | |
47 | |
48 $str = ($ip & 255); | |
49 | |
50 $ip >>= 8; | |
51 $str = ($ip & 255).".$str"; | |
52 | |
53 $ip >>= 8; | |
54 $str = ($ip & 255).".$str"; | |
55 | |
56 $ip >>= 8; | |
57 $str = ($ip & 255).".$str"; | |
58 } |