diff --git a/frontend/src/api-services/dns_fqdn.service.js b/frontend/src/api-services/dns_fqdn.service.js index 8fac8146d18a9539068da0cd3bf107b353a93705..4d553b0f77c831032ba2f950aef1c9db8115b718 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 125bff2c54551ac8f63d22f905d2444513d2e554..95104fd36c261980140f8ab71cc187cc6fad0672 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 591d888e443cb0ea0982c681e15bae9c31251b16..e8771bab6a00e6066b6190f2b010cf2e68d4b382 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 d68a9213c2e25bc062c15c4fe3a5c9f2a0b1837b..c25dfb4aefeeff714e88cb42d968082852307dbc 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 91dede3669122e6193c79e43dea3e81c9c08362a..8f5e5877ee39e1d4a774b1a56792a72214dc9c6b 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 2b191e6254bb2258208bf90495d2ee26eb0c2840..51098fa05972c3884f02450cae41e7f1dada55ce 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 1fd7081024c2d0790fb6a74f7ca6449c05b1ecb8..0bc5f2d54c13bf4943eeaf026c83a4761bc3daba 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 d56d6ce0b98bc6b91ff8df879b829f0b3ce89b6d..b9ecbc1bd5f5979fb2c00b38d30bf789c3b5f699 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 2cafbae18405445d3ad1dbfcadd560938d3c1997..67a142f27469874ab3dadb3e632b2b0e558fda82 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