Files
cloudron-box/src/iputils.js
T

36 lines
889 B
JavaScript
Raw Normal View History

import assert from 'node:assert';
2020-11-20 14:13:16 -08:00
export {
2020-11-20 14:13:16 -08:00
ipFromInt,
intFromIp
};
2021-10-06 13:09:04 -07:00
// this code is used in migrations - 20201120212726-apps-add-containerIp.js
2020-11-20 14:13:16 -08:00
function intFromIp(address) {
assert.strictEqual(typeof address, 'string');
const parts = address.split('.');
if (parts.length !== 4) return null;
return (parseInt(parts[0], 10) << (8*3)) & 0xFF000000 |
(parseInt(parts[1], 10) << (8*2)) & 0x00FF0000 |
(parseInt(parts[2], 10) << (8*1)) & 0x0000FF00 |
(parseInt(parts[3], 10) << (8*0)) & 0x000000FF;
}
2021-10-06 13:09:04 -07:00
// this code is used in migrations - 20201120212726-apps-add-containerIp.js
2020-11-20 14:13:16 -08:00
function ipFromInt(input) {
assert.strictEqual(typeof input, 'number');
const output = [];
2020-11-20 14:13:16 -08:00
for (let i = 3; i >= 0; --i) {
const octet = (input >> (i*8)) & 0x000000FF;
output.push(octet);
}
return output.join('.');
}