()
-
- open = false
-}
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/domains/table.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/domains/table.component.ts
deleted file mode 100644
index a38bc5bcc..000000000
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/domains/table.component.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
-import { i18nPipe } from '@start9labs/shared'
-import { TuiSkeleton } from '@taiga-ui/kit'
-import { PlaceholderComponent } from 'src/app/routes/portal/components/placeholder.component'
-import { TableComponent } from 'src/app/routes/portal/components/table.component'
-import { DomainItemComponent } from './item.component'
-import { DomainService } from './domain.service'
-
-@Component({
- selector: 'domains-table',
- template: `
-
- @for (domain of domainService.data()?.domains; track $index) {
-
- } @empty {
-
- |
- @if (domainService.data()?.domains) {
-
- {{ 'No public domains' | i18n }}
-
- } @else {
- {{ 'Loading' | i18n }}
- }
- |
-
- }
-
- `,
- changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [
- TuiSkeleton,
- i18nPipe,
- TableComponent,
- PlaceholderComponent,
- DomainItemComponent,
- ],
-})
-export class DomainsTableComponent {
- protected readonly domainService = inject(DomainService)
-}
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/gateways/item.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/gateways/item.component.ts
index 1a9b32c6c..43fb1fef5 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/gateways/item.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/gateways/item.component.ts
@@ -41,7 +41,7 @@ import { GatewayPlus } from 'src/app/services/gateway.service'
-
}
- {{ gateway.ipv4.join(', ') }} |
+ {{ gateway.lanIpv4.join(', ') }} |
`${o}.onion`),
- clearnetDomains: getClearnetDomains(network.host),
+ publicDomains: getPublicDomains(network.host.domains.public),
+ privateDomains: network.host.domains.private,
isOs: true,
}
})
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/system.const.ts b/web/projects/ui/src/app/routes/portal/routes/system/system.const.ts
index 96451d1aa..974b0f40a 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/system.const.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/system.const.ts
@@ -46,11 +46,6 @@ export const SYSTEM_MENU = [
item: 'Certificate Authorities',
link: 'authorities',
},
- {
- icon: '@tui.globe',
- item: 'Public Domains',
- link: 'domains',
- },
],
[
{
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/system.routes.ts b/web/projects/ui/src/app/routes/portal/routes/system/system.routes.ts
index 7a9f47416..8e3622843 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/system.routes.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/system.routes.ts
@@ -77,11 +77,6 @@ export default [
loadComponent: () =>
import('./routes/authorities/authorities.component'),
},
- {
- path: 'domains',
- title: titleResolver,
- loadComponent: () => import('./routes/domains/domains.component'),
- },
],
},
] satisfies Routes
diff --git a/web/projects/ui/src/app/services/api/api.fixures.ts b/web/projects/ui/src/app/services/api/api.fixures.ts
index ebf2f0a25..5f01fa370 100644
--- a/web/projects/ui/src/app/services/api/api.fixures.ts
+++ b/web/projects/ui/src/app/services/api/api.fixures.ts
@@ -2070,7 +2070,10 @@ export namespace Mock {
},
},
onions: [],
- domains: {},
+ domains: {
+ public: {},
+ private: {},
+ },
hostnameInfo: {
80: [
{
@@ -2170,7 +2173,10 @@ export namespace Mock {
},
},
onions: [],
- domains: {},
+ domains: {
+ public: {},
+ private: {},
+ },
hostnameInfo: {
8332: [],
},
@@ -2193,7 +2199,10 @@ export namespace Mock {
},
},
onions: [],
- domains: {},
+ domains: {
+ public: {},
+ private: {},
+ },
hostnameInfo: {
8333: [],
},
diff --git a/web/projects/ui/src/app/services/api/api.types.ts b/web/projects/ui/src/app/services/api/api.types.ts
index 2df291c5a..ea9019513 100644
--- a/web/projects/ui/src/app/services/api/api.types.ts
+++ b/web/projects/ui/src/app/services/api/api.types.ts
@@ -104,6 +104,12 @@ export namespace RR {
export type DiskRepairReq = {} // server.disk.repair
export type DiskRepairRes = null
+ export type TestDnsReq = {
+ fqdn: string
+ gateway: T.GatewayId // string
+ } // net.dns.test
+ export type TestDnsRes = string | null
+
export type ResetTorReq = {
wipeState: boolean
reason: string
@@ -236,26 +242,6 @@ export namespace RR {
// network
- export type AddDomainReq = {
- fqdn: string
- gateway: string
- } // net.domain.add
- export type AddDomainRes = null
-
- export type RemoveDomainReq = {
- fqdn: string
- } // net.domain.remove
- export type RemoveDomainRes = null
-
- export type TestDomainReq = {
- fqdn: string
- gateway: string
- } // net.domain.test-dns
- export type TestDomainRes = {
- root: boolean
- wildcard: boolean
- }
-
export type AddTunnelReq = {
name: string
config: string // file contents
@@ -309,19 +295,31 @@ export namespace RR {
export type ServerRemoveOnionReq = ServerAddOnionReq // server.host.address.onion.remove
export type RemoveOnionRes = null
- export type OsUiAddDomainReq = {
- // server.host.address.domain.add
+ export type OsUiAddPublicDomainReq = {
+ // server.host.address.domain.public.add
fqdn: string // FQDN
- private: boolean
+ gateway: T.GatewayId
acme: string | null // URL. null means local Root CA
}
- export type OsUiAddDomainRes = null
+ export type OsUiAddPublicDomainRes = TestDnsRes
- export type OsUiRemoveDomainReq = {
- // server.host.address.domain.remove
+ export type OsUiRemovePublicDomainReq = {
+ // server.host.address.domain.public.remove
fqdn: string // FQDN
}
- export type OsUiRemoveDomainRes = null
+ export type OsUiRemovePublicDomainRes = null
+
+ export type OsUiAddPrivateDomainReq = {
+ // server.host.address.domain.private.add
+ fqdn: string // FQDN
+ }
+ export type OsUiAddPrivateDomainRes = null
+
+ export type OsUiRemovePrivateDomainReq = {
+ // server.host.address.domain.private.remove
+ fqdn: string // FQDN
+ }
+ export type OsUiRemovePrivateDomainRes = null
export type PkgBindingToggleGatewayReq = ServerBindingToggleGatewayReq & {
// package.host.binding.set-gateway-enabled
@@ -336,22 +334,31 @@ export namespace RR {
package: T.PackageId // string
host: T.HostId // string
}
-
export type PkgRemoveOnionReq = PkgAddOnionReq // package.host.address.onion.remove
- export type PkgAddDomainReq = OsUiAddDomainReq & {
- // package.host.address.domain.add
+ export type PkgAddPublicDomainReq = OsUiAddPublicDomainReq & {
+ // package.host.address.domain.public.add
package: T.PackageId // string
host: T.HostId // string
}
- export type PkgAddDomainRes = null
+ export type PkgAddPublicDomainRes = OsUiAddPublicDomainRes
- export type PkgRemoveDomainReq = OsUiRemoveDomainReq & {
- // package.host.address.domain.remove
+ export type PkgRemovePublicDomainReq = OsUiRemovePublicDomainReq & {
+ // package.host.address.domain.public.remove
package: T.PackageId // string
host: T.HostId // string
}
- export type PkgRemoveDomainRes = null
+ export type PkgRemovePublicDomainRes = OsUiRemovePublicDomainRes
+
+ export type PkgAddPrivateDomainReq = OsUiAddPrivateDomainReq & {
+ // package.host.address.domain.private.add
+ package: T.PackageId // string
+ host: T.HostId // string
+ }
+ export type PkgAddPrivateDomainRes = OsUiAddPrivateDomainRes
+
+ export type PkgRemovePrivateDomainReq = PkgAddPrivateDomainReq
+ export type PkgRemovePrivateDomainRes = OsUiRemovePrivateDomainRes
export type GetPackageLogsReq = FetchLogsReq & { id: string } // package.logs
export type GetPackageLogsRes = FetchLogsRes
diff --git a/web/projects/ui/src/app/services/api/embassy-api.service.ts b/web/projects/ui/src/app/services/api/embassy-api.service.ts
index 176d6a868..32acc8d94 100644
--- a/web/projects/ui/src/app/services/api/embassy-api.service.ts
+++ b/web/projects/ui/src/app/services/api/embassy-api.service.ts
@@ -122,9 +122,9 @@ export abstract class ApiService {
abstract toggleKiosk(enable: boolean): Promise
- abstract resetTor(params: RR.ResetTorReq): Promise
+ abstract testDns(params: RR.TestDnsReq): Promise
- // @TODO 041
+ abstract resetTor(params: RR.ResetTorReq): Promise
// smtp
@@ -182,18 +182,8 @@ export abstract class ApiService {
abstract removeTunnel(params: RR.RemoveTunnelReq): Promise
- // @TODO 041
-
// ** domains **
- // @TODO 041
-
- abstract addDomain(params: RR.AddDomainReq): Promise
-
- abstract removeDomain(params: RR.RemoveDomainReq): Promise
-
- abstract testDomain(params: RR.TestDomainReq): Promise
-
// wifi
abstract enableWifi(params: RR.EnabledWifiReq): Promise
@@ -369,13 +359,21 @@ export abstract class ApiService {
params: RR.ServerRemoveOnionReq,
): Promise
- abstract osUiAddDomain(
- params: RR.OsUiAddDomainReq,
- ): Promise
+ abstract osUiAddPublicDomain(
+ params: RR.OsUiAddPublicDomainReq,
+ ): Promise
- abstract osUiRemoveDomain(
- params: RR.OsUiRemoveDomainReq,
- ): Promise
+ abstract osUiRemovePublicDomain(
+ params: RR.OsUiRemovePublicDomainReq,
+ ): Promise
+
+ abstract osUiAddPrivateDomain(
+ params: RR.OsUiAddPrivateDomainReq,
+ ): Promise
+
+ abstract osUiRemovePrivateDomain(
+ params: RR.OsUiRemovePrivateDomainReq,
+ ): Promise
abstract pkgBindingToggleGateway(
params: RR.PkgBindingToggleGatewayReq,
@@ -387,9 +385,19 @@ export abstract class ApiService {
params: RR.PkgRemoveOnionReq,
): Promise
- abstract pkgAddDomain(params: RR.PkgAddDomainReq): Promise
+ abstract pkgAddPublicDomain(
+ params: RR.PkgAddPublicDomainReq,
+ ): Promise
- abstract pkgRemoveDomain(
- params: RR.PkgRemoveDomainReq,
- ): Promise
+ abstract pkgRemovePublicDomain(
+ params: RR.PkgRemovePublicDomainReq,
+ ): Promise
+
+ abstract pkgAddPrivateDomain(
+ params: RR.PkgAddPrivateDomainReq,
+ ): Promise
+
+ abstract pkgRemovePrivateDomain(
+ params: RR.PkgRemovePrivateDomainReq,
+ ): Promise
}
diff --git a/web/projects/ui/src/app/services/api/embassy-live-api.service.ts b/web/projects/ui/src/app/services/api/embassy-live-api.service.ts
index 1751f9040..62330e4f1 100644
--- a/web/projects/ui/src/app/services/api/embassy-live-api.service.ts
+++ b/web/projects/ui/src/app/services/api/embassy-live-api.service.ts
@@ -267,6 +267,13 @@ export class LiveApiService extends ApiService {
})
}
+ async testDns(params: RR.TestDnsReq): Promise {
+ return this.rpcRequest({
+ method: 'net.dns.test',
+ params,
+ })
+ }
+
async resetTor(params: RR.ResetTorReq): Promise {
return this.rpcRequest({ method: 'net.tor.reset', params })
}
@@ -358,20 +365,6 @@ export class LiveApiService extends ApiService {
return this.rpcRequest({ method: 'net.tunnel.remove', params })
}
- // domains
-
- async addDomain(params: RR.AddDomainReq): Promise {
- return this.rpcRequest({ method: 'net.domain.add', params })
- }
-
- async removeDomain(params: RR.RemoveDomainReq): Promise {
- return this.rpcRequest({ method: 'net.domain.remove', params })
- }
-
- async testDomain(params: RR.TestDomainReq): Promise {
- return this.rpcRequest({ method: 'net.domain.test-dns', params })
- }
-
// wifi
async enableWifi(params: RR.EnabledWifiReq): Promise {
@@ -663,20 +656,38 @@ export class LiveApiService extends ApiService {
})
}
- async osUiAddDomain(
- params: RR.OsUiAddDomainReq,
- ): Promise {
+ async osUiAddPublicDomain(
+ params: RR.OsUiAddPublicDomainReq,
+ ): Promise {
return this.rpcRequest({
- method: 'server.host.address.domain.add',
+ method: 'server.host.address.domain.public.add',
params,
})
}
- async osUiRemoveDomain(
- params: RR.OsUiRemoveDomainReq,
- ): Promise {
+ async osUiRemovePublicDomain(
+ params: RR.OsUiRemovePublicDomainReq,
+ ): Promise {
return this.rpcRequest({
- method: 'server.host.address.domain.remove',
+ method: 'server.host.address.domain.public.remove',
+ params,
+ })
+ }
+
+ async osUiAddPrivateDomain(
+ params: RR.OsUiAddPrivateDomainReq,
+ ): Promise {
+ return this.rpcRequest({
+ method: 'server.host.address.domain.private.add',
+ params,
+ })
+ }
+
+ async osUiRemovePrivateDomain(
+ params: RR.OsUiRemovePrivateDomainReq,
+ ): Promise {
+ return this.rpcRequest({
+ method: 'server.host.address.domain.private.remove',
params,
})
}
@@ -706,18 +717,38 @@ export class LiveApiService extends ApiService {
})
}
- async pkgAddDomain(params: RR.PkgAddDomainReq): Promise {
+ async pkgAddPublicDomain(
+ params: RR.PkgAddPublicDomainReq,
+ ): Promise {
return this.rpcRequest({
- method: 'package.host.address.domain.add',
+ method: 'package.host.address.domain.public.add',
params,
})
}
- async pkgRemoveDomain(
- params: RR.PkgRemoveDomainReq,
- ): Promise {
+ async pkgRemovePublicDomain(
+ params: RR.PkgRemovePublicDomainReq,
+ ): Promise {
return this.rpcRequest({
- method: 'package.host.address.domain.remove',
+ method: 'package.host.address.domain.public.remove',
+ params,
+ })
+ }
+
+ async pkgAddPrivateDomain(
+ params: RR.PkgAddPrivateDomainReq,
+ ): Promise {
+ return this.rpcRequest({
+ method: 'package.host.address.domain.private.add',
+ params,
+ })
+ }
+
+ async pkgRemovePrivateDomain(
+ params: RR.PkgRemovePrivateDomainReq,
+ ): Promise {
+ return this.rpcRequest({
+ method: 'package.host.address.domain.private.remove',
params,
})
}
diff --git a/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts
index 263c0a50e..9db0e5fff 100644
--- a/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts
+++ b/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts
@@ -462,6 +462,12 @@ export class MockApiService extends ApiService {
return null
}
+ async testDns(params: RR.TestDnsReq): Promise {
+ await pauseFor(2000)
+
+ return null
+ }
+
async resetTor(params: RR.ResetTorReq): Promise {
await pauseFor(2000)
return null
@@ -601,50 +607,6 @@ export class MockApiService extends ApiService {
return null
}
- // domains
-
- async addDomain(params: RR.AddDomainReq): Promise {
- await pauseFor(2000)
-
- const patch = [
- {
- op: PatchOp.REPLACE,
- path: `/serverInfo/network/domains`,
- value: {
- [params.fqdn]: {
- gateway: params.gateway,
- },
- },
- },
- ]
- this.mockRevision(patch)
-
- return null
- }
-
- async removeDomain(params: RR.RemoveDomainReq): Promise {
- await pauseFor(2000)
- const patch = [
- {
- op: PatchOp.REPLACE,
- path: '/serverInfo/network/domains',
- value: {},
- },
- ]
- this.mockRevision(patch)
-
- return null
- }
-
- async testDomain(params: RR.TestDomainReq): Promise {
- await pauseFor(2000)
-
- return {
- root: true,
- wildcard: true,
- }
- }
-
// wifi
async enableWifi(params: RR.EnabledWifiReq): Promise {
@@ -1432,19 +1394,72 @@ export class MockApiService extends ApiService {
return null
}
- async osUiAddDomain(
- params: RR.OsUiAddDomainReq,
- ): Promise {
+ async osUiAddPublicDomain(
+ params: RR.OsUiAddPublicDomainReq,
+ ): Promise {
await pauseFor(2000)
const patch: Operation[] = [
{
op: PatchOp.ADD,
- path: `/serverInfo/host/domains`,
+ path: `/serverInfo/host/domains/public`,
value: {
- [params.fqdn]: { public: !params.private, acme: params.acme },
+ [params.fqdn]: { gateway: params.gateway, acme: params.acme },
},
},
+ {
+ op: PatchOp.ADD,
+ path: `/serverInfo/host/hostnameInfo/80/0`,
+ value: {
+ kind: 'ip',
+ gatewayId: 'eth0',
+ public: true,
+ hostname: {
+ kind: 'domain',
+ domain: params.fqdn,
+ subdomain: null,
+ port: null,
+ sslPort: 443,
+ },
+ },
+ },
+ ]
+ this.mockRevision(patch)
+
+ return null
+ }
+
+ async osUiRemovePublicDomain(
+ params: RR.OsUiRemovePublicDomainReq,
+ ): Promise {
+ await pauseFor(2000)
+
+ const patch: RemoveOperation[] = [
+ {
+ op: PatchOp.REMOVE,
+ path: `/serverInfo/host/domains/public/${params.fqdn}`,
+ },
+ {
+ op: PatchOp.REMOVE,
+ path: `/serverInfo/host/hostnameInfo/80/0`,
+ },
+ ]
+ this.mockRevision(patch)
+
+ return null
+ }
+
+ async osUiAddPrivateDomain(
+ params: RR.OsUiAddPrivateDomainReq,
+ ): Promise {
+ await pauseFor(2000)
+
+ const patch: Operation[] = [
+ {
+ op: PatchOp.REPLACE,
+ path: `/serverInfo/host/domains/private`,
+ value: [params.fqdn],
+ },
{
op: PatchOp.ADD,
path: `/serverInfo/host/hostnameInfo/80/0`,
@@ -1467,15 +1482,16 @@ export class MockApiService extends ApiService {
return null
}
- async osUiRemoveDomain(
- params: RR.OsUiRemoveDomainReq,
- ): Promise {
+ async osUiRemovePrivateDomain(
+ params: RR.OsUiRemovePrivateDomainReq,
+ ): Promise {
await pauseFor(2000)
- const patch: RemoveOperation[] = [
+ const patch: Operation[] = [
{
- op: PatchOp.REMOVE,
- path: `/serverInfo/host/domains/${params.fqdn}`,
+ op: PatchOp.REPLACE,
+ path: `/serverInfo/host/domains/private`,
+ value: [],
},
{
op: PatchOp.REMOVE,
@@ -1551,17 +1567,72 @@ export class MockApiService extends ApiService {
return null
}
- async pkgAddDomain(params: RR.PkgAddDomainReq): Promise {
+ async pkgAddPublicDomain(
+ params: RR.PkgAddPublicDomainReq,
+ ): Promise {
await pauseFor(2000)
const patch: Operation[] = [
{
op: PatchOp.ADD,
- path: `/packageData/${params.package}/hosts/${params.host}/domains`,
+ path: `/packageData/${params.package}/hosts/${params.host}/domains/public`,
value: {
- [params.fqdn]: { public: !params.private, acme: params.acme },
+ [params.fqdn]: { gateway: params.gateway, acme: params.acme },
},
},
+ {
+ op: PatchOp.ADD,
+ path: `/packageData/${params.package}/hosts/${params.host}/hostnameInfo/80/0`,
+ value: {
+ kind: 'ip',
+ gatewayId: 'eth0',
+ public: true,
+ hostname: {
+ kind: 'domain',
+ domain: params.fqdn,
+ subdomain: null,
+ port: null,
+ sslPort: 443,
+ },
+ },
+ },
+ ]
+ this.mockRevision(patch)
+
+ return null
+ }
+
+ async pkgRemovePublicDomain(
+ params: RR.PkgRemovePublicDomainReq,
+ ): Promise {
+ await pauseFor(2000)
+
+ const patch: RemoveOperation[] = [
+ {
+ op: PatchOp.REMOVE,
+ path: `/packageData/${params.package}/hosts/${params.host}/domains/public/${params.fqdn}`,
+ },
+ {
+ op: PatchOp.REMOVE,
+ path: `/packageData/${params.package}/hosts/${params.host}/hostnameInfo/80/0`,
+ },
+ ]
+ this.mockRevision(patch)
+
+ return null
+ }
+
+ async pkgAddPrivateDomain(
+ params: RR.PkgAddPrivateDomainReq,
+ ): Promise {
+ await pauseFor(2000)
+
+ const patch: Operation[] = [
+ {
+ op: PatchOp.REPLACE,
+ path: `/packageData/${params.package}/hosts/${params.host}/domains/private`,
+ value: [params.fqdn],
+ },
{
op: PatchOp.ADD,
path: `/packageData/${params.package}/hosts/${params.host}/hostnameInfo/80/0`,
@@ -1584,15 +1655,16 @@ export class MockApiService extends ApiService {
return null
}
- async pkgRemoveDomain(
- params: RR.PkgRemoveDomainReq,
- ): Promise {
+ async pkgRemovePrivateDomain(
+ params: RR.PkgRemovePrivateDomainReq,
+ ): Promise {
await pauseFor(2000)
- const patch: RemoveOperation[] = [
+ const patch: Operation[] = [
{
- op: PatchOp.REMOVE,
- path: `/packageData/${params.package}/hosts/${params.host}/domains/${params.fqdn}`,
+ op: PatchOp.REPLACE,
+ path: `/packageData/${params.package}/hosts/${params.host}/domains/private`,
+ value: [],
},
{
op: PatchOp.REMOVE,
diff --git a/web/projects/ui/src/app/services/api/mock-patch.ts b/web/projects/ui/src/app/services/api/mock-patch.ts
index 8eacfed3f..19fa5fe91 100644
--- a/web/projects/ui/src/app/services/api/mock-patch.ts
+++ b/web/projects/ui/src/app/services/api/mock-patch.ts
@@ -32,14 +32,6 @@ export const mockPatchData: DataModel = {
contact: ['mailto:support@start9.com'],
},
},
- domains: {
- 'cloud.private.com': {
- gateway: 'eth0',
- },
- 'public.com': {
- gateway: 'wireguard1',
- },
- },
host: {
bindings: {
80: {
@@ -60,7 +52,10 @@ export const mockPatchData: DataModel = {
},
},
},
- domains: {},
+ domains: {
+ public: {},
+ private: {},
+ },
onions: ['myveryownspecialtoraddress'],
hostnameInfo: {
80: [
@@ -344,7 +339,10 @@ export const mockPatchData: DataModel = {
},
},
onions: [],
- domains: {},
+ domains: {
+ public: {},
+ private: {},
+ },
hostnameInfo: {
80: [
{
@@ -444,7 +442,10 @@ export const mockPatchData: DataModel = {
},
},
onions: [],
- domains: {},
+ domains: {
+ public: {},
+ private: {},
+ },
hostnameInfo: {
8332: [],
},
@@ -467,7 +468,10 @@ export const mockPatchData: DataModel = {
},
},
onions: [],
- domains: {},
+ domains: {
+ public: {},
+ private: {},
+ },
hostnameInfo: {
8333: [],
},
diff --git a/web/projects/ui/src/app/services/gateway.service.ts b/web/projects/ui/src/app/services/gateway.service.ts
index 9d4ecf590..185ca1981 100644
--- a/web/projects/ui/src/app/services/gateway.service.ts
+++ b/web/projects/ui/src/app/services/gateway.service.ts
@@ -8,7 +8,7 @@ import { toSignal } from '@angular/core/rxjs-interop'
export type GatewayPlus = T.NetworkInterfaceInfo & {
id: string
ipInfo: T.IpInfo
- ipv4: string[]
+ lanIpv4: string[]
}
@Injectable()
@@ -25,7 +25,7 @@ export class GatewayService {
({
...val,
id,
- ipv4: val.ipInfo?.subnets
+ lanIpv4: val.ipInfo?.subnets
.filter(s => !s.includes('::'))
.map(s => s.split('/')[0]),
}) as GatewayPlus,
|