fix private domain dns ip and hide private domaains for wg gateways

This commit is contained in:
Matt Hill
2026-03-18 15:55:56 -06:00
parent 0e9d4f5d53
commit 1358937fa9
8 changed files with 44 additions and 19 deletions

View File

@@ -34,23 +34,34 @@ import { InterfaceAddressItemComponent } from './item.component'
template: `
<header>
{{ 'Gateway' | i18n }}: {{ gatewayGroup().gatewayName }}
<button
tuiDropdown
tuiButton
iconStart="@tui.plus"
[style.margin-inline-start]="'auto'"
[(tuiDropdownOpen)]="addOpen"
>
{{ 'Add Domain' | i18n }}
<tui-data-list *tuiDropdown (click)="addOpen.set(false)">
<button tuiOption (click)="addPublicDomain()">
{{ 'Public Domain' | i18n }}
</button>
<button tuiOption (click)="addPrivateDomain()">
{{ 'Private Domain' | i18n }}
</button>
</tui-data-list>
</button>
@if (gatewayGroup().isWireguard) {
<button
tuiButton
iconStart="@tui.plus"
[style.margin-inline-start]="'auto'"
(click)="addPublicDomain()"
>
{{ 'Add Public Domain' | i18n }}
</button>
} @else {
<button
tuiDropdown
tuiButton
iconStart="@tui.plus"
[style.margin-inline-start]="'auto'"
[(tuiDropdownOpen)]="addOpen"
>
{{ 'Add Domain' | i18n }}
<tui-data-list *tuiDropdown (click)="addOpen.set(false)">
<button tuiOption (click)="addPublicDomain()">
{{ 'Public Domain' | i18n }}
</button>
<button tuiOption (click)="addPrivateDomain()">
{{ 'Private Domain' | i18n }}
</button>
</tui-data-list>
</button>
}
</header>
<table
[appTable]="[

View File

@@ -5,6 +5,7 @@ import {
signal,
} from '@angular/core'
import { ErrorService, i18nPipe } from '@start9labs/shared'
import { utils } from '@start9labs/start-sdk'
import { TuiButton, TuiDialogContext, TuiIcon, TuiLoader } from '@taiga-ui/core'
import { TuiButtonLoading } from '@taiga-ui/kit'
import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus'
@@ -22,7 +23,7 @@ export type PrivateDnsValidationData = {
template: `
@let gatewayName =
context.data.gateway.name || context.data.gateway.ipInfo.name;
@let internalIp = context.data.gateway.ipInfo.lanIp[0] || ('Error' | i18n);
@let internalIp = lanIp || ('Error' | i18n);
<h2>{{ 'DNS Server Config' | i18n }}</h2>
<p>
@@ -146,6 +147,12 @@ export class PrivateDnsValidationComponent {
readonly context =
injectContext<TuiDialogContext<void, PrivateDnsValidationData>>()
get lanIp() {
return this.context.data.gateway.ipInfo.subnets
.map(s => utils.IpNet.parse(s))
.find(s => s.isIpv4())?.address
}
readonly loading = signal(false)
readonly pass = signal<boolean | undefined>(undefined)

View File

@@ -158,6 +158,7 @@ export class InterfaceService {
return {
gatewayId: g.id,
gatewayName: g.name,
isWireguard: g.ipInfo?.deviceType === 'wireguard',
addresses,
}
})
@@ -313,6 +314,7 @@ export type GatewayAddress = {
export type GatewayAddressGroup = {
gatewayId: string
gatewayName: string
isWireguard: boolean
addresses: GatewayAddress[]
}