Skip to content
This repository was archived by the owner on Mar 7, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 30 additions & 31 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,46 +36,45 @@
"homepage": "https://github.com/active911/asterisk-analyze#readme",
"dependencies": {
"always-tail2": "^1.0.0",
"bluebird": "^3.4.6",
"body-parser": "^1.15.2",
"bunyan": "^1.8.5",
"bluebird": "^3.5.1",
"body-parser": "^1.18.2",
"bunyan": "^1.8.12",
"crossfilter": "^1.3.12",
"d3": "^3.0.0",
"dc": "^2.1.1",
"express": "^4.14.0",
"ioredis": "^2.4.3",
"jquery": "^3.1.1",
"d3": "^4.11.0",
"dc": "^2.1.9",
"express": "^4.16.2",
"ioredis": "^3.2.1",
"jquery": "^3.2.1",
"line-by-line": "^0.1.5",
"moment": "^2.17.1",
"morgan": "^1.7.0",
"nconf": "^0.8.4",
"promise-mysql": "^3.0.0",
"moment": "^2.19.1",
"morgan": "^1.9.0",
"promise-mysql": "^3.1.1",
"syslogd": "^1.1.2",
"ws": "^1.1.1"
"ws": "^3.2.0"
},
"devDependencies": {
"babel-core": "^6.21.0",
"babel-loader": "^6.2.10",
"babel-preset-es2015": "^6.18.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-es2015": "^6.24.1",
"bootstrap": "^3.3.7",
"browser-sync": "^2.18.6",
"browser-sync": "^2.18.13",
"bunyan-pretty": "0.0.1",
"crossfilter2": "^1.3.14",
"css-loader": "^0.26.1",
"dc": "^2.1.1",
"expose-loader": "^0.7.1",
"file-loader": "^0.9.0",
"crossfilter2": "^1.4.3",
"css-loader": "^0.28.7",
"dc": "^2.1.9",
"expose-loader": "^0.7.3",
"file-loader": "^1.1.5",
"html5-lint": "^0.3.0",
"jsdom": "^9.8.3",
"jshint": "^2.9.4",
"jsdom": "^11.3.0",
"jshint": "^2.9.5",
"jshint-stylish": "^2.2.1",
"json-loader": "^0.5.4",
"mocha": "^3.2.0",
"parallelshell": "^2.0.0",
"json-loader": "^0.5.7",
"mocha": "^4.0.1",
"parallelshell": "^3.0.2",
"reconnectingwebsocket": "^1.0.0",
"style-loader": "^0.13.1",
"uglify-js": "^2.7.5",
"url-loader": "^0.5.7",
"webpack": "^2.2.0-rc.4"
"style-loader": "^0.19.0",
"uglify-js": "^3.1.6",
"url-loader": "^0.6.2",
"webpack": "^3.8.1"
}
}
6 changes: 3 additions & 3 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ var express=require('express');
var morgan=require('morgan');
//var url=require("url");
var log = require("bunyan").createLogger({"name":"asterisk-analyze"});
var nconf = require('nconf');
var fs = require('fs');
var stream=require('stream');
var mysql = require("promise-mysql");
var WebsocketServer=require("ws").Server;
var redis = new (require("ioredis"))();

// Read the config
nconf.argv().env().file({ file: 'config.json' });
var config = JSON.parse(fs.readFileSync('config.json'));


// A stream to pipe morgan (http logging) to bunyan
Expand Down Expand Up @@ -119,7 +119,7 @@ app
// Connect to the database and start the server
var db;
mysql
.createConnection(nconf.get('mysql'))
.createConnection(config.mysql)
.then((c)=>{

log.info("Connected to database");
Expand Down
21 changes: 8 additions & 13 deletions syslogd.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,23 @@
var promise=require("bluebird");
var asterisklog=require("./lib/asterisklog.js");
var nconf = require('nconf');
var fs = require('fs');
var log = require("bunyan").createLogger({"name":"asterisk-analyze-syslog"});
var mysql = require("promise-mysql");
var moment = require("moment");
var Redis = require("ioredis"); //promise.promisifyAll(require("redis"));
var syslogd = require("syslogd");

// Read the config
nconf
.argv()
.env()
.file({ file: 'config.json' })
.defaults({ "general" : { "input" : "full", "output" : "calls.json", "mode" : "follow" } });

var config = JSON.parse(fs.readFileSync('config.json'));

// Redis
var redis=new Redis();

// MySQL pool. We use this so we can have auto reconnect.
var pool=mysql.createPool(nconf.get('mysql'));
var pool=mysql.createPool(config.mysql);

// Create analyzer
var al=new asterisklog({queues: nconf.get('asterisk').queues, "require_timestamps" : false });
var al=new asterisklog({queues: config.asterisk.queues, "require_timestamps" : false });
al
.on("start", (call) => {

Expand All @@ -38,7 +33,7 @@ al

log.info("Call ended. Inserting into database");
redis.publish("calls",JSON.stringify(call));
pool.query("INSERT INTO "+(nconf.get('mysql').table||"calls")+" (stamp, data) VALUES ( ?, ?)",[moment(call.start).format('YYYY-MM-DD HH:mm:ss'),JSON.stringify(call)])
pool.query("INSERT INTO "+(config.mysql.table||"calls")+" (stamp, data) VALUES ( ?, ?)",[moment(call.start).format('YYYY-MM-DD HH:mm:ss'),JSON.stringify(call)])
.then(()=>{
log.info("Call inserted into database successfully.");
})
Expand All @@ -51,17 +46,17 @@ al
// Listen for incoming messages
syslogd((entry) => {

if(entry.address==nconf.get('general').syslogd.allow) {
if(entry.address==config.general.syslogd.allow) {

// log.info("Data: "+entry.msg);
log.info("Data: "+entry.msg);
al.add(entry.msg.trim());

} else {

console.log("Disallowing remote data from "+entry.address);
}

},{ "address" : nconf.get("general").syslogd.address}).listen(nconf.get("general").syslogd.port, (err)=>{
},{ "address" : config.general.syslogd.address}).listen(config.general.syslogd.port, (err)=>{

if(err){

Expand Down