provision: add route to detect ipv4 and ipv6

This commit is contained in:
Girish Ramakrishnan
2024-04-26 20:36:23 +02:00
parent 834a7d0f55
commit 8a987db177
6 changed files with 46 additions and 4 deletions
+14 -1
View File
@@ -18,7 +18,8 @@ exports = module.exports = {
getIPv4,
hasIPv6,
getIPv6
getIPv6,
detectIP
};
const assert = require('assert'),
@@ -162,3 +163,15 @@ async function getIPv6() {
if (!result) return null;
return ipaddr.parse(result).toRFC5952String();
}
async function detectIP() {
const genericProvider = require('./network/generic.js');
const [error4, ipv4] = await safe(genericProvider.getIPv4({}));
const [error6, ipv6] = await safe(genericProvider.getIPv6({}));
return {
ipv4: error4 ? null : ipv4,
ipv6: error6 ? null : ipv6
};
}
+7
View File
@@ -9,6 +9,7 @@ exports = module.exports = {
getStatus,
setupTokenAuth,
getBlockDevices,
detectIP
};
const assert = require('assert'),
@@ -16,6 +17,7 @@ const assert = require('assert'),
BoxError = require('../boxerror.js'),
HttpError = require('connect-lastmile').HttpError,
HttpSuccess = require('connect-lastmile').HttpSuccess,
network = require('../network.js'),
paths = require('../paths.js'),
provision = require('../provision.js'),
safe = require('safetydance'),
@@ -149,3 +151,8 @@ async function getBlockDevices(req, res, next) {
next(new HttpSuccess(200, { devices }));
}
async function detectIP(req, res, next) {
const result = await network.detectIP();
next(new HttpSuccess(200, { ipv4: result.ipv4, ipv6: result.ipv6 }));
}
+1
View File
@@ -87,6 +87,7 @@ async function initializeExpressSync() {
router.post('/api/v1/provision/restore', json, verifyUnprovisioned, setupTokenAuth, routes.provision.restore);
router.post('/api/v1/provision/activate', json, verifyUnprovisioned, setupTokenAuth, routes.provision.activate);
router.get ('/api/v1/provision/block_devices', verifyUnprovisioned, routes.provision.getBlockDevices);
router.post('/api/v1/provision/detect_ip', verifyUnprovisioned, routes.provision.detectIP);
router.get ('/api/v1/provision/status', routes.provision.getStatus);
// auth routes