]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
geoip-generator: added to build legacy GeoIP.dat file
authorArne Fitzenreiter <arne_f@ipfire.org>
Sat, 24 Aug 2019 09:29:01 +0000 (11:29 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sat, 24 Aug 2019 09:29:01 +0000 (11:29 +0200)
program and scripts based on debian geoip packages.

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
config/rootfiles/common/geoip-generator [new file with mode: 0644]
lfs/geoip-generator [new file with mode: 0644]
make.sh
src/scripts/xt_geoip_update

diff --git a/config/rootfiles/common/geoip-generator b/config/rootfiles/common/geoip-generator
new file mode 100644 (file)
index 0000000..6ff83c0
--- /dev/null
@@ -0,0 +1,16 @@
+#usr/bin/geoiplookup
+#usr/bin/geoiplookup6
+#usr/include/GeoIP.h
+#usr/include/GeoIPCity.h
+#usr/lib/libGeoIP.a
+#usr/lib/libGeoIP.la
+usr/lib/libGeoIP.so
+usr/lib/libGeoIP.so.1
+usr/lib/libGeoIP.so.1.6.12
+#usr/lib/pkgconfig/geoip.pc
+#usr/share/GeoIP/bin
+usr/share/GeoIP/bin/countryInfo.txt
+usr/share/GeoIP/bin/geoip-generator
+usr/share/GeoIP/bin/geolite2-to-legacy-csv.sh
+#usr/share/man/man1/geoiplookup.1
+#usr/share/man/man1/geoiplookup6.1
diff --git a/lfs/geoip-generator b/lfs/geoip-generator
new file mode 100644 (file)
index 0000000..3091d32
--- /dev/null
@@ -0,0 +1,89 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 1.6.12
+DVER       = 1.6.12-3
+
+THISAPP    = geoip-api-c-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE) geoip_$(DVER).debian.tar.xz
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE) 
+geoip_$(DVER).debian.tar.xz = $(DL_FROM)/geoip_$(DVER).debian.tar.xz
+
+$(DL_FILE)_MD5                  = 727e5d6df9e9fc039dbc3a323cc56d2e
+geoip_$(DVER).debian.tar.xz_MD5 = 64fb561362dc456b45b799da20d47dd4
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./bootstrap
+       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       cd $(DIR_APP) && tar axf $(DIR_DL)/geoip_$(DVER).debian.tar.xz
+       cd $(DIR_APP) && sed -i "s/use diagnostics;//g" debian/src/geolite2-to-legacy-csv.sh
+       cd $(DIR_APP) && g++ -std=gnu++11 -g debian/src/geoip-csv-to-dat.cpp \
+                               -o geoip-generator -lGeoIP
+       -mkdir -p /usr/share/GeoIP/bin
+       cd $(DIR_APP) && install -m 755 geoip-generator /usr/share/GeoIP/bin
+       cd $(DIR_APP) && install -m 755 debian/src/geolite2-to-legacy-csv.sh /usr/share/GeoIP/bin
+       cd $(DIR_APP) && install -m 644 debian/src/countryInfo.txt /usr/share/GeoIP/bin
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index 316d939f74b79175f25701482475a941e39dfba6..909fe2430e6a37ddd4b70fb5d18988ddccc4b825 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -1626,6 +1626,7 @@ buildipfire() {
   lfsmake2 flashrom
   lfsmake2 firmware-update
   lfsmake2 tshark
+  lfsmake2 geoip-generator
 }
 
 buildinstaller() {
index 93884dcf5b67de12467c467b67a4af0f0cca32dd..b9490dbcfc449cda9e7d80d29a2c2f6de8747133 100644 (file)
@@ -25,6 +25,7 @@ TMP_FILE=$(mktemp -p $TMP_PATH)
 SCRIPT_PATH=/usr/local/bin
 DEST_PATH=/usr/share/xt_geoip
 DB_PATH=/var/lib/GeoIP
+DB1_PATH=/usr/share/GeoIP
 
 DL_URL=https://geolite.maxmind.com/download/geoip/database
 DL_FILE=GeoLite2-Country-CSV.zip
@@ -82,6 +83,21 @@ function install() {
        return 0
 }
 
+function build_legacy() {
+       # Create temporary directory.
+       mkdir -pv $TMP_PATH
+       
+       echo "Convert database to legacy GeoIP.dat ..."
+       cat $DB_PATH/GeoLite2-Country-Blocks-IPv4.csv | \
+           $DB1_PATH/bin/geolite2-to-legacy-csv.sh $DB1_PATH/bin/countryInfo.txt > \
+           $TMP_FILE
+       $DB1_PATH/bin/geoip-generator -v -4 --info="$(date -u +'GEO-106FREE %Y%m%d Build')" -o \
+           $DB1_PATH/GeoIP.dat $TMP_FILE
+
+       return 0
+}
+
+
 function build() {
        echo "Convert database..."
 
@@ -121,7 +137,12 @@ function main() {
        # Convert the ruleset.
        build || exit $?
 
+       # Convert GeoIP2 to lagacy.
+       build_legacy || exit $?
        return 0
+
+       # Remove temporary files.
+       cleanup || exit $?
 }
 
 # Run the main function.