/** * TraCINg-Server - Gathering and visualizing cyber incidents on the world * * Copyright 2013 Matthias Gazzari, Annemarie Mattmann, André Wolski * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var orm = require("orm"); var City = require("geoip").City; // requires 'npm install geoip' var city = new City("../../GeoLiteCity.dat"); var Models = require("./models.js"); var config = require("../../config.json"); var fields = require("../fields.js")["fields"]; var types = fields["type"]; var typeids = []; for(var key in types){ typeids.push(key); } function rand(min, max){ return Math.floor((Math.random()*(max+1-min))+min); } function randIP(){ return rand(0,255) + "." + rand(0,255) + "." + rand(0,255) + "." + rand(0,255); } function randType(){ var index = rand(0,typeids.length-1); return typeids[index]; } orm.connect(config.db, function (err, db) { if(err){ console.log(err); return; } Models.initialize(db); var Incident = Models.Incident; var items = []; var max = new Date(); var date, day = 100; do { for(var i = 0; i < 5; i++){ date = new Date(2013, 0, day, rand(0, 23), rand(0, 59), rand(0, 59)); var sip = randIP(); var dip = randIP(); var sgeo = city.lookupSync(sip); var dgeo = city.lookupSync(dip); if(sgeo && dgeo){ items.push({ date: date, sensortype: "test" + rand(1,9), sensorname: "test" + rand(1,9), source_ip: sip, source_port: rand(1024, 65535), destination_ip: dip, destination_port: 80, type: randType(), source_country: sgeo.country_name, source_cc: sgeo.country_code, source_city: sgeo.city, source_latitude: sgeo.latitude, source_longitude: sgeo.longitude, destination_country: dgeo.country_name, destination_cc: dgeo.country_code, destination_city: dgeo.city, destination_latitude: dgeo.latitude, destination_longitude: dgeo.longitude, authorized: rand(0, 1), }); } } day++; } while(date < max); // store new items in the database Incident.create(items, function (err, items) { // err - description of the error or null if(err){ console.log(err); return; } // items - array of inserted items console.log("inserted %d items", items.length); } ); });