]> git.ipfire.org Git - location/libloc.git/commitdiff
importer: Create a feeds table for networks, too
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 2 Mar 2024 09:42:29 +0000 (09:42 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 2 Mar 2024 09:42:29 +0000 (09:42 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/scripts/location-importer.in

index 529b11b8fb393d6ad589a5f736eab708149c3661..056451fb3b11e6bb9ce7acd0dee7a18440333672 100644 (file)
@@ -234,6 +234,20 @@ class CLI(object):
                                CREATE UNIQUE INDEX IF NOT EXISTS autnum_feeds_unique
                                        ON autnum_feeds(number, source);
 
+                               CREATE TABLE IF NOT EXISTS network_feeds(
+                                       network inet NOT NULL,
+                                       source text NOT NULL,
+                                       country text,
+                                       is_anonymous_proxy boolean,
+                                       is_satellite_provider boolean,
+                                       is_anycast boolean,
+                                       is_drop boolean
+                               );
+                               CREATE UNIQUE INDEX IF NOT EXISTS network_feeds_unique
+                                       ON network_feeds(network, source);
+                               CREATE INDEX IF NOT EXISTS network_feeds_search
+                                       ON network_feeds USING GIST(network inet_ops);
+
                                -- overrides
                                CREATE TABLE IF NOT EXISTS autnum_overrides(
                                        number bigint NOT NULL,
@@ -319,6 +333,8 @@ class CLI(object):
                                UNION
                                SELECT network FROM networks
                                UNION
+                               SEELCT network FROM network_feeds
+                               UNION
                                SELECT network FROM network_overrides
                                UNION
                                SELECT network FROM geofeed_networks
@@ -364,6 +380,12 @@ class CLI(object):
                                                SELECT country FROM autnum_overrides overrides
                                                        WHERE networks.autnum = overrides.number
                                        ),
+                                       (
+                                               SELECT country FROM network_feeds feeds
+                                                       WHERE networks.network <<= feeds.network
+                                                       ORDER BY masklen(feeds.network) DESC
+                                                       LIMIT 1
+                                       ),
                                        (
                                                SELECT country FROM autnum_feeds feeds
                                                        WHERE networks.autnum = feeds.number
@@ -403,6 +425,12 @@ class CLI(object):
                                                        ORDER BY masklen(overrides.network) DESC
                                                        LIMIT 1
                                        ),
+                                       (
+                                               SELECT is_anonymous_proxy FROM network_feeds feeds
+                                                       WHERE networks.network <<= feeds.network
+                                                       ORDER BY masklen(feeds.network) DESC
+                                                       LIMIT 1
+                                       ),
                                        (
                                                SELECT is_anonymous_proxy FROM autnum_feeds feeds
                                                        WHERE networks.autnum = feeds.number
@@ -421,6 +449,12 @@ class CLI(object):
                                                        ORDER BY masklen(overrides.network) DESC
                                                        LIMIT 1
                                        ),
+                                       (
+                                               SELECT is_satellite_provider FROM network_feeds feeds
+                                                       WHERE networks.network <<= feeds.network
+                                                       ORDER BY masklen(feeds.network) DESC
+                                                       LIMIT 1
+                                       ),
                                        (
                                                SELECT is_satellite_provider FROM autnum_feeds feeds
                                                        WHERE networks.autnum = feeds.number
@@ -439,6 +473,12 @@ class CLI(object):
                                                        ORDER BY masklen(overrides.network) DESC
                                                        LIMIT 1
                                        ),
+                                       (
+                                               SELECT is_anycast FROM network_feeds feeds
+                                                       WHERE networks.network <<= feeds.network
+                                                       ORDER BY masklen(feeds.network) DESC
+                                                       LIMIT 1
+                                       ),
                                        (
                                                SELECT is_anycast FROM autnum_feeds feeds
                                                        WHERE networks.autnum = feeds.number
@@ -457,6 +497,12 @@ class CLI(object):
                                                        ORDER BY masklen(overrides.network) DESC
                                                        LIMIT 1
                                        ),
+                                       (
+                                               SELECT is_drop FROM network_feeds feeds
+                                                       WHERE networks.network <<= feeds.network
+                                                       ORDER BY masklen(feeds.network) DESC
+                                                       LIMIT 1
+                                       ),
                                        (
                                                SELECT is_drop FROM autnum_feeds feeds
                                                        WHERE networks.autnum = feeds.number