underpost 3.0.3 → 3.1.0
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/ghpkg.ci.yml +1 -1
- package/.github/workflows/gitlab.ci.yml +1 -1
- package/.github/workflows/npmpkg.ci.yml +22 -7
- package/.github/workflows/publish.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 +146 -1
- package/CLI-HELP.md +71 -52
- package/README.md +2 -2
- package/bin/build.js +4 -1
- package/bin/deploy.js +150 -208
- package/bin/file.js +2 -1
- package/bin/vs.js +3 -3
- package/conf.js +30 -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-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 +48 -43
- package/scripts/k3s-node-setup.sh +1 -1
- 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/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 +4 -4
- package/src/cli/fs.js +0 -2
- package/src/cli/image.js +0 -3
- package/src/cli/index.js +27 -13
- package/src/cli/monitor.js +5 -6
- package/src/cli/repository.js +322 -35
- package/src/cli/run.js +118 -69
- package/src/cli/secrets.js +0 -3
- package/src/cli/ssh.js +1 -1
- package/src/client/components/core/AgGrid.js +20 -5
- package/src/client/components/core/Content.js +22 -3
- package/src/client/components/core/Docs.js +21 -4
- 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 +20 -6
- package/src/client/public/default/sitemap +3 -3
- package/src/client/public/test/sitemap +3 -3
- 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 +7 -1
- package/src/runtime/lampp/Lampp.js +6 -13
- package/src/server/auth.js +6 -9
- package/src/server/backup.js +2 -3
- package/src/server/client-build-docs.js +178 -3
- package/src/server/client-build-live.js +9 -18
- package/src/server/client-build.js +175 -38
- package/src/server/client-dev-server.js +14 -13
- package/src/server/conf.js +357 -149
- 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/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/ssr.js +0 -3
- package/src/server/start.js +5 -5
- package/src/server/tls.js +0 -2
- package/src/server.js +0 -4
- package/.env.development +0 -43
- package/.env.test +0 -43
|
@@ -18,13 +18,13 @@ spec:
|
|
|
18
18
|
spec:
|
|
19
19
|
containers:
|
|
20
20
|
- name: dd-test-development-blue
|
|
21
|
-
image: localhost/rockylinux9-underpost:v3.0
|
|
21
|
+
image: localhost/rockylinux9-underpost:v3.1.0
|
|
22
22
|
|
|
23
23
|
command:
|
|
24
24
|
- /bin/sh
|
|
25
25
|
- -c
|
|
26
26
|
- >
|
|
27
|
-
npm install -g npm@11.2.0 && npm install -g underpost && underpost secret underpost --create-from-file /etc/config/.env.development && underpost start --build --run
|
|
27
|
+
npm install -g npm@11.2.0 && npm install -g underpost && underpost secret underpost --create-from-file /etc/config/.env.development && underpost start --build --run dd-test development
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
volumeMounts:
|
|
@@ -47,41 +47,41 @@ spec:
|
|
|
47
47
|
selector:
|
|
48
48
|
app: dd-test-development-blue
|
|
49
49
|
ports:
|
|
50
|
-
- name: 'tcp-
|
|
50
|
+
- name: 'tcp-4038'
|
|
51
51
|
protocol: TCP
|
|
52
|
-
port:
|
|
53
|
-
targetPort:
|
|
54
|
-
- name: 'udp-
|
|
52
|
+
port: 4038
|
|
53
|
+
targetPort: 4038
|
|
54
|
+
- name: 'udp-4038'
|
|
55
55
|
protocol: UDP
|
|
56
|
-
port:
|
|
57
|
-
targetPort:
|
|
56
|
+
port: 4038
|
|
57
|
+
targetPort: 4038
|
|
58
58
|
|
|
59
|
-
- name: 'tcp-
|
|
59
|
+
- name: 'tcp-4039'
|
|
60
60
|
protocol: TCP
|
|
61
|
-
port:
|
|
62
|
-
targetPort:
|
|
63
|
-
- name: 'udp-
|
|
61
|
+
port: 4039
|
|
62
|
+
targetPort: 4039
|
|
63
|
+
- name: 'udp-4039'
|
|
64
64
|
protocol: UDP
|
|
65
|
-
port:
|
|
66
|
-
targetPort:
|
|
65
|
+
port: 4039
|
|
66
|
+
targetPort: 4039
|
|
67
67
|
|
|
68
|
-
- name: 'tcp-
|
|
68
|
+
- name: 'tcp-4040'
|
|
69
69
|
protocol: TCP
|
|
70
|
-
port:
|
|
71
|
-
targetPort:
|
|
72
|
-
- name: 'udp-
|
|
70
|
+
port: 4040
|
|
71
|
+
targetPort: 4040
|
|
72
|
+
- name: 'udp-4040'
|
|
73
73
|
protocol: UDP
|
|
74
|
-
port:
|
|
75
|
-
targetPort:
|
|
74
|
+
port: 4040
|
|
75
|
+
targetPort: 4040
|
|
76
76
|
|
|
77
|
-
- name: 'tcp-
|
|
77
|
+
- name: 'tcp-4041'
|
|
78
78
|
protocol: TCP
|
|
79
|
-
port:
|
|
80
|
-
targetPort:
|
|
81
|
-
- name: 'udp-
|
|
79
|
+
port: 4041
|
|
80
|
+
targetPort: 4041
|
|
81
|
+
- name: 'udp-4041'
|
|
82
82
|
protocol: UDP
|
|
83
|
-
port:
|
|
84
|
-
targetPort:
|
|
83
|
+
port: 4041
|
|
84
|
+
targetPort: 4041
|
|
85
85
|
type: LoadBalancer
|
|
86
86
|
---
|
|
87
87
|
apiVersion: apps/v1
|
|
@@ -103,13 +103,13 @@ spec:
|
|
|
103
103
|
spec:
|
|
104
104
|
containers:
|
|
105
105
|
- name: dd-test-development-green
|
|
106
|
-
image: localhost/rockylinux9-underpost:v3.0
|
|
106
|
+
image: localhost/rockylinux9-underpost:v3.1.0
|
|
107
107
|
|
|
108
108
|
command:
|
|
109
109
|
- /bin/sh
|
|
110
110
|
- -c
|
|
111
111
|
- >
|
|
112
|
-
npm install -g npm@11.2.0 && npm install -g underpost && underpost secret underpost --create-from-file /etc/config/.env.development && underpost start --build --run
|
|
112
|
+
npm install -g npm@11.2.0 && npm install -g underpost && underpost secret underpost --create-from-file /etc/config/.env.development && underpost start --build --run dd-test development
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
volumeMounts:
|
|
@@ -132,39 +132,39 @@ spec:
|
|
|
132
132
|
selector:
|
|
133
133
|
app: dd-test-development-green
|
|
134
134
|
ports:
|
|
135
|
-
- name: 'tcp-
|
|
135
|
+
- name: 'tcp-4038'
|
|
136
136
|
protocol: TCP
|
|
137
|
-
port:
|
|
138
|
-
targetPort:
|
|
139
|
-
- name: 'udp-
|
|
137
|
+
port: 4038
|
|
138
|
+
targetPort: 4038
|
|
139
|
+
- name: 'udp-4038'
|
|
140
140
|
protocol: UDP
|
|
141
|
-
port:
|
|
142
|
-
targetPort:
|
|
141
|
+
port: 4038
|
|
142
|
+
targetPort: 4038
|
|
143
143
|
|
|
144
|
-
- name: 'tcp-
|
|
144
|
+
- name: 'tcp-4039'
|
|
145
145
|
protocol: TCP
|
|
146
|
-
port:
|
|
147
|
-
targetPort:
|
|
148
|
-
- name: 'udp-
|
|
146
|
+
port: 4039
|
|
147
|
+
targetPort: 4039
|
|
148
|
+
- name: 'udp-4039'
|
|
149
149
|
protocol: UDP
|
|
150
|
-
port:
|
|
151
|
-
targetPort:
|
|
150
|
+
port: 4039
|
|
151
|
+
targetPort: 4039
|
|
152
152
|
|
|
153
|
-
- name: 'tcp-
|
|
153
|
+
- name: 'tcp-4040'
|
|
154
154
|
protocol: TCP
|
|
155
|
-
port:
|
|
156
|
-
targetPort:
|
|
157
|
-
- name: 'udp-
|
|
155
|
+
port: 4040
|
|
156
|
+
targetPort: 4040
|
|
157
|
+
- name: 'udp-4040'
|
|
158
158
|
protocol: UDP
|
|
159
|
-
port:
|
|
160
|
-
targetPort:
|
|
159
|
+
port: 4040
|
|
160
|
+
targetPort: 4040
|
|
161
161
|
|
|
162
|
-
- name: 'tcp-
|
|
162
|
+
- name: 'tcp-4041'
|
|
163
163
|
protocol: TCP
|
|
164
|
-
port:
|
|
165
|
-
targetPort:
|
|
166
|
-
- name: 'udp-
|
|
164
|
+
port: 4041
|
|
165
|
+
targetPort: 4041
|
|
166
|
+
- name: 'udp-4041'
|
|
167
167
|
protocol: UDP
|
|
168
|
-
port:
|
|
169
|
-
targetPort:
|
|
168
|
+
port: 4041
|
|
169
|
+
targetPort: 4041
|
|
170
170
|
type: LoadBalancer
|
|
@@ -15,7 +15,7 @@ spec:
|
|
|
15
15
|
enableWebsockets: true
|
|
16
16
|
services:
|
|
17
17
|
- name: dd-test-development-blue-service
|
|
18
|
-
port:
|
|
18
|
+
port: 4038
|
|
19
19
|
weight: 100
|
|
20
20
|
|
|
21
21
|
- conditions:
|
|
@@ -24,7 +24,7 @@ spec:
|
|
|
24
24
|
enableWebsockets: true
|
|
25
25
|
services:
|
|
26
26
|
- name: dd-test-development-blue-service
|
|
27
|
-
port:
|
|
27
|
+
port: 4039
|
|
28
28
|
weight: 100
|
|
29
29
|
|
|
30
30
|
---
|
|
@@ -43,7 +43,7 @@ spec:
|
|
|
43
43
|
enableWebsockets: true
|
|
44
44
|
services:
|
|
45
45
|
- name: dd-test-development-blue-service
|
|
46
|
-
port:
|
|
46
|
+
port: 4040
|
|
47
47
|
weight: 100
|
|
48
48
|
|
|
49
49
|
- conditions:
|
|
@@ -52,6 +52,6 @@ spec:
|
|
|
52
52
|
enableWebsockets: true
|
|
53
53
|
services:
|
|
54
54
|
- name: dd-test-development-blue-service
|
|
55
|
-
port:
|
|
55
|
+
port: 4041
|
|
56
56
|
weight: 100
|
|
57
57
|
|
package/manifests/pv-pvc-dd.yaml
CHANGED
package/package.json
CHANGED
|
@@ -2,25 +2,30 @@
|
|
|
2
2
|
"type": "module",
|
|
3
3
|
"main": "src/index.js",
|
|
4
4
|
"name": "underpost",
|
|
5
|
-
"version": "3.0
|
|
5
|
+
"version": "3.1.0",
|
|
6
6
|
"description": "pwa api rest template",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"start": "
|
|
9
|
-
"build": "node bin
|
|
10
|
-
"test": "
|
|
11
|
-
"dev": "
|
|
12
|
-
"dev
|
|
13
|
-
"prod
|
|
14
|
-
"dev
|
|
15
|
-
"dev
|
|
16
|
-
"dev
|
|
8
|
+
"start": "node --max-old-space-size=8192 src/server",
|
|
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
|
|
19
|
-
"install
|
|
20
|
-
"install": "npm run install
|
|
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
|
"underpost": "bin/index.js"
|
|
@@ -46,63 +51,63 @@
|
|
|
46
51
|
},
|
|
47
52
|
"homepage": "https://github.com/underpostnet/pwa-microservices-template#readme",
|
|
48
53
|
"dependencies": {
|
|
49
|
-
"@fortawesome/fontawesome-free": "^
|
|
50
|
-
"@fullcalendar/rrule": "^6.1.
|
|
51
|
-
"@neodrag/vanilla": "^2.
|
|
54
|
+
"@fortawesome/fontawesome-free": "^7.2.0",
|
|
55
|
+
"@fullcalendar/rrule": "^6.1.20",
|
|
56
|
+
"@neodrag/vanilla": "^2.3.1",
|
|
52
57
|
"adm-zip": "^0.5.10",
|
|
53
|
-
"ag-grid-community": "^
|
|
54
|
-
"axios": "^1.
|
|
55
|
-
"chai": "^
|
|
58
|
+
"ag-grid-community": "^35.1.0",
|
|
59
|
+
"axios": "^1.13.6",
|
|
60
|
+
"chai": "^6.2.2",
|
|
56
61
|
"clean-jsdoc-theme": "^4.3.0",
|
|
57
|
-
"clipboardy": "^
|
|
62
|
+
"clipboardy": "^5.3.1",
|
|
58
63
|
"cloudinary": "^2.5.1",
|
|
59
64
|
"colors": "^1.4.0",
|
|
60
|
-
"commander": "^
|
|
65
|
+
"commander": "^14.0.3",
|
|
61
66
|
"compression": "^1.7.4",
|
|
62
67
|
"cookie-parser": "^1.4.7",
|
|
63
|
-
"cors": "^2.8.
|
|
68
|
+
"cors": "^2.8.6",
|
|
64
69
|
"d3": "^7.9.0",
|
|
65
|
-
"dotenv": "^
|
|
70
|
+
"dotenv": "^17.3.1",
|
|
66
71
|
"easymde": "^2.18.0",
|
|
67
|
-
"
|
|
68
|
-
"express": "^
|
|
72
|
+
"escape-string-regexp": "^5.0.0",
|
|
73
|
+
"express": "^5.2.1",
|
|
69
74
|
"express-fileupload": "^1.4.3",
|
|
70
|
-
"express-rate-limit": "^8.1
|
|
71
|
-
"express-slow-down": "^3.
|
|
75
|
+
"express-rate-limit": "^8.3.1",
|
|
76
|
+
"express-slow-down": "^3.1.0",
|
|
72
77
|
"fast-json-stable-stringify": "^2.1.0",
|
|
73
78
|
"favicons": "^7.2.0",
|
|
74
|
-
"fs-extra": "^11.
|
|
79
|
+
"fs-extra": "^11.3.4",
|
|
75
80
|
"fullcalendar": "^6.1.15",
|
|
76
81
|
"helmet": "^8.1.0",
|
|
77
82
|
"html-minifier-terser": "^7.2.0",
|
|
78
|
-
"http-proxy-middleware": "^
|
|
83
|
+
"http-proxy-middleware": "^3.0.5",
|
|
79
84
|
"ignore-walk": "^8.0.0",
|
|
80
|
-
"iovalkey": "^0.
|
|
81
|
-
"json-colorizer": "^
|
|
82
|
-
"jsonwebtoken": "^9.0.
|
|
85
|
+
"iovalkey": "^0.3.3",
|
|
86
|
+
"json-colorizer": "^3.0.1",
|
|
87
|
+
"jsonwebtoken": "^9.0.3",
|
|
83
88
|
"mariadb": "^3.2.2",
|
|
84
|
-
"marked": "^
|
|
89
|
+
"marked": "^17.0.4",
|
|
85
90
|
"mocha": "^11.3.0",
|
|
86
|
-
"mongoose": "^
|
|
91
|
+
"mongoose": "^9.3.0",
|
|
87
92
|
"morgan": "^1.10.0",
|
|
88
|
-
"nodemailer": "^
|
|
93
|
+
"nodemailer": "^8.0.2",
|
|
89
94
|
"nodemon": "^3.0.1",
|
|
90
95
|
"peer": "^1.0.2",
|
|
91
|
-
"peerjs": "^1.5.
|
|
96
|
+
"peerjs": "^1.5.5",
|
|
92
97
|
"prom-client": "^15.1.2",
|
|
93
|
-
"read": "^
|
|
98
|
+
"read": "^5.0.1",
|
|
94
99
|
"rrule": "^2.8.1",
|
|
95
100
|
"shelljs": "^0.10.0",
|
|
96
|
-
"sitemap": "^
|
|
97
|
-
"socket.io": "^4.8.
|
|
101
|
+
"sitemap": "^9.0.1",
|
|
102
|
+
"socket.io": "^4.8.3",
|
|
98
103
|
"sortablejs": "^1.15.0",
|
|
99
104
|
"split-file": "^2.3.0",
|
|
100
|
-
"swagger-autogen": "^2.
|
|
105
|
+
"swagger-autogen": "^2.23.7",
|
|
101
106
|
"swagger-ui-express": "^5.0.0",
|
|
102
107
|
"uglify-js": "^3.17.4",
|
|
103
108
|
"validator": "^13.11.0",
|
|
104
|
-
"vanilla-jsoneditor": "^
|
|
105
|
-
"winston": "^3.
|
|
109
|
+
"vanilla-jsoneditor": "^3.11.0",
|
|
110
|
+
"winston": "^3.19.0"
|
|
106
111
|
},
|
|
107
112
|
"publishConfig": {
|
|
108
113
|
"provenance": true,
|
|
@@ -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, {
|
|
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
|
-
|
|
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 (
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
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);
|
|
@@ -30,12 +30,15 @@ const UserRouter = (options) => {
|
|
|
30
30
|
emailConfirmed: true,
|
|
31
31
|
publicKey: [],
|
|
32
32
|
});
|
|
33
|
-
logger.warn('Default admin user created. Please change the default password immediately!',
|
|
33
|
+
logger.warn('Default admin user created. Please change the default password immediately!', {
|
|
34
|
+
username: result._doc.username,
|
|
35
|
+
email: result._doc.email,
|
|
36
|
+
role: result._doc.role,
|
|
37
|
+
});
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
40
|
} catch (error) {
|
|
37
|
-
logger.error('Error checking/creating admin user');
|
|
38
|
-
console.log(error);
|
|
41
|
+
logger.error('Error checking/creating admin user', { error: error.message });
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
// Cache mailer images
|
|
@@ -46,10 +49,12 @@ const UserRouter = (options) => {
|
|
|
46
49
|
check: fs.readFileSync(`./src/client/public/default/assets/mailer/api-user-check.png`),
|
|
47
50
|
avatar: fs.readFileSync(`./src/client/public/default/assets/mailer/api-user-default-avatar.png`),
|
|
48
51
|
},
|
|
49
|
-
header: (res) => {
|
|
52
|
+
header: (res, req) => {
|
|
50
53
|
res.set('Cross-Origin-Resource-Policy', 'cross-origin');
|
|
51
|
-
res.set('Access-Control-Allow-Origin', '*');
|
|
52
54
|
res.set('Access-Control-Allow-Headers', '*');
|
|
55
|
+
if (req && req.headers && req.headers.origin) {
|
|
56
|
+
res.set('Access-Control-Allow-Origin', req.headers.origin);
|
|
57
|
+
} else res.setHeader('Access-Control-Allow-Origin', '*');
|
|
53
58
|
res.set('Content-Type', 'image/png');
|
|
54
59
|
},
|
|
55
60
|
};
|
|
@@ -265,7 +265,7 @@ const UserService = {
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
if (req.path.startsWith('/assets')) {
|
|
268
|
-
options.png.header(res);
|
|
268
|
+
options.png.header(res, req);
|
|
269
269
|
return options.png.buffer[req.params.id];
|
|
270
270
|
}
|
|
271
271
|
|
|
@@ -281,7 +281,7 @@ const UserService = {
|
|
|
281
281
|
payload = verifyJWT(req.params.id, options);
|
|
282
282
|
} catch (error) {
|
|
283
283
|
logger.error(error, { 'req.params.id': req.params.id });
|
|
284
|
-
options.png.header(res);
|
|
284
|
+
options.png.header(res, req);
|
|
285
285
|
return options.png.buffer['invalid-token'];
|
|
286
286
|
}
|
|
287
287
|
const user = await User.findOne({
|
|
@@ -294,10 +294,10 @@ const UserService = {
|
|
|
294
294
|
{ recoverTimeOut: new Date(+new Date() + 1000 * 60 * 15) },
|
|
295
295
|
{ runValidators: true },
|
|
296
296
|
);
|
|
297
|
-
options.png.header(res);
|
|
297
|
+
options.png.header(res, req);
|
|
298
298
|
return options.png.buffer['recover'];
|
|
299
299
|
} else {
|
|
300
|
-
options.png.header(res);
|
|
300
|
+
options.png.header(res, req);
|
|
301
301
|
return options.png.buffer['invalid-token'];
|
|
302
302
|
}
|
|
303
303
|
}
|
|
@@ -308,7 +308,7 @@ const UserService = {
|
|
|
308
308
|
payload = verifyJWT(req.params.id, options);
|
|
309
309
|
} catch (error) {
|
|
310
310
|
logger.error(error, { 'req.params.id': req.params.id });
|
|
311
|
-
options.png.header(res);
|
|
311
|
+
options.png.header(res, req);
|
|
312
312
|
return options.png.buffer['invalid-token'];
|
|
313
313
|
}
|
|
314
314
|
const user = await User.findOne({
|
|
@@ -324,10 +324,10 @@ const UserService = {
|
|
|
324
324
|
status: 'email-confirmed',
|
|
325
325
|
id: userWsId,
|
|
326
326
|
});
|
|
327
|
-
options.png.header(res);
|
|
327
|
+
options.png.header(res, req);
|
|
328
328
|
return options.png.buffer['check'];
|
|
329
329
|
} else {
|
|
330
|
-
options.png.header(res);
|
|
330
|
+
options.png.header(res, req);
|
|
331
331
|
return options.png.buffer['invalid-token'];
|
|
332
332
|
}
|
|
333
333
|
}
|
package/src/cli/baremetal.js
CHANGED
|
@@ -135,9 +135,6 @@ class UnderpostBaremetal {
|
|
|
135
135
|
) {
|
|
136
136
|
let { ipAddress, hostname, ipFileServer, ipConfig, netmask, dnsServer } = options;
|
|
137
137
|
|
|
138
|
-
// Load environment variables from .env file, overriding existing ones if present.
|
|
139
|
-
dotenv.config({ path: `${getUnderpostRootPath()}/.env`, override: true });
|
|
140
|
-
|
|
141
138
|
// Determine the root path for npm and underpost.
|
|
142
139
|
const npmRoot = getNpmRootPath();
|
|
143
140
|
const underpostRoot = options?.dev === true ? '.' : `${npmRoot}/underpost`;
|
|
@@ -1147,9 +1144,8 @@ rm -rf ${artifacts.join(' ')}`);
|
|
|
1147
1144
|
machine: machine ? machine.system_id : null,
|
|
1148
1145
|
});
|
|
1149
1146
|
|
|
1150
|
-
const { discovery, machine: discoveredMachine } =
|
|
1151
|
-
commissionMonitorPayload
|
|
1152
|
-
);
|
|
1147
|
+
const { discovery, machine: discoveredMachine } =
|
|
1148
|
+
await Underpost.baremetal.commissionMonitor(commissionMonitorPayload);
|
|
1153
1149
|
if (discoveredMachine) machine = discoveredMachine;
|
|
1154
1150
|
}
|
|
1155
1151
|
},
|
|
@@ -2494,10 +2490,10 @@ fi
|
|
|
2494
2490
|
const discoverHostname = discovery.hostname
|
|
2495
2491
|
? discovery.hostname
|
|
2496
2492
|
: discovery.mac_organization
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2493
|
+
? discovery.mac_organization
|
|
2494
|
+
: discovery.domain
|
|
2495
|
+
? discovery.domain
|
|
2496
|
+
: `generic-host-${s4()}${s4()}`;
|
|
2501
2497
|
|
|
2502
2498
|
console.log(discoverHostname.bgBlue.bold.white);
|
|
2503
2499
|
console.log('ip target:'.green + ipAddress, 'ip discovered:'.green + discovery.ip);
|
package/src/cli/cloud-init.js
CHANGED
|
@@ -5,15 +5,12 @@
|
|
|
5
5
|
* @namespace UnderpostCloudInit
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import dotenv from 'dotenv';
|
|
9
8
|
import { shellExec } from '../server/process.js';
|
|
10
9
|
import fs from 'fs-extra';
|
|
11
10
|
import { loggerFactory } from '../server/logger.js';
|
|
12
11
|
import { getNpmRootPath } from '../server/conf.js';
|
|
13
12
|
import Underpost from '../index.js';
|
|
14
13
|
|
|
15
|
-
dotenv.config();
|
|
16
|
-
|
|
17
14
|
const logger = loggerFactory(import.meta);
|
|
18
15
|
|
|
19
16
|
/**
|