cyberia 3.0.3 → 3.2.5
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 -4
- package/.github/workflows/engine-cyberia.cd.yml +43 -10
- package/.github/workflows/engine-cyberia.ci.yml +48 -26
- package/.github/workflows/ghpkg.ci.yml +5 -5
- package/.github/workflows/gitlab.ci.yml +1 -1
- package/.github/workflows/hardhat.ci.yml +82 -0
- package/.github/workflows/npmpkg.ci.yml +60 -14
- package/.github/workflows/publish.ci.yml +26 -7
- package/.github/workflows/publish.cyberia.ci.yml +5 -5
- package/.github/workflows/pwa-microservices-template-page.cd.yml +6 -7
- package/.github/workflows/pwa-microservices-template-test.ci.yml +4 -4
- package/.github/workflows/release.cd.yml +14 -8
- package/.vscode/extensions.json +9 -8
- package/.vscode/settings.json +3 -2
- package/CHANGELOG.md +643 -1
- package/CLI-HELP.md +132 -57
- package/Dockerfile +4 -2
- package/README.md +347 -22
- package/WHITE-PAPER.md +1540 -0
- package/bin/build.js +21 -12
- package/bin/cyberia.js +2640 -106
- package/bin/deploy.js +258 -372
- package/bin/file.js +5 -1
- package/bin/index.js +2640 -106
- package/bin/vs.js +3 -3
- package/conf.js +169 -105
- package/deployment.yaml +236 -20
- 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 +4323 -0
- package/hardhat/package.json +36 -0
- package/hardhat/scripts/deployObjectLayerToken.js +98 -0
- package/hardhat/test/ObjectLayerToken.js +592 -0
- package/hardhat/types/ethers-contracts/ObjectLayerToken.ts +690 -0
- package/hardhat/types/ethers-contracts/common.ts +92 -0
- package/hardhat/types/ethers-contracts/factories/ObjectLayerToken__factory.ts +1055 -0
- package/hardhat/types/ethers-contracts/factories/index.ts +4 -0
- package/hardhat/types/ethers-contracts/hardhat.d.ts +47 -0
- package/hardhat/types/ethers-contracts/index.ts +6 -0
- package/jsdoc.dd-cyberia.json +68 -0
- package/jsdoc.json +65 -49
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +5 -4
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +5 -4
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +562 -0
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +297 -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 +88 -74
- package/manifests/deployment/dd-test-development/proxy.yaml +13 -4
- package/manifests/deployment/playwright/deployment.yaml +1 -1
- package/manifests/pv-pvc-dd.yaml +1 -1
- package/nodemon.json +1 -1
- package/package.json +60 -48
- package/proxy.yaml +118 -10
- package/pv-pvc.yaml +132 -0
- package/scripts/k3s-node-setup.sh +1 -1
- package/scripts/ports-ls.sh +2 -0
- package/scripts/rhel-grpc-setup.sh +56 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +47 -1
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +17 -2
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +5 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +80 -7
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +93 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +36 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +29 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +51 -0
- package/src/api/cyberia-entity/cyberia-entity.controller.js +74 -0
- package/src/api/cyberia-entity/cyberia-entity.model.js +24 -0
- package/src/api/cyberia-entity/cyberia-entity.router.js +27 -0
- package/src/api/cyberia-entity/cyberia-entity.service.js +42 -0
- package/src/api/cyberia-instance/cyberia-fallback-world.js +368 -0
- package/src/api/cyberia-instance/cyberia-instance.controller.js +92 -0
- package/src/api/cyberia-instance/cyberia-instance.model.js +84 -0
- package/src/api/cyberia-instance/cyberia-instance.router.js +63 -0
- package/src/api/cyberia-instance/cyberia-instance.service.js +191 -0
- package/src/api/cyberia-instance/cyberia-portal-connector.js +486 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +74 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +413 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +228 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +27 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +42 -0
- package/src/api/cyberia-map/cyberia-map.controller.js +79 -0
- package/src/api/cyberia-map/cyberia-map.model.js +30 -0
- package/src/api/cyberia-map/cyberia-map.router.js +40 -0
- package/src/api/cyberia-map/cyberia-map.service.js +74 -0
- package/src/api/document/document.service.js +1 -1
- package/src/api/file/file.controller.js +3 -1
- package/src/api/file/file.ref.json +18 -0
- package/src/api/file/file.service.js +28 -5
- package/src/api/ipfs/ipfs.controller.js +4 -25
- package/src/api/ipfs/ipfs.model.js +43 -34
- package/src/api/ipfs/ipfs.router.js +8 -13
- package/src/api/ipfs/ipfs.service.js +56 -104
- package/src/api/object-layer/README.md +347 -22
- package/src/api/object-layer/object-layer.controller.js +6 -2
- package/src/api/object-layer/object-layer.model.js +12 -8
- package/src/api/object-layer/object-layer.router.js +698 -42
- package/src/api/object-layer/object-layer.service.js +119 -37
- 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 +15 -14
- package/src/cli/baremetal.js +6 -10
- package/src/cli/cloud-init.js +0 -3
- package/src/cli/cluster.js +7 -7
- package/src/cli/db.js +723 -857
- package/src/cli/deploy.js +215 -105
- package/src/cli/env.js +34 -5
- package/src/cli/fs.js +5 -4
- package/src/cli/image.js +0 -3
- package/src/cli/index.js +83 -15
- package/src/cli/kubectl.js +211 -0
- package/src/cli/monitor.js +5 -6
- package/src/cli/release.js +284 -0
- package/src/cli/repository.js +708 -62
- package/src/cli/run.js +371 -151
- package/src/cli/secrets.js +73 -2
- package/src/cli/ssh.js +1 -1
- package/src/cli/test.js +3 -3
- package/src/client/Cryptokoyn.index.js +3 -4
- package/src/client/CyberiaPortal.index.js +3 -4
- package/src/client/Default.index.js +3 -4
- package/src/client/Itemledger.index.js +4 -963
- package/src/client/Underpost.index.js +3 -4
- package/src/client/components/core/AgGrid.js +20 -5
- package/src/client/components/core/Alert.js +2 -2
- package/src/client/components/core/AppStore.js +69 -0
- package/src/client/components/core/CalendarCore.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/DropDown.js +137 -17
- package/src/client/components/core/FileExplorer.js +71 -4
- package/src/client/components/core/Input.js +1 -1
- package/src/client/components/core/Keyboard.js +2 -2
- package/src/client/components/core/LogIn.js +2 -2
- package/src/client/components/core/LogOut.js +2 -2
- package/src/client/components/core/Modal.js +20 -7
- package/src/client/components/core/Panel.js +0 -1
- package/src/client/components/core/PanelForm.js +19 -19
- package/src/client/components/core/RichText.js +1 -2
- package/src/client/components/core/SocketIo.js +82 -29
- package/src/client/components/core/SocketIoHandler.js +75 -0
- package/src/client/components/core/Stream.js +143 -95
- package/src/client/components/core/Webhook.js +40 -7
- package/src/client/components/cryptokoyn/AppStoreCryptokoyn.js +5 -0
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +3 -3
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +2 -2
- package/src/client/components/cryptokoyn/MenuCryptokoyn.js +3 -3
- package/src/client/components/cryptokoyn/SocketIoCryptokoyn.js +3 -51
- package/src/client/components/cyberia/InstanceEngineCyberia.js +700 -0
- package/src/client/components/cyberia/MapEngineCyberia.js +1359 -2
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +17 -6
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +92 -54
- package/src/client/components/cyberia-portal/AppStoreCyberiaPortal.js +5 -0
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +217 -30
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +44 -2
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +3 -4
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +2 -2
- package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +104 -9
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +5 -0
- package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +3 -49
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -0
- package/src/client/components/default/AppStoreDefault.js +5 -0
- package/src/client/components/default/LogInDefault.js +3 -3
- package/src/client/components/default/LogOutDefault.js +2 -2
- package/src/client/components/default/MenuDefault.js +5 -5
- package/src/client/components/default/SocketIoDefault.js +3 -51
- package/src/client/components/itemledger/AppStoreItemledger.js +5 -0
- package/src/client/components/itemledger/LogInItemledger.js +3 -3
- package/src/client/components/itemledger/LogOutItemledger.js +2 -2
- package/src/client/components/itemledger/MenuItemledger.js +3 -3
- package/src/client/components/itemledger/SocketIoItemledger.js +3 -51
- package/src/client/components/underpost/AppStoreUnderpost.js +5 -0
- package/src/client/components/underpost/CssUnderpost.js +59 -0
- package/src/client/components/underpost/LogInUnderpost.js +6 -3
- package/src/client/components/underpost/LogOutUnderpost.js +4 -2
- package/src/client/components/underpost/MenuUnderpost.js +104 -18
- package/src/client/components/underpost/RoutesUnderpost.js +2 -0
- package/src/client/components/underpost/SocketIoUnderpost.js +3 -51
- 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/core/core.service.js +20 -8
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +105 -0
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +57 -0
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +105 -0
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +194 -0
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +122 -0
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +105 -0
- package/src/client/services/cyberia-map/cyberia-map.management.js +193 -0
- package/src/client/services/cyberia-map/cyberia-map.service.js +126 -0
- package/src/client/services/instance/instance.management.js +2 -2
- package/src/client/services/ipfs/ipfs.service.js +3 -23
- package/src/client/services/object-layer/object-layer.management.js +3 -3
- package/src/client/services/object-layer/object-layer.service.js +21 -0
- package/src/client/services/user/user.management.js +2 -2
- 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/head/PwaItemledger.js +60 -0
- package/src/client/ssr/offline/NoNetworkConnection.js +11 -10
- package/src/client/ssr/pages/CyberiaServerMetrics.js +1 -1
- 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/grpc/cyberia/OFF_CHAIN_ECONOMY.md +305 -0
- package/src/grpc/cyberia/README.md +326 -0
- package/src/grpc/cyberia/grpc-server.js +530 -0
- package/src/index.js +24 -1
- package/src/proxy.js +0 -3
- package/src/runtime/express/Dockerfile +4 -0
- package/src/runtime/express/Express.js +33 -10
- package/src/runtime/lampp/Dockerfile +13 -2
- package/src/runtime/lampp/Lampp.js +33 -17
- package/src/runtime/wp/Dockerfile +68 -0
- package/src/runtime/wp/Wp.js +639 -0
- package/src/server/auth.js +36 -15
- package/src/server/backup.js +39 -12
- package/src/server/besu-genesis-generator.js +1630 -0
- package/src/server/client-build-docs.js +133 -17
- package/src/server/client-build-live.js +9 -18
- package/src/server/client-build.js +229 -101
- package/src/server/client-dev-server.js +14 -13
- package/src/server/client-formatted.js +109 -57
- package/src/server/conf.js +391 -164
- package/src/server/cron.js +27 -24
- package/src/server/dns.js +29 -12
- package/src/server/downloader.js +0 -2
- package/src/server/ipfs-client.js +24 -1
- package/src/server/logger.js +27 -9
- package/src/server/object-layer.js +217 -103
- package/src/server/peer.js +8 -2
- package/src/server/process.js +1 -50
- package/src/server/proxy.js +4 -8
- package/src/server/runtime.js +30 -9
- package/src/server/semantic-layer-generator-floor.js +359 -0
- package/src/server/semantic-layer-generator-skin.js +1294 -0
- package/src/server/semantic-layer-generator.js +116 -555
- 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/src/ws/IoInterface.js +1 -10
- package/src/ws/IoServer.js +14 -33
- package/src/ws/core/channels/core.ws.chat.js +65 -20
- package/src/ws/core/channels/core.ws.mailer.js +113 -32
- package/src/ws/core/channels/core.ws.stream.js +90 -31
- package/src/ws/core/core.ws.connection.js +12 -33
- package/src/ws/core/core.ws.emit.js +10 -26
- package/src/ws/core/core.ws.server.js +25 -58
- package/src/ws/default/channels/default.ws.main.js +53 -12
- package/src/ws/default/default.ws.connection.js +26 -13
- package/src/ws/default/default.ws.server.js +30 -12
- 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/src/client/components/cryptokoyn/CommonCryptokoyn.js +0 -29
- package/src/client/components/cryptokoyn/ElementsCryptokoyn.js +0 -38
- package/src/client/components/cyberia-portal/ElementsCyberiaPortal.js +0 -38
- package/src/client/components/default/ElementsDefault.js +0 -38
- package/src/client/components/itemledger/CommonItemledger.js +0 -29
- package/src/client/components/itemledger/ElementsItemledger.js +0 -38
- package/src/client/components/underpost/CommonUnderpost.js +0 -29
- package/src/client/components/underpost/ElementsUnderpost.js +0 -38
- package/src/ws/core/management/core.ws.chat.js +0 -8
- package/src/ws/core/management/core.ws.mailer.js +0 -16
- package/src/ws/core/management/core.ws.stream.js +0 -8
- package/src/ws/default/management/default.ws.main.js +0 -8
- package/white-paper.md +0 -581
|
@@ -79,6 +79,7 @@ class ExpressService {
|
|
|
79
79
|
peer,
|
|
80
80
|
valkey,
|
|
81
81
|
apiBaseHost,
|
|
82
|
+
grpc,
|
|
82
83
|
redirectTarget,
|
|
83
84
|
rootHostPath,
|
|
84
85
|
confSSR,
|
|
@@ -135,7 +136,17 @@ class ExpressService {
|
|
|
135
136
|
});
|
|
136
137
|
|
|
137
138
|
// Static file serving
|
|
138
|
-
app.use(
|
|
139
|
+
app.use(
|
|
140
|
+
'/',
|
|
141
|
+
express.static(directory ? directory : `.${rootHostPath}`, {
|
|
142
|
+
setHeaders: (res, filePath) => {
|
|
143
|
+
if (filePath.includes('/assets/')) {
|
|
144
|
+
res.set('Access-Control-Allow-Origin', '*');
|
|
145
|
+
res.set('Cross-Origin-Resource-Policy', 'cross-origin');
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
}),
|
|
149
|
+
);
|
|
139
150
|
|
|
140
151
|
// Handle redirection-only instances
|
|
141
152
|
if (redirect) {
|
|
@@ -165,14 +176,7 @@ class ExpressService {
|
|
|
165
176
|
});
|
|
166
177
|
}
|
|
167
178
|
|
|
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
|
|
179
|
+
// Security and CORS — must run before swagger-ui so CSP headers are included in swagger responses
|
|
176
180
|
if (process.env.NODE_ENV === 'development' && useLocalSsl)
|
|
177
181
|
origins = origins.map((origin) => origin.replace('http', 'https'));
|
|
178
182
|
|
|
@@ -180,6 +184,13 @@ class ExpressService {
|
|
|
180
184
|
origin: origins,
|
|
181
185
|
});
|
|
182
186
|
|
|
187
|
+
// Swagger UI setup (after security middleware so responses carry correct CSP headers)
|
|
188
|
+
if (fs.existsSync(swaggerJsonPath)) {
|
|
189
|
+
const swaggerDoc = JSON.parse(fs.readFileSync(swaggerJsonPath, 'utf8'));
|
|
190
|
+
const swaggerUiOptions = await buildSwaggerUiOptions();
|
|
191
|
+
app.use(swaggerPath, swaggerUi.serve, swaggerUi.setup(swaggerDoc, swaggerUiOptions));
|
|
192
|
+
}
|
|
193
|
+
|
|
183
194
|
// Database and Valkey connections
|
|
184
195
|
if (db && apis) await DataBaseProvider.load({ apis, host, path, db });
|
|
185
196
|
|
|
@@ -198,6 +209,12 @@ class ExpressService {
|
|
|
198
209
|
});
|
|
199
210
|
}
|
|
200
211
|
|
|
212
|
+
// gRPC server
|
|
213
|
+
if (path === '/' && grpc && grpc.module) {
|
|
214
|
+
const { GrpcServer } = await import(`../../grpc/${grpc.module}/grpc-server.js`);
|
|
215
|
+
await GrpcServer.start({ host, path, port: grpc.port || 50051 });
|
|
216
|
+
}
|
|
217
|
+
|
|
201
218
|
// API router loading
|
|
202
219
|
if (apis && apis.length > 0) {
|
|
203
220
|
const authMiddleware = authMiddlewareFactory({ host, path });
|
|
@@ -249,7 +266,13 @@ class ExpressService {
|
|
|
249
266
|
for (const [_, ssrMiddleware] of Object.entries(ssr)) app.use(ssrMiddleware);
|
|
250
267
|
|
|
251
268
|
// Start listening on the main port
|
|
252
|
-
|
|
269
|
+
// When behind a dev proxy (isDevProxyContext), the proxy handles TLS termination,
|
|
270
|
+
// so backend servers should listen on plain HTTP to be reachable via http://localhost:PORT
|
|
271
|
+
if (
|
|
272
|
+
(useLocalSsl || process.argv.find((arg) => arg === 'tls')) &&
|
|
273
|
+
process.env.NODE_ENV === 'development' &&
|
|
274
|
+
!isDevProxyContext()
|
|
275
|
+
) {
|
|
253
276
|
if (!Underpost.tls.validateSecureContext()) shellExec(`node bin/deploy tls`);
|
|
254
277
|
const { ServerSSL } = await Underpost.tls.createSslServer(app);
|
|
255
278
|
await Underpost.start.listenPortController(ServerSSL, port, runningData);
|
|
@@ -20,8 +20,8 @@ RUN dnf -y update && \
|
|
|
20
20
|
perl && \
|
|
21
21
|
dnf clean all
|
|
22
22
|
|
|
23
|
-
# --- Download and install XAMPP
|
|
24
|
-
RUN curl -L -o /tmp/xampp-linux-installer.run "https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/
|
|
23
|
+
# --- Download and install XAMPP (PHP 8.2)
|
|
24
|
+
RUN curl -L -o /tmp/xampp-linux-installer.run "https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/8.2.12/xampp-linux-x64-8.2.12-0-installer.run" && \
|
|
25
25
|
chmod +x /tmp/xampp-linux-installer.run && \
|
|
26
26
|
bash -c "/tmp/xampp-linux-installer.run --mode unattended" && \
|
|
27
27
|
ln -sf /opt/lampp/lampp /usr/bin/lampp
|
|
@@ -31,6 +31,13 @@ RUN mkdir -p /opt/lampp/htdocs && \
|
|
|
31
31
|
chown -R root:root /opt/lampp/htdocs && \
|
|
32
32
|
chmod -R a+rX /opt/lampp/htdocs
|
|
33
33
|
|
|
34
|
+
# Add XAMPP binaries and /usr/local/bin to PATH for all shells
|
|
35
|
+
ENV PATH="/opt/lampp/bin:/usr/local/bin:${PATH}"
|
|
36
|
+
RUN echo 'export PATH="/opt/lampp/bin:/usr/local/bin:${PATH}"' > /etc/profile.d/lampp.sh
|
|
37
|
+
|
|
38
|
+
# Provide a no-op sendmail so PHP plugins don't error on mail calls
|
|
39
|
+
RUN printf '#!/bin/sh\ncat > /dev/null\n' > /usr/sbin/sendmail && chmod +x /usr/sbin/sendmail
|
|
40
|
+
|
|
34
41
|
# Install Node.js
|
|
35
42
|
RUN curl -fsSL https://rpm.nodesource.com/setup_24.x | bash -
|
|
36
43
|
RUN dnf install nodejs -y
|
|
@@ -40,6 +47,10 @@ RUN dnf clean all
|
|
|
40
47
|
RUN node --version
|
|
41
48
|
RUN npm --version
|
|
42
49
|
|
|
50
|
+
# Create non-root user for secure container execution (cron jobs, init containers)
|
|
51
|
+
# Deployment containers override to root via securityContext when npm install -g is needed
|
|
52
|
+
RUN useradd -m -u 1000 -s /bin/bash dd
|
|
53
|
+
|
|
43
54
|
# Set working directory
|
|
44
55
|
WORKDIR /home/dd
|
|
45
56
|
|
|
@@ -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
|
/**
|
|
@@ -176,9 +169,9 @@ class LamppService {
|
|
|
176
169
|
shellCd(`./engine-private/setup`);
|
|
177
170
|
|
|
178
171
|
if (!process.argv.includes(`server`)) {
|
|
179
|
-
// Download and run the XAMPP installer
|
|
172
|
+
// Download and run the XAMPP installer (PHP 8.2)
|
|
180
173
|
shellExec(
|
|
181
|
-
`curl -Lo xampp-linux-installer.run https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/
|
|
174
|
+
`curl -Lo xampp-linux-installer.run https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/8.2.12/xampp-linux-x64-8.2.12-0-installer.run`,
|
|
182
175
|
);
|
|
183
176
|
shellExec(`sudo chmod +x xampp-linux-installer.run`);
|
|
184
177
|
shellExec(
|
|
@@ -244,14 +237,37 @@ Listen ${port}
|
|
|
244
237
|
|
|
245
238
|
<VirtualHost *:${port}>
|
|
246
239
|
DocumentRoot "${documentRoot}"
|
|
247
|
-
ServerName ${host}
|
|
240
|
+
ServerName ${host}
|
|
241
|
+
UseCanonicalName Off
|
|
242
|
+
ServerSignature Off
|
|
248
243
|
|
|
249
244
|
<Directory "${documentRoot}">
|
|
250
|
-
Options
|
|
245
|
+
Options FollowSymLinks MultiViews
|
|
251
246
|
AllowOverride All
|
|
252
247
|
Require all granted
|
|
253
248
|
</Directory>
|
|
254
249
|
|
|
250
|
+
# Block access to .git directories and files
|
|
251
|
+
RedirectMatch 404 /\\.git
|
|
252
|
+
|
|
253
|
+
# Block access to hidden dotfiles (.env, .htpasswd, etc.)
|
|
254
|
+
<FilesMatch "^\\.(env|htpasswd|htaccess\\.bak|DS_Store)">
|
|
255
|
+
Require all denied
|
|
256
|
+
</FilesMatch>
|
|
257
|
+
|
|
258
|
+
# Block access to sensitive engine files
|
|
259
|
+
<FilesMatch "(wp-config\\.php\\.bak|wp-config-sample\\.php|\\.sql|\\.sql\\.gz)$">
|
|
260
|
+
Require all denied
|
|
261
|
+
</FilesMatch>
|
|
262
|
+
|
|
263
|
+
# Security headers
|
|
264
|
+
<IfModule mod_headers.c>
|
|
265
|
+
Header always set X-Content-Type-Options "nosniff"
|
|
266
|
+
Header always set X-Frame-Options "SAMEORIGIN"
|
|
267
|
+
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
|
268
|
+
Header always unset X-Powered-By
|
|
269
|
+
</IfModule>
|
|
270
|
+
|
|
255
271
|
${
|
|
256
272
|
redirect
|
|
257
273
|
? `
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
FROM rockylinux:9
|
|
2
|
+
|
|
3
|
+
# Update and install required packages
|
|
4
|
+
RUN dnf -y update && \
|
|
5
|
+
dnf -y install epel-release && \
|
|
6
|
+
dnf -y install --allowerasing \
|
|
7
|
+
bzip2 \
|
|
8
|
+
sudo \
|
|
9
|
+
curl \
|
|
10
|
+
unzip \
|
|
11
|
+
net-tools \
|
|
12
|
+
openssh-server \
|
|
13
|
+
nano \
|
|
14
|
+
vim-enhanced \
|
|
15
|
+
less \
|
|
16
|
+
openssl-devel \
|
|
17
|
+
wget \
|
|
18
|
+
git \
|
|
19
|
+
gnupg2 \
|
|
20
|
+
libnsl \
|
|
21
|
+
perl && \
|
|
22
|
+
dnf clean all
|
|
23
|
+
|
|
24
|
+
# --- Download and install XAMPP (PHP 8.2)
|
|
25
|
+
RUN curl -L -o /tmp/xampp-linux-installer.run "https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/8.2.12/xampp-linux-x64-8.2.12-0-installer.run" && \
|
|
26
|
+
chmod +x /tmp/xampp-linux-installer.run && \
|
|
27
|
+
bash -c "/tmp/xampp-linux-installer.run --mode unattended" && \
|
|
28
|
+
ln -sf /opt/lampp/lampp /usr/bin/lampp
|
|
29
|
+
|
|
30
|
+
# --- Create /xampp/htdocs (static root) and set permissions
|
|
31
|
+
RUN mkdir -p /opt/lampp/htdocs && \
|
|
32
|
+
chown -R root:root /opt/lampp/htdocs && \
|
|
33
|
+
chmod -R a+rX /opt/lampp/htdocs
|
|
34
|
+
|
|
35
|
+
# Add XAMPP binaries and /usr/local/bin to PATH for all shells
|
|
36
|
+
ENV PATH="/opt/lampp/bin:/usr/local/bin:${PATH}"
|
|
37
|
+
RUN echo 'export PATH="/opt/lampp/bin:/usr/local/bin:${PATH}"' > /etc/profile.d/lampp.sh
|
|
38
|
+
|
|
39
|
+
# Provide a no-op sendmail so WP plugins don't error on mail calls
|
|
40
|
+
RUN printf '#!/bin/sh\ncat > /dev/null\n' > /usr/sbin/sendmail && chmod +x /usr/sbin/sendmail
|
|
41
|
+
|
|
42
|
+
# Install WP-CLI
|
|
43
|
+
RUN curl -sL https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -o /usr/local/bin/wp && \
|
|
44
|
+
chmod +x /usr/local/bin/wp && \
|
|
45
|
+
wp --info --allow-root
|
|
46
|
+
|
|
47
|
+
# Install Node.js
|
|
48
|
+
RUN curl -fsSL https://rpm.nodesource.com/setup_24.x | bash -
|
|
49
|
+
RUN dnf install nodejs -y
|
|
50
|
+
RUN dnf clean all
|
|
51
|
+
|
|
52
|
+
# Verify Node.js and npm versions
|
|
53
|
+
RUN node --version
|
|
54
|
+
RUN npm --version
|
|
55
|
+
|
|
56
|
+
# Create non-root user for secure container execution (cron jobs, init containers)
|
|
57
|
+
# Deployment containers override to root via securityContext when npm install -g is needed
|
|
58
|
+
RUN useradd -m -u 1000 -s /bin/bash dd
|
|
59
|
+
|
|
60
|
+
# Set working directory
|
|
61
|
+
WORKDIR /home/dd
|
|
62
|
+
|
|
63
|
+
EXPOSE 22
|
|
64
|
+
EXPOSE 80
|
|
65
|
+
EXPOSE 443
|
|
66
|
+
EXPOSE 3000-3100
|
|
67
|
+
EXPOSE 4000-4100
|
|
68
|
+
|