From 3daf287de836ab88400bbe6ab27c051b49337165 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 24 May 2013 13:46:17 +0000 Subject: [PATCH] GeoIPv6: - Handle gzipped input data in merge tool - Add script to generate compressed data - Add local additions - Add compressed data file, generated from Maxmind data fetched 2013-05-24 - Include data in installer and updater - Update Maxmind license info, now CC-SA 3.0 --- LICENSE.txt | 2 +- build.xml | 5 ++- installer/resources/geoipv6-extras.csv | 9 +++++ installer/resources/geoipv6.dat.gz | Bin 0 -> 88279 bytes installer/resources/makegeoipv6.sh | 19 +++++++++ licenses/LICENSE-GeoIP.txt | 36 +++--------------- .../src/net/i2p/router/transport/GeoIPv6.java | 11 +++++- 7 files changed, 49 insertions(+), 33 deletions(-) create mode 100644 installer/resources/geoipv6-extras.csv create mode 100644 installer/resources/geoipv6.dat.gz create mode 100755 installer/resources/makegeoipv6.sh diff --git a/LICENSE.txt b/LICENSE.txt index 741c1ea51..9ee382af2 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -207,7 +207,7 @@ Applications: FatCow icons: See licenses/LICENSE-FatCowIcons.txt GeoIP Data: - Copyright (c) 2008 MaxMind, Inc. All Rights Reserved. + This product includes GeoLite data created by MaxMind, available from http://www.maxmind.com/ See licenses/LICENSE-GeoIP.txt Router Console and I2PSnark themes: diff --git a/build.xml b/build.xml index 6caac7170..07073e1a3 100644 --- a/build.xml +++ b/build.xml @@ -1121,7 +1121,9 @@ - + + + @@ -1137,6 +1139,7 @@ + diff --git a/installer/resources/geoipv6-extras.csv b/installer/resources/geoipv6-extras.csv new file mode 100644 index 000000000..414882684 --- /dev/null +++ b/installer/resources/geoipv6-extras.csv @@ -0,0 +1,9 @@ +# Local geoIPv6 additions +# Format: from IP,to IP,,,country code[,"country name"] +#### +# common tunnel brokers +2001:5c0:1000:a::,2001:5c0:1000:a::,,,X1,"Freenet6 anonymous" +2001:5c0:1000:b::,2001:5c0:1000:b::,,,X2,"Freenet6 authenticated" +2001:5c0:1100::,2001:5c0:11ff:ffff:ffff:ffff:ffff:ffff,,,X3,"Freenet6 delegated" +# other interesting addresses +2002::,2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff,,,X4,"IPv4 compatibility" diff --git a/installer/resources/geoipv6.dat.gz b/installer/resources/geoipv6.dat.gz new file mode 100644 index 0000000000000000000000000000000000000000..fe9273dd338227c489b5bf5d809c370fb1b88179 GIT binary patch literal 88279 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 XK;Jm6Kn}-U{ZYoe{)N@{pMUrtdHJ~2 literal 0 HcmV?d00001 diff --git a/installer/resources/makegeoipv6.sh b/installer/resources/makegeoipv6.sh new file mode 100755 index 000000000..390e4ed4b --- /dev/null +++ b/installer/resources/makegeoipv6.sh @@ -0,0 +1,19 @@ +#!/bin/sh +# +# Fetch the latest file from Maxmind, merge with +# our additions, and compress. +# + +FILE1=GeoIPv6.csv.gz +FILE2=geoipv6-extras.csv +FILEOUT=geoipv6.dat.gz + +rm -f $FILE1 $FILEOUT +wget http://geolite.maxmind.com/download/geoip/database/$FILE1 +if [ "$?" -ne "0" ] +then + echo 'Cannot fetch' + exit 1 +fi +java -cp ../../build/i2p.jar:../../build/router.jar net.i2p.router.transport.GeoIPv6 $FILE1 $FILE2 $FILEOUT +exit $? diff --git a/licenses/LICENSE-GeoIP.txt b/licenses/LICENSE-GeoIP.txt index 6f5b0713d..0c91833ef 100644 --- a/licenses/LICENSE-GeoIP.txt +++ b/licenses/LICENSE-GeoIP.txt @@ -1,32 +1,8 @@ -OPEN DATA LICENSE (GeoLite Country and GeoLite City databases) +The GeoLite databases are distributed under the +Creative Commons Attribution-ShareAlike 3.0 Unported License +http://creativecommons.org/licenses/by-sa/3.0/ . +The attribution requirement may be met by including the following in +all advertising and documentation mentioning features of or use of this database: -Copyright (c) 2008 MaxMind, Inc. All Rights Reserved. - -All advertising materials and documentation mentioning features or use of -this database must display the following acknowledgment: "This product includes GeoLite data created by MaxMind, available from -http://maxmind.com/" - -Redistribution and use with or without modification, are permitted provided -that the following conditions are met: -1. Redistributions must retain the above copyright notice, this list of -conditions and the following disclaimer in the documentation and/or other -materials provided with the distribution. -2. All advertising materials and documentation mentioning features or use of -this database must display the following acknowledgement: -"This product includes GeoLite data created by MaxMind, available from -http://maxmind.com/" -3. "MaxMind" may not be used to endorse or promote products derived from this -database without specific prior written permission. - -THIS DATABASE IS PROVIDED BY MAXMIND, INC ``AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL MAXMIND BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -DATABASE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - +http://www.maxmind.com/" diff --git a/router/java/src/net/i2p/router/transport/GeoIPv6.java b/router/java/src/net/i2p/router/transport/GeoIPv6.java index 93affec88..36e443c08 100644 --- a/router/java/src/net/i2p/router/transport/GeoIPv6.java +++ b/router/java/src/net/i2p/router/transport/GeoIPv6.java @@ -151,7 +151,9 @@ class GeoIPv6 { int count = 0; InputStream in = null; try { - in = new FileInputStream(geoFile); + in = new BufferedInputStream(new FileInputStream(geoFile)); + if (geoFile.getName().endsWith(".gz")) + in = new GZIPInputStream(in); String buf = null; BufferedReader br = new BufferedReader(new InputStreamReader(in, "ISO-8859-1")); while ((buf = br.readLine()) != null) { @@ -314,6 +316,13 @@ class GeoIPv6 { return rv; } + /** + * Merge and compress CSV files to I2P compressed format + * + * GeoIP infile1.csv[.gz] [infile2.csv[.gz]...] outfile.dat.gz + * + * Used to create the file for distribution, do not comment out + */ public static void main(String args[]) { if (args.length < 2) { System.err.println("Usage: GeoIP infile1.csv [infile2.csv...] outfile.dat.gz");