diff --git a/server/cloudcmd.js b/server/cloudcmd.js index 0a88be9f..b79ec208 100644 --- a/server/cloudcmd.js +++ b/server/cloudcmd.js @@ -2,27 +2,10 @@ const fullstore = require('fullstore'); const process = require('node:process'); -const DIR = `${__dirname}/`; -const DIR_COMMON = `${DIR}../common/`; const path = require('node:path'); - const fs = require('node:fs'); -const cloudfunc = require(`${DIR_COMMON}cloudfunc`); -const authentication = require(`${DIR}auth`); -const {createConfig, configPath} = require(`${DIR}config`); - -const modulas = require(`${DIR}modulas`); - -const userMenu = require(`${DIR}user-menu`); -const rest = require(`${DIR}rest`); -const route = require(`${DIR}route`); -const validate = require(`${DIR}validate`); -const prefixer = require(`${DIR}prefixer`); -const terminal = require(`${DIR}terminal`); -const distribute = require(`${DIR}distribute`); const currify = require('currify'); - const apart = require('apart'); const ponse = require('ponse'); const restafary = require('restafary'); @@ -33,8 +16,23 @@ const dword = require('dword'); const deepword = require('deepword'); const nomine = require('nomine'); const fileop = require('@cloudcmd/fileop'); -const DIR_ROOT = `${DIR}../`; +const cloudfunc = require('../common/cloudfunc'); + +const authentication = require('./auth'); +const {createConfig, configPath} = require(`./config`); + +const modulas = require(`./modulas`); + +const userMenu = require(`./user-menu`); +const rest = require(`./rest`); +const route = require(`./route`); +const validate = require(`./validate`); +const prefixer = require(`./prefixer`); +const terminal = require(`./terminal`); +const distribute = require(`./distribute`); +const DIR_ROOT = `../`; +const DIR = `${__dirname}/`; const getDist = (isDev) => isDev ? 'dist-dev' : 'dist'; const isDev = fullstore(process.env.NODE_ENV === 'development'); @@ -55,38 +53,37 @@ module.exports = (params) => { const config = p.configManager || createConfig({ configPath, }); - + const {modules} = p; - const keys = Object.keys(options); - + for (const name of keys) { let value = options[name]; - + if (/root/.test(name)) validate.root(value, config); - + if (/editor|packer|columns/.test(name)) validate[name](value); - + if (/prefix/.test(name)) value = prefixer(value); - + config(name, value); } - + config('console', defaultValue(config, 'console', options)); config('configDialog', defaultValue(config, 'configDialog', options)); - + const prefixSocket = prefixer(options.prefixSocket); - + if (p.socket) listen({ prefixSocket, config, socket: p.socket, }); - + return cloudcmd({ modules, config, @@ -101,10 +98,10 @@ module.exports._getIndexPath = getIndexPath; function defaultValue(config, name, options) { const value = options[name]; const previous = config(name); - + if (isUndefined(value)) return previous; - + return value; } @@ -112,7 +109,7 @@ module.exports._getPrefix = getPrefix; function getPrefix(prefix) { if (isFn(prefix)) return prefix() || ''; - + return prefix || ''; } @@ -120,59 +117,59 @@ module.exports._initAuth = _initAuth; function _initAuth(config, accept, reject, username, password) { if (!config('auth')) return accept(); - + const isName = username === config('username'); const isPass = password === config('password'); - + if (isName && isPass) return accept(); - + reject(); } function listen({prefixSocket, socket, config}) { const root = apart(config, 'root'); const auth = initAuth(config); - + prefixSocket = getPrefix(prefixSocket); config.listen(socket, auth); - + edward.listen(socket, { root, auth, prefixSocket: `${prefixSocket}/edward`, }); - + dword.listen(socket, { root, auth, prefixSocket: `${prefixSocket}/dword`, }); - + deepword.listen(socket, { root, auth, prefixSocket: `${prefixSocket}/deepword`, }); - + config('console') && konsole.listen(socket, { auth, prefixSocket: `${prefixSocket}/console`, }); - + fileop.listen(socket, { root, auth, prefix: `${prefixSocket}/fileop`, }); - + config('terminal') && terminal(config).listen(socket, { auth, prefix: `${prefixSocket}/gritty`, command: config('terminalCommand'), autoRestart: config('terminalAutoRestart'), }); - + distribute.export(config, socket); } @@ -182,15 +179,15 @@ function cloudcmd({modules, config}) { const diff = apart(config, 'diff'); const zip = apart(config, 'zip'); const root = apart(config, 'root'); - + const ponseStatic = ponse.static({ cache, root: DIR_ROOT, }); - + const dropbox = config('dropbox'); const dropboxToken = config('dropboxToken'); - + const funcs = clean([ config('console') && konsole({ online, @@ -246,14 +243,14 @@ function cloudcmd({modules, config}) { }), ponseStatic, ]); - + return funcs; } function logout(req, res, next) { if (req.url !== '/logout') return next(); - + res.sendStatus(401); } @@ -262,25 +259,26 @@ module.exports._replaceDist = replaceDist; function replaceDist(url) { if (!isDev()) return url; - + return url.replace(/^\/dist\//, '/dist-dev/'); } function setUrl(req, res, next) { if (/^\/cloudcmd\.js(\.map)?$/.test(req.url)) req.url = `/dist${req.url}`; - + req.url = replaceDist(req.url); - + next(); } function setSW(req, res, next) { const {url} = req; const isSW = /^\/sw\.js(\.map)?$/.test(url); - + if (isSW) req.url = replaceDist(`/dist${url}`); - + next(); } +