diff --git a/src/settings.js b/src/settings.js index 9861b37b6..ce1804890 100644 --- a/src/settings.js +++ b/src/settings.js @@ -16,6 +16,9 @@ exports = module.exports = { getDynamicDnsConfig, setDynamicDnsConfig, + getIPv6Config, + setIPv6Config, + getReverseProxyConfig, // no setter yet since we have no UI for this getUnstableAppsConfig, @@ -90,6 +93,7 @@ exports = module.exports = { // booleans. if you add an entry here, be sure to fix list() DYNAMIC_DNS_KEY: 'dynamic_dns', UNSTABLE_APPS_KEY: 'unstable_apps', + IPV6_KEY: 'ipv6', DEMO_KEY: 'demo', // json. if you add an entry here, be sure to fix list() @@ -167,6 +171,7 @@ const gDefaults = (function () { result[exports.TIME_ZONE_KEY] = 'America/Los_Angeles'; result[exports.CLOUDRON_NAME_KEY] = 'Cloudron'; result[exports.DYNAMIC_DNS_KEY] = false; + result[exports.IPV6_KEY] = false; result[exports.UNSTABLE_APPS_KEY] = true; result[exports.LICENSE_KEY] = ''; result[exports.LANGUAGE_KEY] = 'en'; @@ -364,6 +369,19 @@ async function setDynamicDnsConfig(enabled) { notifyChange(exports.DYNAMIC_DNS_KEY, enabled); } +async function getIPv6Config() { + const enabled = await get(exports.IPV6_KEY); + if (enabled === null) return gDefaults[exports.IPV6_KEY]; + return !!enabled; // db holds string values only +} + +async function setIPv6Config(enabled) { + assert.strictEqual(typeof enabled, 'boolean'); + + await set(exports.IPV6_KEY, enabled ? 'enabled' : ''); // db holds string values only + notifyChange(exports.IPV6_KEY, enabled); +} + async function getUnstableAppsConfig() { const result = await get(exports.UNSTABLE_APPS_KEY); if (result === null) return gDefaults[exports.UNSTABLE_APPS_KEY]; @@ -735,6 +753,7 @@ async function list() { // convert booleans result[exports.DYNAMIC_DNS_KEY] = !!result[exports.DYNAMIC_DNS_KEY]; + result[exports.IPV6_KEY] = !!result[exports.IPV6_KEY]; result[exports.UNSTABLE_APPS_KEY] = !!result[exports.UNSTABLE_APPS_KEY]; result[exports.DEMO_KEY] = !!result[exports.DEMO_KEY]; diff --git a/src/test/settings-test.js b/src/test/settings-test.js index ded4942ee..5bd2f23d4 100644 --- a/src/test/settings-test.js +++ b/src/test/settings-test.js @@ -54,6 +54,18 @@ describe('Settings', function () { expect(enabled).to.be(false); }); + it('can get default IPv6 setting', async function () { + const enabled = await settings.getIPv6Config(); + expect(enabled).to.be(false); + }); + + it('can set IPv6 setting', async function () { + await settings.setIPv6Config(true); + + const enabled = await settings.getIPv6Config(); + expect(enabled).to.be(true); + }); + it('can get default directory config', async function () { const directoryConfig = await settings.getDirectoryConfig(); expect(directoryConfig.lockUserProfiles).to.be(false); @@ -76,5 +88,6 @@ describe('Settings', function () { expect(allSettings[settings.AUTOUPDATE_PATTERN_KEY]).to.be.a('string'); expect(allSettings[settings.CLOUDRON_NAME_KEY]).to.be.a('string'); expect(allSettings[settings.UNSTABLE_APPS_KEY]).to.be.a('boolean'); + expect(allSettings[settings.IPV6_KEY]).to.be.a('boolean'); }); });