'use strict'; const async = require('async'), fs = require('node:fs'), safe = require('safetydance'); const BOX_DATA_DIR = '/home/yellowtent/boxdata'; const PLATFORM_DATA_DIR = '/home/yellowtent/platformdata'; exports.up = function (db, callback) { let funcs = []; const acmeKey = safe.fs.readFileSync(`${BOX_DATA_DIR}/acme/acme.key`); if (acmeKey) { funcs.push(db.runSql.bind(db, 'INSERT INTO blobs (id, value) VALUES (?, ?)', [ 'acme_account_key', acmeKey ])); funcs.push(fs.rm.bind(fs, `${BOX_DATA_DIR}/acme`, { recursive: true })); } const dhparams = safe.fs.readFileSync(`${BOX_DATA_DIR}/dhparams.pem`); if (dhparams) { safe.fs.writeFileSync(`${PLATFORM_DATA_DIR}/dhparams.pem`, dhparams); funcs.push(db.runSql.bind(db, 'INSERT INTO blobs (id, value) VALUES (?, ?)', [ 'dhparams', dhparams ])); // leave the dhparms here for the moment because startup code regenerates box nginx config and reloads nginx. at that point, // nginx config of apps has not been re-generated yet and the reload fails. post 6.3, this file can be removed in start.sh // funcs.push(fs.unlink.bind(fs, `${BOX_DATA_DIR}/dhparams.pem`)); } const turnSecret = safe.fs.readFileSync(`${BOX_DATA_DIR}/addon-turn-secret`); if (turnSecret) { funcs.push(db.runSql.bind(db, 'INSERT INTO blobs (id, value) VALUES (?, ?)', [ 'addon_turn_secret', turnSecret ])); funcs.push(fs.unlink.bind(fs, `${BOX_DATA_DIR}/addon-turn-secret`)); } // sftp keys get moved to platformdata in start.sh const sftpPublicKey = safe.fs.readFileSync(`${BOX_DATA_DIR}/sftp/ssh/ssh_host_rsa_key.pub`); const sftpPrivateKey = safe.fs.readFileSync(`${BOX_DATA_DIR}/sftp/ssh/ssh_host_rsa_key`); if (sftpPublicKey) { safe.fs.writeFileSync(`${PLATFORM_DATA_DIR}/sftp/ssh/ssh_host_rsa_key.pub`, sftpPublicKey); safe.fs.writeFileSync(`${PLATFORM_DATA_DIR}/sftp/ssh/ssh_host_rsa_key`, sftpPrivateKey); safe.fs.chmodSync(`${PLATFORM_DATA_DIR}/sftp/ssh/ssh_host_rsa_key`, 0o600); funcs.push(db.runSql.bind(db, 'INSERT INTO blobs (id, value) VALUES (?, ?)', [ 'sftp_public_key', sftpPublicKey ])); funcs.push(db.runSql.bind(db, 'INSERT INTO blobs (id, value) VALUES (?, ?)', [ 'sftp_private_key', sftpPrivateKey ])); funcs.push(fs.rm.bind(fs, `${BOX_DATA_DIR}/sftp`, { recursive: true })); } async.series(funcs, callback); }; exports.down = function(db, callback) { callback(); };