fix(external-gateway): derive gateway client identity from the dcrouter token and make the settings UI read-only
This commit is contained in:
@@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@serve.zone/onebox',
|
||||
version: '1.26.0',
|
||||
version: '1.26.1',
|
||||
description: 'Self-hosted container platform with automatic SSL and DNS - a mini Heroku for single servers'
|
||||
}
|
||||
|
||||
@@ -144,6 +144,32 @@ export class ObViewSettings extends DeesElement {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.gateway-readonly {
|
||||
padding: 10px 12px;
|
||||
border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
|
||||
border-radius: 8px;
|
||||
background: ${cssManager.bdTheme('#fafafa', '#18181b')};
|
||||
}
|
||||
|
||||
.gateway-readonly-label {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: ${cssManager.bdTheme('#52525b', '#d4d4d8')};
|
||||
}
|
||||
|
||||
.gateway-readonly-value {
|
||||
margin-top: 4px;
|
||||
font-size: 13px;
|
||||
color: ${cssManager.bdTheme('#18181b', '#fafafa')};
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.gateway-readonly-hint {
|
||||
margin-top: 4px;
|
||||
font-size: 12px;
|
||||
color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
|
||||
}
|
||||
|
||||
dees-input-text {
|
||||
width: 100%;
|
||||
}
|
||||
@@ -240,11 +266,11 @@ export class ObViewSettings extends DeesElement {
|
||||
${this.renderGatewayInput('dcrouterManagedOpsPort', 'Local Ops Port', String(settings?.dcrouterManagedOpsPort || 3300), 'Bound to 127.0.0.1 for Onebox to call dcrouter APIs.')}
|
||||
${this.renderGatewayInput('dcrouterManagedHttpPort', 'Public HTTP Port', String(settings?.dcrouterManagedHttpPort || 80), 'Host port owned by dcrouter for HTTP ingress.')}
|
||||
${this.renderGatewayInput('dcrouterManagedHttpsPort', 'Public HTTPS Port', String(settings?.dcrouterManagedHttpsPort || 443), 'Host port owned by dcrouter for HTTPS ingress.')}
|
||||
${this.renderGatewayInput('dcrouterGatewayClientId', 'Gateway Client ID', settings?.dcrouterGatewayClientId || settings?.dcrouterWorkHosterId || '', 'Leave empty to let Onebox create a stable ID.')}
|
||||
${this.renderGatewayReadonly('Gateway Client ID', settings?.dcrouterGatewayClientId || settings?.dcrouterWorkHosterId || 'Created when managed dcrouter starts', 'Diagnostic only. Onebox manages this local client automatically.')}
|
||||
` : mode === 'external' ? html`
|
||||
${this.renderGatewayInput('dcrouterGatewayUrl', 'Gateway URL', settings?.dcrouterGatewayUrl || '', 'Base URL of the dcrouter OpsServer.')}
|
||||
${this.renderGatewayInput('dcrouterGatewayApiToken', 'API Token', settings?.dcrouterGatewayApiToken || '', 'Requires gateway-client access in dcrouter.', true)}
|
||||
${this.renderGatewayInput('dcrouterGatewayClientId', 'Gateway Client ID', settings?.dcrouterGatewayClientId || settings?.dcrouterWorkHosterId || '', 'Leave empty to let Onebox create a stable ID.')}
|
||||
${this.renderGatewayReadonly('Gateway Client ID', settings?.dcrouterGatewayClientId || settings?.dcrouterWorkHosterId || 'Derived from token', 'Configure this in dcrouter Gateway Clients, not in Onebox.')}
|
||||
${this.renderGatewayInput('dcrouterTargetHost', 'Target Host', settings?.dcrouterTargetHost || '', 'Defaults to the configured server IP when empty.')}
|
||||
${this.renderGatewayInput('dcrouterTargetPort', 'Target Port', String(settings?.dcrouterTargetPort || 80), 'Internal HTTP port dcrouter forwards to.')}
|
||||
` : html`
|
||||
@@ -316,6 +342,16 @@ export class ObViewSettings extends DeesElement {
|
||||
`;
|
||||
}
|
||||
|
||||
private renderGatewayReadonly(label: string, value: string, hint: string): TemplateResult {
|
||||
return html`
|
||||
<div class="gateway-readonly">
|
||||
<div class="gateway-readonly-label">${label}</div>
|
||||
<div class="gateway-readonly-value">${value}</div>
|
||||
<div class="gateway-readonly-hint">${hint}</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
private updateGatewayDraft(
|
||||
key: keyof NonNullable<appstate.ISettingsState['settings']>,
|
||||
value: string,
|
||||
@@ -351,7 +387,6 @@ export class ObViewSettings extends DeesElement {
|
||||
dcrouterManagedDataDir: settings.dcrouterManagedDataDir || './.nogit/dcrouter-data',
|
||||
dcrouterGatewayUrl: settings.dcrouterGatewayUrl || '',
|
||||
dcrouterGatewayApiToken: settings.dcrouterGatewayApiToken || '',
|
||||
dcrouterGatewayClientId: settings.dcrouterGatewayClientId || settings.dcrouterWorkHosterId || '',
|
||||
dcrouterTargetHost: settings.dcrouterTargetHost || '',
|
||||
dcrouterTargetPort: Number(settings.dcrouterTargetPort) || 80,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user