reverseproxy: async'ify

This commit is contained in:
Girish Ramakrishnan
2021-08-17 14:04:29 -07:00
parent 5bcf1bc47b
commit 5dd6f85025
10 changed files with 212 additions and 292 deletions
+12 -34
View File
@@ -16,6 +16,7 @@ const appdb = require('./appdb.js'),
apps = require('./apps.js'),
assert = require('assert'),
async = require('async'),
auditSource = require('./auditsource.js'),
backuptask = require('./backuptask.js'),
BoxError = require('./boxerror.js'),
collectd = require('./collectd.js'),
@@ -24,7 +25,6 @@ const appdb = require('./appdb.js'),
df = require('@sindresorhus/df'),
dns = require('./dns.js'),
docker = require('./docker.js'),
domains = require('./domains.js'),
ejs = require('ejs'),
fs = require('fs'),
iputils = require('./iputils.js'),
@@ -93,28 +93,6 @@ function allocateContainerIp(app, callback) {
}, callback);
}
function configureReverseProxy(app, callback) {
assert.strictEqual(typeof app, 'object');
assert.strictEqual(typeof callback, 'function');
reverseProxy.configureApp(app, { userId: null, username: 'apptask' }, function (error) {
if (error) return callback(error);
callback(null);
});
}
function unconfigureReverseProxy(app, callback) {
assert.strictEqual(typeof app, 'object');
assert.strictEqual(typeof callback, 'function');
reverseProxy.unconfigureApp(app, function (error) {
if (error) return callback(error);
callback(null);
});
}
function createContainer(app, callback) {
assert.strictEqual(typeof app, 'object');
assert.strictEqual(typeof callback, 'function');
@@ -401,7 +379,7 @@ function install(app, args, progressCallback, callback) {
// teardown for re-installs
progressCallback.bind(null, { percent: 10, message: 'Cleaning up old install' }),
unconfigureReverseProxy.bind(null, app),
reverseProxy.unconfigureApp.bind(null, app),
deleteContainers.bind(null, app, { managedOnly: true }),
function teardownAddons(next) {
// when restoring, app does not require these addons anymore. remove carefully to preserve the db passwords
@@ -493,7 +471,7 @@ function install(app, args, progressCallback, callback) {
},
progressCallback.bind(null, { percent: 95, message: 'Configuring reverse proxy' }),
configureReverseProxy.bind(null, app),
reverseProxy.configureApp.bind(null, app, auditSource.APPTASK),
progressCallback.bind(null, { percent: 100, message: 'Done' }),
updateApp.bind(null, app, { installationState: apps.ISTATE_INSTALLED, error: null, health: null })
@@ -573,7 +551,7 @@ function changeLocation(app, args, progressCallback, callback) {
async.series([
progressCallback.bind(null, { percent: 10, message: 'Cleaning up old install' }),
unconfigureReverseProxy.bind(null, app),
reverseProxy.unconfigureApp.bind(null, app),
deleteContainers.bind(null, app, { managedOnly: true }),
function (next) {
let obsoleteDomains = oldConfig.alternateDomains.filter(function (o) {
@@ -621,7 +599,7 @@ function changeLocation(app, args, progressCallback, callback) {
},
progressCallback.bind(null, { percent: 90, message: 'Configuring reverse proxy' }),
configureReverseProxy.bind(null, app),
reverseProxy.configureApp.bind(null, app, auditSource.APPTASK),
progressCallback.bind(null, { percent: 100, message: 'Done' }),
updateApp.bind(null, app, { installationState: apps.ISTATE_INSTALLED, error: null, health: null })
@@ -683,7 +661,7 @@ function configure(app, args, progressCallback, callback) {
async.series([
progressCallback.bind(null, { percent: 10, message: 'Cleaning up old install' }),
unconfigureReverseProxy.bind(null, app),
reverseProxy.unconfigureApp.bind(null, app),
deleteContainers.bind(null, app, { managedOnly: true }),
progressCallback.bind(null, { percent: 20, message: 'Downloading icon' }),
@@ -705,7 +683,7 @@ function configure(app, args, progressCallback, callback) {
startApp.bind(null, app),
progressCallback.bind(null, { percent: 90, message: 'Configuring reverse proxy' }),
configureReverseProxy.bind(null, app),
reverseProxy.configureApp.bind(null, app, auditSource.APPTASK),
progressCallback.bind(null, { percent: 100, message: 'Done' }),
updateApp.bind(null, app, { installationState: apps.ISTATE_INSTALLED, error: null, health: null })
@@ -809,10 +787,10 @@ function update(app, args, progressCallback, callback) {
startApp.bind(null, app),
progressCallback.bind(null, { percent: 90, message: 'Configuring reverse proxy' }),
function (next) {
if (!httpPathsChanged && !proxyAuthChanged && !httpPortChanged) return next();
async function () {
if (!httpPathsChanged && !proxyAuthChanged && !httpPortChanged) return;
configureReverseProxy(app, next);
await reverseProxy.configureApp(app, auditSource.APPTASK);
},
progressCallback.bind(null, { percent: 100, message: 'Done' }),
@@ -848,7 +826,7 @@ function start(app, args, progressCallback, callback) {
// stopped apps do not renew certs. currently, we don't do DNS to not overwrite existing user settings
progressCallback.bind(null, { percent: 80, message: 'Configuring reverse proxy' }),
configureReverseProxy.bind(null, app),
reverseProxy.configureApp.bind(null, app, auditSource.APPTASK),
progressCallback.bind(null, { percent: 100, message: 'Done' }),
updateApp.bind(null, app, { installationState: apps.ISTATE_INSTALLED, error: null, health: null })
@@ -917,7 +895,7 @@ function uninstall(app, args, progressCallback, callback) {
async.series([
progressCallback.bind(null, { percent: 20, message: 'Deleting container' }),
unconfigureReverseProxy.bind(null, app),
reverseProxy.unconfigureApp.bind(null, app),
deleteContainers.bind(null, app, {}),
progressCallback.bind(null, { percent: 30, message: 'Teardown addons' }),