@imenam/self-register-proxy 1.0.38 → 1.0.40
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/views/dashboard.js +2 -2
- package/views/terminal.html +3 -41
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imenam/self-register-proxy",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.40",
|
|
4
4
|
"description": "Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port",
|
|
5
5
|
"main": "proxy-client.js",
|
|
6
6
|
"bin": {
|
package/views/dashboard.js
CHANGED
|
@@ -19,7 +19,7 @@ function renderDashboard(routes, availablePorts, proxyName, hasAuth, cleanUpComm
|
|
|
19
19
|
<span class="service-name">${escapeHtml(route.name)}</span>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="service-actions">
|
|
22
|
-
<a href="${escapeHtml(route.path)}" class="action-btn primary" title="Accéder">Ouvrir</a>
|
|
22
|
+
<a href="${escapeHtml(route.path)}" class="action-btn primary" title="Accéder" target="_blank" rel="noopener noreferrer">Ouvrir</a>
|
|
23
23
|
</div>
|
|
24
24
|
</div>
|
|
25
25
|
`).join('')}
|
|
@@ -130,7 +130,7 @@ function renderDashboard(routes, availablePorts, proxyName, hasAuth, cleanUpComm
|
|
|
130
130
|
<span class="service-config"></span>
|
|
131
131
|
</div>
|
|
132
132
|
<div class="service-actions">
|
|
133
|
-
<a href="${escapeHtml(route.path)}" class="action-btn primary" title="Accéder">Ouvrir</a>
|
|
133
|
+
<a href="${escapeHtml(route.path)}" class="action-btn primary" title="Accéder" target="_blank" rel="noopener noreferrer">Ouvrir</a>
|
|
134
134
|
<button onclick="checkHealth('${escapeHtml(route.path)}', this)" class="action-btn" title="Vérifier la santé">Santé</button>
|
|
135
135
|
<button onclick="killPort(${route.port}, this)" class="action-btn danger" title="Tuer le process">Tuer</button>
|
|
136
136
|
</div>
|
package/views/terminal.html
CHANGED
|
@@ -148,23 +148,6 @@
|
|
|
148
148
|
.sb-icon-btn-blue { background: rgba(99,102,241,0.75); }
|
|
149
149
|
.sb-icon-btn-amber { background: rgba(245,158,11,0.75); }
|
|
150
150
|
.sb-icon-btn-purple { background: linear-gradient(135deg, #6366f1, #8b5cf6); }
|
|
151
|
-
.sb-modal-fullscreen {
|
|
152
|
-
width: calc(100vw - 6rem); height: calc(100vh - 2rem);
|
|
153
|
-
background: #0f0f1a;
|
|
154
|
-
border-radius: 10px; padding: 0;
|
|
155
|
-
border: 1px solid rgba(139,92,246,0.4);
|
|
156
|
-
box-shadow: 0 0 0 4px rgba(99,102,241,0.15), 0 24px 48px rgba(0,0,0,0.6);
|
|
157
|
-
display: flex; flex-direction: column; overflow: hidden;
|
|
158
|
-
}
|
|
159
|
-
.sb-modal-fullscreen-bar {
|
|
160
|
-
display: flex; align-items: center; justify-content: space-between;
|
|
161
|
-
padding: 0.5rem 1rem;
|
|
162
|
-
background: rgba(255,255,255,0.04);
|
|
163
|
-
border-bottom: 1px solid rgba(255,255,255,0.08);
|
|
164
|
-
flex-shrink: 0;
|
|
165
|
-
}
|
|
166
|
-
.sb-modal-fullscreen-bar span { font-size: 0.85rem; font-weight: 600; color: #d4d4d8; }
|
|
167
|
-
.sb-modal-fullscreen iframe { flex: 1; border: none; width: 100%; background: #fff; }
|
|
168
151
|
.sb-section-label {
|
|
169
152
|
font-size: 0.65rem; font-weight: 700; letter-spacing: 0.08em;
|
|
170
153
|
color: #52525b; text-transform: uppercase;
|
|
@@ -370,16 +353,6 @@
|
|
|
370
353
|
<div id="terminal-container"></div>
|
|
371
354
|
</div>
|
|
372
355
|
|
|
373
|
-
<div class="sb-modal-overlay" id="mcpIframeModal" onclick="if(event.target===this)closeMcpIframeModal()">
|
|
374
|
-
<div class="sb-modal-fullscreen">
|
|
375
|
-
<div class="sb-modal-fullscreen-bar">
|
|
376
|
-
<span id="mcpIframeTitle"></span>
|
|
377
|
-
<button class="sb-icon-btn sb-icon-btn-ghost" onclick="closeMcpIframeModal()" title="Fermer">✕</button>
|
|
378
|
-
</div>
|
|
379
|
-
<iframe id="mcpIframeEl" src="about:blank" allowfullscreen></iframe>
|
|
380
|
-
</div>
|
|
381
|
-
</div>
|
|
382
|
-
|
|
383
356
|
<div class="sb-modal-overlay" id="sbModalOverlay" onclick="if(event.target===this)closeSbModal()">
|
|
384
357
|
<div class="sb-modal">
|
|
385
358
|
<div class="sb-modal-header">
|
|
@@ -965,11 +938,11 @@
|
|
|
965
938
|
return;
|
|
966
939
|
}
|
|
967
940
|
el.innerHTML = routes.map(r =>
|
|
968
|
-
'<div class="sb-service-card" data-path="' + sbEsc(r.path) + '"
|
|
941
|
+
'<div class="sb-service-card" data-path="' + sbEsc(r.path) + '" onclick="sidebarOpenRoute(this.dataset.path)">'
|
|
969
942
|
+ '<span class="sb-service-name" title="' + sbEsc(r.name || r.path) + '">' + sbEsc(r.name || r.path) + '</span>'
|
|
970
943
|
+ '<div class="sb-service-actions">'
|
|
971
|
-
+ '<button class="sb-icon-btn sb-icon-btn-purple" data-path="' + sbEsc(r.path) + '"
|
|
972
|
-
+ '<button class="sb-icon-btn sb-icon-btn-blue" data-path="' + sbEsc(r.path) + '" onclick="event.stopPropagation(); sidebarOpenRoute(this.dataset.path)" title="Ouvrir">↗</button>'
|
|
944
|
+
+ '<button class="sb-icon-btn sb-icon-btn-purple" data-path="' + sbEsc(r.path) + '" onclick="event.stopPropagation(); sidebarOpenRoute(this.dataset.path)" title="Ouvrir dans une nouvelle fenêtre">⛶</button>'
|
|
945
|
+
+ '<button class="sb-icon-btn sb-icon-btn-blue" data-path="' + sbEsc(r.path) + '" onclick="event.stopPropagation(); sidebarOpenRoute(this.dataset.path)" title="Ouvrir dans une nouvelle fenêtre">↗</button>'
|
|
973
946
|
+ '<button class="sb-icon-btn sb-icon-btn-amber" data-path="' + sbEsc(r.path) + '" onclick="event.stopPropagation(); sidebarCheckHealth(this.dataset.path, this)" title="Santé">❤</button>'
|
|
974
947
|
+ '</div></div>'
|
|
975
948
|
).join('');
|
|
@@ -979,17 +952,6 @@
|
|
|
979
952
|
window.open(path, '_blank');
|
|
980
953
|
}
|
|
981
954
|
|
|
982
|
-
function openMcpIframeModal(path, name) {
|
|
983
|
-
document.getElementById('mcpIframeEl').src = path;
|
|
984
|
-
document.getElementById('mcpIframeTitle').textContent = name || path;
|
|
985
|
-
document.getElementById('mcpIframeModal').classList.add('active');
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
function closeMcpIframeModal() {
|
|
989
|
-
document.getElementById('mcpIframeModal').classList.remove('active');
|
|
990
|
-
document.getElementById('mcpIframeEl').src = 'about:blank';
|
|
991
|
-
}
|
|
992
|
-
|
|
993
955
|
async function sidebarCheckHealth(path, btn) {
|
|
994
956
|
btn.disabled = true;
|
|
995
957
|
btn.innerHTML = '<span class="sb-spinner"></span>';
|