feat: index asn ownership
This commit is contained in:
11
contrib/asn.sql
Normal file
11
contrib/asn.sql
Normal file
@ -0,0 +1,11 @@
|
||||
BEGIN;
|
||||
CREATE TABLE IF NOT EXISTS asn_import (range_start INTEGER, range_end INTEGER, id INTEGER, country STRING, description TEXT);
|
||||
CREATE TABLE IF NOT EXISTS asns (range_start INTEGER, range_end INTEGER, id INTEGER, country STRING, owner_id INTEGER);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS asn_import_range_id ON asn_import (range_start, range_end);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS asns_range_id ON asns (range_start, range_end);
|
||||
CREATE INDEX IF NOT EXISTS asns_id_idx ON asns (id);
|
||||
CREATE INDEX IF NOT EXISTS asns_owner_id_idx ON asns (owner_id);
|
||||
CREATE TABLE IF NOT EXISTS owners (id INTEGER PRIMARY KEY, description TEXT);
|
||||
CREATE TABLE IF NOT EXISTS status (id INTEGER PRIMARY KEY, blocked BOOLEAN DEFAULT FALSE);
|
||||
DELETE FROM asn_import;
|
||||
COMMIT;
|
||||
12
contrib/asn_2.sql
Normal file
12
contrib/asn_2.sql
Normal file
@ -0,0 +1,12 @@
|
||||
BEGIN;
|
||||
INSERT INTO owners (description) SELECT DISTINCT asn_import.description FROM asn_import LEFT JOIN owners ON asn_import.description = owners.description WHERE owners.description IS NULL;
|
||||
INSERT INTO asns (range_start, range_end, id, country, owner_id)
|
||||
SELECT asn_import.range_start, asn_import.range_end, asn_import.id, asn_import.country, owners.id
|
||||
FROM asn_import
|
||||
LEFT JOIN owners
|
||||
ON owners.description = asn_import.description
|
||||
ON CONFLICT DO UPDATE SET id = excluded.id, country = excluded.country, owner_id = excluded.owner_id;
|
||||
DROP TABLE asn_import;
|
||||
DROP INDEX asns_range_id;
|
||||
COMMIT;
|
||||
VACUUM;
|
||||
@ -1,11 +1,10 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
cr="$(dirname "$(readlink -f "$0")")"
|
||||
db="${1:-$PWD/asn.sqlite3}"
|
||||
sqlite3 "$db" "CREATE TABLE IF NOT EXISTS asn (range_start INTEGER, range_end INTEGER, id INTEGER, country STRING, description TEXT);"
|
||||
sqlite3 "$db" "CREATE INDEX IF NOT EXISTS asn_id_idx ON asn (id);"
|
||||
sqlite3 "$db" "CREATE TABLE IF NOT EXISTS status (id INTEGER PRIMARY KEY, blocked BOOLEAN DEFAULT FALSE);"
|
||||
sqlite3 "$db" "DELETE from asn;"
|
||||
wget https://iptoasn.com/data/ip2asn-v4-u32.tsv.gz -O - | gunzip | sqlite3 -tabs "$db" ".import '|cat -' asn"
|
||||
cat "$cr/asn.sql" | sqlite3 "$db"
|
||||
wget https://iptoasn.com/data/ip2asn-v4-u32.tsv.gz -O - | gunzip | sqlite3 -tabs "$db" ".import '|cat -' asn_import"
|
||||
cat "$cr/asn_2.sql" | sqlite3 "$db"
|
||||
|
||||
echo "ASN database created/updated at $db"
|
||||
|
||||
Reference in New Issue
Block a user