Advertisement
rg443

sync ris prefixes

Sep 30th, 2017
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var fetch=require("node-fetch"),sqlite3=require("sqlite3"),async=require("neo-async"),lf=require("localforage"),https=require('https');
  2.  
  3. var agent = new https.Agent({
  4.     keepAlive: true,
  5.    // keepAliveMsecs: 1500,
  6.     maxSockets: 70
  7. });
  8.  
  9.  
  10. var q1=async.queue(geoasn1, 15);
  11. var q2=async.queue(risprefix1, 15);
  12. var db = new sqlite3.Database('ripe-geoloc.db3');
  13. db.run("CREATE TABLE if not exists geoloc (asn int not null primary key,data text not null,ts DATETIME DEFAULT CURRENT_TIMESTAMP)");
  14. db.run("CREATE TABLE if not exists risprefix (asn INTEGER NOT NULL, v4o INTEGER NOT NULL, v4t INTEGER NOT NULL, v6o INTEGER NOT NULL, v6t INTEGER NOT NULL,ts DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY(asn,ts));");
  15.  
  16. var i=0;
  17. fetch("https://stat.ripe.net/data/ris-asns/data.json?list_asns=true").then(function(r){
  18.     return r.ok?r.json():{}
  19. })
  20. .then(function(d){
  21.     console.log(d.data.counts.total);
  22.    
  23.     //q1.push(d.data.asns);
  24.     q2.push(d.data.asns);
  25. })
  26.  
  27. function geoasn1(asn,callback){
  28.     var t1=new Date();i++;
  29.     fetch("https://stat.ripe.net/data/geoloc/data.json?resource="+asn,{agent:agent,compress: true,headers: {connection:'keepAlive'}}).then(function(r){
  30.     return r.ok?r.json():{}
  31. })
  32. .then(function(d){
  33.     if (!d.status) {callback();return false}
  34.     console.log([i,d.data.resource,new Date()-t1,d.data.announced_prefixes_time,d.data.locations.length].join("\t"));
  35.    
  36.     //var stm = db.prepare("replace into geoloc (asn, data) values (?,?)");
  37.    
  38.     db.run("replace into geoloc (asn, data,ts) values ($asn,$data,$ts)", {
  39.           $asn: d.data.resource,
  40.           $data: JSON.stringify(d.data),
  41.           $ts: d.data.announced_prefixes_time.replace("T"," ")
  42.       });
  43.    
  44.    
  45.     callback(d.data);
  46.    
  47. })
  48.    
  49. }
  50.  
  51. function risprefix1(asn,callback) {
  52.     var t1=new Date();i++;
  53.     fetch("https://stat.ripe.net/data/ris-prefixes/data.json?resource="+asn,{agent:agent,compress: true,headers: {connection:'keepAlive'}}).then(function(r){
  54.     return r.ok?r.json():{}
  55. })
  56. .then(function(d){
  57.     if (!d.status) {callback();return false}
  58.     console.log([i,d.data.resource,new Date()-t1,d.data.query_time,d.data.counts.v4.originating,d.data.counts.v4.transitting,d.data.counts.v6.originating,d.data.counts.v6.transitting].join("\t"));
  59.     callback(d.data);
  60.     db.run("replace into risprefix (asn, v4o,v4t,v6o,v6t,ts) values ($asn,$v4o,$v4t,$v6o,$v6t,$ts)", {
  61.           $asn: d.data.resource,
  62.           $v4o: d.data.counts.v4.originating,
  63.           $v4t: d.data.counts.v4.transitting,
  64.           $v6o: d.data.counts.v6.originating,
  65.           $v6t: d.data.counts.v6.transitting,
  66.           $ts: d.data.query_time.replace("T"," ")
  67.       });
  68.    
  69.     }
  70.     )
  71.    
  72.    
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement