Add better logging/Other stuff #3

Merged
ChrisChrome merged 6 commits from dev into main 2026-02-18 13:46:00 -07:00
2 changed files with 17 additions and 5 deletions
Showing only changes of commit 0689dd23e5 - Show all commits

View file

@ -1031,10 +1031,10 @@ app.get("/api/healthcheck", (req, res) => {
});
// logCall function (caller, callee)
const logCall = (caller, callee, srcIp) => {
const logCall = (caller, callee, srcIp, success, reason) => {
pool.getConnection().then(conn => {
conn.query('INSERT INTO callLogs (caller, callee, timestamp, srcIp) VALUES (?, ?, ?, ?)',
[caller, callee, Math.floor(Date.now()), srcIp]).catch(err => {
conn.query('INSERT INTO callLogs (caller, callee, timestamp, srcIp, success, reason) VALUES (?, ?, ?, ?, ?, ?)',
[caller, callee, Math.floor(Date.now()), srcIp, success, reason]).catch(err => {
console.error('Error logging call:', err);
}).finally(() => {
conn.release();
@ -1056,17 +1056,20 @@ const genCall = (req, res, apiKey, ani, number) => {
// If no row or error, return 401
if (!row) {
res.status(401).send(`${process.env.MSG_ROUTE_ADDRESS}/401`)
logCall(ani, number, srcIp, false, "invalid_api_key");
return;
}
// Validate the ani and number are 7 digit numbers
if (!ani || ani < 1000000 || ani > 9999999 || !number || number < 1000000 || number > 9999999) {
res.status(400).send(`${process.env.MSG_ROUTE_ADDRESS}/400`);
logCall(ani, number, srcIp, false, "invalid_number");
return;
}
// Validate the ani is owned by the apiKey
if (ani < row.block_start || ani > row.block_start + row.block_length) {
res.status(403).send(`${process.env.MSG_ROUTE_ADDRESS}/403`);
logCall(ani, number, srcIp, false, "ani_not_in_block");
return;
}
@ -1078,6 +1081,7 @@ const genCall = (req, res, apiKey, ani, number) => {
const routeId = row ? row.id : null;
if (!routeId) {
res.status(404).send(`${process.env.MSG_ROUTE_ADDRESS}/404`);
logCall(ani, number, srcIp, false, "no_route");
return;
}
@ -1085,6 +1089,7 @@ const genCall = (req, res, apiKey, ani, number) => {
if (blockRows.length > 0) {
// ANI is blocked from calling this route
console.log(`Blocked Call Attempt: ${ani} -> ${number}`);
logCall(ani, number, srcIp, false, "blocklist");
res.status(403).send(`${process.env.MSG_ROUTE_ADDRESS}/403`);
return;
}
@ -1093,7 +1098,7 @@ const genCall = (req, res, apiKey, ani, number) => {
// Check if the ANI is within the block range
// If it is, return `local`
console.log(`New Call: ${ani} -> ${number}`);
logCall(ani, number);
logCall(ani, number, srcIp, true);
// incriment estCallsMade analytics
addAnalytic("estCallsMade");
dailyAnalytic("dailyCallsMade");
@ -1104,19 +1109,24 @@ const genCall = (req, res, apiKey, ani, number) => {
}
} else {
res.status(404).send(`${process.env.MSG_ROUTE_ADDRESS}/404`);
logCall(ani, number, srcIp, false, "no_route");
return;
}
}).catch(err => {
console.error('Error checking blocklist:', err);
res.status(500).send(`${process.env.MSG_ROUTE_ADDRESS}/500`);
logCall(ani, number, srcIp, false, "blocklist_error");
return;
});
}).catch(err => {
console.error('Error getting route:', err);
res.status(500).send(`${process.env.MSG_ROUTE_ADDRESS}/500`)
});
}).catch(err => {
console.error(err);
res.status(401).send(`${process.env.MSG_ROUTE_ADDRESS}/401`)
logCall(ani, number, srcIp, false, "invalid_api_key");
}).finally(() => {
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';