Add more log data

This commit is contained in:
Christopher Cookman 2026-02-18 13:35:18 -07:00
parent 56f46086ff
commit 0689dd23e5
2 changed files with 17 additions and 5 deletions

View file

@ -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();
}); });

View file

@ -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';