diff --git a/index.js b/index.js index bdaa463..562c05d 100644 --- a/index.js +++ b/index.js @@ -544,6 +544,36 @@ app.get('/api/v1/route/:apiKey/:ani/:number', (req, res) => { }); }); +app.get('/api/v1', (req, res) => { // Backwards compatibility with TandmX cause why not, it's easy + const apiKey = req.query.auth; + const number = Number(req.query.number); + const ani = Number(req.query.ani); + db.get("SELECT * FROM routes WHERE apiKey = ? AND block_start <= ? AND block_start + block_length >= ?", [apiKey, ani, ani], (err, row) => { + // If no row or error, return 401 + if (err || !row) { + console.error(err); + res.status(401).send(`${process.env.MSG_ROUTE_ADDRESS}/401`) + return; + } + db.get('SELECT * FROM routes WHERE block_start <= ? AND block_start + block_length >= ?', [number, number], (err, row) => { + if (err) { + console.error('Error getting route:', err); + res.status(500).send(`${process.env.MSG_ROUTE_ADDRESS}/500`) + } else if (row) { + // Check if the ANI is within the block range + // If it is, return `local` + if (req.params.ani >= row.block_start && req.params.ani <= row.block_start + row.block_length) { + res.status(200).send('local'); + } else { + res.status(200).send(`IAX2/${row.auth}:${row.secret}@${row.server}:${row.port}/${number}`); + } + } else { + res.status(404).send(`${process.env.MSG_ROUTE_ADDRESS}/404`); + } + }); + }); +}); + // Start server app.listen(port, () => { console.log(`Listening on port ${port}`);