From: Arne Fitzenreiter Date: Sat, 24 Aug 2019 09:29:01 +0000 (+0200) Subject: geoip-generator: added to build legacy GeoIP.dat file X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=392994dcfb01b913f5bb9db4ca129fdbdbf39569;p=people%2Fms%2Fipfire-2.x.git geoip-generator: added to build legacy GeoIP.dat file program and scripts based on debian geoip packages. Signed-off-by: Arne Fitzenreiter --- diff --git a/config/rootfiles/common/geoip-generator b/config/rootfiles/common/geoip-generator new file mode 100644 index 0000000000..6ff83c036f --- /dev/null +++ b/config/rootfiles/common/geoip-generator @@ -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 index 0000000000..3091d32c72 --- /dev/null +++ b/lfs/geoip-generator @@ -0,0 +1,89 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2018 IPFire Team # +# # +# 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 . # +# # +############################################################################### + +############################################################################### +# 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 316d939f74..909fe2430e 100755 --- a/make.sh +++ b/make.sh @@ -1626,6 +1626,7 @@ buildipfire() { lfsmake2 flashrom lfsmake2 firmware-update lfsmake2 tshark + lfsmake2 geoip-generator } buildinstaller() { diff --git a/src/scripts/xt_geoip_update b/src/scripts/xt_geoip_update index 93884dcf5b..b9490dbcfc 100644 --- a/src/scripts/xt_geoip_update +++ b/src/scripts/xt_geoip_update @@ -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.