]> git.ipfire.org Git - people/ms/libloc.git/commitdiff
importer: Use geofeeds for country assignment
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 27 Sep 2022 08:00:37 +0000 (08:00 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 27 Sep 2022 16:47:17 +0000 (16:47 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/scripts/location-importer.in

index 12035f17856226adfa4b3f8b9a0cc165cc140e5c..f8d2dc8a9354ac4965d40de320adfd07738bc97c 100644 (file)
@@ -291,6 +291,8 @@ class CLI(object):
                                SELECT network FROM networks
                                UNION
                                SELECT network FROM network_overrides
+                               UNION
+                               SELECT network FROM geofeed_networks
                        ),
 
                        ordered_networks AS (
@@ -333,6 +335,29 @@ class CLI(object):
                                                SELECT country FROM autnum_overrides overrides
                                                        WHERE networks.autnum = overrides.number
                                        ),
+                                       (
+                                               SELECT
+                                                       geofeed_networks.country AS country
+                                               FROM
+                                                       network_geofeeds
+
+                                               -- Join the data from the geofeeds
+                                               LEFT JOIN
+                                                       geofeeds ON network_geofeeds.url = geofeeds.url
+                                               LEFT JOIN
+                                                       geofeed_networks ON geofeeds.id = geofeed_networks.geofeed_id
+
+                                               -- Check whether we have a geofeed for this network
+                                               WHERE
+                                                       networks.network <<= network_geofeeds.network
+                                               AND
+                                                       networks.network <<= geofeed_networks.network
+
+                                               -- Filter for the best result
+                                               ORDER BY
+                                                       masklen(geofeed_networks.network) DESC
+                                               LIMIT 1
+                                       ),
                                        networks.country
                                ) AS country,