瀏覽代碼

feat(webapp): add CDNSKEY, DNSKEY input validation

Peter Thomassen 4 年之前
父節點
當前提交
e769978ced

+ 8 - 0
webapp/src/components/Field/Record/CDNSKEY.vue

@@ -0,0 +1,8 @@
+<script>
+import RecordDNSKEY from './DNSKEY.vue';
+
+export default {
+  name: 'RecordCDNSKEY',
+  extends: RecordDNSKEY,
+};
+</script>

+ 34 - 0
webapp/src/components/Field/Record/DNSKEY.vue

@@ -0,0 +1,34 @@
+<script>
+import { helpers, integer, between } from 'vuelidate/lib/validators';
+import Record from '../Record.vue';
+
+const base64 = helpers.regex('base64', /^[0-9a-zA-Z+/][0-9a-zA-Z+/\s]*(=\s*){0,3}$/);
+
+const MAX8 = 255;
+const int8 = between(0, MAX8);
+
+const MAX16 = 65535;
+const int16 = between(0, MAX16);
+
+const equals3 = (value) => !value || value == 3;
+
+export default {
+  name: 'RecordDNSKEY',
+  extends: Record,
+  data: () => ({
+    fields: [
+      { label: 'Flags', validations: { integer, int16 } },
+      { label: 'Protocol', validations: { integer, equals3 } },
+      { label: 'Algorithm', validations: { integer, int8 } },
+      { label: 'Public Key', validations: { base64 } },
+    ],
+    errors: {
+      integer: 'Please enter an integer.',
+      int8: `0 ≤ … ≤ ${MAX8}`,
+      int16: `0 ≤ … ≤ ${MAX16}`,
+      equals3: 'Must be 3.',
+      base64: 'Please use base64 encoding.',
+    },
+  }),
+};
+</script>

+ 6 - 0
webapp/src/components/Field/RecordList.vue

@@ -34,8 +34,10 @@ import Record from './Record.vue';
 import RecordA from './Record/A.vue';
 import RecordA from './Record/A.vue';
 import RecordAAAA from './Record/AAAA.vue';
 import RecordAAAA from './Record/AAAA.vue';
 import RecordCAA from './Record/CAA.vue';
 import RecordCAA from './Record/CAA.vue';
+import RecordCDNSKEY from './Record/CDNSKEY.vue';
 import RecordCDS from './Record/CDS.vue';
 import RecordCDS from './Record/CDS.vue';
 import RecordCNAME from './Record/CNAME.vue';
 import RecordCNAME from './Record/CNAME.vue';
+import RecordDNSKEY from './Record/DNSKEY.vue';
 import RecordDS from './Record/DS.vue';
 import RecordDS from './Record/DS.vue';
 import RecordMX from './Record/MX.vue';
 import RecordMX from './Record/MX.vue';
 import RecordNS from './Record/NS.vue';
 import RecordNS from './Record/NS.vue';
@@ -54,8 +56,10 @@ export default {
     RecordA,
     RecordA,
     RecordAAAA,
     RecordAAAA,
     RecordCAA,
     RecordCAA,
+    RecordCDNSKEY,
     RecordCDS,
     RecordCDS,
     RecordCNAME,
     RecordCNAME,
+    RecordDNSKEY,
     RecordDS,
     RecordDS,
     RecordMX,
     RecordMX,
     RecordNS,
     RecordNS,
@@ -100,8 +104,10 @@ export default {
         'A',
         'A',
         'AAAA',
         'AAAA',
         'CAA',
         'CAA',
+        'CDNSKEY',
         'CDS',
         'CDS',
         'CNAME',
         'CNAME',
+        'DNSKEY',
         'DS',
         'DS',
         'MX',
         'MX',
         'NS',
         'NS',