From 80970636cf838b6c1eab4f5d467ccc8b395ce838 Mon Sep 17 00:00:00 2001 From: Stefan Werfling Date: Tue, 28 Jan 2025 16:05:35 +0100 Subject: [PATCH] #5 update dyndns client frontend/backend --- backend/src/Routes/Main/DynDnsClient/List.ts | 13 +++++- backend/src/Routes/Main/DynDnsClient/Save.ts | 4 ++ .../src/inc/Server/NginxControlHttpServer.ts | 8 ++-- .../DynDnsClient/DynDnsClientEditModal.ts | 4 +- frontend/src/inc/Pages/DynDnsClients.ts | 41 +++++++++++++++---- .../src/Backend/Routes/DynDnsClient/List.ts | 2 +- 6 files changed, 56 insertions(+), 16 deletions(-) diff --git a/backend/src/Routes/Main/DynDnsClient/List.ts b/backend/src/Routes/Main/DynDnsClient/List.ts index 8e6101b..a98159c 100644 --- a/backend/src/Routes/Main/DynDnsClient/List.ts +++ b/backend/src/Routes/Main/DynDnsClient/List.ts @@ -50,10 +50,21 @@ export class List { } } + let mainDomain: DynDnsClientDomain|null = null; + + const mainDomaindb = await DomainServiceDB.getInstance().findOne(client.main_domain_id); + + if (mainDomaindb) { + mainDomain = { + id: mainDomaindb.id, + name: mainDomaindb.domainname + }; + } + list.push({ id: client.id, domains: domains, - main_domain: client.main_domain_id, + main_domain: mainDomain, provider: { name: providerName, title: providerTitle diff --git a/backend/src/Routes/Main/DynDnsClient/Save.ts b/backend/src/Routes/Main/DynDnsClient/Save.ts index 4e38311..3a9e3ef 100644 --- a/backend/src/Routes/Main/DynDnsClient/Save.ts +++ b/backend/src/Routes/Main/DynDnsClient/Save.ts @@ -35,6 +35,10 @@ export class Save { client.update_domain = data.update_domain; + if (data.main_domain !== null) { + client.main_domain_id = data.main_domain.id; + } + client = await DynDnsClientServiceDB.getInstance().save(client); if (client) { diff --git a/backend/src/inc/Server/NginxControlHttpServer.ts b/backend/src/inc/Server/NginxControlHttpServer.ts index a5faf0a..e428740 100644 --- a/backend/src/inc/Server/NginxControlHttpServer.ts +++ b/backend/src/inc/Server/NginxControlHttpServer.ts @@ -37,7 +37,7 @@ export class NginxControlHttpServer extends BaseHttpServer { public constructor() { super({ - realm: 'FlyingFish Nginx controll', + realm: 'FlyingFish Nginx control', routes: [ new NjsAddressAccessController(), new NjsAuthBasicController(), @@ -54,7 +54,7 @@ export class NginxControlHttpServer extends BaseHttpServer { const server = app.listen(this._unixPath, () => { Logger.getLogger().info( - 'NginxControllHttpServer::listen: %s listening on the socket %s', + 'NginxControlHttpServer::listen: %s listening on the socket %s', this._realm, this._unixPath ); @@ -62,13 +62,13 @@ export class NginxControlHttpServer extends BaseHttpServer { FileHelper.chmod(this._unixPath, 0o777); Logger.getLogger().info( - 'NginxControllHttpServer::listen: set chmod 777 to socket %s', + 'NginxControlHttpServer::listen: set chmod 777 to socket %s', this._unixPath ); }); server.on('error', (err) => { - Logger.getLogger().error('NginxControllHttpServer::error', err); + Logger.getLogger().error('NginxControlHttpServer::error', err); }); } diff --git a/frontend/src/inc/Pages/DynDnsClient/DynDnsClientEditModal.ts b/frontend/src/inc/Pages/DynDnsClient/DynDnsClientEditModal.ts index 0c3090d..406e4ca 100644 --- a/frontend/src/inc/Pages/DynDnsClient/DynDnsClientEditModal.ts +++ b/frontend/src/inc/Pages/DynDnsClient/DynDnsClientEditModal.ts @@ -82,10 +82,10 @@ export class DynDnsClientEditModal extends ModalDialog { const rowOptions = new FormRow(bodyCard); - const groupUpdateDomains = new FormGroup(rowOptions.createCol(6), 'Update Domains'); + const groupUpdateDomains = new FormGroup(rowOptions.createCol(6), 'Enable update Domains'); this._switchUpdateDomains = new Switch(groupUpdateDomains, 'updateDomains'); - const groupDomains = new FormGroup(bodyCard, 'Domains'); + const groupDomains = new FormGroup(bodyCard, 'Update Domains'); this._multipleDomains = new Multiple(groupDomains); groupDomains.hide(); diff --git a/frontend/src/inc/Pages/DynDnsClients.ts b/frontend/src/inc/Pages/DynDnsClients.ts index 585e59b..529e3fc 100644 --- a/frontend/src/inc/Pages/DynDnsClients.ts +++ b/frontend/src/inc/Pages/DynDnsClients.ts @@ -3,8 +3,10 @@ import moment from 'moment'; import {Domain} from '../Api/Domain'; import {DynDnsClient as DynDnsClientAPI} from '../Api/DynDnsClient'; import {UnauthorizedError} from '../Api/Error/UnauthorizedError'; -import {Badge, BadgeType, ButtonClass, Card, Circle, CircleColor, ContentCol, ContentColSize, ContentRow, - DialogConfirm, ButtonType, ButtonMenu, IconFa, Table, Td, Th, Tr, ModalDialogType, LeftNavbarLink} from 'bambooo'; +import { + Badge, BadgeType, ButtonClass, Card, Circle, CircleColor, ContentCol, ContentColSize, ContentRow, + DialogConfirm, ButtonType, ButtonMenu, IconFa, Table, Td, Th, Tr, ModalDialogType, LeftNavbarLink, ColumnContent +} from 'bambooo'; import {UtilRedirect} from '../Utils/UtilRedirect'; import {BasePage} from './BasePage'; import {DynDnsClientEditModal} from './DynDnsClient/DynDnsClientEditModal'; @@ -88,7 +90,10 @@ export class DynDnsClients extends BasePage { title: '' }, domains: this._dynDnsClientDialog.getDomainsSelected(), - main_domain: this._dynDnsClientDialog.getMainDomainSelected(), + main_domain: { + id: this._dynDnsClientDialog.getMainDomainSelected(), + name: '' + }, username: this._dynDnsClientDialog.getUsername(), password: this._dynDnsClientDialog.getPassword(), update_domain: this._dynDnsClientDialog.getUpdateDomains(), @@ -139,7 +144,10 @@ export class DynDnsClients extends BasePage { new Th(trhead, 'Id'); // eslint-disable-next-line no-new - new Th(trhead, 'Domains'); + new Th(trhead, new ColumnContent([ + 'Main Domain', + 'Update Domain' + ])); // eslint-disable-next-line no-new new Th(trhead, 'Provider'); @@ -180,10 +188,24 @@ export class DynDnsClients extends BasePage { 'white-space': 'normal' }); - for (const domain of entry.domains) { + if (entry.main_domain) { + // eslint-disable-next-line no-new + new Badge(domainsTd, `${entry.main_domain.name}`, BadgeType.dark); + } else { // eslint-disable-next-line no-new - new Badge(domainsTd, `${domain.name}`, BadgeType.secondary); - domainsTd.append(' '); + new Badge(domainsTd, '', BadgeType.dark); + } + + domainsTd.append('
'); + + if (entry.update_domain) { + for (const domain of entry.domains) { + // eslint-disable-next-line no-new + new Badge(domainsTd, `${domain.name}`, BadgeType.secondary); + domainsTd.append(' '); + } + } else { + domainsTd.append('disabled'); } // eslint-disable-next-line no-new @@ -249,7 +271,10 @@ export class DynDnsClients extends BasePage { this._dynDnsClientDialog.setDomainsSelected(entry.domains); this._dynDnsClientDialog.setUsername(entry.username); this._dynDnsClientDialog.setUpdateDomains(entry.update_domain); - this._dynDnsClientDialog.setMainDomainSelected(entry.main_domain); + + if (entry.main_domain) { + this._dynDnsClientDialog.setMainDomainSelected(entry.main_domain.id); + } }, IconFa.edit ); diff --git a/schemas/src/Backend/Routes/DynDnsClient/List.ts b/schemas/src/Backend/Routes/DynDnsClient/List.ts index d0f1be4..a2a3bd5 100644 --- a/schemas/src/Backend/Routes/DynDnsClient/List.ts +++ b/schemas/src/Backend/Routes/DynDnsClient/List.ts @@ -20,7 +20,7 @@ export type DynDnsClientDomain = ExtractSchemaResultType