Add more log data
This commit is contained in:
parent
56f46086ff
commit
0689dd23e5
18
index.js
18
index.js
|
|
@ -1031,10 +1031,10 @@ app.get("/api/healthcheck", (req, res) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// logCall function (caller, callee)
|
// logCall function (caller, callee)
|
||||||
const logCall = (caller, callee, srcIp) => {
|
const logCall = (caller, callee, srcIp, success, reason) => {
|
||||||
pool.getConnection().then(conn => {
|
pool.getConnection().then(conn => {
|
||||||
conn.query('INSERT INTO callLogs (caller, callee, timestamp, srcIp) VALUES (?, ?, ?, ?)',
|
conn.query('INSERT INTO callLogs (caller, callee, timestamp, srcIp, success, reason) VALUES (?, ?, ?, ?, ?, ?)',
|
||||||
[caller, callee, Math.floor(Date.now()), srcIp]).catch(err => {
|
[caller, callee, Math.floor(Date.now()), srcIp, success, reason]).catch(err => {
|
||||||
console.error('Error logging call:', err);
|
console.error('Error logging call:', err);
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
conn.release();
|
conn.release();
|
||||||
|
|
@ -1056,17 +1056,20 @@ const genCall = (req, res, apiKey, ani, number) => {
|
||||||
// If no row or error, return 401
|
// If no row or error, return 401
|
||||||
if (!row) {
|
if (!row) {
|
||||||
res.status(401).send(`${process.env.MSG_ROUTE_ADDRESS}/401`)
|
res.status(401).send(`${process.env.MSG_ROUTE_ADDRESS}/401`)
|
||||||
|
logCall(ani, number, srcIp, false, "invalid_api_key");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Validate the ani and number are 7 digit numbers
|
// Validate the ani and number are 7 digit numbers
|
||||||
if (!ani || ani < 1000000 || ani > 9999999 || !number || number < 1000000 || number > 9999999) {
|
if (!ani || ani < 1000000 || ani > 9999999 || !number || number < 1000000 || number > 9999999) {
|
||||||
res.status(400).send(`${process.env.MSG_ROUTE_ADDRESS}/400`);
|
res.status(400).send(`${process.env.MSG_ROUTE_ADDRESS}/400`);
|
||||||
|
logCall(ani, number, srcIp, false, "invalid_number");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate the ani is owned by the apiKey
|
// Validate the ani is owned by the apiKey
|
||||||
if (ani < row.block_start || ani > row.block_start + row.block_length) {
|
if (ani < row.block_start || ani > row.block_start + row.block_length) {
|
||||||
res.status(403).send(`${process.env.MSG_ROUTE_ADDRESS}/403`);
|
res.status(403).send(`${process.env.MSG_ROUTE_ADDRESS}/403`);
|
||||||
|
logCall(ani, number, srcIp, false, "ani_not_in_block");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1078,6 +1081,7 @@ const genCall = (req, res, apiKey, ani, number) => {
|
||||||
const routeId = row ? row.id : null;
|
const routeId = row ? row.id : null;
|
||||||
if (!routeId) {
|
if (!routeId) {
|
||||||
res.status(404).send(`${process.env.MSG_ROUTE_ADDRESS}/404`);
|
res.status(404).send(`${process.env.MSG_ROUTE_ADDRESS}/404`);
|
||||||
|
logCall(ani, number, srcIp, false, "no_route");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1085,6 +1089,7 @@ const genCall = (req, res, apiKey, ani, number) => {
|
||||||
if (blockRows.length > 0) {
|
if (blockRows.length > 0) {
|
||||||
// ANI is blocked from calling this route
|
// ANI is blocked from calling this route
|
||||||
console.log(`Blocked Call Attempt: ${ani} -> ${number}`);
|
console.log(`Blocked Call Attempt: ${ani} -> ${number}`);
|
||||||
|
logCall(ani, number, srcIp, false, "blocklist");
|
||||||
res.status(403).send(`${process.env.MSG_ROUTE_ADDRESS}/403`);
|
res.status(403).send(`${process.env.MSG_ROUTE_ADDRESS}/403`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1093,7 +1098,7 @@ const genCall = (req, res, apiKey, ani, number) => {
|
||||||
// Check if the ANI is within the block range
|
// Check if the ANI is within the block range
|
||||||
// If it is, return `local`
|
// If it is, return `local`
|
||||||
console.log(`New Call: ${ani} -> ${number}`);
|
console.log(`New Call: ${ani} -> ${number}`);
|
||||||
logCall(ani, number);
|
logCall(ani, number, srcIp, true);
|
||||||
// incriment estCallsMade analytics
|
// incriment estCallsMade analytics
|
||||||
addAnalytic("estCallsMade");
|
addAnalytic("estCallsMade");
|
||||||
dailyAnalytic("dailyCallsMade");
|
dailyAnalytic("dailyCallsMade");
|
||||||
|
|
@ -1104,19 +1109,24 @@ const genCall = (req, res, apiKey, ani, number) => {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
res.status(404).send(`${process.env.MSG_ROUTE_ADDRESS}/404`);
|
res.status(404).send(`${process.env.MSG_ROUTE_ADDRESS}/404`);
|
||||||
|
logCall(ani, number, srcIp, false, "no_route");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error('Error checking blocklist:', err);
|
console.error('Error checking blocklist:', err);
|
||||||
res.status(500).send(`${process.env.MSG_ROUTE_ADDRESS}/500`);
|
res.status(500).send(`${process.env.MSG_ROUTE_ADDRESS}/500`);
|
||||||
|
logCall(ani, number, srcIp, false, "blocklist_error");
|
||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error('Error getting route:', err);
|
console.error('Error getting route:', err);
|
||||||
res.status(500).send(`${process.env.MSG_ROUTE_ADDRESS}/500`)
|
res.status(500).send(`${process.env.MSG_ROUTE_ADDRESS}/500`)
|
||||||
|
|
||||||
});
|
});
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
res.status(401).send(`${process.env.MSG_ROUTE_ADDRESS}/401`)
|
res.status(401).send(`${process.env.MSG_ROUTE_ADDRESS}/401`)
|
||||||
|
logCall(ani, number, srcIp, false, "invalid_api_key");
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
conn.release();
|
conn.release();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1 +1,3 @@
|
||||||
ALTER TABLE callLogs ADD COLUMN srcIp VARCHAR(255) NOT NULL DEFAULT 'unknown';
|
ALTER TABLE callLogs ADD COLUMN srcIp VARCHAR(255) NOT NULL DEFAULT 'unknown';
|
||||||
|
ALTER TABLE callLogs ADD COLUMN success INTEGER NOT NULL DEFAULT 0;
|
||||||
|
ALTER TABLE callLogs ADD COLUMN reason VARCHAR(255) NOT NULL DEFAULT 'none';
|
||||||
Loading…
Reference in a new issue