'use strict'; exports = module.exports = { getCloudronName, setCloudronName, getCloudronAvatar, setCloudronAvatar, getCloudronBackground, setCloudronBackground, getFooter, setFooter, renderFooter }; const assert = require('assert'), BoxError = require('./boxerror.js'), constants = require('./constants.js'), paths = require('./paths.js'), safe = require('safetydance'), settings = require('./settings.js'); async function getCloudronName() { const name = await settings.get(settings.CLOUDRON_NAME_KEY); return name || 'Cloudron'; } async function setCloudronName(name) { assert.strictEqual(typeof name, 'string'); if (!name) throw new BoxError(BoxError.BAD_FIELD, 'name is empty'); // some arbitrary restrictions (for sake of ui layout) // if this is changed, adjust dashboard/branding.html if (name.length > 64) throw new BoxError(BoxError.BAD_FIELD, 'name cannot exceed 64 characters'); await settings.set(settings.CLOUDRON_NAME_KEY, name); } async function getCloudronAvatar() { let avatar = await settings.getBlob(settings.CLOUDRON_AVATAR_KEY); if (avatar) return avatar; // try default fallback avatar = safe.fs.readFileSync(paths.CLOUDRON_DEFAULT_AVATAR_FILE); if (avatar) return avatar; throw new BoxError(BoxError.FS_ERROR, `Could not read avatar: ${safe.error.message}`); } async function setCloudronAvatar(avatar) { assert(Buffer.isBuffer(avatar)); await settings.setBlob(settings.CLOUDRON_AVATAR_KEY, avatar); } async function getCloudronBackground() { let background = await settings.getBlob(settings.CLOUDRON_BACKGROUND_KEY); if (!background) return null; return background; } async function setCloudronBackground(background) { assert(background === null || Buffer.isBuffer(background)); await settings.setBlob(settings.CLOUDRON_BACKGROUND_KEY, background); } async function renderFooter() { const footer = await getFooter(); const year = new Date().getFullYear(); return footer.replace(/%YEAR%/g, year) .replace(/%VERSION%/g, constants.VERSION); } async function getFooter() { const value = await settings.get(settings.FOOTER_KEY); return value || constants.FOOTER; } async function setFooter(footer) { assert.strictEqual(typeof footer, 'string'); await settings.set(settings.FOOTER_KEY, footer); }