public inbox for ipfire-scm@lists.ipfire.org
 help / color / mirror / Atom feed
From: Michael Tremer <git@ipfire.org>
To: ipfire-scm@lists.ipfire.org
Subject: [git.ipfire.org] IPFire 2.x development tree branch, next, updated. 0ca3baedfc623a968c7e38c356352b4f64c9f695
Date: Fri, 11 Jan 2019 12:03:55 +0000	[thread overview]
Message-ID: <20190111120356.0FF4A84FDD4@people01.i.ipfire.org> (raw)

[-- Attachment #1: Type: text/plain, Size: 11191 bytes --]

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".

The branch, next has been updated
       via  0ca3baedfc623a968c7e38c356352b4f64c9f695 (commit)
       via  f107bb39c53266cd7b2f70c8875dbc07221aeeab (commit)
       via  035f6c75aed2165a8ecd92571c48daf07edf4ab5 (commit)
      from  01db691a1ebd569afdc0d9304a67b4e048708b84 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 0ca3baedfc623a968c7e38c356352b4f64c9f695
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Fri Jan 11 10:05:24 2019 +0100

    Revert "geoip-functions.pl: Re-write code to lookup the iso country code of a given IP-address."
    
    Enhanching the code to fix the lookup will rapidely slow down the lookup speed. Because using
    the GeoIP2 module is no option ( the reasons have been described in the commit message which will
    now reverted), we have decided to temporary switch back to the old module until a nice solution has
    been found.
    
    This reverts commit ff21ff90d24de0f648d24bb906c45738b81ce67a.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit f107bb39c53266cd7b2f70c8875dbc07221aeeab
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Fri Jan 11 10:05:23 2019 +0100

    Revert "GeoIP: Drop legacy GeoIP perl module."
    
    This reverts commit 9d1708e081d7e7ba490db3620509dcce29cb0ae8.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 035f6c75aed2165a8ecd92571c48daf07edf4ab5
Author: Matthias Fischer <matthias.fischer(a)ipfire.org>
Date:   Fri Jan 11 01:32:37 2019 +0100

    xtables-addons: Fix typo in lfs
    
    Just some typos...
    
    Best,
    Matthias
    
    Signed-off-by: Matthias Fischer <matthias.fischer(a)ipfire.org>
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

-----------------------------------------------------------------------

Summary of changes:
 config/cfgroot/geoip-functions.pl | 75 ++++-----------------------------------
 config/rootfiles/common/GeoIP     | 12 +++++++
 lfs/{Archive-Zip => GeoIP}        | 18 ++++++----
 lfs/xtables-addons                |  2 +-
 make.sh                           |  1 +
 5 files changed, 32 insertions(+), 76 deletions(-)
 create mode 100644 config/rootfiles/common/GeoIP
 copy lfs/{Archive-Zip => GeoIP} (84%)

Difference in files:
diff --git a/config/cfgroot/geoip-functions.pl b/config/cfgroot/geoip-functions.pl
index 9f86a09ba..c8ff47d2e 100644
--- a/config/cfgroot/geoip-functions.pl
+++ b/config/cfgroot/geoip-functions.pl
@@ -23,82 +23,21 @@
 
 package GeoIP;
 
-require '/var/ipfire/network-functions.pl';
-
+use Geo::IP::PurePerl;
 use Locale::Codes::Country;
 
-# Path where all the GeoIP related databases are stored.
-my $geoip_database_dir = "/var/lib/GeoIP";
-
-# Database which contains all IPv4 networks.
-my $address_ipv4_database = "GeoLite2-Country-Blocks-IPv4.csv";
-
-# Database wich contains the locations data.
-my $location_database = "GeoLite2-Country-Locations-en.csv";
+my $database;
 
 sub lookup($) {
 	my $address = shift;
-	my $location_id;
-	my $country_code;
-
-	# Check if the given address is valid.
-	unless(&Network::check_ip_address($address)) {
-		return;
-	}
-
-	# Open the address database.
-	open(ADDRESS, "$geoip_database_dir/$address_ipv4_database") or die "Could not open $geoip_database_dir/$address_ipv4_database. $!\n";
-
-	# Loop through the file.
-	while(my $line = <ADDRESS>) {
-		# Remove newlines.
-		chomp($line);
-
-		# Split the line content.
-		my ($network, $geoname_id, $registered_country_geoname_id, $represented_country_geoname_id, $is_anonymous_proxy, $is_satellite_provider) = split(/\,/, $line);
 
-		# Check if the given address is part of the current processed network.
-		if (&Network::ip_address_in_network($address, $network)) {
-			# Store the geoname_id for this address.
-			$location_id = $geoname_id;
-
-			# Break loop.
-			last;
-		}
+	# Load the database into memory if not already done
+	if (!$database) {
+		$database = Geo::IP::PurePerl->new(GEOIP_MEMORY_CACHE);
 	}
 
-	# Return nothing if no location_id could be found.
-	return unless($location_id);
-
-	# Close filehandle.
-	close(ADDRESS);
-
-	# Open the location database.
-	open(LOCATION, "$geoip_database_dir/$location_database") or die "Could not open $geoip_database_dir/$location_database. $!\n";
-
-	# Loop through the file.
-	while(my $line = <LOCATION>) {
-		# Remove newlines.
-		chomp($line);
-
-		# Split the line content.
-		my ($geoname_id, $locale_code, $continent_code, $continent_name, $country_iso_code, $country_name, $is_in_european_union) = split(/\,/, $line);
-
-		# Check if the correct location_id has been found.
-		if ($geoname_id eq $location_id) {
-			# Store the county code.
-			$country_code = $country_iso_code;
-
-			# Break loop.
-			last;
-		}
-	}
-
-	# Close filehandle.
-	close(LOCATION);
-
-	# Return the obtained country code.
-	return $country_code;
+	# Return the name of the country
+	return $database->country_code_by_name($address);
 }
 
 # Function to get the flag icon for a specified country code.
diff --git a/config/rootfiles/common/GeoIP b/config/rootfiles/common/GeoIP
new file mode 100644
index 000000000..d76ba645e
--- /dev/null
+++ b/config/rootfiles/common/GeoIP
@@ -0,0 +1,12 @@
+#usr/bin/geoip-lookup
+#usr/lib/perl5/site_perl/5.12.3/Geo
+#usr/lib/perl5/site_perl/5.12.3/Geo/IP
+usr/lib/perl5/site_perl/5.12.3/Geo/IP/PurePerl.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Geo
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Geo/IP
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Geo/IP/PurePerl
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Geo/IP/PurePerl/.packlist
+#usr/share/GeoIP
+usr/share/GeoIP/GeoIP.dat
+#usr/share/man/man1/geoip-lookup.1
+#usr/share/man/man3/Geo::IP::PurePerl.3
diff --git a/lfs/GeoIP b/lfs/GeoIP
new file mode 100644
index 000000000..ce758d8a5
--- /dev/null
+++ b/lfs/GeoIP
@@ -0,0 +1,84 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2018  IPFire Team  <info(a)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.25
+DATVER     = 30062018
+
+THISAPP    = Geo-IP-PurePerl-$(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.dat-$(DATVER).gz
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+GeoIP.dat-$(DATVER).gz = $(DL_FROM)/GeoIP.dat-$(DATVER).gz
+
+$(DL_FILE)_MD5 = a47a1b71f7cd7c46cca9efcc448e0726
+GeoIP.dat-$(DATVER).gz_MD5 = d538e57ad9268fdc7955c6cf9a37c4a9
+
+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 zxf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/geoip_1_25_change_database_path.patch
+	cd $(DIR_APP) && perl Makefile.PL
+	cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+	cd $(DIR_APP) && make install
+	cd $(DIR_APP) && mkdir -p /usr/share/GeoIP && \
+		zcat $(DIR_DL)/GeoIP.dat-$(DATVER).gz > /usr/share/GeoIP/GeoIP.dat
+	cd $(DIR_APP) && chmod 777 /srv/web/ipfire/html/images/flags
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
diff --git a/lfs/xtables-addons b/lfs/xtables-addons
index da67aa761..260820955 100644
--- a/lfs/xtables-addons
+++ b/lfs/xtables-addons
@@ -96,7 +96,7 @@ ifeq "$(USPACE)" "1"
 	cd $(DIR_APP) && make install
 
 	# Install xt_geoip_build.
-	cd $(DIR_APP) && install -m 755 GeoIP/xt_geoip_build \
+	cd $(DIR_APP) && install -m 755 geoip/xt_geoip_build \
 		/usr/local/bin/
 else
 	cd $(DIR_APP) && ./configure \
diff --git a/make.sh b/make.sh
index 1d9163dce..601f1675b 100755
--- a/make.sh
+++ b/make.sh
@@ -1305,6 +1305,7 @@ buildipfire() {
   lfsmake2 python-daemon
   lfsmake2 python-ipaddress
   lfsmake2 glib
+  lfsmake2 GeoIP
   lfsmake2 ntp
   lfsmake2 openssh
   lfsmake2 fontconfig


hooks/post-receive
--
IPFire 2.x development tree

                 reply	other threads:[~2019-01-11 12:03 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190111120356.0FF4A84FDD4@people01.i.ipfire.org \
    --to=git@ipfire.org \
    --cc=ipfire-scm@lists.ipfire.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox