feat: expose external gateway settings
This commit is contained in:
@@ -41,7 +41,7 @@ export class CloudlySettingsManager {
|
||||
const masked: servezoneInterfaces.data.ICloudlySettingsMasked = {};
|
||||
|
||||
for (const [key, value] of Object.entries(settings)) {
|
||||
if (typeof value === 'string' && value.length > 4) {
|
||||
if (this.isSensitiveSettingKey(key) && typeof value === 'string' && value.length > 4) {
|
||||
// Mask the token, showing only last 4 characters
|
||||
masked[key] = '****' + value.slice(-4);
|
||||
} else {
|
||||
@@ -51,6 +51,21 @@ export class CloudlySettingsManager {
|
||||
|
||||
return masked;
|
||||
}
|
||||
|
||||
private isSensitiveSettingKey(key: string): boolean {
|
||||
const normalizedKey = key.toLowerCase();
|
||||
return [
|
||||
'token',
|
||||
'secret',
|
||||
'apikey',
|
||||
'accesskey',
|
||||
'applicationkey',
|
||||
'consumerkey',
|
||||
'keyjson',
|
||||
'privatekey',
|
||||
'password',
|
||||
].some((sensitivePart) => normalizedKey.includes(sensitivePart));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update multiple settings at once
|
||||
@@ -65,6 +80,29 @@ export class CloudlySettingsManager {
|
||||
await this.settingsStore.deleteKey(key as keyof servezoneInterfaces.data.ICloudlySettings);
|
||||
}
|
||||
}
|
||||
|
||||
if (Object.keys(updates).some((key) => this.isExternalGatewaySettingKey(key))) {
|
||||
this.refreshExternalGatewayConfig().catch((error) => {
|
||||
console.log(`External gateway settings refresh failed: ${(error as Error).message}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private isExternalGatewaySettingKey(key: string): boolean {
|
||||
return [
|
||||
'dcrouterGatewayUrl',
|
||||
'dcrouterGatewayApiToken',
|
||||
'dcrouterWorkHosterId',
|
||||
'dcrouterTargetHost',
|
||||
'dcrouterTargetPort',
|
||||
].includes(key);
|
||||
}
|
||||
|
||||
private async refreshExternalGatewayConfig(): Promise<void> {
|
||||
await Promise.all([
|
||||
this.cloudlyRef.domainManager.syncExternalGatewayDomains(),
|
||||
this.cloudlyRef.coreflowManager.pushClusterConfigToConnectedCoreflows(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -252,4 +290,4 @@ export class CloudlySettingsManager {
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user