|
|
const Ajv = require("ajv") |
|
|
const addFormats = require("ajv-formats") |
|
|
|
|
|
const ajv = new Ajv() |
|
|
addFormats(ajv) |
|
|
|
|
|
const schema = { |
|
|
"type": "object", |
|
|
"properties": { |
|
|
"mode": { |
|
|
"type": "string", |
|
|
"enum": ["source", "turnstile-min", "turnstile-max", "waf-session"], |
|
|
}, |
|
|
"proxy": { |
|
|
"type": "object", |
|
|
"properties": { |
|
|
"host": { "type": "string" }, |
|
|
"port": { "type": "integer" }, |
|
|
"username": { "type": "string" }, |
|
|
"password": { "type": "string" } |
|
|
}, |
|
|
"additionalProperties": false |
|
|
}, |
|
|
"url": { |
|
|
"type": "string", |
|
|
"format": "uri", |
|
|
}, |
|
|
"authToken": { |
|
|
"type": "string" |
|
|
}, |
|
|
"siteKey": { |
|
|
"type": "string" |
|
|
} |
|
|
}, |
|
|
"required": ["mode", "url"], |
|
|
"additionalProperties": false |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function validate(data) { |
|
|
const valid = ajv.validate(schema, data) |
|
|
if (!valid) return ajv.errors |
|
|
else return true |
|
|
} |
|
|
|
|
|
module.exports = validate |