]> git.ipfire.org Git - location/libloc.git/blobdiff - src/python/location-importer.in
python: Correctly set log level for root logger
[location/libloc.git] / src / python / location-importer.in
index 5cfa09efe95e9c1f78425572e2e1a7039147d3bd..45cacad81c58db8b0aeed25cac7333092c54049e 100644 (file)
@@ -93,7 +93,7 @@ class CLI(object):
 
                # Enable debug logging
                if args.debug:
-                       log.setLevel(logging.DEBUG)
+                       location.logger.set_level(logging.DEBUG)
 
                # Print usage if no action was given
                if not "func" in args:
@@ -216,14 +216,13 @@ class CLI(object):
                # Select all known networks
                rows = self.db.query("""
                        SELECT
+                               DISTINCT ON (announcements.network)
                                announcements.network AS network,
                                announcements.autnum AS autnum,
-                               (
-                                       SELECT networks.country FROM networks
-                                               WHERE announcements.network <<= networks.network
-                                               ORDER BY masklen(networks.network) DESC
-                                               LIMIT 1
-                               ) AS country,
+                               networks.country AS country,
+
+                               -- Must be part of returned values for ORDER BY clause
+                               masklen(networks.network) AS sort,
 
                                -- Flags
                                COALESCE(
@@ -263,6 +262,8 @@ class CLI(object):
                                        )
                                ) AS is_anycast
                        FROM announcements
+                               LEFT JOIN networks ON announcements.network <<= networks.network
+                       ORDER BY announcements.network, sort DESC
                """)
 
                for row in rows:
@@ -422,6 +423,7 @@ class CLI(object):
                        prefix = int(prefix)
                except:
                        log.warning("Invalid prefix: %s" % prefix)
+                       return
 
                # Fix prefix length for IPv4
                if type == "ipv4":
@@ -516,10 +518,13 @@ class CLI(object):
                                        -- Delete anything that is not global unicast address space
                                        DELETE FROM announcements WHERE family(network) = 6 AND NOT network <<= '2000::/3';
 
+                                       -- DELETE "current network" address space
+                                       DELETE FROM announcements WHERE family(network) = 4 AND network <<= '0.0.0.0/8';
+
                                        -- DELETE local loopback address space
                                        DELETE FROM announcements WHERE family(network) = 4 AND network <<= '127.0.0.0/8';
 
-                                       -- DELETE RFC1918 address space
+                                       -- DELETE RFC 1918 address space
                                        DELETE FROM announcements WHERE family(network) = 4 AND network <<= '10.0.0.0/8';
                                        DELETE FROM announcements WHERE family(network) = 4 AND network <<= '172.16.0.0/12';
                                        DELETE FROM announcements WHERE family(network) = 4 AND network <<= '192.168.0.0/16';
@@ -540,6 +545,10 @@ class CLI(object):
                                        -- DELETE IPv6 to IPv4 (6to4) address space
                                        DELETE FROM announcements WHERE family(network) = 4 AND network <<= '192.88.99.0/24';
 
+                                       -- DELETE multicast and reserved address space
+                                       DELETE FROM announcements WHERE family(network) = 4 AND network <<= '224.0.0.0/4';
+                                       DELETE FROM announcements WHERE family(network) = 4 AND network <<= '240.0.0.0/4';
+
                                        -- Delete networks that are too small to be in the global routing table
                                        DELETE FROM announcements WHERE family(network) = 6 AND masklen(network) > 48;
                                        DELETE FROM announcements WHERE family(network) = 4 AND masklen(network) > 24;
@@ -586,7 +595,7 @@ class CLI(object):
                                                                        is_anonymous_proxy,
                                                                        is_satellite_provider,
                                                                        is_anycast
-                                                               ) VALUES (%s, %s, %s, %s)
+                                                               ) VALUES (%s, %s, %s, %s, %s)
                                                                ON CONFLICT (network) DO NOTHING""",
                                                                "%s" % network,
                                                                block.get("country"),