From 409c78d1a046f5f5b82aebb3289c2e068e33bd2b Mon Sep 17 00:00:00 2001 From: Alexander Kaschta <alexander.kaschta9@kit.edu> Date: Wed, 28 Jun 2023 18:17:50 +0200 Subject: [PATCH] UPD: Display IP address types in FQDN and IP list --- frontend/src/api-services/dns_fqdn.service.js | 23 ++++++++++++++++--- frontend/src/components/DNSRecordTypeCard.vue | 6 ++--- frontend/src/components/FQDNRecordTable.vue | 6 ++++- frontend/src/components/RRDataView.vue | 8 +++++++ frontend/src/views/dnsvs/BCDRecords.vue | 2 ++ frontend/src/views/dnsvs/ExternalRecords.vue | 2 +- frontend/src/views/dnsvs/FQDNRecords.vue | 4 +++- frontend/src/views/dnsvs/FQDNReferences.vue | 3 +++ frontend/src/views/dnsvs/IPRecords.vue | 4 +++- 9 files changed, 47 insertions(+), 11 deletions(-) diff --git a/frontend/src/api-services/dns_fqdn.service.js b/frontend/src/api-services/dns_fqdn.service.js index 8fac8146d..4d553b0f7 100644 --- a/frontend/src/api-services/dns_fqdn.service.js +++ b/frontend/src/api-services/dns_fqdn.service.js @@ -13,7 +13,13 @@ export default { { name: 'dns.fqdn.list', old: { value: fqdn } }, { name: 'dns.record.list', inner_join_ref: { fqdn_list: 'api_fkey_dns_record_target_fqdn' } }, { name: 'dnscfg.fqdn_type.list', old: { sorting_params_list: ['position'] } }, - { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } } + { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } }, + { name: 'dns.ip_addr.list', inner_join_ref: { record_list: 'default' } }, + { + name: 'nd.ip_subnet.list', + inner_join_ref: { ip_addr_list: 'default' }, + old: { sorting_params_list: ['type ASC', 'cidr ASC'] } + } ] return TransactionService.execute(config, ta) }, @@ -22,7 +28,13 @@ export default { { name: 'dns.fqdn.list', old: { value: fqdn } }, { name: 'dns.record.list', old: { sorting_params_list: ['type', 'fqdn'] }, inner_join_ref: { fqdn_list: 'default' } }, { name: 'dnscfg.fqdn_type.list', old: { sorting_params_list: ['position'] } }, - { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } } + { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } }, + { name: 'dns.ip_addr.list', inner_join_ref: { record_list: 'default' } }, + { + name: 'nd.ip_subnet.list', + inner_join_ref: { ip_addr_list: 'default' }, + old: { sorting_params_list: ['type ASC', 'cidr ASC'] } + } ] return TransactionService.execute(config, ta) }, @@ -32,7 +44,12 @@ export default { { name: 'dns.record.list', old: { sorting_params_list: ['type', 'fqdn'] }, inner_join_ref: {ip_addr_list: 'default'}}, { name: 'dnscfg.fqdn_type.list', old: { sorting_params_list: ['position'] } }, { name: 'dns.fqdn.list', inner_join_ref: { record_list: 'default' } }, - { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } } + { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } }, + { + name: 'nd.ip_subnet.list', + inner_join_ref: { ip_addr_list: 'default' }, + old: { sorting_params_list: ['type ASC', 'cidr ASC'] } + } ] return TransactionService.execute(config, ta) }, diff --git a/frontend/src/components/DNSRecordTypeCard.vue b/frontend/src/components/DNSRecordTypeCard.vue index 125bff2c5..95104fd36 100644 --- a/frontend/src/components/DNSRecordTypeCard.vue +++ b/frontend/src/components/DNSRecordTypeCard.vue @@ -105,7 +105,7 @@ {{ item.fqdn_description }} </b-td> <b-td> - <RRDataView :item="item"></RRDataView> + <RRDataView :item="item" :subnets="subnets"></RRDataView> <b-badge v-if="item.data in reserved_addrs_by_ip" variant="warning" :title="$t('components.dns_record_type_card.address_is_reserved')"> {{ $t('components.dns_record_type_card.reserved') }} @@ -114,7 +114,6 @@ v-if="bcd_has_v4 && bcd_has_v6 && record_type == 'A' && !fqdnHasAAAA(item.fqdn)" variant="danger">{{ $t('components.dns_record_type_card.no_AAAA_record') }} </b-badge> - <IPAddressTypeBadge :subnets="subnets" :record_address="item.data"/> </b-td> <b-td> <template v-if="item.ttl != null">{{ item.ttl }}s</template> @@ -202,11 +201,10 @@ import BCDFreeAddressBlock from '@/components/BCDFreeAddressBlock' import transactionutil from '@/util/transactionutil' import RecordService from '@/api-services.gen/dns.record' import DBEditor from '@/components/DBEditor' -import IPAddressTypeBadge from '@/components/IPAddressTypeBadge.vue' export default { name: 'DNSRecordTypeCard', - components: { IPAddressTypeBadge, DBEditor, BCDFreeAddressBlock, RecordInfo, RRDataView, FilterInput }, + components: { DBEditor, BCDFreeAddressBlock, RecordInfo, RRDataView, FilterInput }, data() { return { filter: '', diff --git a/frontend/src/components/FQDNRecordTable.vue b/frontend/src/components/FQDNRecordTable.vue index 591d888e4..e8771bab6 100644 --- a/frontend/src/components/FQDNRecordTable.vue +++ b/frontend/src/components/FQDNRecordTable.vue @@ -18,7 +18,7 @@ </b-badge> </template> <template v-slot:cell(data)="data"> - <RRDataView :item="data.item"></RRDataView> + <RRDataView :item="data.item" :subnets="subnets"></RRDataView> </template> <template v-slot:cell(actions)="data"> <b-button-group> @@ -129,6 +129,10 @@ export default { fqdn_rrs: Array, fqdn: { required: true + }, + subnets: { + required: true, + type: Array } }, computed: { diff --git a/frontend/src/components/RRDataView.vue b/frontend/src/components/RRDataView.vue index d68a9213c..c25dfb4ae 100644 --- a/frontend/src/components/RRDataView.vue +++ b/frontend/src/components/RRDataView.vue @@ -4,14 +4,22 @@ <b-badge v-if="!item.target_is_singleton" variant="warning">{{ $t('components.rrdata_view.rr_set') }}</b-badge> <b-badge v-if="item.target_is_reverse_unique" :title="$t('components.rrdata_view.reverse_unique')">{{ $t('components.rrdata_view.ptr') }}</b-badge> + <IPAddressTypeBadge v-if="subnets" :subnets="subnets" :record_address="item.data"/> </span> </template> <script> +import IPAddressTypeBadge from '@/components/IPAddressTypeBadge.vue' + export default { name: 'RRDataView', + components: { IPAddressTypeBadge }, props: { item: { required: true + }, + subnets: { + required: true, + type: Array } } } diff --git a/frontend/src/views/dnsvs/BCDRecords.vue b/frontend/src/views/dnsvs/BCDRecords.vue index 91dede366..8f5e5877e 100644 --- a/frontend/src/views/dnsvs/BCDRecords.vue +++ b/frontend/src/views/dnsvs/BCDRecords.vue @@ -1,6 +1,7 @@ <template> <div id="bcd-records"> <Loading :data="bcd"> + <template v-if="bcd"> <!-- WHY?! JUST WHYYYY??? IT WORKS EVERYWHERE ELSE!? --> <h1 class="my-4"> {{ bcd.name }} <small class="text-muted">{{ $t('system.broadcast_domain') }} <b-badge variant="success" :title="$t('views.dnsvs.bcd_records.both_subnets')" @@ -285,6 +286,7 @@ </DBEditor> <EVLogViewer v-if="bcd" modal_id="evlog_bcd" :title="'BCD \''+ bcd.name + '\''" ref_obj_fq="nd.bcd" :refobj_id_value="bcd.gpk"></EVLogViewer> + </template> </Loading> </div> </template> diff --git a/frontend/src/views/dnsvs/ExternalRecords.vue b/frontend/src/views/dnsvs/ExternalRecords.vue index 2b191e625..51098fa05 100644 --- a/frontend/src/views/dnsvs/ExternalRecords.vue +++ b/frontend/src/views/dnsvs/ExternalRecords.vue @@ -3,7 +3,7 @@ <b-checkbox :value="true" :unchecked-value="null" v-model="own" switch> {{ $t('components.dnsvs_entry.show_only_own') }} </b-checkbox> - <FQDNRecordTable fqdn="null" :fqdn_rrs="records"></FQDNRecordTable> + <FQDNRecordTable fqdn="null" :fqdn_rrs="records" :subnets="[]"></FQDNRecordTable> </div> </template> diff --git a/frontend/src/views/dnsvs/FQDNRecords.vue b/frontend/src/views/dnsvs/FQDNRecords.vue index 1fd708102..0bc5f2d54 100644 --- a/frontend/src/views/dnsvs/FQDNRecords.vue +++ b/frontend/src/views/dnsvs/FQDNRecords.vue @@ -4,7 +4,7 @@ v-if="$route.params.fqdn !== '$'">{{ $route.params.fqdn }}</span>' </h1> <FQDNRecordTable :full_edit_fqdn_reducer="full_edit_fqdn_reducer" :create_record_reducer="create_record_reducer" - :fqdn_rrs="records" :fqdn="fqdn"></FQDNRecordTable> + :fqdn_rrs="records" :fqdn="fqdn" :subnets="subnets"></FQDNRecordTable> </div> </template> @@ -18,6 +18,7 @@ export default { return { records: null, fqdn: null, + subnets: null, full_edit_fqdn_reducer: null, create_record_reducer: null } @@ -28,6 +29,7 @@ export default { const response = await FQDNRRService.getRecordsByFQDN(this.$store.state.netdb_axios_config, this.$route.params.fqdn) window.console.log(response) this.records = response.data.record_list + this.subnets = response.data.ip_subnet_list const fqdnSelections = {} for (const t of response.data.fqdn_type_list) { let disp_name = t.description diff --git a/frontend/src/views/dnsvs/FQDNReferences.vue b/frontend/src/views/dnsvs/FQDNReferences.vue index d56d6ce0b..b9ecbc1bd 100644 --- a/frontend/src/views/dnsvs/FQDNReferences.vue +++ b/frontend/src/views/dnsvs/FQDNReferences.vue @@ -7,6 +7,7 @@ <FQDNRecordTable :fqdn_rrs="records" :fqdn="fqdn" :full_edit_fqdn_reducer="full_edit_fqdn_reducer" :create_record_reducer="create_record_reducer" + :subnets="subnets" ></FQDNRecordTable> </div> </template> @@ -21,6 +22,7 @@ export default { return { records: null, fqdn: null, + subnets: null, full_edit_fqdn_reducer: null, create_record_reducer: null } @@ -37,6 +39,7 @@ export default { const response = await RRService.getRecordsByTargetFQDN(this.$store.state.netdb_axios_config, this.$route.params.fqdn) this.fqdn = response.data.fqdn_list[0] this.records = response.data.record_list + this.subnets = response.data.ip_subnet_list const fqdnSelections = {} for (const t of response.data.fqdn_type_list) { let disp_name = t.description diff --git a/frontend/src/views/dnsvs/IPRecords.vue b/frontend/src/views/dnsvs/IPRecords.vue index 2cafbae18..67a142f27 100644 --- a/frontend/src/views/dnsvs/IPRecords.vue +++ b/frontend/src/views/dnsvs/IPRecords.vue @@ -2,7 +2,7 @@ <div class="IPRecords"> <h1>{{ $t('views.dnsvs.ip_records.records_to_ip') }} <code>{{ $route.params.ip }}</code></h1> <FQDNRecordTable :full_edit_fqdn_reducer="full_edit_fqdn_reducer" :create_record_reducer="create_record_reducer" - :fqdn_rrs="records" :fqdn="fqdn"></FQDNRecordTable> + :fqdn_rrs="records" :fqdn="fqdn" :subnets="subnets"></FQDNRecordTable> </div> </template> @@ -16,6 +16,7 @@ export default { return { records: null, fqdn: null, + subnets: null, full_edit_fqdn_reducer: null, create_record_reducer: null } @@ -25,6 +26,7 @@ export default { this.records = null const response = await FQDNRRService.getRecordsByIP(this.$store.state.netdb_axios_config, this.$route.params.ip) this.records = response.data.record_list + this.subnets = response.data.ip_subnet_list const fqdnSelections = {} for (const t of response.data.fqdn_type_list) { let disp_name = t.description -- GitLab