36 lines
1.6 KiB
JavaScript
36 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
function s3like(provider) {
|
|
return provider === 's3' || provider === 'minio' || provider === 's3-v4-compat'
|
|
|| provider === 'exoscale-sos' || provider === 'digitalocean-spaces' || provider === 'hetzner-objectstorage'
|
|
|| provider === 'scaleway-objectstorage' || provider === 'wasabi' || provider === 'backblaze-b2' || provider === 'cloudflare-r2'
|
|
|| provider === 'linode-objectstorage' || provider === 'ovh-objectstorage' || provider === 'ionos-objectstorage'
|
|
|| provider === 'vultr-objectstorage' || provider === 'upcloud-objectstorage' || provider === 'idrive-e2'
|
|
|| provider === 'contabo-objectstorage';
|
|
}
|
|
|
|
exports.up = async function (db) {
|
|
const result = await db.runSql('SELECT * FROM settings WHERE name=?', [ 'backup_storage' ]);
|
|
if (!result.length) return;
|
|
|
|
const storageConfig = JSON.parse(result[0].value);
|
|
if (!s3like(storageConfig.provider)) return;
|
|
|
|
if (storageConfig.endpoint && !storageConfig.endpoint.match(/^(http:|https:)\/\//)) {
|
|
console.log('migrating backup provider endpoint to https');
|
|
storageConfig.endpoint = `https://${storageConfig.endpoint}`;
|
|
}
|
|
|
|
if (storageConfig.provider === 'linode-objectstorage') { // in some old release, we didn't set the region correctly
|
|
const match = storageConfig.endpoint.match(/^https:\/\/(.*).linodeobjects.com$/);
|
|
storageConfig.region = match ? match[1] : storageConfig.region;
|
|
console.log('migrating backup region to', storageConfig.region);
|
|
}
|
|
|
|
await db.runSql('UPDATE settings SET value=? WHERE name=?', [ JSON.stringify(storageConfig), 'backup_storage']);
|
|
|
|
};
|
|
|
|
exports.down = async function (db) {
|
|
};
|