lint
This commit is contained in:
4
box.js
4
box.js
@@ -12,7 +12,7 @@ import server from './src/server.js';
|
||||
import directoryServer from './src/directoryserver.js';
|
||||
import logger from './src/logger.js';
|
||||
|
||||
const { log, trace } = logger('box');
|
||||
const { log } = logger('box');
|
||||
|
||||
let logFd;
|
||||
|
||||
@@ -94,4 +94,4 @@ process.on('SIGTERM', async function () {
|
||||
}, 2000); // need to wait for the task processes to die
|
||||
});
|
||||
|
||||
process.on('uncaughtException', (error) => exitSync({ error, code: 1, message: 'From uncaughtException handler.' }));
|
||||
process.on('uncaughtException', (uncaughtError) => exitSync({ error: uncaughtError, code: 1, message: 'From uncaughtException handler.' }));
|
||||
|
||||
@@ -12,7 +12,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import users from './users.js';
|
||||
|
||||
const { log, trace } = logger('cert/acme2');
|
||||
const { log } = logger('cert/acme2');
|
||||
|
||||
const CA_PROD_DIRECTORY_URL = 'https://acme-v02.api.letsencrypt.org/directory',
|
||||
CA_STAGING_DIRECTORY_URL = 'https://acme-staging-v02.api.letsencrypt.org/directory';
|
||||
|
||||
@@ -9,7 +9,7 @@ import eventlog from './eventlog.js';
|
||||
import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
|
||||
const { log, trace } = logger('apphealthmonitor');
|
||||
const { log } = logger('apphealthmonitor');
|
||||
|
||||
|
||||
const UNHEALTHY_THRESHOLD = 20 * 60 * 1000; // 20 minutes
|
||||
|
||||
@@ -8,7 +8,7 @@ import jsdom from 'jsdom';
|
||||
import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
|
||||
const { log, trace } = logger('applinks');
|
||||
const { log } = logger('applinks');
|
||||
|
||||
|
||||
const APPLINKS_FIELDS= [ 'id', 'accessRestrictionJson', 'creationTime', 'updateTime', 'ts', 'label', 'tagsJson', 'icon', 'upstreamUri' ].join(',');
|
||||
|
||||
@@ -40,7 +40,7 @@ import util from 'node:util';
|
||||
import volumes from './volumes.js';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('apps');
|
||||
const { log } = logger('apps');
|
||||
const shell = shellModule('apps');
|
||||
|
||||
const PORT_TYPE_TCP = 'tcp';
|
||||
@@ -1071,7 +1071,8 @@ async function onTaskFinished(error, appId, installationState, taskId, auditSour
|
||||
}
|
||||
|
||||
// this can race with an new install task but very unlikely
|
||||
log(`onTaskFinished: checking to stop unused services. hasPending: ${appTaskManager.hasPendingTasks()}`)
|
||||
log(`onTaskFinished: checking to stop unused services. hasPending: ${appTaskManager.hasPendingTasks()}`);
|
||||
|
||||
if (!appTaskManager.hasPendingTasks()) safe(services.stopUnusedServices(), { debug: log });
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import system from './system.js';
|
||||
import users from './users.js';
|
||||
import volumes from './volumes.js';
|
||||
|
||||
const { log, trace } = logger('appstore');
|
||||
const { log } = logger('appstore');
|
||||
|
||||
// These are the default options and will be adjusted once a subscription state is obtained
|
||||
// Keep in sync with appstore/routes/cloudrons.js
|
||||
|
||||
@@ -28,7 +28,7 @@ import services from './services.js';
|
||||
import shellModule from './shell.js';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('apptask');
|
||||
const { log } = logger('apptask');
|
||||
const shell = shellModule('apptask');
|
||||
|
||||
const LOGROTATE_CONFIG_EJS = fs.readFileSync(import.meta.dirname + '/logrotate.ejs', { encoding: 'utf8' }),
|
||||
|
||||
@@ -9,7 +9,7 @@ import safe from 'safetydance';
|
||||
import scheduler from './scheduler.js';
|
||||
import tasks from './tasks.js';
|
||||
|
||||
const { log, trace } = logger('apptaskmanager');
|
||||
const { log } = logger('apptaskmanager');
|
||||
|
||||
|
||||
const gActiveTasks = {}; // indexed by app id
|
||||
|
||||
@@ -2,7 +2,7 @@ import logger from './logger.js';
|
||||
import EventEmitter from 'node:events';
|
||||
import safe from 'safetydance';
|
||||
|
||||
const { log, trace } = logger('asynctask');
|
||||
const { log } = logger('asynctask');
|
||||
|
||||
// this runs in-process
|
||||
class AsyncTask extends EventEmitter {
|
||||
|
||||
@@ -11,7 +11,7 @@ import moment from 'moment';
|
||||
import path from 'node:path';
|
||||
import safe from 'safetydance';
|
||||
|
||||
const { log, trace } = logger('backupcleaner');
|
||||
const { log } = logger('backupcleaner');
|
||||
|
||||
function applyBackupRetention(allBackups, retention, referencedBackupIds) {
|
||||
assert(Array.isArray(allBackups));
|
||||
|
||||
@@ -19,7 +19,7 @@ import syncer from '../syncer.js';
|
||||
import util from 'node:util';
|
||||
import { Writable } from 'node:stream';
|
||||
|
||||
const { log, trace } = logger('backupformat/rsync');
|
||||
const { log } = logger('backupformat/rsync');
|
||||
const shell = shellModule('backupformat/rsync');
|
||||
|
||||
async function addFile(sourceFile, encryption, uploader, progressCallback) {
|
||||
|
||||
@@ -17,7 +17,7 @@ import tar from 'tar-stream';
|
||||
import util from 'node:util';
|
||||
import zlib from 'node:zlib';
|
||||
|
||||
const { log, trace } = logger('backupformat/tgz');
|
||||
const { log } = logger('backupformat/tgz');
|
||||
|
||||
// In tar, the entry header contains the file size. If we don't provide it those many bytes, the tar will become corrupt
|
||||
// Linux provides no guarantee of how many bytes can be read from a file. This is the case with sqlite and log files
|
||||
|
||||
@@ -8,7 +8,7 @@ import crypto from 'node:crypto';
|
||||
import logger from './logger.js';
|
||||
import safe from 'safetydance';
|
||||
|
||||
const { log, trace } = logger('backupintegrity');
|
||||
const { log } = logger('backupintegrity');
|
||||
|
||||
|
||||
async function downloadBackupInfo(backupSite, backup) {
|
||||
|
||||
@@ -7,7 +7,7 @@ import hat from './hat.js';
|
||||
import safe from 'safetydance';
|
||||
import tasks from './tasks.js';
|
||||
|
||||
const { log, trace } = logger('backups');
|
||||
const { log } = logger('backups');
|
||||
|
||||
const BACKUP_TYPE_APP = 'app';
|
||||
const BACKUP_STATE_NORMAL = 'normal';
|
||||
|
||||
@@ -18,7 +18,7 @@ import storageFilesystem from './storage/filesystem.js';
|
||||
import storageS3 from './storage/s3.js';
|
||||
import storageGcs from './storage/gcs.js';
|
||||
|
||||
const { log, trace } = logger('backups');
|
||||
const { log } = logger('backups');
|
||||
|
||||
|
||||
// format: rsync or tgz
|
||||
|
||||
@@ -20,7 +20,7 @@ import shellModule from './shell.js';
|
||||
import stream from 'stream/promises';
|
||||
import util from 'util';
|
||||
|
||||
const { log, trace } = logger('backuptask');
|
||||
const { log } = logger('backuptask');
|
||||
const shell = shellModule('backuptask');
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import paths from './paths.js';
|
||||
import safe from 'safetydance';
|
||||
import settings from './settings.js';
|
||||
|
||||
const { log, trace } = logger('branding');
|
||||
const { log } = logger('branding');
|
||||
|
||||
|
||||
async function getCloudronName() {
|
||||
|
||||
@@ -6,7 +6,7 @@ import promiseRetry from './promise-retry.js';
|
||||
import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
|
||||
const { log, trace } = logger('community');
|
||||
const { log } = logger('community');
|
||||
|
||||
const CLOUDRON_VERSIONS_FILE = 'CloudronVersions.json';
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import system from './system.js';
|
||||
import updater from './updater.js';
|
||||
import util from 'node:util';
|
||||
|
||||
const { log, trace } = logger('cron');
|
||||
const { log } = logger('cron');
|
||||
|
||||
// IMPORTANT: These patterns are together because they spin tasks which acquire a lock
|
||||
// If the patterns overlap all the time, then the task may not ever get a chance to run!
|
||||
|
||||
@@ -18,7 +18,7 @@ import system from './system.js';
|
||||
import tasks from './tasks.js';
|
||||
import userDirectory from './user-directory.js';
|
||||
|
||||
const { log, trace } = logger('dashboard');
|
||||
const { log } = logger('dashboard');
|
||||
|
||||
async function getLocation() {
|
||||
const domain = await settings.get(settings.DASHBOARD_DOMAIN_KEY);
|
||||
|
||||
@@ -7,7 +7,7 @@ import mysql from 'mysql2/promise';
|
||||
import safe from 'safetydance';
|
||||
import shellModule from './shell.js';
|
||||
|
||||
const { log, trace } = logger('database');
|
||||
const { log } = logger('database');
|
||||
const shell = shellModule('database');
|
||||
|
||||
let gConnectionPool = null;
|
||||
|
||||
@@ -4,7 +4,7 @@ import logger from './logger.js';
|
||||
import safe from 'safetydance';
|
||||
import shellModule from './shell.js';
|
||||
|
||||
const { log, trace } = logger('df');
|
||||
const { log } = logger('df');
|
||||
const shell = shellModule('df');
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import shellModule from './shell.js';
|
||||
import users from './users.js';
|
||||
import util from 'node:util';
|
||||
|
||||
const { log, trace } = logger('directoryserver');
|
||||
const { log } = logger('directoryserver');
|
||||
const shell = shellModule('directoryserver');
|
||||
|
||||
|
||||
@@ -289,7 +289,7 @@ async function groupSearch(req, res, next) {
|
||||
async function start() {
|
||||
assert(gServer === null, 'Already running');
|
||||
|
||||
const logger = {
|
||||
const ldapLogger = {
|
||||
trace: NOOP,
|
||||
debug: NOOP,
|
||||
info: log,
|
||||
@@ -303,7 +303,7 @@ async function start() {
|
||||
gServer = ldap.createServer({
|
||||
certificate: gCertificate.cert,
|
||||
key: gCertificate.key,
|
||||
log: logger
|
||||
log: ldapLogger
|
||||
});
|
||||
|
||||
gServer.on('error', function (error) {
|
||||
|
||||
@@ -36,7 +36,7 @@ import dnsOvh from './dns/ovh.js';
|
||||
import dnsPorkbun from './dns/porkbun.js';
|
||||
import dnsWildcard from './dns/wildcard.js';
|
||||
|
||||
const { log, trace } = logger('dns');
|
||||
const { log } = logger('dns');
|
||||
|
||||
|
||||
const DNS_PROVIDERS = {
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/bunny');
|
||||
const { log } = logger('dns/bunny');
|
||||
|
||||
|
||||
const BUNNY_API = 'https://api.bunny.net';
|
||||
|
||||
@@ -9,7 +9,7 @@ import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
import _ from '../underscore.js';
|
||||
|
||||
const { log, trace } = logger('dns/cloudflare');
|
||||
const { log } = logger('dns/cloudflare');
|
||||
|
||||
|
||||
// we are using latest v4 stable API https://api.cloudflare.com/#getting-started-endpoints
|
||||
|
||||
@@ -9,7 +9,7 @@ import timers from 'timers/promises';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/desec');
|
||||
const { log } = logger('dns/desec');
|
||||
|
||||
|
||||
const DESEC_ENDPOINT = 'https://desec.io/api/v1';
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/digitalocean');
|
||||
const { log } = logger('dns/digitalocean');
|
||||
|
||||
|
||||
const DIGITALOCEAN_ENDPOINT = 'https://api.digitalocean.com';
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/dnsimple');
|
||||
const { log } = logger('dns/dnsimple');
|
||||
|
||||
|
||||
const DNSIMPLE_API = 'https://api.dnsimple.com/v2';
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/gandi');
|
||||
const { log } = logger('dns/gandi');
|
||||
|
||||
|
||||
const GANDI_API = 'https://dns.api.gandi.net/api/v5';
|
||||
|
||||
@@ -9,7 +9,7 @@ import safe from 'safetydance';
|
||||
import waitForDns from './waitfordns.js';
|
||||
import _ from '../underscore.js';
|
||||
|
||||
const { log, trace } = logger('dns/gcdns');
|
||||
const { log } = logger('dns/gcdns');
|
||||
|
||||
|
||||
function removePrivateFields(domainObject) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/godaddy');
|
||||
const { log } = logger('dns/godaddy');
|
||||
|
||||
|
||||
// const GODADDY_API_OTE = 'https://api.ote-godaddy.com/v1/domains';
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/hetzner');
|
||||
const { log } = logger('dns/hetzner');
|
||||
|
||||
|
||||
const ENDPOINT = 'https://dns.hetzner.com/api/v1';
|
||||
|
||||
@@ -9,7 +9,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/hetznercloud');
|
||||
const { log } = logger('dns/hetznercloud');
|
||||
|
||||
|
||||
// https://docs.hetzner.cloud/reference/cloud
|
||||
|
||||
@@ -8,7 +8,7 @@ import dns from '../dns.js';
|
||||
import safe from 'safetydance';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/inwx');
|
||||
const { log } = logger('dns/inwx');
|
||||
|
||||
|
||||
function formatError(response) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/linode');
|
||||
const { log } = logger('dns/linode');
|
||||
|
||||
|
||||
const LINODE_ENDPOINT = 'https://api.linode.com/v4';
|
||||
|
||||
@@ -6,7 +6,7 @@ import dns from '../dns.js';
|
||||
import safe from 'safetydance';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/manual');
|
||||
const { log } = logger('dns/manual');
|
||||
|
||||
|
||||
function removePrivateFields(domainObject) {
|
||||
|
||||
@@ -12,7 +12,7 @@ import util from 'node:util';
|
||||
import waitForDns from './waitfordns.js';
|
||||
import xml2js from 'xml2js';
|
||||
|
||||
const { log, trace } = logger('dns/namecheap');
|
||||
const { log } = logger('dns/namecheap');
|
||||
|
||||
|
||||
const ENDPOINT = 'https://api.namecheap.com/xml.response';
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/namecom');
|
||||
const { log } = logger('dns/namecom');
|
||||
|
||||
|
||||
const NAMECOM_API = 'https://api.name.com/v4';
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/netcup');
|
||||
const { log } = logger('dns/netcup');
|
||||
|
||||
|
||||
const API_ENDPOINT = 'https://ccp.netcup.net/run/webservice/servers/endpoint.php?JSON';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import assert from 'node:assert';
|
||||
import logger from '../logger.js';
|
||||
|
||||
const { log, trace } = logger('dns/noop');
|
||||
const { log } = logger('dns/noop');
|
||||
|
||||
|
||||
function removePrivateFields(domainObject) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import ovhClient from 'ovh';
|
||||
import safe from 'safetydance';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/ovh');
|
||||
const { log } = logger('dns/ovh');
|
||||
|
||||
|
||||
function formatError(error) {
|
||||
|
||||
@@ -9,7 +9,7 @@ import superagent from '@cloudron/superagent';
|
||||
import timers from 'timers/promises';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/porkbun');
|
||||
const { log } = logger('dns/porkbun');
|
||||
|
||||
|
||||
// Rate limit note: Porkbun return 503 when it hits rate limits. It's as low as 1 req/second
|
||||
|
||||
@@ -10,7 +10,7 @@ import safe from 'safetydance';
|
||||
import waitForDns from './waitfordns.js';
|
||||
import _ from '../underscore.js';
|
||||
|
||||
const { log, trace } = logger('dns/route53');
|
||||
const { log } = logger('dns/route53');
|
||||
|
||||
|
||||
function removePrivateFields(domainObject) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/vultr');
|
||||
const { log } = logger('dns/vultr');
|
||||
|
||||
|
||||
const VULTR_ENDPOINT = 'https://api.vultr.com/v2';
|
||||
|
||||
@@ -7,7 +7,7 @@ import promiseRetry from '../promise-retry.js';
|
||||
import safe from 'safetydance';
|
||||
import _ from '../underscore.js';
|
||||
|
||||
const { log, trace } = logger('dns/waitfordns');
|
||||
const { log } = logger('dns/waitfordns');
|
||||
|
||||
async function resolveIp(hostname, type, options) {
|
||||
assert.strictEqual(typeof hostname, 'string');
|
||||
|
||||
@@ -7,7 +7,7 @@ import network from '../network.js';
|
||||
import safe from 'safetydance';
|
||||
import waitForDns from './waitfordns.js';
|
||||
|
||||
const { log, trace } = logger('dns/manual');
|
||||
const { log } = logger('dns/manual');
|
||||
|
||||
|
||||
function removePrivateFields(domainObject) {
|
||||
|
||||
@@ -17,7 +17,7 @@ import safe from 'safetydance';
|
||||
import timers from 'timers/promises';
|
||||
import volumes from './volumes.js';
|
||||
|
||||
const { log, trace } = logger('docker');
|
||||
const { log } = logger('docker');
|
||||
const shell = shellModule('docker');
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import safe from 'safetydance';
|
||||
import util from 'node:util';
|
||||
import volumes from './volumes.js';
|
||||
|
||||
const { log, trace } = logger('dockerproxy');
|
||||
const { log } = logger('dockerproxy');
|
||||
|
||||
|
||||
let gHttpServer = null;
|
||||
|
||||
@@ -36,7 +36,7 @@ import dnsManual from './dns/manual.js';
|
||||
import dnsPorkbun from './dns/porkbun.js';
|
||||
import dnsWildcard from './dns/wildcard.js';
|
||||
|
||||
const { log, trace } = logger('domains');
|
||||
const { log } = logger('domains');
|
||||
|
||||
|
||||
const DOMAINS_FIELDS = [ 'domain', 'zoneName', 'provider', 'configJson', 'tlsConfigJson', 'wellKnownJson', 'fallbackCertificateJson' ].join(',');
|
||||
|
||||
@@ -11,7 +11,7 @@ import paths from './paths.js';
|
||||
import safe from 'safetydance';
|
||||
import tasks from './tasks.js';
|
||||
|
||||
const { log, trace } = logger('dyndns');
|
||||
const { log } = logger('dyndns');
|
||||
|
||||
|
||||
// FIXME: this races with apptask. can result in a conflict if apptask is doing some dns operation and this code changes entries
|
||||
|
||||
@@ -6,7 +6,7 @@ import mysql from 'mysql2';
|
||||
import notifications from './notifications.js';
|
||||
import safe from 'safetydance';
|
||||
|
||||
const { log, trace } = logger('eventlog');
|
||||
const { log } = logger('eventlog');
|
||||
|
||||
const ACTION_ACTIVATE = 'cloudron.activate';
|
||||
const ACTION_USER_LOGIN = 'user.login';
|
||||
|
||||
@@ -13,7 +13,7 @@ import tasks from './tasks.js';
|
||||
import users from './users.js';
|
||||
import util from 'node:util';
|
||||
|
||||
const { log, trace } = logger('externalldap');
|
||||
const { log } = logger('externalldap');
|
||||
|
||||
|
||||
function removePrivateFields(ldapConfig) {
|
||||
|
||||
@@ -4,7 +4,7 @@ import crypto from 'node:crypto';
|
||||
import logger from './logger.js';
|
||||
import { Transform as TransformStream } from 'node:stream';
|
||||
|
||||
const { log, trace } = logger('hush');
|
||||
const { log } = logger('hush');
|
||||
|
||||
class EncryptStream extends TransformStream {
|
||||
constructor(encryption) {
|
||||
|
||||
@@ -39,7 +39,7 @@ export function getImageContentType(buffer) {
|
||||
if (/^\s*(<\?xml|<svg)/i.test(head)) {
|
||||
return 'image/svg+xml';
|
||||
}
|
||||
} catch (_) {
|
||||
} catch {
|
||||
// invalid UTF-8, not SVG
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import Docker from 'dockerode';
|
||||
import safe from 'safetydance';
|
||||
import tokens from './tokens.js';
|
||||
|
||||
const { log, trace } = logger('janitor');
|
||||
const { log } = logger('janitor');
|
||||
|
||||
|
||||
const gConnection = new Docker({ socketPath: '/var/run/docker.sock' });
|
||||
|
||||
@@ -13,7 +13,7 @@ import safe from 'safetydance';
|
||||
import users from './users.js';
|
||||
import util from 'node:util';
|
||||
|
||||
const { log, trace } = logger('ldapserver');
|
||||
const { log } = logger('ldapserver');
|
||||
|
||||
let _MOCK_APP = null;
|
||||
|
||||
@@ -630,7 +630,7 @@ async function maybeRootDSE(req, res, next) {
|
||||
async function start() {
|
||||
assert(gServer === null, 'Already started');
|
||||
|
||||
const logger = {
|
||||
const ldapLogger = {
|
||||
trace: NOOP,
|
||||
debug: NOOP,
|
||||
info: log,
|
||||
@@ -639,7 +639,7 @@ async function start() {
|
||||
fatal: log
|
||||
};
|
||||
|
||||
gServer = ldap.createServer({ log: logger });
|
||||
gServer = ldap.createServer({ log: ldapLogger });
|
||||
|
||||
gServer.on('error', function (error) {
|
||||
log('start: server error. %o', error);
|
||||
|
||||
@@ -4,7 +4,7 @@ import database from './database.js';
|
||||
import logger from './logger.js';
|
||||
import promiseRetry from './promise-retry.js';
|
||||
|
||||
const { log, trace } = logger('locks');
|
||||
const { log } = logger('locks');
|
||||
|
||||
const TYPE_APP_TASK_PREFIX = 'app_task_';
|
||||
const TYPE_APP_BACKUP_PREFIX = 'app_backup_';
|
||||
|
||||
@@ -5,7 +5,7 @@ import path from 'node:path';
|
||||
import stream from 'node:stream';
|
||||
import { StringDecoder } from 'node:string_decoder';
|
||||
|
||||
const { log, trace } = logger('logs');
|
||||
const { log } = logger('logs');
|
||||
const TransformStream = stream.Transform;
|
||||
|
||||
const LOGTAIL_CMD = path.join(import.meta.dirname, 'scripts/logtail.sh');
|
||||
|
||||
@@ -22,7 +22,7 @@ import superagent from '@cloudron/superagent';
|
||||
import validator from './validator.js';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('mail');
|
||||
const { log } = logger('mail');
|
||||
const shell = shellModule('mail');
|
||||
|
||||
const OWNERTYPE_USER = 'user';
|
||||
|
||||
@@ -11,7 +11,7 @@ import path from 'node:path';
|
||||
import safe from 'safetydance';
|
||||
import translations from './translations.js';
|
||||
|
||||
const { log, trace } = logger('mailer');
|
||||
const { log } = logger('mailer');
|
||||
|
||||
const _mailQueue = []; // accumulate mails in test mode;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import shellModule from './shell.js';
|
||||
import tasks from './tasks.js';
|
||||
import users from './users.js';
|
||||
|
||||
const { log, trace } = logger('mailserver');
|
||||
const { log } = logger('mailserver');
|
||||
const shell = shellModule('mailserver');
|
||||
|
||||
const DEFAULT_MEMORY_LIMIT = 512 * 1024 * 1024;
|
||||
|
||||
@@ -15,7 +15,7 @@ import shellModule from './shell.js';
|
||||
import superagent from '@cloudron/superagent';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('metrics');
|
||||
const { log } = logger('metrics');
|
||||
const shell = shellModule('metrics');
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import paths from './paths.js';
|
||||
import safe from 'safetydance';
|
||||
import shellModule from './shell.js';
|
||||
|
||||
const { log, trace } = logger('mounts');
|
||||
const { log } = logger('mounts');
|
||||
const shell = shellModule('mounts');
|
||||
|
||||
const MOUNT_TYPE_FILESYSTEM = 'filesystem';
|
||||
|
||||
@@ -5,7 +5,7 @@ import logger from '../logger.js';
|
||||
import safe from 'safetydance';
|
||||
import superagent from '@cloudron/superagent';
|
||||
|
||||
const { log, trace } = logger('network/generic');
|
||||
const { log } = logger('network/generic');
|
||||
|
||||
|
||||
const gCache = { ipv4: {}, ipv6: {} }; // each has { timestamp, value, request }
|
||||
|
||||
@@ -4,7 +4,7 @@ import logger from '../logger.js';
|
||||
import os from 'node:os';
|
||||
import safe from 'safetydance';
|
||||
|
||||
const { log, trace } = logger('network/network-interface');
|
||||
const { log } = logger('network/network-interface');
|
||||
|
||||
|
||||
async function getIPv4(config) {
|
||||
|
||||
@@ -10,7 +10,7 @@ import mailer from './mailer.js';
|
||||
import safe from 'safetydance';
|
||||
import users from './users.js';
|
||||
|
||||
const { log, trace } = logger('notifications');
|
||||
const { log } = logger('notifications');
|
||||
|
||||
const TYPE_CLOUDRON_INSTALLED = 'cloudronInstalled';
|
||||
const TYPE_CLOUDRON_UPDATED = 'cloudronUpdated';
|
||||
|
||||
@@ -33,7 +33,7 @@ import util from 'node:util';
|
||||
import Provider from 'oidc-provider';
|
||||
import mailpasswords from './mailpasswords.js';
|
||||
|
||||
const { log, trace } = logger('oidcserver');
|
||||
const { log } = logger('oidcserver');
|
||||
|
||||
|
||||
// 1. Index.vue starts the OIDC flow by navigating to /openid/auth. Webadmin sets callback url to authcallback.html + implicit flow
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import logger from './logger.js';
|
||||
|
||||
const { log, trace } = logger('once');
|
||||
const { log } = logger('once');
|
||||
|
||||
// https://github.com/isaacs/once/blob/main/LICENSE (ISC)
|
||||
function once (fn) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import path from 'node:path';
|
||||
import safe from 'safetydance';
|
||||
import shellModule from './shell.js';
|
||||
|
||||
const { log, trace } = logger('openssl');
|
||||
const { log } = logger('openssl');
|
||||
const shell = shellModule('openssl');
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
} from '@simplewebauthn/server';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('passkeys');
|
||||
const { log } = logger('passkeys');
|
||||
|
||||
const PASSKEY_FIELDS = [ 'id', 'userId', 'credentialId', 'publicKey', 'counter', 'transports', 'name', 'creationTime', 'lastUsedTime' ].join(',');
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import users from './users.js';
|
||||
import volumes from './volumes.js';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('platform');
|
||||
const { log } = logger('platform');
|
||||
const shell = shellModule('platform');
|
||||
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ import users from './users.js';
|
||||
import tld from 'tldjs';
|
||||
import tokens from './tokens.js';
|
||||
|
||||
const { log, trace } = logger('provision');
|
||||
const { log } = logger('provision');
|
||||
|
||||
|
||||
// we cannot use tasks since the tasks table gets overwritten when db is imported
|
||||
|
||||
@@ -21,7 +21,7 @@ import settings from './settings.js';
|
||||
import users from './users.js';
|
||||
import util from 'node:util';
|
||||
|
||||
const { log, trace } = logger('proxyAuth');
|
||||
const { log } = logger('proxyAuth');
|
||||
|
||||
// heavily inspired from https://gock.net/blog/2020/nginx-subrequest-authentication-server/ and https://github.com/andygock/auth-server
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import settings from './settings.js';
|
||||
import shellModule from './shell.js';
|
||||
import tasks from './tasks.js';
|
||||
|
||||
const { log, trace } = logger('reverseproxy');
|
||||
const { log } = logger('reverseproxy');
|
||||
const shell = shellModule('reverseproxy');
|
||||
|
||||
const NGINX_APPCONFIG_EJS = fs.readFileSync(import.meta.dirname + '/nginxconfig.ejs', { encoding: 'utf8' });
|
||||
|
||||
@@ -7,7 +7,7 @@ import safe from 'safetydance';
|
||||
import tokens from '../tokens.js';
|
||||
import users from '../users.js';
|
||||
|
||||
const { log, trace } = logger('routes/accesscontrol');
|
||||
const { log } = logger('routes/accesscontrol');
|
||||
|
||||
|
||||
async function passwordAuth(req, res, next) {
|
||||
|
||||
@@ -18,7 +18,7 @@ import users from '../users.js';
|
||||
import { getImageContentType } from '../image-content-type.js';
|
||||
import WebSocket from 'ws';
|
||||
|
||||
const { log, trace } = logger('routes/apps');
|
||||
const { log } = logger('routes/apps');
|
||||
|
||||
|
||||
async function load(req, res, next) {
|
||||
|
||||
@@ -12,7 +12,7 @@ import speakeasy from 'speakeasy';
|
||||
import tokens from '../tokens.js';
|
||||
import users from '../users.js';
|
||||
|
||||
const { log, trace } = logger('routes/cloudron');
|
||||
const { log } = logger('routes/cloudron');
|
||||
|
||||
|
||||
async function login(req, res, next) {
|
||||
|
||||
@@ -9,7 +9,7 @@ import mailServer from '../mailserver.js';
|
||||
import safe from 'safetydance';
|
||||
import services from '../services.js';
|
||||
|
||||
const { log, trace } = logger('routes/mailserver');
|
||||
const { log } = logger('routes/mailserver');
|
||||
|
||||
|
||||
async function proxyToMailContainer(port, pathname, req, res, next) {
|
||||
|
||||
@@ -16,7 +16,7 @@ import tasks from '../../tasks.js';
|
||||
import timers from 'timers/promises';
|
||||
import tokens from '../../tokens.js';
|
||||
|
||||
const { log, trace } = logger('test/common');
|
||||
const { log } = logger('test/common');
|
||||
|
||||
const manifest = {
|
||||
'id': 'io.cloudron.test',
|
||||
|
||||
@@ -9,7 +9,7 @@ import docker from './docker.js';
|
||||
import safe from 'safetydance';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('scheduler');
|
||||
const { log } = logger('scheduler');
|
||||
|
||||
|
||||
const gState = {}; // appId -> { containerId, schedulerConfig (manifest+crontab), cronjobs }
|
||||
|
||||
@@ -5,7 +5,7 @@ import database from '../database.js';
|
||||
import logger from '../logger.js';
|
||||
import safe from 'safetydance';
|
||||
|
||||
const { log, trace } = logger('backupupload');
|
||||
const { log } = logger('backupupload');
|
||||
|
||||
// --check is used by run-tests to verify sudo access works. Caller must set BOX_ENV (e.g. BOX_ENV=test).
|
||||
if (process.argv[2] === '--check') {
|
||||
|
||||
@@ -14,7 +14,7 @@ import users from './users.js';
|
||||
import util from 'node:util';
|
||||
import { WebSocketServer } from 'ws';
|
||||
|
||||
const { log, trace } = logger('server');
|
||||
const { log } = logger('server');
|
||||
|
||||
|
||||
let gHttpServer = null;
|
||||
|
||||
@@ -31,7 +31,7 @@ import sftp from './sftp.js';
|
||||
import shellModule from './shell.js';
|
||||
import superagent from '@cloudron/superagent';
|
||||
|
||||
const { log, trace } = logger('services');
|
||||
const { log } = logger('services');
|
||||
const shell = shellModule('services');
|
||||
|
||||
const SERVICE_STATUS_STARTING = 'starting';
|
||||
|
||||
@@ -15,7 +15,7 @@ import services from './services.js';
|
||||
import shellModule from './shell.js';
|
||||
import volumes from './volumes.js';
|
||||
|
||||
const { log, trace } = logger('sftp');
|
||||
const { log } = logger('sftp');
|
||||
const shell = shellModule('sftp');
|
||||
|
||||
const DEFAULT_MEMORY_LIMIT = 256 * 1024 * 1024;
|
||||
|
||||
@@ -6,7 +6,7 @@ import path from 'node:path';
|
||||
import safe from 'safetydance';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('shell');
|
||||
const { log } = logger('shell');
|
||||
|
||||
function lineCount(buffer) {
|
||||
assert(Buffer.isBuffer(buffer));
|
||||
@@ -33,7 +33,7 @@ function spawn(tag, file, args, options) {
|
||||
log(`${tag}: ${file} ${args.join(' ').replace(/\n/g, '\\n')}`);
|
||||
|
||||
const maxLines = options.maxLines || Number.MAX_SAFE_INTEGER;
|
||||
const logger = options.logger || null;
|
||||
const outputLogger = options.logger || null;
|
||||
const abortSignal = options.abortSignal || null; // note: we use our own handler and not the child_process one
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -43,13 +43,13 @@ function spawn(tag, file, args, options) {
|
||||
let stdoutLineCount = 0, stderrLineCount = 0, killTimerId = null, timedOut = false, terminated = false;
|
||||
|
||||
cp.stdout.on('data', (data) => {
|
||||
if (logger) return logger(data);
|
||||
if (outputLogger) return outputLogger(data);
|
||||
stdoutBuffers.push(data);
|
||||
stdoutLineCount += lineCount(data);
|
||||
if (stdoutLineCount >= maxLines) return cp.kill('SIGKILL');
|
||||
});
|
||||
cp.stderr.on('data', (data) => {
|
||||
if (logger) return logger(data);
|
||||
if (outputLogger) return outputLogger(data);
|
||||
stderrBuffers.push(data);
|
||||
stderrLineCount += lineCount(data);
|
||||
if (stderrLineCount >= maxLines) return cp.kill('SIGKILL');
|
||||
|
||||
@@ -11,7 +11,7 @@ import safe from 'safetydance';
|
||||
import shellModule from '../shell.js';
|
||||
import _ from '../underscore.js';
|
||||
|
||||
const { log, trace } = logger('storage/filesystem');
|
||||
const { log } = logger('storage/filesystem');
|
||||
const shell = shellModule('filesystem');
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import path from 'node:path';
|
||||
import safe from 'safetydance';
|
||||
import _ from '../underscore.js';
|
||||
|
||||
const { log, trace } = logger('storage/gcs');
|
||||
const { log } = logger('storage/gcs');
|
||||
|
||||
|
||||
function getBucket(config) {
|
||||
|
||||
@@ -17,7 +17,7 @@ import safe from 'safetydance';
|
||||
import { Upload } from '@aws-sdk/lib-storage';
|
||||
import _ from '../underscore.js';
|
||||
|
||||
const { log, trace } = logger('storage/s3');
|
||||
const { log } = logger('storage/s3');
|
||||
|
||||
function S3_NOT_FOUND(error) {
|
||||
return error instanceof NoSuchKey || error instanceof NoSuchBucket;
|
||||
|
||||
@@ -8,7 +8,7 @@ import readline from 'node:readline';
|
||||
import safe from 'safetydance';
|
||||
import util from 'node:util';
|
||||
|
||||
const { log, trace } = logger('syncer');
|
||||
const { log } = logger('syncer');
|
||||
|
||||
|
||||
function readCache(cacheFile) {
|
||||
|
||||
@@ -18,7 +18,7 @@ import safe from 'safetydance';
|
||||
import shellModule from './shell.js';
|
||||
import volumes from './volumes.js';
|
||||
|
||||
const { log, trace } = logger('system');
|
||||
const { log } = logger('system');
|
||||
const shell = shellModule('system');
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import safe from 'safetydance';
|
||||
import shellModule from './shell.js';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('tasks');
|
||||
const { log } = logger('tasks');
|
||||
const shell = shellModule('tasks');
|
||||
|
||||
const ESTOPPED = 'stopped';
|
||||
|
||||
@@ -100,7 +100,7 @@ async function main() {
|
||||
return process.exit(50);
|
||||
}
|
||||
|
||||
const { log, trace } = logger('taskworker'); // import this here so that logging handler is already setup
|
||||
const { log } = logger('taskworker'); // import this here so that logging handler is already setup
|
||||
|
||||
process.on('SIGTERM', () => {
|
||||
log('Terminated');
|
||||
|
||||
@@ -6,7 +6,7 @@ import path from 'node:path';
|
||||
import paths from './paths.js';
|
||||
import safe from 'safetydance';
|
||||
|
||||
const { log, trace } = logger('translation');
|
||||
const { log } = logger('translation');
|
||||
|
||||
|
||||
// to be used together with getTranslations() => { translations, fallback }
|
||||
|
||||
@@ -26,7 +26,7 @@ import settings from './settings.js';
|
||||
import shellModule from './shell.js';
|
||||
import tasks from './tasks.js';
|
||||
|
||||
const { log, trace } = logger('updater');
|
||||
const { log } = logger('updater');
|
||||
const shell = shellModule('updater');
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import settings from './settings.js';
|
||||
import tokens from './tokens.js';
|
||||
import users from './users.js';
|
||||
|
||||
const { log, trace } = logger('user-directory');
|
||||
const { log } = logger('user-directory');
|
||||
|
||||
|
||||
async function getProfileConfig() {
|
||||
|
||||
@@ -30,7 +30,7 @@ import util from 'node:util';
|
||||
import validator from './validator.js';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const { log, trace } = logger('user');
|
||||
const { log } = logger('user');
|
||||
|
||||
const AP_MAIL = 'mail';
|
||||
const AP_WEBADMIN = 'webadmin';
|
||||
|
||||
@@ -10,7 +10,7 @@ import paths from './paths.js';
|
||||
import safe from 'safetydance';
|
||||
import services from './services.js';
|
||||
|
||||
const { log, trace } = logger('volumes');
|
||||
const { log } = logger('volumes');
|
||||
|
||||
const VOLUMES_FIELDS = [ 'id', 'name', 'hostPath', 'creationTime', 'mountType', 'mountOptionsJson' ].join(',');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user