From f4a21bdeb407cc236dfc457ff7ecd750e668e509 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Thu, 6 Jan 2022 17:56:15 -0800 Subject: [PATCH] sysinfo: fixed provider now takes ipv6 optionally part of #264 --- ...0220107015249-settings-sysinfo-ip-to-ipv4.js | 17 +++++++++++++++++ src/sysinfo/fixed.js | 8 ++++---- 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 migrations/20220107015249-settings-sysinfo-ip-to-ipv4.js diff --git a/migrations/20220107015249-settings-sysinfo-ip-to-ipv4.js b/migrations/20220107015249-settings-sysinfo-ip-to-ipv4.js new file mode 100644 index 000000000..20a87b676 --- /dev/null +++ b/migrations/20220107015249-settings-sysinfo-ip-to-ipv4.js @@ -0,0 +1,17 @@ +'use strict'; + +exports.up = function(db, callback) { + db.runSql('SELECT value FROM settings WHERE name=?', [ 'sysinfo_config' ], function (error, result) { + if (error || result.length === 0) return callback(error); + const sysinfoConfig = JSON.parse(result[0].value); + if (sysinfoConfig.provider !== 'fixed' || !sysinfoConfig.ip) return callback(); + sysinfoConfig.ipv4 = sysinfoConfig.ip; + delete sysinfoConfig.ip; + + db.runSql('REPLACE INTO settings (name, value) VALUES(?, ?)', [ 'sysinfo_config', JSON.stringify(sysinfoConfig) ], callback); + }); +}; + +exports.down = function(db, callback) { + callback(); +}; diff --git a/src/sysinfo/fixed.js b/src/sysinfo/fixed.js index d9020ef7e..5d94b72a4 100644 --- a/src/sysinfo/fixed.js +++ b/src/sysinfo/fixed.js @@ -13,7 +13,7 @@ const assert = require('assert'), async function getServerIPv4(config) { assert.strictEqual(typeof config, 'object'); - return config.ip; + return config.ipv4; } async function getServerIPv6(config) { @@ -27,12 +27,12 @@ async function getServerIPv6(config) { async function testConfig(config) { assert.strictEqual(typeof config, 'object'); - if (typeof config.ip !== 'string') return new BoxError(BoxError.BAD_FIELD, 'ipv4 must be a string'); - if (!net.isIPv4(config.ip)) return new BoxError(BoxError.BAD_FIELD, 'ip is not a valid ipv4'); + if (typeof config.ipv4 !== 'string') return new BoxError(BoxError.BAD_FIELD, 'ipv4 must be a string'); + if (!net.isIPv4(config.ipv4)) return new BoxError(BoxError.BAD_FIELD, 'invalid IPv4'); if ('ipv6' in config) { if (typeof config.ipv6 !== 'string') return new BoxError(BoxError.BAD_FIELD, 'ipv6 must be a string'); - if (!net.isIPv6(config.ipv6)) return new BoxError(BoxError.BAD_FIELD, 'ipv6 is not a valid ipv6'); + if (!net.isIPv6(config.ipv6)) return new BoxError(BoxError.BAD_FIELD, 'invalid IPv6'); } return null;