@lamalibre/create-portlama 1.0.26 → 1.0.28
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/package.json +1 -1
- package/src/tasks/nginx.js +47 -4
- package/vendor/panel-client/dist/assets/index-BmFKj_xF.js +629 -0
- package/vendor/panel-client/dist/assets/{index-BJf-al85.css → index-C2U2_-6h.css} +1 -1
- package/vendor/panel-client/dist/docs/01-concepts/certificates.md +14 -1
- package/vendor/panel-client/dist/docs/01-concepts/security-model.md +2 -0
- package/vendor/panel-client/dist/docs/02-guides/certificate-management.md +4 -0
- package/vendor/panel-client/dist/docs/02-guides/disaster-recovery.md +28 -9
- package/vendor/panel-client/dist/docs/02-guides/mac-client-setup.md +10 -0
- package/vendor/panel-client/dist/docs/03-architecture/nginx-configuration.md +28 -7
- package/vendor/panel-client/dist/docs/03-architecture/overview.md +15 -4
- package/vendor/panel-client/dist/docs/04-api-reference/certificates.md +271 -32
- package/vendor/panel-client/dist/docs/04-api-reference/overview.md +37 -10
- package/vendor/panel-client/dist/docs/06-reference/config-files.md +1 -0
- package/vendor/panel-client/dist/index.html +2 -2
- package/vendor/panel-server/package.json +4 -1
- package/vendor/panel-server/src/cli/reset-admin.js +230 -0
- package/vendor/panel-server/src/index.js +14 -0
- package/vendor/panel-server/src/lib/config.js +1 -0
- package/vendor/panel-server/src/lib/csr-signing.js +308 -0
- package/vendor/panel-server/src/lib/enrollment.js +204 -0
- package/vendor/panel-server/src/lib/mtls.js +43 -11
- package/vendor/panel-server/src/lib/nginx.js +42 -2
- package/vendor/panel-server/src/lib/plugins.js +369 -0
- package/vendor/panel-server/src/lib/push-install.js +413 -0
- package/vendor/panel-server/src/routes/enrollment.js +63 -0
- package/vendor/panel-server/src/routes/management/certs.js +152 -7
- package/vendor/panel-server/src/routes/management/plugins.js +556 -0
- package/vendor/panel-server/src/routes/management.js +2 -0
- package/vendor/panel-server/src/routes/plugin-router.js +139 -0
- package/vendor/panel-client/dist/assets/index-CAjlrdwT.js +0 -619
package/package.json
CHANGED
package/src/tasks/nginx.js
CHANGED
|
@@ -52,7 +52,7 @@ export function nginxTasks(ctx, task) {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
const mtlsSnippet = `ssl_client_certificate ${pkiDir}/ca.crt;
|
|
55
|
-
ssl_verify_client
|
|
55
|
+
ssl_verify_client optional;
|
|
56
56
|
`;
|
|
57
57
|
await writeFile('/etc/nginx/snippets/portlama-mtls.conf', mtlsSnippet);
|
|
58
58
|
|
|
@@ -63,7 +63,10 @@ ssl_verify_client on;
|
|
|
63
63
|
{
|
|
64
64
|
title: 'Writing IP-based panel vhost',
|
|
65
65
|
task: async (_ctx, subtask) => {
|
|
66
|
-
const vhostConfig =
|
|
66
|
+
const vhostConfig = `# Rate limit zone for public enrollment endpoint (5 requests/minute per IP)
|
|
67
|
+
limit_req_zone $binary_remote_addr zone=enroll:1m rate=5r/m;
|
|
68
|
+
|
|
69
|
+
map $http_upgrade $connection_upgrade {
|
|
67
70
|
default upgrade;
|
|
68
71
|
'' close;
|
|
69
72
|
}
|
|
@@ -89,8 +92,11 @@ server {
|
|
|
89
92
|
internal;
|
|
90
93
|
}
|
|
91
94
|
|
|
92
|
-
# Proxy to panel-server
|
|
95
|
+
# Proxy to panel-server (mTLS required — reject if cert missing or invalid)
|
|
93
96
|
location / {
|
|
97
|
+
if ($ssl_client_verify != SUCCESS) {
|
|
98
|
+
return 496;
|
|
99
|
+
}
|
|
94
100
|
proxy_pass http://127.0.0.1:3100;
|
|
95
101
|
|
|
96
102
|
# Client cert headers — set from nginx TLS variables, never passed through from client
|
|
@@ -105,8 +111,45 @@ server {
|
|
|
105
111
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
106
112
|
}
|
|
107
113
|
|
|
108
|
-
# API paths
|
|
114
|
+
# Public API paths (no mTLS verification check).
|
|
115
|
+
# ssl_verify_client is 'optional' at server level, so TLS handshake
|
|
116
|
+
# succeeds without a cert. These locations skip the $ssl_client_verify
|
|
117
|
+
# check and clear cert headers so the backend sees no client identity.
|
|
118
|
+
location /api/enroll {
|
|
119
|
+
limit_req zone=enroll burst=5 nodelay;
|
|
120
|
+
proxy_pass http://127.0.0.1:3100;
|
|
121
|
+
proxy_http_version 1.1;
|
|
122
|
+
|
|
123
|
+
# Clear cert headers so the backend sees no client cert
|
|
124
|
+
proxy_set_header X-SSL-Client-Verify "";
|
|
125
|
+
proxy_set_header X-SSL-Client-DN "";
|
|
126
|
+
proxy_set_header X-SSL-Client-Serial "";
|
|
127
|
+
|
|
128
|
+
proxy_set_header Host $host;
|
|
129
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
130
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
131
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
location /api/invite {
|
|
135
|
+
proxy_pass http://127.0.0.1:3100;
|
|
136
|
+
proxy_http_version 1.1;
|
|
137
|
+
|
|
138
|
+
proxy_set_header X-SSL-Client-Verify "";
|
|
139
|
+
proxy_set_header X-SSL-Client-DN "";
|
|
140
|
+
proxy_set_header X-SSL-Client-Serial "";
|
|
141
|
+
|
|
142
|
+
proxy_set_header Host $host;
|
|
143
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
144
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
145
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
# API paths with WebSocket upgrade support (mTLS required)
|
|
109
149
|
location /api {
|
|
150
|
+
if ($ssl_client_verify != SUCCESS) {
|
|
151
|
+
return 496;
|
|
152
|
+
}
|
|
110
153
|
proxy_pass http://127.0.0.1:3100;
|
|
111
154
|
proxy_http_version 1.1;
|
|
112
155
|
|