Mercurial > hg > nginx-vendor-0-7
annotate contrib/geo2nginx.pl @ 366:babd3d9efb62 NGINX_0_6_27
nginx 0.6.27
*) Change: now by default the rtsig method is not built on
Linux 2.6.18+.
*) Change: now a request method is not changed while redirection to a
named location via an "error_page" directive.
*) Feature: the "resolver" and "resolver_timeout" directives in SMTP
proxy.
*) Feature: the "post_action" directive supports named locations.
*) Bugfix: a segmentation fault occurred in worker process, if a
request was redirected from proxy, FastCGI, or memcached location to
static named locations.
*) Bugfix: browsers did not repeat SSL handshake if there is no valid
client certificate in first handshake.
Thanks to Alexander V. Inyukhin.
*) Bugfix: if response code 495-497 was redirected via an "error_page"
directive without code change, then nginx tried to allocate too many
memory.
*) Bugfix: memory leak in long-lived non buffered connections.
*) Bugfix: memory leak in resolver.
*) Bugfix: a segmentation fault occurred in worker process, if a
request was redirected from proxy, FastCGI, or memcached location to
static named locations.
*) Bugfix: in the $proxy_host and $proxy_port variables caching.
Thanks to Sergey Bochenkov.
*) Bugfix: a "proxy_pass" directive with variables used incorrectly the
same port as in another "proxy_pass" directive with the same host
name and without variables.
Thanks to Sergey Bochenkov.
*) Bugfix: an alert "sendmsg() failed (9: Bad file descriptor)" on some
64-bit platforms while reconfiguration.
*) Bugfix: a segmentation fault occurred in worker process, if empty
stub block was used second time in SSI.
*) Bugfix: in copying URI part contained escaped symbols into arguments.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Wed, 12 Mar 2008 00:00:00 +0300 |
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 } |