Add prov api for future shell script
This commit is contained in:
parent
f12603387d
commit
cc62815961
36
index.js
36
index.js
|
@ -20,6 +20,7 @@ const ejs = require("ejs")
|
||||||
const mariadb = require('mariadb');
|
const mariadb = require('mariadb');
|
||||||
const bcrypt = require("bcrypt")
|
const bcrypt = require("bcrypt")
|
||||||
const crypto = require("crypto")
|
const crypto = require("crypto")
|
||||||
|
const dns = require("dns");
|
||||||
const app = express();
|
const app = express();
|
||||||
const port = process.env.SERVER_PORT || 3000;
|
const port = process.env.SERVER_PORT || 3000;
|
||||||
|
|
||||||
|
@ -657,6 +658,41 @@ app.get("/api/v1/directory/openBlocks", (req, res) => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.get("/api/v1/provision/:apiKey", async (req, res) => {
|
||||||
|
const apiKey = req.params.apiKey;
|
||||||
|
if (!apiKey) {
|
||||||
|
res.status(401).json({ error: 'Unauthorized' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const serverData = await pool.query("SELECT * FROM routes WHERE apiKey = ?", [apiKey]);
|
||||||
|
if (!serverData || serverData.length === 0) {
|
||||||
|
res.status(401).json({ error: 'Unauthorized' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const server = serverData[0];
|
||||||
|
// Do a quick DNS lookup on server.server to see if it matches the IP making the request. If it doesn't, add 'warning': "IP Mismatch. Are you running this on the right server?" to the response but continue to send all data
|
||||||
|
dns.lookup(server.server, (err, address, family) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('Error looking up DNS:', err);
|
||||||
|
return res.status(500).json({ error: 'Internal server error' });
|
||||||
|
}
|
||||||
|
const responseData = {
|
||||||
|
server: server.server, // Informational
|
||||||
|
port: server.port, // Informational
|
||||||
|
inbound_context: server.auth, // IAX2 username and context
|
||||||
|
iax_secret: server.secret, // IAX2 password
|
||||||
|
block: server.block_start, // Used for generating context
|
||||||
|
api_key: server.apiKey // Used for authentication
|
||||||
|
};
|
||||||
|
|
||||||
|
if (address !== req.ip && address !== req.headers['x-forwarded-for']) {
|
||||||
|
responseData.warning = "IP Mismatch. Are you running this on the right server?";
|
||||||
|
}
|
||||||
|
res.json(responseData);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
// Other public endpoints that need special handling
|
// Other public endpoints that need special handling
|
||||||
discordInviteCache = { time: 0, url: "" };
|
discordInviteCache = { time: 0, url: "" };
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue