cyberia 3.0.3 → 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.
Files changed (160) hide show
  1. package/{.env.production → .env.example} +20 -2
  2. package/.github/workflows/engine-cyberia.cd.yml +41 -10
  3. package/.github/workflows/engine-cyberia.ci.yml +53 -14
  4. package/.github/workflows/ghpkg.ci.yml +1 -1
  5. package/.github/workflows/gitlab.ci.yml +1 -1
  6. package/.github/workflows/hardhat.ci.yml +82 -0
  7. package/.github/workflows/npmpkg.ci.yml +37 -8
  8. package/.github/workflows/publish.ci.yml +5 -5
  9. package/.github/workflows/publish.cyberia.ci.yml +5 -5
  10. package/.github/workflows/pwa-microservices-template-page.cd.yml +3 -3
  11. package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
  12. package/.github/workflows/release.cd.yml +3 -2
  13. package/.vscode/extensions.json +9 -8
  14. package/.vscode/settings.json +3 -2
  15. package/CHANGELOG.md +211 -1
  16. package/CLI-HELP.md +78 -53
  17. package/WHITE-PAPER.md +1540 -0
  18. package/bin/build.js +16 -10
  19. package/bin/cyberia.js +861 -4
  20. package/bin/deploy.js +103 -270
  21. package/bin/file.js +2 -1
  22. package/bin/index.js +861 -4
  23. package/bin/vs.js +3 -3
  24. package/conf.js +105 -97
  25. package/deployment.yaml +148 -4
  26. package/hardhat/.env.example +31 -0
  27. package/hardhat/README.md +531 -0
  28. package/hardhat/WHITE-PAPER.md +1540 -0
  29. package/hardhat/contracts/ObjectLayerToken.sol +391 -0
  30. package/hardhat/deployments/.gitkeep +0 -0
  31. package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
  32. package/hardhat/hardhat.config.js +136 -0
  33. package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
  34. package/hardhat/networks/besu-object-layer.network.json +138 -0
  35. package/hardhat/package-lock.json +7628 -0
  36. package/hardhat/package.json +45 -0
  37. package/hardhat/scripts/deployObjectLayerToken.js +98 -0
  38. package/hardhat/test/ObjectLayerToken.js +590 -0
  39. package/jsdoc.dd-cyberia.json +59 -0
  40. package/jsdoc.json +20 -13
  41. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  42. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
  43. package/manifests/deployment/dd-cyberia-development/deployment.yaml +490 -0
  44. package/manifests/deployment/dd-cyberia-development/proxy.yaml +261 -0
  45. package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +132 -0
  46. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  47. package/manifests/deployment/dd-test-development/deployment.yaml +52 -52
  48. package/manifests/deployment/dd-test-development/proxy.yaml +4 -4
  49. package/manifests/pv-pvc-dd.yaml +1 -1
  50. package/package.json +50 -44
  51. package/proxy.yaml +79 -7
  52. package/pv-pvc.yaml +132 -0
  53. package/scripts/k3s-node-setup.sh +1 -1
  54. package/scripts/ports-ls.sh +2 -0
  55. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +3 -1
  56. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +1 -2
  57. package/src/api/document/document.service.js +1 -1
  58. package/src/api/file/file.controller.js +3 -1
  59. package/src/api/file/file.service.js +28 -5
  60. package/src/api/ipfs/ipfs.service.js +2 -2
  61. package/src/api/object-layer/object-layer.controller.js +6 -2
  62. package/src/api/object-layer/object-layer.model.js +12 -8
  63. package/src/api/object-layer/object-layer.router.js +668 -42
  64. package/src/api/object-layer/object-layer.service.js +6 -7
  65. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +1 -2
  66. package/src/api/user/user.router.js +10 -5
  67. package/src/api/user/user.service.js +7 -7
  68. package/src/cli/baremetal.js +6 -10
  69. package/src/cli/cloud-init.js +0 -3
  70. package/src/cli/db.js +54 -71
  71. package/src/cli/deploy.js +64 -12
  72. package/src/cli/env.js +5 -5
  73. package/src/cli/fs.js +0 -2
  74. package/src/cli/image.js +0 -3
  75. package/src/cli/index.js +35 -13
  76. package/src/cli/monitor.js +5 -6
  77. package/src/cli/repository.js +329 -46
  78. package/src/cli/run.js +180 -120
  79. package/src/cli/secrets.js +1 -3
  80. package/src/cli/ssh.js +1 -1
  81. package/src/client/Itemledger.index.js +1 -959
  82. package/src/client/components/core/AgGrid.js +20 -5
  83. package/src/client/components/core/Alert.js +2 -2
  84. package/src/client/components/core/Content.js +22 -3
  85. package/src/client/components/core/Docs.js +30 -6
  86. package/src/client/components/core/FileExplorer.js +71 -4
  87. package/src/client/components/core/Input.js +1 -1
  88. package/src/client/components/core/Modal.js +20 -6
  89. package/src/client/components/core/RichText.js +1 -2
  90. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +1 -0
  91. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +44 -2
  92. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +0 -1
  93. package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +64 -2
  94. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +1 -0
  95. package/src/client/components/underpost/CssUnderpost.js +59 -0
  96. package/src/client/components/underpost/LogInUnderpost.js +3 -0
  97. package/src/client/components/underpost/LogOutUnderpost.js +2 -0
  98. package/src/client/components/underpost/MenuUnderpost.js +99 -13
  99. package/src/client/components/underpost/RoutesUnderpost.js +2 -0
  100. package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
  101. package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
  102. package/src/client/public/cryptokoyn/microdata.json +85 -0
  103. package/src/client/public/cryptokoyn/site.webmanifest +57 -0
  104. package/src/client/public/cryptokoyn/sitemap +3 -3
  105. package/src/client/public/default/sitemap +3 -3
  106. package/src/client/public/itemledger/browserconfig.xml +2 -2
  107. package/src/client/public/itemledger/manifest.webmanifest +4 -4
  108. package/src/client/public/itemledger/microdata.json +71 -0
  109. package/src/client/public/itemledger/sitemap +3 -3
  110. package/src/client/public/itemledger/yandex-browser-manifest.json +2 -2
  111. package/src/client/public/test/sitemap +3 -3
  112. package/src/client/ssr/body/404.js +15 -11
  113. package/src/client/ssr/body/500.js +15 -11
  114. package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
  115. package/src/client/ssr/head/PwaItemledger.js +60 -0
  116. package/src/client/ssr/offline/NoNetworkConnection.js +11 -10
  117. package/src/client/ssr/pages/Test.js +11 -10
  118. package/src/client.build.js +0 -3
  119. package/src/client.dev.js +0 -3
  120. package/src/db/DataBaseProvider.js +17 -2
  121. package/src/db/mariadb/MariaDB.js +14 -9
  122. package/src/db/mongo/MongooseDB.js +17 -1
  123. package/src/index.js +1 -1
  124. package/src/proxy.js +0 -3
  125. package/src/runtime/express/Express.js +15 -9
  126. package/src/runtime/lampp/Lampp.js +6 -13
  127. package/src/server/auth.js +12 -14
  128. package/src/server/backup.js +2 -3
  129. package/src/server/besu-genesis-generator.js +1630 -0
  130. package/src/server/client-build-docs.js +126 -17
  131. package/src/server/client-build-live.js +9 -18
  132. package/src/server/client-build.js +203 -75
  133. package/src/server/client-dev-server.js +14 -13
  134. package/src/server/conf.js +376 -164
  135. package/src/server/cron.js +2 -1
  136. package/src/server/dns.js +28 -12
  137. package/src/server/downloader.js +0 -2
  138. package/src/server/logger.js +27 -9
  139. package/src/server/object-layer.js +79 -6
  140. package/src/server/peer.js +0 -2
  141. package/src/server/process.js +1 -50
  142. package/src/server/proxy.js +4 -8
  143. package/src/server/runtime.js +5 -8
  144. package/src/server/ssr.js +0 -3
  145. package/src/server/start.js +19 -12
  146. package/src/server/tls.js +0 -2
  147. package/src/server.js +0 -4
  148. package/.env.development +0 -43
  149. package/.env.test +0 -43
  150. package/hardhat/contracts/CryptoKoyn.sol +0 -59
  151. package/hardhat/contracts/ItemLedger.sol +0 -73
  152. package/hardhat/contracts/Lock.sol +0 -34
  153. package/hardhat/hardhat.config.cjs +0 -45
  154. package/hardhat/ignition/modules/Lock.js +0 -18
  155. package/hardhat/networks/cryptokoyn-itemledger.network.json +0 -29
  156. package/hardhat/scripts/deployCryptokoyn.cjs +0 -25
  157. package/hardhat/scripts/deployItemledger.cjs +0 -25
  158. package/hardhat/test/Lock.js +0 -126
  159. package/hardhat/white-paper.md +0 -581
  160. package/white-paper.md +0 -581
package/package.json CHANGED
@@ -2,25 +2,30 @@
2
2
  "type": "module",
3
3
  "main": "src/index.js",
4
4
  "name": "cyberia",
5
- "version": "3.0.3",
5
+ "version": "3.1.3",
6
6
  "description": "Cyberia Engine - Object Layer and Assets Management Microservice",
7
7
  "scripts": {
8
- "start": "env-cmd -f .env.production node --max-old-space-size=8192 src/server",
9
- "build": "node bin/deploy build-full-client",
10
- "test": "env-cmd -f .env.test c8 mocha",
11
- "dev": "env-cmd -f .env.development nodemon src/server",
12
- "dev-img": "env-cmd -f .env.development node src/server",
13
- "prod-img": "env-cmd -f .env.production node src/server",
14
- "dev-api": "env-cmd -f .env.development nodemon --watch src --ignore src/client src/api",
15
- "dev-client": "env-cmd -f .env.development node src/client.dev",
16
- "dev-proxy": "env-cmd -f .env.development node src/proxy proxy",
8
+ "start": "node --max-old-space-size=8192 src/server dd-core",
9
+ "build": "node bin client",
10
+ "test": "NODE_ENV=test c8 mocha",
11
+ "dev": "NODE_ENV=development nodemon src/server",
12
+ "dev:container": "NODE_ENV=development node src/server",
13
+ "prod:container": "NODE_ENV=production node src/server",
14
+ "dev:api": "NODE_ENV=development nodemon --watch src --ignore src/client src/api",
15
+ "dev:client": "NODE_ENV=development node src/client.dev",
16
+ "dev:proxy": "NODE_ENV=development node src/proxy proxy",
17
17
  "docs": "jsdoc -c jsdoc.json",
18
- "install-global": "npm install -g jsdoc && npm install -g prettier && npm install -g env-cmd",
19
- "install-test": "npm install -g mocha && npm install -g c8 && npm install -g coveralls",
20
- "install": "npm run install-global && npm run install-test",
18
+ "install:global": "npm install -g jsdoc && npm install -g prettier",
19
+ "install:test": "npm install -g mocha && npm install -g c8 && npm install -g coveralls",
20
+ "install": "npm run install:global && npm run install:test",
21
21
  "prettier": "prettier --write .",
22
22
  "fix": "npm audit fix --force && npm audit",
23
- "baremetal": "node bin baremetal --dev --commission --ls --create-machine"
23
+ "baremetal": "node bin baremetal --dev --commission --ls --create-machine",
24
+ "security:secrets": "gitleaks detect --source . --config .gitleaks.toml --report-path ./gitleaks-report.json --report-format json --redact=0",
25
+ "security:secrets:ci": "gitleaks detect --source . --config .gitleaks.toml --redact=1",
26
+ "security:deps": "npm audit",
27
+ "security": "npm run security:secrets:ci && npm run security:deps",
28
+ "clean": "node bin env clean && node bin run clean"
24
29
  },
25
30
  "bin": {
26
31
  "cyberia": "bin/index.js"
@@ -44,67 +49,68 @@
44
49
  },
45
50
  "homepage": "https://github.com/underpostnet/engine-cyberia#readme",
46
51
  "dependencies": {
47
- "@fortawesome/fontawesome-free": "^6.4.2",
48
- "@fullcalendar/rrule": "^6.1.15",
49
- "@neodrag/vanilla": "^2.0.3",
52
+ "@fortawesome/fontawesome-free": "^7.2.0",
53
+ "@fullcalendar/rrule": "^6.1.20",
54
+ "@neodrag/vanilla": "^2.3.1",
50
55
  "adm-zip": "^0.5.10",
51
- "ag-grid-community": "^31.3.4",
52
- "axios": "^1.5.1",
53
- "chai": "^5.1.0",
56
+ "ag-grid-community": "^35.1.0",
57
+ "axios": "^1.13.6",
58
+ "chai": "^6.2.2",
54
59
  "clean-jsdoc-theme": "^4.3.0",
55
- "clipboardy": "^4.0.0",
60
+ "clipboardy": "^5.3.1",
56
61
  "cloudinary": "^2.5.1",
57
62
  "colors": "^1.4.0",
58
- "commander": "^12.1.0",
63
+ "commander": "^14.0.3",
59
64
  "compression": "^1.7.4",
60
65
  "cookie-parser": "^1.4.7",
61
- "cors": "^2.8.5",
66
+ "cors": "^2.8.6",
62
67
  "d3": "^7.9.0",
63
- "dotenv": "^16.3.1",
68
+ "dotenv": "^17.3.1",
64
69
  "easymde": "^2.18.0",
65
- "env-cmd": "^10.1.0",
66
- "express": "^4.18.2",
70
+ "escape-string-regexp": "^5.0.0",
71
+ "express": "^5.2.1",
67
72
  "express-fileupload": "^1.4.3",
68
- "express-rate-limit": "^8.1.0",
69
- "express-slow-down": "^3.0.0",
73
+ "express-rate-limit": "^8.3.1",
74
+ "express-slow-down": "^3.1.0",
70
75
  "fast-json-stable-stringify": "^2.1.0",
71
76
  "favicons": "^7.2.0",
72
- "fs-extra": "^11.1.1",
77
+ "fs-extra": "^11.3.4",
73
78
  "fullcalendar": "^6.1.15",
74
79
  "helmet": "^8.1.0",
75
80
  "html-minifier-terser": "^7.2.0",
76
- "http-proxy-middleware": "^2.0.6",
81
+ "http-proxy-middleware": "^3.0.5",
77
82
  "ignore-walk": "^8.0.0",
78
- "iovalkey": "^0.2.1",
79
- "json-colorizer": "^2.2.2",
80
- "jsonwebtoken": "^9.0.2",
83
+ "iovalkey": "^0.3.3",
84
+ "json-colorizer": "^3.0.1",
85
+ "jsonwebtoken": "^9.0.3",
81
86
  "mariadb": "^3.2.2",
82
- "marked": "^12.0.2",
87
+ "marked": "^17.0.4",
83
88
  "mocha": "^11.3.0",
84
- "mongoose": "^8.9.5",
89
+ "mongoose": "^9.3.0",
85
90
  "morgan": "^1.10.0",
86
- "nodemailer": "^7.0.9",
91
+ "nodemailer": "^8.0.2",
87
92
  "nodemon": "^3.0.1",
88
93
  "peer": "^1.0.2",
89
- "peerjs": "^1.5.2",
94
+ "peerjs": "^1.5.5",
90
95
  "prom-client": "^15.1.2",
91
- "read": "^2.1.0",
96
+ "read": "^5.0.1",
92
97
  "rrule": "^2.8.1",
93
98
  "shelljs": "^0.10.0",
94
- "sitemap": "^7.1.1",
95
- "socket.io": "^4.8.0",
99
+ "sitemap": "^9.0.1",
100
+ "socket.io": "^4.8.3",
96
101
  "sortablejs": "^1.15.0",
97
102
  "split-file": "^2.3.0",
98
- "swagger-autogen": "^2.9.2",
103
+ "swagger-autogen": "^2.23.7",
99
104
  "swagger-ui-express": "^5.0.0",
100
105
  "uglify-js": "^3.17.4",
101
106
  "validator": "^13.11.0",
102
- "vanilla-jsoneditor": "^2.3.2",
103
- "winston": "^3.11.0",
107
+ "vanilla-jsoneditor": "^3.11.0",
108
+ "winston": "^3.19.0",
104
109
  "maxrects-packer": "^2.7.3",
105
110
  "pngjs": "^7.0.0",
106
111
  "jimp": "^1.6.0",
107
- "sharp": "^0.32.5"
112
+ "sharp": "^0.32.5",
113
+ "ethers": "~6.16.0"
108
114
  },
109
115
  "publishConfig": {
110
116
  "provenance": true,
package/proxy.yaml CHANGED
@@ -74,6 +74,78 @@ spec:
74
74
  port: 4009
75
75
  weight: 100
76
76
 
77
+ - conditions:
78
+ - prefix: /r1
79
+
80
+ enableWebsockets: true
81
+ services:
82
+ - name: dd-cyberia-development-blue-service
83
+ port: 4010
84
+ weight: 100
85
+
86
+ - conditions:
87
+ - prefix: /r1/peer
88
+
89
+ enableWebsockets: true
90
+ services:
91
+ - name: dd-cyberia-development-blue-service
92
+ port: 4011
93
+ weight: 100
94
+
95
+ - conditions:
96
+ - prefix: /r2
97
+
98
+ enableWebsockets: true
99
+ services:
100
+ - name: dd-cyberia-development-blue-service
101
+ port: 4012
102
+ weight: 100
103
+
104
+ - conditions:
105
+ - prefix: /r2/peer
106
+
107
+ enableWebsockets: true
108
+ services:
109
+ - name: dd-cyberia-development-blue-service
110
+ port: 4013
111
+ weight: 100
112
+
113
+ - conditions:
114
+ - prefix: /r3
115
+
116
+ enableWebsockets: true
117
+ services:
118
+ - name: dd-cyberia-development-blue-service
119
+ port: 4014
120
+ weight: 100
121
+
122
+ - conditions:
123
+ - prefix: /r3/peer
124
+
125
+ enableWebsockets: true
126
+ services:
127
+ - name: dd-cyberia-development-blue-service
128
+ port: 4015
129
+ weight: 100
130
+
131
+ - conditions:
132
+ - prefix: /r4
133
+
134
+ enableWebsockets: true
135
+ services:
136
+ - name: dd-cyberia-development-blue-service
137
+ port: 4016
138
+ weight: 100
139
+
140
+ - conditions:
141
+ - prefix: /r4/peer
142
+
143
+ enableWebsockets: true
144
+ services:
145
+ - name: dd-cyberia-development-blue-service
146
+ port: 4017
147
+ weight: 100
148
+
77
149
  ---
78
150
  apiVersion: projectcontour.io/v1
79
151
  kind: HTTPProxy
@@ -90,7 +162,7 @@ spec:
90
162
  enableWebsockets: true
91
163
  services:
92
164
  - name: dd-cyberia-development-blue-service
93
- port: 4010
165
+ port: 4018
94
166
  weight: 100
95
167
 
96
168
  ---
@@ -109,7 +181,7 @@ spec:
109
181
  enableWebsockets: true
110
182
  services:
111
183
  - name: dd-cyberia-development-blue-service
112
- port: 4011
184
+ port: 4019
113
185
  weight: 100
114
186
 
115
187
  - conditions:
@@ -118,7 +190,7 @@ spec:
118
190
  enableWebsockets: true
119
191
  services:
120
192
  - name: dd-cyberia-development-blue-service
121
- port: 4012
193
+ port: 4020
122
194
  weight: 100
123
195
 
124
196
  ---
@@ -137,7 +209,7 @@ spec:
137
209
  enableWebsockets: true
138
210
  services:
139
211
  - name: dd-cyberia-development-blue-service
140
- port: 4013
212
+ port: 4021
141
213
  weight: 100
142
214
 
143
215
  ---
@@ -156,7 +228,7 @@ spec:
156
228
  enableWebsockets: true
157
229
  services:
158
230
  - name: dd-cyberia-development-blue-service
159
- port: 4014
231
+ port: 4022
160
232
  weight: 100
161
233
 
162
234
  - conditions:
@@ -165,7 +237,7 @@ spec:
165
237
  enableWebsockets: true
166
238
  services:
167
239
  - name: dd-cyberia-development-blue-service
168
- port: 4015
240
+ port: 4023
169
241
  weight: 100
170
242
 
171
243
  ---
@@ -184,6 +256,6 @@ spec:
184
256
  enableWebsockets: true
185
257
  services:
186
258
  - name: dd-cyberia-development-blue-service
187
- port: 4016
259
+ port: 4024
188
260
  weight: 100
189
261
 
package/pv-pvc.yaml ADDED
@@ -0,0 +1,132 @@
1
+ ---
2
+ apiVersion: v1
3
+ kind: PersistentVolume
4
+ metadata:
5
+ name: pv-public-dd-cyberia-dd-cyberia-development-blue
6
+ spec:
7
+ capacity:
8
+ storage: 5Gi
9
+ accessModes:
10
+ - ReadWriteOnce
11
+ persistentVolumeReclaimPolicy: Retain
12
+ storageClassName: manual
13
+ claimRef:
14
+ apiVersion: v1
15
+ kind: PersistentVolumeClaim
16
+ name: pvc-public-dd-cyberia-dd-cyberia-development-blue
17
+ namespace: default
18
+ hostPath:
19
+ path: /home/dd/engine/volume/pv-public-dd-cyberia-dd-cyberia-development-blue
20
+ type: DirectoryOrCreate
21
+ ---
22
+ apiVersion: v1
23
+ kind: PersistentVolumeClaim
24
+ metadata:
25
+ name: pvc-public-dd-cyberia-dd-cyberia-development-blue
26
+ spec:
27
+ accessModes:
28
+ - ReadWriteOnce
29
+ storageClassName: manual
30
+ volumeName: pv-public-dd-cyberia-dd-cyberia-development-blue
31
+ resources:
32
+ requests:
33
+ storage: 5Gi
34
+ ---
35
+ apiVersion: v1
36
+ kind: PersistentVolume
37
+ metadata:
38
+ name: pv-public-dd-cyberia-underpost-dd-cyberia-development-blue
39
+ spec:
40
+ capacity:
41
+ storage: 5Gi
42
+ accessModes:
43
+ - ReadWriteOnce
44
+ persistentVolumeReclaimPolicy: Retain
45
+ storageClassName: manual
46
+ claimRef:
47
+ apiVersion: v1
48
+ kind: PersistentVolumeClaim
49
+ name: pvc-public-dd-cyberia-underpost-dd-cyberia-development-blue
50
+ namespace: default
51
+ hostPath:
52
+ path: /home/dd/engine/volume/pv-public-dd-cyberia-underpost-dd-cyberia-development-blue
53
+ type: DirectoryOrCreate
54
+ ---
55
+ apiVersion: v1
56
+ kind: PersistentVolumeClaim
57
+ metadata:
58
+ name: pvc-public-dd-cyberia-underpost-dd-cyberia-development-blue
59
+ spec:
60
+ accessModes:
61
+ - ReadWriteOnce
62
+ storageClassName: manual
63
+ volumeName: pv-public-dd-cyberia-underpost-dd-cyberia-development-blue
64
+ resources:
65
+ requests:
66
+ storage: 5Gi
67
+ ---
68
+ apiVersion: v1
69
+ kind: PersistentVolume
70
+ metadata:
71
+ name: pv-public-dd-cyberia-dd-cyberia-development-green
72
+ spec:
73
+ capacity:
74
+ storage: 5Gi
75
+ accessModes:
76
+ - ReadWriteOnce
77
+ persistentVolumeReclaimPolicy: Retain
78
+ storageClassName: manual
79
+ claimRef:
80
+ apiVersion: v1
81
+ kind: PersistentVolumeClaim
82
+ name: pvc-public-dd-cyberia-dd-cyberia-development-green
83
+ namespace: default
84
+ hostPath:
85
+ path: /home/dd/engine/volume/pv-public-dd-cyberia-dd-cyberia-development-green
86
+ type: DirectoryOrCreate
87
+ ---
88
+ apiVersion: v1
89
+ kind: PersistentVolumeClaim
90
+ metadata:
91
+ name: pvc-public-dd-cyberia-dd-cyberia-development-green
92
+ spec:
93
+ accessModes:
94
+ - ReadWriteOnce
95
+ storageClassName: manual
96
+ volumeName: pv-public-dd-cyberia-dd-cyberia-development-green
97
+ resources:
98
+ requests:
99
+ storage: 5Gi
100
+ ---
101
+ apiVersion: v1
102
+ kind: PersistentVolume
103
+ metadata:
104
+ name: pv-public-dd-cyberia-underpost-dd-cyberia-development-green
105
+ spec:
106
+ capacity:
107
+ storage: 5Gi
108
+ accessModes:
109
+ - ReadWriteOnce
110
+ persistentVolumeReclaimPolicy: Retain
111
+ storageClassName: manual
112
+ claimRef:
113
+ apiVersion: v1
114
+ kind: PersistentVolumeClaim
115
+ name: pvc-public-dd-cyberia-underpost-dd-cyberia-development-green
116
+ namespace: default
117
+ hostPath:
118
+ path: /home/dd/engine/volume/pv-public-dd-cyberia-underpost-dd-cyberia-development-green
119
+ type: DirectoryOrCreate
120
+ ---
121
+ apiVersion: v1
122
+ kind: PersistentVolumeClaim
123
+ metadata:
124
+ name: pvc-public-dd-cyberia-underpost-dd-cyberia-development-green
125
+ spec:
126
+ accessModes:
127
+ - ReadWriteOnce
128
+ storageClassName: manual
129
+ volumeName: pv-public-dd-cyberia-underpost-dd-cyberia-development-green
130
+ resources:
131
+ requests:
132
+ storage: 5Gi
@@ -52,7 +52,7 @@ cd /home/dd/engine
52
52
 
53
53
  echo "Applying host configuration..."
54
54
 
55
- underpost install
55
+ npm install
56
56
 
57
57
  node bin run secret
58
58
 
@@ -3,6 +3,8 @@ set -euo pipefail
3
3
 
4
4
  BASHRC="$HOME/.bashrc"
5
5
 
6
+ sudo dnf install -y iproute lsof nmap-ncat net-tools procps-ng
7
+
6
8
  # Check whether a "ports" function is already defined
7
9
  if grep -Eq '^\s*(function\s+ports|ports\s*\(\))' "$BASHRC"; then
8
10
  echo "The 'ports' function already exists in $BASHRC. Nothing was changed."
@@ -51,7 +51,9 @@ const AtlasSpriteSheetController = {
51
51
  },
52
52
  get: async (req, res, options) => {
53
53
  try {
54
- res.setHeader('Access-Control-Allow-Origin', '*');
54
+ if (req && req.headers && req.headers.origin) {
55
+ res.set('Access-Control-Allow-Origin', req.headers.origin);
56
+ } else res.setHeader('Access-Control-Allow-Origin', '*');
55
57
  res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
56
58
  const { page, limit } = req.query;
57
59
  const result = await AtlasSpriteSheetService.get(
@@ -118,11 +118,10 @@ AtlasSpriteSheetSchema.index({ 'metadata.itemKey': 1 }, { unique: true });
118
118
  AtlasSpriteSheetSchema.index({ fileId: 1 });
119
119
 
120
120
  // Pre-save validation
121
- AtlasSpriteSheetSchema.pre('save', function (next) {
121
+ AtlasSpriteSheetSchema.pre('save', function () {
122
122
  if (!this.fileId || !this.metadata) {
123
123
  throw new Error('AtlasSpriteSheet missing required fields: fileId or metadata');
124
124
  }
125
- next();
126
125
  });
127
126
 
128
127
  const AtlasSpriteSheetModel = model('AtlasSpriteSheet', AtlasSpriteSheetSchema);
@@ -497,7 +497,7 @@ const DocumentService = {
497
497
  req.body.isPublic = isPublic;
498
498
  req.body.tags = tags;
499
499
 
500
- return await Document.findByIdAndUpdate(req.params.id, req.body, { new: true });
500
+ return await Document.findByIdAndUpdate(req.params.id, req.body, { returnDocument: 'after' });
501
501
  }
502
502
  }
503
503
  },
@@ -19,7 +19,9 @@ const FileController = {
19
19
  },
20
20
  get: async (req, res, options) => {
21
21
  try {
22
- res.setHeader('Access-Control-Allow-Origin', '*');
22
+ if (req && req.headers && req.headers.origin) {
23
+ res.set('Access-Control-Allow-Origin', req.headers.origin);
24
+ } else res.setHeader('Access-Control-Allow-Origin', '*');
23
25
  res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
24
26
  const result = await FileService.get(req, res, options);
25
27
  if (result instanceof Buffer) {
@@ -387,12 +387,35 @@ const FileService = {
387
387
  if (doc.isPublic) return true;
388
388
 
389
389
  // Otherwise, user must be authenticated and own the document
390
+ // Try bearer token first
390
391
  const token = getBearerToken(req);
391
- if (!token) false;
392
- const payload = jwtVerify(token, options);
393
- const user = await User.findOne({ _id: payload._id }).lean();
394
- if (!user) return false;
395
- return String(doc.userId) === String(user._id);
392
+ if (token) {
393
+ try {
394
+ const payload = jwtVerify(token, options);
395
+ const user = await User.findOne({ _id: payload._id }).lean();
396
+ if (user && String(doc.userId) === String(user._id)) return true;
397
+ } catch (bearerErr) {
398
+ logger.warn('Bearer token verification failed, trying cookie session fallback:', bearerErr.message);
399
+ }
400
+ }
401
+
402
+ // Fallback: check cookie-based session (refreshToken cookie)
403
+ const refreshToken = req.cookies?.refreshToken;
404
+ if (refreshToken) {
405
+ try {
406
+ const user = await User.findOne({ 'activeSessions.tokenHash': refreshToken }).lean();
407
+ if (user) {
408
+ const session = user.activeSessions.find((s) => s.tokenHash === refreshToken);
409
+ if (session && (!session.expiresAt || session.expiresAt >= new Date())) {
410
+ return String(doc.userId) === String(user._id);
411
+ }
412
+ }
413
+ } catch (cookieErr) {
414
+ logger.warn('Cookie session verification failed:', cookieErr.message);
415
+ }
416
+ }
417
+
418
+ return false;
396
419
  } catch (err) {
397
420
  console.log(err);
398
421
  logger.error('Authorization check failed:', err);
@@ -24,7 +24,7 @@ const createPinRecord = async ({ cid, userId, options }) => {
24
24
  const record = await Ipfs.findOneAndUpdate(
25
25
  { cid, userId },
26
26
  { cid, userId },
27
- { upsert: true, new: true, setDefaultsOnInsert: true },
27
+ { upsert: true, returnDocument: 'after', setDefaultsOnInsert: true },
28
28
  );
29
29
 
30
30
  logger.info(`IPFS pin record upserted – CID: ${cid}, userId: ${userId}`);
@@ -107,7 +107,7 @@ const IpfsService = {
107
107
  put: async (req, res, options) => {
108
108
  /** @type {import('./ipfs.model.js').IpfsModel} */
109
109
  const Ipfs = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.Ipfs;
110
- return await Ipfs.findByIdAndUpdate(req.params.id, req.body, { new: true });
110
+ return await Ipfs.findByIdAndUpdate(req.params.id, req.body, { returnDocument: 'after' });
111
111
  },
112
112
 
113
113
  delete: async (req, res, options) => {
@@ -21,7 +21,9 @@ const ObjectLayerController = {
21
21
  },
22
22
  get: async (req, res, options) => {
23
23
  try {
24
- res.setHeader('Access-Control-Allow-Origin', '*');
24
+ if (req && req.headers && req.headers.origin) {
25
+ res.set('Access-Control-Allow-Origin', req.headers.origin);
26
+ } else res.setHeader('Access-Control-Allow-Origin', '*');
25
27
  res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
26
28
  const result = await ObjectLayerService.get(req, res, options);
27
29
  return res.status(200).json({
@@ -39,7 +41,9 @@ const ObjectLayerController = {
39
41
  generateWebp: async (req, res, options) => {
40
42
  try {
41
43
  const result = await ObjectLayerService.generateWebp(req, res, options);
42
- res.setHeader('Access-Control-Allow-Origin', '*');
44
+ if (req && req.headers && req.headers.origin) {
45
+ res.set('Access-Control-Allow-Origin', req.headers.origin);
46
+ } else res.setHeader('Access-Control-Allow-Origin', '*');
43
47
  res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
44
48
  res.setHeader('Content-Type', 'image/webp');
45
49
  res.setHeader(
@@ -49,18 +49,22 @@ const ItemSchema = new Schema(
49
49
  /**
50
50
  * @typedef {Object} Ledger
51
51
  * Blockchain protocol metadata linking the visual object-layer prefab to its economic reality.
52
- * @property {string} type - The token standard or off-chain designation (ERC20, ERC721, OFF_CHAIN).
53
- * @property {string} address - The Solidity smart contract address.
52
+ * Uses ERC-1155 as the single multi-token standard for both fungible (CryptoKoyn) and
53
+ * non-fungible / semi-fungible Object Layer items within one contract.
54
+ * @property {string} type - The token standard or off-chain designation (ERC1155, OFF_CHAIN).
55
+ * @property {string} address - The Solidity smart contract address (ObjectLayerToken).
56
+ * @property {string} tokenId - The uint256 ERC-1155 token ID (derived from keccak256 of the item identifier).
54
57
  * @memberof CyberiaObjectLayerModel
55
58
  */
56
59
  const LedgerSchema = new Schema(
57
60
  {
58
61
  type: {
59
62
  type: String,
60
- enum: ['ERC20', 'ERC721', 'OFF_CHAIN'],
63
+ enum: ['ERC1155', 'OFF_CHAIN'],
61
64
  required: true,
62
65
  },
63
- address: { type: String }, // Solidity contract address
66
+ address: { type: String }, // ObjectLayerToken ERC-1155 contract address
67
+ tokenId: { type: String, default: '' }, // uint256 ERC-1155 token ID (hex or decimal string)
64
68
  },
65
69
  { _id: false },
66
70
  );
@@ -96,8 +100,9 @@ const RenderSchema = new Schema(
96
100
  * @property {string} data.item.description - Description of the item
97
101
  * @property {boolean} data.item.activable - Whether the item can be activated
98
102
  * @property {Object} data.ledger - Blockchain protocol metadata linking the visual object-layer prefab to its economic reality
99
- * @property {string} data.ledger.type - The token standard or off-chain designation (ERC20, ERC721, OFF_CHAIN).
100
- * @property {string} data.ledger.address - The Solidity smart contract address.
103
+ * @property {string} data.ledger.type - The token standard or off-chain designation (ERC1155, OFF_CHAIN).
104
+ * @property {string} data.ledger.address - The ObjectLayerToken ERC-1155 smart contract address.
105
+ * @property {string} data.ledger.tokenId - The uint256 ERC-1155 token ID (hex or decimal string).
101
106
  * @property {Object} data.render - IPFS content identifiers for the consolidated atlas sprite sheet
102
107
  * @property {string} data.render.cid - IPFS Content Identifier for the consolidated atlas sprite sheet PNG
103
108
  * @property {string} data.render.metadataCid - IPFS Content Identifier for the atlas sprite sheet metadata JSON (fast-json-stable-stringify)
@@ -155,13 +160,12 @@ ObjectLayerSchema.index(
155
160
  );
156
161
 
157
162
  // Pre-save hook to ensure data consistency
158
- ObjectLayerSchema.pre('save', function (next) {
163
+ ObjectLayerSchema.pre('save', function () {
159
164
  // Ensure all required fields are present
160
165
  if (!this.data.stats || !this.data.item || !this.sha256) {
161
166
  throw new Error('Missing required fields');
162
167
  }
163
168
  // cid (object layer data JSON) and data.render.cid (atlas PNG) are optional – default to ''
164
- next();
165
169
  });
166
170
 
167
171
  // Create and export the model