branding: move logo into database

initially, i tried to put this in the current value field but that
is TEXT and has a size limit of 64K. TEXT also stores things with
character encoding, so we have to stash it as base64
This commit is contained in:
Girish Ramakrishnan
2021-04-29 15:46:11 -07:00
parent 3c09416e44
commit af2c096975
6 changed files with 68 additions and 17 deletions
+14 -12
View File
@@ -111,7 +111,7 @@ exports = module.exports = {
FOOTER_KEY: 'footer',
// blobs
CLOUDRON_AVATAR_KEY: 'cloudron_avatar', // not stored in db but can be used for locked flag
CLOUDRON_AVATAR_KEY: 'cloudron_avatar',
// testing
_setApiServerOrigin: setApiServerOrigin
@@ -132,7 +132,6 @@ const assert = require('assert'),
settingsdb = require('./settingsdb.js'),
sysinfo = require('./sysinfo.js'),
translation = require('./translation.js'),
util = require('util'),
_ = require('underscore');
let gDefaults = (function () {
@@ -296,25 +295,28 @@ function setCloudronName(name, callback) {
function getCloudronAvatar(callback) {
assert.strictEqual(typeof callback, 'function');
var avatar = safe.fs.readFileSync(paths.CLOUDRON_AVATAR_FILE);
if (avatar) return callback(null, avatar);
settingsdb.getBlob(exports.CLOUDRON_AVATAR_KEY, function (error, avatar) {
if (error && error.reason !== BoxError.NOT_FOUND) return callback(error);
// try default fallback
avatar = safe.fs.readFileSync(paths.CLOUDRON_DEFAULT_AVATAR_FILE);
if (avatar) return callback(null, avatar);
if (avatar) return callback(null, avatar);
callback(new BoxError(BoxError.FS_ERROR, safe.error));
// try default fallback
avatar = safe.fs.readFileSync(paths.CLOUDRON_DEFAULT_AVATAR_FILE);
if (avatar) return callback(null, avatar);
callback(new BoxError(BoxError.FS_ERROR, safe.error));
});
}
function setCloudronAvatar(avatar, callback) {
assert(Buffer.isBuffer(avatar));
assert.strictEqual(typeof callback, 'function');
if (!safe.fs.writeFileSync(paths.CLOUDRON_AVATAR_FILE, avatar)) {
return callback(new BoxError(BoxError.FS_ERROR, safe.error));
}
settingsdb.setBlob(exports.CLOUDRON_AVATAR_KEY, avatar, function (error) {
if (error) return callback(error);
return callback(null);
return callback(null);
});
}
function getDynamicDnsConfig(callback) {