-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathzone_record.js
More file actions
51 lines (37 loc) · 950 Bytes
/
zone_record.js
File metadata and controls
51 lines (37 loc) · 950 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const Joi = require('joi')
const shared = require('./shared')
exports.id = shared.uint32.min(1).required()
exports.owner = Joi.string()
.min(1)
.max(255)
.domain({ minDomainSegments: 1, allowFullyQualified: false, tlds: false })
.required()
exports.v3 = Joi.object({
id: exports.id,
zid: shared.uint32.min(1).required(),
owner: exports.owner,
ttl: shared.ttl.required(),
type: Joi.string()
.valid('A', 'AAAA', 'PTR', 'MX', 'NS', 'CNAME', 'SRV')
.required(),
address: Joi.string()
.ip({ version: ['ipv4'], cidr: 'forbidden' })
.min(7)
.max(15)
.required(),
deleted: Joi.boolean(),
})
exports.GET_req = Joi.object({
id: shared.uint32,
zid: shared.uint32,
deleted: Joi.boolean(),
})
exports.GET_res = Joi.object({
zone_record: Joi.array().items(exports.v3),
meta: shared.meta,
})
exports.POST = exports.v3
exports.DELETE = Joi.object({
id: exports.id,
deleted: Joi.boolean(),
})