cyberia 3.0.2 → 3.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{.env.production → .env.example} +20 -2
- package/.github/workflows/engine-cyberia.cd.yml +41 -10
- package/.github/workflows/engine-cyberia.ci.yml +53 -14
- package/.github/workflows/ghpkg.ci.yml +1 -1
- package/.github/workflows/gitlab.ci.yml +1 -1
- package/.github/workflows/hardhat.ci.yml +82 -0
- package/.github/workflows/npmpkg.ci.yml +37 -8
- package/.github/workflows/publish.ci.yml +5 -5
- package/.github/workflows/publish.cyberia.ci.yml +5 -5
- package/.github/workflows/pwa-microservices-template-page.cd.yml +3 -3
- package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
- package/.github/workflows/release.cd.yml +3 -2
- package/.vscode/extensions.json +9 -8
- package/.vscode/settings.json +3 -2
- package/CHANGELOG.md +533 -290
- package/CLI-HELP.md +79 -53
- package/WHITE-PAPER.md +1540 -0
- package/bin/build.js +16 -11
- package/bin/cyberia.js +959 -8
- package/bin/deploy.js +103 -270
- package/bin/file.js +2 -1
- package/bin/index.js +959 -8
- package/bin/vs.js +3 -3
- package/conf.js +277 -77
- package/deployment.yaml +218 -4
- package/hardhat/.env.example +31 -0
- package/hardhat/README.md +531 -0
- package/hardhat/WHITE-PAPER.md +1540 -0
- package/hardhat/contracts/ObjectLayerToken.sol +391 -0
- package/hardhat/deployments/.gitkeep +0 -0
- package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
- package/hardhat/hardhat.config.js +136 -0
- package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
- package/hardhat/networks/besu-object-layer.network.json +138 -0
- package/hardhat/package-lock.json +7628 -0
- package/hardhat/package.json +45 -0
- package/hardhat/scripts/deployObjectLayerToken.js +98 -0
- package/hardhat/test/ObjectLayerToken.js +590 -0
- package/jsdoc.dd-cyberia.json +59 -0
- package/jsdoc.json +20 -13
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +490 -0
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +261 -0
- package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +132 -0
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/deployment/dd-test-development/deployment.yaml +52 -52
- package/manifests/deployment/dd-test-development/proxy.yaml +4 -4
- package/manifests/pv-pvc-dd.yaml +1 -1
- package/package.json +60 -50
- package/proxy.yaml +128 -9
- package/pv-pvc.yaml +132 -0
- package/scripts/k3s-node-setup.sh +1 -1
- package/scripts/ports-ls.sh +2 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +3 -1
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +1 -2
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +40 -7
- package/src/api/document/document.service.js +1 -1
- package/src/api/file/file.controller.js +3 -1
- package/src/api/file/file.service.js +28 -5
- package/src/api/ipfs/ipfs.service.js +2 -2
- package/src/api/object-layer/object-layer.controller.js +6 -2
- package/src/api/object-layer/object-layer.model.js +67 -21
- package/src/api/object-layer/object-layer.router.js +668 -42
- package/src/api/object-layer/object-layer.service.js +10 -16
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +1 -2
- package/src/api/user/user.router.js +10 -5
- package/src/api/user/user.service.js +7 -7
- package/src/cli/baremetal.js +6 -10
- package/src/cli/cloud-init.js +0 -3
- package/src/cli/db.js +54 -71
- package/src/cli/deploy.js +64 -12
- package/src/cli/env.js +5 -5
- package/src/cli/fs.js +0 -2
- package/src/cli/image.js +0 -3
- package/src/cli/index.js +41 -13
- package/src/cli/monitor.js +5 -6
- package/src/cli/repository.js +329 -46
- package/src/cli/run.js +210 -122
- package/src/cli/secrets.js +1 -3
- package/src/cli/ssh.js +1 -1
- package/src/client/Itemledger.index.js +1 -959
- package/src/client/Underpost.index.js +36 -0
- package/src/client/components/core/AgGrid.js +20 -5
- package/src/client/components/core/Alert.js +2 -2
- package/src/client/components/core/Content.js +22 -3
- package/src/client/components/core/Docs.js +30 -6
- package/src/client/components/core/FileExplorer.js +71 -4
- package/src/client/components/core/Input.js +1 -1
- package/src/client/components/core/Modal.js +22 -6
- package/src/client/components/core/PublicProfile.js +3 -3
- package/src/client/components/core/RichText.js +1 -2
- package/src/client/components/core/Router.js +34 -1
- package/src/client/components/core/Worker.js +1 -1
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +63 -1
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +145 -119
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +64 -6
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +1 -0
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +44 -2
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +0 -1
- package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +64 -2
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +1 -0
- package/src/client/components/itemledger/CssItemledger.js +62 -0
- package/src/client/components/underpost/CommonUnderpost.js +29 -0
- package/src/client/components/underpost/CssUnderpost.js +281 -0
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +879 -0
- package/src/client/components/underpost/DocumentSearchProvider.js +448 -0
- package/src/client/components/underpost/ElementsUnderpost.js +38 -0
- package/src/client/components/underpost/LabGalleryUnderpost.js +82 -0
- package/src/client/components/underpost/LogInUnderpost.js +23 -0
- package/src/client/components/underpost/LogOutUnderpost.js +15 -0
- package/src/client/components/underpost/MenuUnderpost.js +691 -0
- package/src/client/components/underpost/RoutesUnderpost.js +47 -0
- package/src/client/components/underpost/SettingsUnderpost.js +16 -0
- package/src/client/components/underpost/SignUpUnderpost.js +9 -0
- package/src/client/components/underpost/SocketIoUnderpost.js +54 -0
- package/src/client/components/underpost/TranslateUnderpost.js +10 -0
- package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
- package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
- package/src/client/public/cryptokoyn/microdata.json +85 -0
- package/src/client/public/cryptokoyn/site.webmanifest +57 -0
- package/src/client/public/cryptokoyn/sitemap +3 -3
- package/src/client/public/default/sitemap +3 -3
- package/src/client/public/itemledger/browserconfig.xml +2 -2
- package/src/client/public/itemledger/manifest.webmanifest +4 -4
- package/src/client/public/itemledger/microdata.json +71 -0
- package/src/client/public/itemledger/sitemap +3 -3
- package/src/client/public/itemledger/yandex-browser-manifest.json +2 -2
- package/src/client/public/test/sitemap +3 -3
- package/src/client/services/object-layer/object-layer.management.js +23 -4
- package/src/client/ssr/body/404.js +15 -11
- package/src/client/ssr/body/500.js +15 -11
- package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +83 -0
- package/src/client/ssr/head/PwaItemledger.js +60 -0
- package/src/client/ssr/head/UnderpostScripts.js +6 -0
- package/src/client/ssr/offline/NoNetworkConnection.js +11 -10
- package/src/client/ssr/pages/Test.js +11 -10
- package/src/client.build.js +0 -3
- package/src/client.dev.js +0 -3
- package/src/db/DataBaseProvider.js +17 -2
- package/src/db/mariadb/MariaDB.js +14 -9
- package/src/db/mongo/MongooseDB.js +17 -1
- package/src/index.js +1 -1
- package/src/proxy.js +0 -3
- package/src/runtime/express/Express.js +15 -9
- package/src/runtime/lampp/Lampp.js +6 -13
- package/src/server/auth.js +12 -14
- package/src/server/backup.js +2 -3
- package/src/server/besu-genesis-generator.js +1630 -0
- package/src/server/client-build-docs.js +126 -17
- package/src/server/client-build-live.js +9 -18
- package/src/server/client-build.js +203 -75
- package/src/server/client-dev-server.js +14 -13
- package/src/server/conf.js +376 -164
- package/src/server/cron.js +2 -1
- package/src/server/dns.js +28 -12
- package/src/server/downloader.js +0 -2
- package/src/server/logger.js +27 -9
- package/src/server/object-layer.js +92 -16
- package/src/server/peer.js +0 -2
- package/src/server/process.js +1 -50
- package/src/server/proxy.js +4 -8
- package/src/server/runtime.js +5 -8
- package/src/server/semantic-layer-generator.js +1 -0
- package/src/server/ssr.js +0 -3
- package/src/server/start.js +19 -12
- package/src/server/tls.js +0 -2
- package/src/server.js +0 -4
- package/.env.development +0 -43
- package/.env.test +0 -43
- package/hardhat/contracts/CryptoKoyn.sol +0 -59
- package/hardhat/contracts/ItemLedger.sol +0 -73
- package/hardhat/contracts/Lock.sol +0 -34
- package/hardhat/hardhat.config.cjs +0 -45
- package/hardhat/ignition/modules/Lock.js +0 -18
- package/hardhat/networks/cryptokoyn-itemledger.network.json +0 -29
- package/hardhat/scripts/deployCryptokoyn.cjs +0 -25
- package/hardhat/scripts/deployItemledger.cjs +0 -25
- package/hardhat/test/Lock.js +0 -126
- package/hardhat/white-paper.md +0 -581
- package/white-paper.md +0 -581
package/src/proxy.js
CHANGED
|
@@ -3,14 +3,11 @@
|
|
|
3
3
|
// https://nodejs.org/api
|
|
4
4
|
// https://expressjs.com/en/4x/api.html
|
|
5
5
|
|
|
6
|
-
import dotenv from 'dotenv';
|
|
7
6
|
import { loggerFactory } from './server/logger.js';
|
|
8
7
|
import { buildProxy } from './server/proxy.js';
|
|
9
8
|
import { ProcessController } from './server/process.js';
|
|
10
9
|
import { Config } from './server/conf.js';
|
|
11
10
|
|
|
12
|
-
dotenv.config();
|
|
13
|
-
|
|
14
11
|
await Config.build(process.argv[2], process.argv[3], process.argv[4]);
|
|
15
12
|
|
|
16
13
|
const logger = loggerFactory(import.meta);
|
|
@@ -165,14 +165,7 @@ class ExpressService {
|
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
//
|
|
169
|
-
if (fs.existsSync(swaggerJsonPath)) {
|
|
170
|
-
const swaggerDoc = JSON.parse(fs.readFileSync(swaggerJsonPath, 'utf8'));
|
|
171
|
-
const swaggerUiOptions = await buildSwaggerUiOptions();
|
|
172
|
-
app.use(swaggerPath, swaggerUi.serve, swaggerUi.setup(swaggerDoc, swaggerUiOptions));
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
// Security and CORS
|
|
168
|
+
// Security and CORS — must run before swagger-ui so CSP headers are included in swagger responses
|
|
176
169
|
if (process.env.NODE_ENV === 'development' && useLocalSsl)
|
|
177
170
|
origins = origins.map((origin) => origin.replace('http', 'https'));
|
|
178
171
|
|
|
@@ -180,6 +173,13 @@ class ExpressService {
|
|
|
180
173
|
origin: origins,
|
|
181
174
|
});
|
|
182
175
|
|
|
176
|
+
// Swagger UI setup (after security middleware so responses carry correct CSP headers)
|
|
177
|
+
if (fs.existsSync(swaggerJsonPath)) {
|
|
178
|
+
const swaggerDoc = JSON.parse(fs.readFileSync(swaggerJsonPath, 'utf8'));
|
|
179
|
+
const swaggerUiOptions = await buildSwaggerUiOptions();
|
|
180
|
+
app.use(swaggerPath, swaggerUi.serve, swaggerUi.setup(swaggerDoc, swaggerUiOptions));
|
|
181
|
+
}
|
|
182
|
+
|
|
183
183
|
// Database and Valkey connections
|
|
184
184
|
if (db && apis) await DataBaseProvider.load({ apis, host, path, db });
|
|
185
185
|
|
|
@@ -249,7 +249,13 @@ class ExpressService {
|
|
|
249
249
|
for (const [_, ssrMiddleware] of Object.entries(ssr)) app.use(ssrMiddleware);
|
|
250
250
|
|
|
251
251
|
// Start listening on the main port
|
|
252
|
-
|
|
252
|
+
// When behind a dev proxy (isDevProxyContext), the proxy handles TLS termination,
|
|
253
|
+
// so backend servers should listen on plain HTTP to be reachable via http://localhost:PORT
|
|
254
|
+
if (
|
|
255
|
+
(useLocalSsl || process.argv.find((arg) => arg === 'tls')) &&
|
|
256
|
+
process.env.NODE_ENV === 'development' &&
|
|
257
|
+
!isDevProxyContext()
|
|
258
|
+
) {
|
|
253
259
|
if (!Underpost.tls.validateSecureContext()) shellExec(`node bin/deploy tls`);
|
|
254
260
|
const { ServerSSL } = await Underpost.tls.createSslServer(app);
|
|
255
261
|
await Underpost.start.listenPortController(ServerSSL, port, runningData);
|
|
@@ -21,11 +21,11 @@ const logger = loggerFactory(import.meta);
|
|
|
21
21
|
class LamppService {
|
|
22
22
|
/**
|
|
23
23
|
* @method
|
|
24
|
-
* @type {string
|
|
24
|
+
* @type {string}
|
|
25
25
|
* @description Stores the accumulated Apache virtual host configuration (router definition).
|
|
26
26
|
* @memberof LamppService
|
|
27
27
|
*/
|
|
28
|
-
router;
|
|
28
|
+
router = '';
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* @public
|
|
@@ -42,7 +42,7 @@ class LamppService {
|
|
|
42
42
|
* @memberof LamppService
|
|
43
43
|
*/
|
|
44
44
|
constructor() {
|
|
45
|
-
this.router =
|
|
45
|
+
this.router = '';
|
|
46
46
|
this.ports = [];
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -125,7 +125,6 @@ class LamppService {
|
|
|
125
125
|
|
|
126
126
|
// 6. Start the service
|
|
127
127
|
cmd = `sudo /opt/lampp/lampp start`;
|
|
128
|
-
if (this.router) fs.writeFileSync(`./tmp/lampp-router.conf`, this.router, 'utf-8');
|
|
129
128
|
shellExec(cmd);
|
|
130
129
|
}
|
|
131
130
|
|
|
@@ -139,13 +138,7 @@ class LamppService {
|
|
|
139
138
|
* @memberof LamppService
|
|
140
139
|
*/
|
|
141
140
|
appendRouter(render) {
|
|
142
|
-
if (!this.router)
|
|
143
|
-
if (fs.existsSync(`./tmp/lampp-router.conf`)) {
|
|
144
|
-
this.router = fs.readFileSync(`./tmp/lampp-router.conf`, 'utf-8');
|
|
145
|
-
return this.router + render;
|
|
146
|
-
}
|
|
147
|
-
return (this.router = render);
|
|
148
|
-
}
|
|
141
|
+
if (!this.router) return (this.router = render);
|
|
149
142
|
return (this.router += render);
|
|
150
143
|
}
|
|
151
144
|
|
|
@@ -154,10 +147,10 @@ class LamppService {
|
|
|
154
147
|
*
|
|
155
148
|
* @memberof LamppService
|
|
156
149
|
* @returns {void}
|
|
150
|
+
* @method removeRouter
|
|
157
151
|
*/
|
|
158
152
|
removeRouter() {
|
|
159
|
-
this.router =
|
|
160
|
-
if (fs.existsSync(`./tmp/lampp-router.conf`)) fs.rmSync(`./tmp/lampp-router.conf`);
|
|
153
|
+
this.router = '';
|
|
161
154
|
}
|
|
162
155
|
|
|
163
156
|
/**
|
package/src/server/auth.js
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* @namespace Auth
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import dotenv from 'dotenv';
|
|
8
7
|
import jwt from 'jsonwebtoken';
|
|
9
8
|
import { loggerFactory } from './logger.js';
|
|
10
9
|
import crypto from 'crypto';
|
|
@@ -19,7 +18,6 @@ import cookieParser from 'cookie-parser';
|
|
|
19
18
|
import { DataBaseProvider } from '../db/DataBaseProvider.js';
|
|
20
19
|
import { isDevProxyContext } from './conf.js';
|
|
21
20
|
|
|
22
|
-
dotenv.config();
|
|
23
21
|
const logger = loggerFactory(import.meta);
|
|
24
22
|
|
|
25
23
|
// Promisified crypto functions
|
|
@@ -349,12 +347,7 @@ const cookieOptionsFactory = (req, host) => {
|
|
|
349
347
|
secure,
|
|
350
348
|
sameSite,
|
|
351
349
|
path: '/',
|
|
352
|
-
domain:
|
|
353
|
-
process.env.NODE_ENV === 'production' ||
|
|
354
|
-
isDevProxyContext() ||
|
|
355
|
-
(req.headers.host && req.headers.host.toLocaleLowerCase().match(host))
|
|
356
|
-
? host
|
|
357
|
-
: 'localhost',
|
|
350
|
+
domain: process.env.NODE_ENV === 'production' || isDevProxyContext() ? host : 'localhost',
|
|
358
351
|
maxAge,
|
|
359
352
|
};
|
|
360
353
|
|
|
@@ -389,7 +382,11 @@ async function createSessionAndUserToken(user, User, req, res, options = { host:
|
|
|
389
382
|
};
|
|
390
383
|
|
|
391
384
|
// push session
|
|
392
|
-
const updatedUser = await User.findByIdAndUpdate(
|
|
385
|
+
const updatedUser = await User.findByIdAndUpdate(
|
|
386
|
+
user._id,
|
|
387
|
+
{ $push: { activeSessions: newSession } },
|
|
388
|
+
{ returnDocument: 'after' },
|
|
389
|
+
);
|
|
393
390
|
const session = updatedUser.activeSessions[updatedUser.activeSessions.length - 1];
|
|
394
391
|
const jwtid = session._id.toString();
|
|
395
392
|
|
|
@@ -616,13 +613,13 @@ function applySecurity(app, opts = {}) {
|
|
|
616
613
|
frameAncestors: frameAncestors,
|
|
617
614
|
imgSrc: ["'self'", 'data:', httpDirective, 'https:', 'blob:'],
|
|
618
615
|
objectSrc: ["'none'"],
|
|
619
|
-
// script-src and script-src-elem
|
|
620
|
-
|
|
616
|
+
// script-src and script-src-elem: use 'unsafe-inline' for swagger (no nonce, otherwise
|
|
617
|
+
// the nonce causes 'unsafe-inline' to be ignored per CSP3 spec), nonce for everything else.
|
|
618
|
+
scriptSrc: ["'self'", (req, res) => (res.locals.isSwagger ? "'unsafe-inline'" : `'nonce-${res.locals.nonce}'`)],
|
|
619
|
+
scriptSrcElem: [
|
|
621
620
|
"'self'",
|
|
622
|
-
(req, res) => `'nonce-${res.locals.nonce}'
|
|
623
|
-
(req, res) => (res.locals.isSwagger ? "'unsafe-inline'" : ''),
|
|
621
|
+
(req, res) => (res.locals.isSwagger ? "'unsafe-inline'" : `'nonce-${res.locals.nonce}'`),
|
|
624
622
|
],
|
|
625
|
-
scriptSrcElem: ["'self'", (req, res) => `'nonce-${res.locals.nonce}'`],
|
|
626
623
|
// style-src: avoid 'unsafe-inline' when possible; if you must inline styles,
|
|
627
624
|
// use a nonce for them too (or hash).
|
|
628
625
|
styleSrc: [
|
|
@@ -630,6 +627,7 @@ function applySecurity(app, opts = {}) {
|
|
|
630
627
|
httpDirective,
|
|
631
628
|
(req, res) => (res.locals.isSwagger ? "'unsafe-inline'" : `'nonce-${res.locals.nonce}'`),
|
|
632
629
|
],
|
|
630
|
+
styleSrcAttr: [(req, res) => (res.locals.isSwagger ? "'unsafe-inline'" : "'none'")],
|
|
633
631
|
// deny plugins
|
|
634
632
|
objectSrc: ["'none'"],
|
|
635
633
|
},
|
package/src/server/backup.js
CHANGED
|
@@ -7,10 +7,8 @@
|
|
|
7
7
|
import fs from 'fs-extra';
|
|
8
8
|
import { loggerFactory } from './logger.js';
|
|
9
9
|
import { shellExec } from './process.js';
|
|
10
|
-
import dotenv from 'dotenv';
|
|
11
10
|
import Underpost from '../index.js';
|
|
12
|
-
|
|
13
|
-
dotenv.config();
|
|
11
|
+
import { loadCronDeployEnv } from './conf.js';
|
|
14
12
|
|
|
15
13
|
const logger = loggerFactory(import.meta);
|
|
16
14
|
|
|
@@ -33,6 +31,7 @@ class BackUp {
|
|
|
33
31
|
* @memberof UnderpostBakcUp
|
|
34
32
|
*/
|
|
35
33
|
static callback = async function (deployList, options = { git: false }) {
|
|
34
|
+
loadCronDeployEnv();
|
|
36
35
|
if ((!deployList || deployList === 'dd') && fs.existsSync(`./engine-private/deploy/dd.router`))
|
|
37
36
|
deployList = fs.readFileSync(`./engine-private/deploy/dd.router`, 'utf8').trim();
|
|
38
37
|
|