diff --git a/src/domains.js b/src/domains.js index fdd2521ac..d8db444b6 100644 --- a/src/domains.js +++ b/src/domains.js @@ -41,6 +41,7 @@ var assert = require('assert'), DatabaseError = require('./databaseerror.js'), debug = require('debug')('box:domains'), domaindb = require('./domaindb.js'), + eventlog = require('./eventlog.js'), path = require('path'), reverseProxy = require('./reverseproxy.js'), ReverseProxyError = reverseProxy.ReverseProxyError, @@ -199,15 +200,17 @@ function validateTlsConfig(tlsConfig, dnsProvider) { return null; } -function add(domain, zoneName, provider, dnsConfig, fallbackCertificate, tlsConfig, callback) { +function add(domain, data, auditSource, callback) { assert.strictEqual(typeof domain, 'string'); - assert.strictEqual(typeof zoneName, 'string'); - assert.strictEqual(typeof provider, 'string'); - assert.strictEqual(typeof dnsConfig, 'object'); - assert.strictEqual(typeof fallbackCertificate, 'object'); - assert.strictEqual(typeof tlsConfig, 'object'); + assert.strictEqual(typeof data.zoneName, 'string'); + assert.strictEqual(typeof data.provider, 'string'); + assert.strictEqual(typeof data.config, 'object'); + assert.strictEqual(typeof data.fallbackCertificate, 'object'); + assert.strictEqual(typeof data.tlsConfig, 'object'); assert.strictEqual(typeof callback, 'function'); + let { zoneName, provider, config, fallbackCertificate, tlsConfig } = data; + if (!tld.isValid(domain)) return callback(new DomainsError(DomainsError.BAD_FIELD, 'Invalid domain')); if (domain.endsWith('.')) return callback(new DomainsError(DomainsError.BAD_FIELD, 'Invalid domain')); @@ -219,10 +222,10 @@ function add(domain, zoneName, provider, dnsConfig, fallbackCertificate, tlsConf } if (fallbackCertificate) { - let error = reverseProxy.validateCertificate('test', { domain: domain, config: dnsConfig }, fallbackCertificate); + let error = reverseProxy.validateCertificate('test', { domain, config }, fallbackCertificate); if (error) return callback(new DomainsError(DomainsError.BAD_FIELD, error.message)); } else { - fallbackCertificate = reverseProxy.generateFallbackCertificateSync({ domain: domain, config: dnsConfig }); + fallbackCertificate = reverseProxy.generateFallbackCertificateSync({ domain, config }); if (fallbackCertificate.error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, fallbackCertificate.error)); } @@ -232,16 +235,18 @@ function add(domain, zoneName, provider, dnsConfig, fallbackCertificate, tlsConf sysinfo.getPublicIp(function (error, ip) { if (error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, 'Error getting IP:' + error.message)); - verifyDnsConfig(dnsConfig, domain, zoneName, provider, ip, function (error, result) { + verifyDnsConfig(config, domain, zoneName, provider, ip, function (error, sanitizedConfig) { if (error) return callback(error); - domaindb.add(domain, { zoneName: zoneName, provider: provider, config: result, tlsConfig: tlsConfig }, function (error) { + domaindb.add(domain, { zoneName: zoneName, provider: provider, config: sanitizedConfig, tlsConfig: tlsConfig }, function (error) { if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new DomainsError(DomainsError.ALREADY_EXISTS)); if (error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, error)); reverseProxy.setFallbackCertificate(domain, fallbackCertificate, function (error) { if (error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, error)); + eventlog.add(eventlog.ACTION_DOMAIN_ADD, auditSource, { domain, zoneName, provider }); + callback(); }); }); @@ -291,15 +296,18 @@ function getAll(callback) { }); } -function update(domain, zoneName, provider, dnsConfig, fallbackCertificate, tlsConfig, callback) { +function update(domain, data, auditSource, callback) { assert.strictEqual(typeof domain, 'string'); - assert.strictEqual(typeof zoneName, 'string'); - assert.strictEqual(typeof provider, 'string'); - assert.strictEqual(typeof dnsConfig, 'object'); - assert.strictEqual(typeof fallbackCertificate, 'object'); - assert.strictEqual(typeof tlsConfig, 'object'); + assert.strictEqual(typeof data.zoneName, 'string'); + assert.strictEqual(typeof data.provider, 'string'); + assert.strictEqual(typeof data.config, 'object'); + assert.strictEqual(typeof data.fallbackCertificate, 'object'); + assert.strictEqual(typeof data.tlsConfig, 'object'); + assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); + let { zoneName, provider, config, fallbackCertificate, tlsConfig } = data; + domaindb.get(domain, function (error, domainObject) { if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new DomainsError(DomainsError.NOT_FOUND)); if (error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, error)); @@ -321,10 +329,10 @@ function update(domain, zoneName, provider, dnsConfig, fallbackCertificate, tlsC sysinfo.getPublicIp(function (error, ip) { if (error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, 'Error getting IP:' + error.message)); - verifyDnsConfig(dnsConfig, domain, zoneName, provider, ip, function (error, result) { + verifyDnsConfig(config, domain, zoneName, provider, ip, function (error, sanitizedConfig) { if (error) return callback(error); - domaindb.update(domain, { zoneName: zoneName, provider: provider, config: result, tlsConfig: tlsConfig }, function (error) { + domaindb.update(domain, { zoneName: zoneName, provider: provider, config: sanitizedConfig, tlsConfig: tlsConfig }, function (error) { if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new DomainsError(DomainsError.NOT_FOUND)); if (error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, error)); @@ -333,6 +341,8 @@ function update(domain, zoneName, provider, dnsConfig, fallbackCertificate, tlsC reverseProxy.setFallbackCertificate(domain, fallbackCertificate, function (error) { if (error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, error)); + eventlog.add(eventlog.ACTION_DOMAIN_UPDATE, auditSource, { domain, zoneName, provider }); + callback(); }); }); @@ -341,8 +351,9 @@ function update(domain, zoneName, provider, dnsConfig, fallbackCertificate, tlsC }); } -function del(domain, callback) { +function del(domain, auditSource, callback) { assert.strictEqual(typeof domain, 'string'); + assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); if (domain === config.adminDomain()) return callback(new DomainsError(DomainsError.IN_USE)); @@ -352,6 +363,8 @@ function del(domain, callback) { if (error && error.reason === DatabaseError.IN_USE) return callback(new DomainsError(DomainsError.IN_USE)); if (error) return callback(new DomainsError(DomainsError.INTERNAL_ERROR, error)); + eventlog.add(eventlog.ACTION_DOMAIN_REMOVE, auditSource, { domain }); + return callback(null); }); } diff --git a/src/eventlog.js b/src/eventlog.js index 22226455f..ef77217a9 100644 --- a/src/eventlog.js +++ b/src/eventlog.js @@ -25,6 +25,10 @@ exports = module.exports = { ACTION_CERTIFICATE_RENEWAL: 'certificate.renew', + ACTION_DOMAIN_ADD: 'domain.add', + ACTION_DOMAIN_UPDATE: 'domain.update', + ACTION_DOMAIN_REMOVE: 'domain.remove', + ACTION_MAIL_ENABLED: 'mail.enabled', ACTION_MAIL_DISABLED: 'mail.disabled', ACTION_MAIL_MAILBOX_ADD: 'mail.box.add', @@ -32,6 +36,8 @@ exports = module.exports = { ACTION_MAIL_LIST_ADD: 'mail.list.add', ACTION_MAIL_LIST_REMOVE: 'mail.list.remove', + ACTION_PROVISION: 'cloudron.provision', + ACTION_RESTORE: 'cloudron.restore', // unused ACTION_START: 'cloudron.start', ACTION_UPDATE: 'cloudron.update', diff --git a/src/routes/domains.js b/src/routes/domains.js index 6fc4c0a19..6e7c4a820 100644 --- a/src/routes/domains.js +++ b/src/routes/domains.js @@ -59,7 +59,15 @@ function add(req, res, next) { // some DNS providers like DigitalOcean take a really long time to verify credentials (https://github.com/expressjs/timeout/issues/26) req.clearTimeout(); - domains.add(req.body.domain, req.body.zoneName || '', req.body.provider, req.body.config, req.body.fallbackCertificate || null, req.body.tlsConfig || { provider: 'letsencrypt-prod' }, function (error) { + let data = { + zoneName: req.body.zoneName || '', + provider: req.body.provider, + config: req.body.config, + fallbackCertificate: req.body.fallbackCertificate || null, + tlsConfig: req.body.tlsConfig || { provider: 'letsencrypt-prod' } + }; + + domains.add(req.body.domain, data, auditSource(req), function (error) { if (error && error.reason === DomainsError.ALREADY_EXISTS) return next(new HttpError(409, error.message)); if (error && error.reason === DomainsError.BAD_FIELD) return next(new HttpError(400, error.message)); if (error && error.reason === DomainsError.INVALID_PROVIDER) return next(new HttpError(400, error.message)); @@ -117,7 +125,15 @@ function update(req, res, next) { // some DNS providers like DigitalOcean take a really long time to verify credentials (https://github.com/expressjs/timeout/issues/26) req.clearTimeout(); - domains.update(req.params.domain, req.body.zoneName || '', req.body.provider, req.body.config, req.body.fallbackCertificate || null, req.body.tlsConfig || { provider: 'letsencrypt-prod' }, function (error) { + let data = { + zoneName: req.body.zoneName || '', + provider: req.body.provider, + config: req.body.config, + fallbackCertificate: req.body.fallbackCertificate || null, + tlsConfig: req.body.tlsConfig || { provider: 'letsencrypt-prod' } + }; + + domains.update(req.params.domain, data, auditSource(req), function (error) { if (error && error.reason === DomainsError.NOT_FOUND) return next(new HttpError(404, error.message)); if (error && error.reason === DomainsError.BAD_FIELD) return next(new HttpError(400, error.message)); if (error && error.reason === DomainsError.INVALID_PROVIDER) return next(new HttpError(400, error.message)); @@ -130,7 +146,7 @@ function update(req, res, next) { function del(req, res, next) { assert.strictEqual(typeof req.params.domain, 'string'); - domains.del(req.params.domain, function (error) { + domains.del(req.params.domain, auditSource(req), function (error) { if (error && error.reason === DomainsError.NOT_FOUND) return next(new HttpError(404, error.message)); if (error && error.reason === DomainsError.IN_USE) return next(new HttpError(409, 'Domain is still in use. Remove all apps and mailboxes using this domain')); if (error) return next(new HttpError(500, error)); diff --git a/src/routes/setup.js b/src/routes/setup.js index 39a1157df..1f0e6f2f1 100644 --- a/src/routes/setup.js +++ b/src/routes/setup.js @@ -18,8 +18,7 @@ var assert = require('assert'), HttpSuccess = require('connect-lastmile').HttpSuccess, setup = require('../setup.js'), SetupError = require('../setup.js').SetupError, - superagent = require('superagent'), - _ = require('underscore'); + superagent = require('superagent'); function auditSource(req) { var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || null; @@ -85,7 +84,7 @@ function provision(req, res, next) { // it can take sometime to setup DNS, register cloudron req.clearTimeout(); - setup.provision(dnsConfig, req.body.autoconf || {}, function (error) { + setup.provision(dnsConfig, req.body.autoconf || {}, auditSource(req), function (error) { if (error && error.reason === SetupError.ALREADY_SETUP) return next(new HttpError(409, error.message)); if (error && error.reason === SetupError.BAD_FIELD) return next(new HttpError(400, error.message)); if (error && error.reason === SetupError.BAD_STATE) return next(new HttpError(409, error.message)); @@ -156,7 +155,7 @@ function restore(req, res, next) { // TODO: validate subfields of these objects if (req.body.autoconf && typeof req.body.autoconf !== 'object') return next(new HttpError(400, 'autoconf must be an object')); - setup.restore(backupConfig, req.body.backupId, req.body.version, req.body.autoconf || {}, function (error) { + setup.restore(backupConfig, req.body.backupId, req.body.version, req.body.autoconf || {}, auditSource(req), function (error) { if (error && error.reason === SetupError.ALREADY_SETUP) return next(new HttpError(409, error.message)); if (error && error.reason === SetupError.BAD_FIELD) return next(new HttpError(400, error.message)); if (error && error.reason === SetupError.BAD_STATE) return next(new HttpError(409, error.message)); diff --git a/src/routes/test/backups-test.js b/src/routes/test/backups-test.js index 9ab6d2e8f..b7083c272 100644 --- a/src/routes/test/backups-test.js +++ b/src/routes/test/backups-test.js @@ -29,6 +29,8 @@ const DOMAIN_0 = { tlsConfig: { provider: 'fallback' } }; +let AUDIT_SOURCE = { ip: '1.2.3.4' }; + var token = null, ownerId = null; function setup(done) { @@ -38,7 +40,7 @@ function setup(done) { async.series([ server.start, database._clear, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), function createAdmin(callback) { superagent.post(SERVER_URL + '/api/v1/cloudron/activate') diff --git a/src/routes/test/caas-test.js b/src/routes/test/caas-test.js index a548ee035..3a39879c7 100644 --- a/src/routes/test/caas-test.js +++ b/src/routes/test/caas-test.js @@ -14,7 +14,6 @@ var appdb = require('../../appdb.js'), expect = require('expect.js'), locker = require('../../locker.js'), nock = require('nock'), - os = require('os'), superagent = require('superagent'), server = require('../../server.js'), settings = require('../../settings.js'), @@ -35,6 +34,8 @@ const DOMAIN_0 = { tlsConfig: { provider: 'fallback' } }; +let AUDIT_SOURCE = { ip: '1.2.3.4' }; + var token = null, ownerId = null; var gSudoOriginal = null; function injectShellMock() { @@ -57,7 +58,7 @@ function setup(done) { database._clear, settingsdb.set.bind(null, settings.CAAS_CONFIG_KEY, JSON.stringify({ boxId: 'BOX_ID', token: 'ACCESS_TOKEN2' })), - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), function createAdmin(callback) { var scope1 = nock(config.apiServerOrigin()).get('/api/v1/boxes/BOX_ID/setup/verify?setupToken=somesetuptoken').reply(200, {}); diff --git a/src/routes/test/oauth2-test.js b/src/routes/test/oauth2-test.js index 90ebe2c8e..c8aae5406 100644 --- a/src/routes/test/oauth2-test.js +++ b/src/routes/test/oauth2-test.js @@ -30,6 +30,8 @@ var accesscontrol = require('../../accesscontrol.js'), var SERVER_URL = 'http://localhost:' + config.get('port'); +let AUDIT_SOURCE = { ip: '1.2.3.4' }; + describe('OAuth2', function () { describe('flow', function () { @@ -208,7 +210,7 @@ describe('OAuth2', function () { async.series([ server.start, database._clear, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), clientdb.add.bind(null, CLIENT_0.id, CLIENT_0.appId, CLIENT_0.type, CLIENT_0.clientSecret, CLIENT_0.redirectURI, CLIENT_0.scope), clientdb.add.bind(null, CLIENT_1.id, CLIENT_1.appId, CLIENT_1.type, CLIENT_1.clientSecret, CLIENT_1.redirectURI, CLIENT_1.scope), clientdb.add.bind(null, CLIENT_2.id, CLIENT_2.appId, CLIENT_2.type, CLIENT_2.clientSecret, CLIENT_2.redirectURI, CLIENT_2.scope), diff --git a/src/routes/test/sysadmin-test.js b/src/routes/test/sysadmin-test.js index eb986f77c..9694efbc5 100644 --- a/src/routes/test/sysadmin-test.js +++ b/src/routes/test/sysadmin-test.js @@ -29,6 +29,8 @@ const DOMAIN_0 = { tlsConfig: { provider: 'fallback' } }; +let AUDIT_SOURCE = { ip: '1.2.3.4' }; + function setup(done) { config._reset(); config.setFqdn(DOMAIN_0.domain); @@ -36,7 +38,7 @@ function setup(done) { async.series([ server.start, database._clear, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), function createAdmin(callback) { superagent.post(SERVER_URL + '/api/v1/cloudron/activate') diff --git a/src/routes/test/users-test.js b/src/routes/test/users-test.js index ff0805d9e..2428c648c 100644 --- a/src/routes/test/users-test.js +++ b/src/routes/test/users-test.js @@ -30,6 +30,8 @@ const DOMAIN_0 = { tlsConfig: { provider: 'fallback' } }; +let AUDIT_SOURCE = { ip: '1.2.3.4' }; + const USERNAME_0 = 'superaDmIn', PASSWORD = 'Foobar?1337', EMAIL_0 = 'silLY@me.com', EMAIL_0_NEW = 'stupID@me.com', DISPLAY_NAME_0_NEW = 'New Name'; const USERNAME_1 = 'userTheFirst', EMAIL_1 = 'taO@zen.mac'; const USERNAME_2 = 'userTheSecond', EMAIL_2 = 'USER@foo.bar', EMAIL_2_NEW = 'happy@ME.com'; @@ -45,7 +47,7 @@ function setup(done) { server.start, database._clear, mailer._clearMailQueue, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), mail.addDomain.bind(null, DOMAIN_0.domain) ], function (error) { expect(error).to.not.be.ok(); diff --git a/src/setup.js b/src/setup.js index 621a2773d..cbdf2489d 100644 --- a/src/setup.js +++ b/src/setup.js @@ -154,9 +154,10 @@ function configureWebadmin(callback) { }); } -function provision(dnsConfig, autoconf, callback) { +function provision(dnsConfig, autoconf, auditSource, callback) { assert.strictEqual(typeof dnsConfig, 'object'); assert.strictEqual(typeof autoconf, 'object'); + assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); if (config.adminDomain()) return callback(new SetupError(SetupError.ALREADY_SETUP)); @@ -175,8 +176,16 @@ function provision(dnsConfig, autoconf, callback) { if (result) return callback(new SetupError(SetupError.BAD_STATE, 'Domain already exists')); + let data = { + zoneName: zoneName, + provider: dnsConfig.provider, + config: dnsConfig.config, + fallbackCertificate: dnsConfig.fallbackCertificate || null, + tlsConfig: dnsConfig.tlsConfig || { provider: 'letsencrypt-prod' } + }; + async.series([ - domains.add.bind(null, domain, zoneName, dnsConfig.provider, dnsConfig.config, dnsConfig.fallbackCertificate || null, dnsConfig.tlsConfig || { provider: 'letsencrypt-prod' }), + domains.add.bind(null, domain, data, auditSource), mail.addDomain.bind(null, domain) ], function (error) { if (error && error.reason === DomainsError.BAD_FIELD) return callback(new SetupError(SetupError.BAD_FIELD, error.message)); @@ -187,6 +196,8 @@ function provision(dnsConfig, autoconf, callback) { config.setAdminFqdn(adminFqdn); config.setAdminLocation('my'); + eventlog.add(eventlog.ACTION_PROVISION, auditSource, { }); + clients.addDefaultClients(config.adminOrigin(), callback); async.series([ @@ -256,11 +267,12 @@ function activate(username, password, email, displayName, ip, auditSource, callb }); } -function restore(backupConfig, backupId, version, autoconf, callback) { +function restore(backupConfig, backupId, version, autoconf, auditSource, callback) { assert.strictEqual(typeof backupConfig, 'object'); assert.strictEqual(typeof backupId, 'string'); assert.strictEqual(typeof version, 'string'); assert.strictEqual(typeof autoconf, 'object'); + assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); if (!semver.valid(version)) return callback(new SetupError(SetupError.BAD_STATE, 'version is not a valid semver')); diff --git a/src/test/apps-test.js b/src/test/apps-test.js index 22b5bec9b..4c187c023 100644 --- a/src/test/apps-test.js +++ b/src/test/apps-test.js @@ -20,6 +20,8 @@ var appdb = require('../appdb.js'), settingsdb = require('../settingsdb.js'), userdb = require('../userdb.js'); +let AUDIT_SOURCE = { ip: '1.2.3.4' }; + describe('Apps', function () { var ADMIN_0 = { id: 'admin123', @@ -80,6 +82,7 @@ describe('Apps', function () { zoneName: 'example.com', provider: 'manual', config: { }, + fallbackCertificate: null, tlsConfig: { provider: 'fallback' } }; @@ -88,6 +91,7 @@ describe('Apps', function () { zoneName: 'example2.com', provider: 'manual', config: { }, + fallbackCertificate: null, tlsConfig: { provider: 'fallback' } }; @@ -159,8 +163,8 @@ describe('Apps', function () { async.series([ database.initialize, database._clear, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig), - domains.add.bind(null, DOMAIN_1.domain, DOMAIN_1.zoneName, DOMAIN_1.provider, DOMAIN_1.config, null, DOMAIN_1.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), + domains.add.bind(null, DOMAIN_1.domain, DOMAIN_1, AUDIT_SOURCE), userdb.add.bind(null, ADMIN_0.id, ADMIN_0), userdb.add.bind(null, USER_0.id, USER_0), userdb.add.bind(null, USER_1.id, USER_1), diff --git a/src/test/apptask-test.js b/src/test/apptask-test.js index fe4f92702..435be6e7d 100644 --- a/src/test/apptask-test.js +++ b/src/test/apptask-test.js @@ -59,9 +59,12 @@ const DOMAIN_0 = { secretAccessKey: 'secretAccessKey', endpoint: 'http://localhost:5353' }, + fallbackCertificate: null, tlsConfig: { provider: 'caas' } }; +let AUDIT_SOURCE = { ip: '1.2.3.4' }; + var ADMIN = { id: 'admin123', username: 'admin123', @@ -119,7 +122,7 @@ describe('apptask', function () { async.series([ database.initialize, database._clear, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), userdb.add.bind(null, ADMIN.id, ADMIN), appdb.add.bind(null, APP.id, APP.appStoreId, APP.manifest, APP.location, APP.domain, APP.ownerId, APP.portBindings, APP), settings.initialize diff --git a/src/test/digest-test.js b/src/test/digest-test.js index 97c01cd28..eaf9ec649 100644 --- a/src/test/digest-test.js +++ b/src/test/digest-test.js @@ -71,7 +71,7 @@ describe('digest', function () { database.initialize, database._clear, settings.initialize, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), mail.addDomain.bind(null, DOMAIN_0.domain), users.createOwner.bind(null, USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE), function (callback) { diff --git a/src/test/dns-test.js b/src/test/dns-test.js index 514beb093..1266d8bfc 100644 --- a/src/test/dns-test.js +++ b/src/test/dns-test.js @@ -26,6 +26,8 @@ var DOMAIN_0 = { tlsConfig: { provider: 'fallback' } }; +var AUDIT_SOURCE = { ip: '1.2.3.4' }; + describe('dns provider', function () { before(function (done) { config._reset(); @@ -35,7 +37,7 @@ describe('dns provider', function () { database.initialize, settings.initialize, database._clear, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig) + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE) ], done); }); @@ -51,7 +53,7 @@ describe('dns provider', function () { DOMAIN_0.provider = 'noop'; DOMAIN_0.config = {}; - domains.update(DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig, done); + domains.update(DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE, done); }); it('upsert succeeds', function (done) { @@ -91,7 +93,7 @@ describe('dns provider', function () { token: TOKEN }; - domains.update(DOMAIN_0.domain, '', DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig, done); + domains.update(DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE, done); }); it('upsert non-existing record succeeds', function (done) { @@ -348,7 +350,7 @@ describe('dns provider', function () { apiSecret: SECRET }; - domains.update(DOMAIN_0.domain, '', DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig, done); + domains.update(DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE, done); }); it('upsert record succeeds', function (done) { @@ -435,7 +437,7 @@ describe('dns provider', function () { token: TOKEN }; - domains.update(DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig, done); + domains.update(DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE, done); }); it('upsert record succeeds', function (done) { @@ -510,7 +512,7 @@ describe('dns provider', function () { token: TOKEN }; - domains.update(DOMAIN_0.domain, '', DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig, done); + domains.update(DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE, done); }); it('upsert record succeeds', function (done) { @@ -672,7 +674,7 @@ describe('dns provider', function () { AWS._originalRoute53 = AWS.Route53; AWS.Route53 = Route53Mock; - domains.update(DOMAIN_0.domain, '', DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig, done); + domains.update(DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE, done); }); after(function () { @@ -828,7 +830,7 @@ describe('dns provider', function () { _OriginalGCDNS = GCDNS.prototype.getZones; GCDNS.prototype.getZones = mockery(zoneQueue); - domains.update(DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, null, DOMAIN_0.tlsConfig, done); + domains.update(DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE, done); }); after(function () { diff --git a/src/test/ldap-test.js b/src/test/ldap-test.js index 5128c19aa..5fd670c26 100644 --- a/src/test/ldap-test.js +++ b/src/test/ldap-test.js @@ -98,7 +98,7 @@ function setup(done) { database.initialize.bind(null), database._clear.bind(null), ldapServer.start.bind(null), - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), maildb.add.bind(null, DOMAIN_0.domain), function (callback) { users.createOwner(USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE, function (error, result) { diff --git a/src/test/mail-test.js b/src/test/mail-test.js index 0f56d3384..461195984 100644 --- a/src/test/mail-test.js +++ b/src/test/mail-test.js @@ -12,7 +12,6 @@ var async = require('async'), domains = require('../domains.js'), expect = require('expect.js'), mail = require('../mail.js'), - MailError = mail.MailError, maildb = require('../maildb.js'), nock = require('nock'), settings = require('../settings.js'); @@ -43,7 +42,7 @@ function setup(done) { database.initialize, database._clear, settings.initialize, - domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig), + domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE), mail.addDomain.bind(null, DOMAIN_0.domain), function (callback) { var scope = nock('http://localhost:6060') diff --git a/src/test/reverseproxy-test.js b/src/test/reverseproxy-test.js index 8134abaa2..56fd8f210 100644 --- a/src/test/reverseproxy-test.js +++ b/src/test/reverseproxy-test.js @@ -21,6 +21,8 @@ const DOMAIN_0 = { tlsConfig: { provider: 'fallback' } }; +let AUDIT_SOURCE = { ip: '1.2.3.4' }; + function setup(done) { async.series([ database.initialize, @@ -171,7 +173,7 @@ describe('Certificates', function () { async.series([ setup, - domains.update.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig) + domains.update.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE) ], done); }); @@ -181,7 +183,7 @@ describe('Certificates', function () { reverseProxy._getCertApi(DOMAIN_0.domain, function (error, api, options) { expect(error).to.be(null); expect(api._name).to.be('caas'); - expect(options).to.eql({ email: 'support@cloudron.io', "performHttpAuthorization": false, "prod": false, "wildcard": false }); + expect(options).to.eql({ email: 'support@cloudron.io', 'performHttpAuthorization': false, 'prod': false, 'wildcard': false }); done(); }); }); @@ -193,7 +195,7 @@ describe('Certificates', function () { async.series([ setup, - domains.update.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig) + domains.update.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE) ], done); }); @@ -224,7 +226,7 @@ describe('Certificates', function () { async.series([ setup, - domains.update.bind(null, DOMAIN_0.domain, DOMAIN_0.zoneName, DOMAIN_0.provider, DOMAIN_0.config, DOMAIN_0.fallbackCertificate, DOMAIN_0.tlsConfig) + domains.update.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE) ], done); });