104 lines
2.7 KiB
JavaScript
104 lines
2.7 KiB
JavaScript
/**
|
|
* Schema for validating the config
|
|
*/
|
|
const configSchema = {
|
|
type: 'object',
|
|
properties: {
|
|
listen: {
|
|
type: 'object',
|
|
properties: {
|
|
ip: { type: 'string', format: 'ipv4' },
|
|
port: { type: 'integer', minimum: 1, maximum: 65535 },
|
|
},
|
|
required: ['ip', 'port'],
|
|
},
|
|
http: {
|
|
type: 'object',
|
|
properties: {
|
|
origins: {
|
|
type: 'array',
|
|
items: { type: 'string' },
|
|
},
|
|
},
|
|
required: ['origins'],
|
|
},
|
|
user: {
|
|
type: 'object',
|
|
properties: {
|
|
name: { type: ['string', 'null'] },
|
|
password: { type: ['string', 'null'] },
|
|
privateKey: { type: ['string', 'null'] },
|
|
passphrase: { type: ['string', 'null'] },
|
|
},
|
|
required: ['name', 'password'],
|
|
},
|
|
ssh: {
|
|
type: 'object',
|
|
properties: {
|
|
host: { type: ['string', 'null'] },
|
|
port: { type: 'integer', minimum: 1, maximum: 65535 },
|
|
term: { type: 'string' },
|
|
readyTimeout: { type: 'integer' },
|
|
keepaliveInterval: { type: 'integer' },
|
|
keepaliveCountMax: { type: 'integer' },
|
|
algorithms: {
|
|
type: 'object',
|
|
properties: {
|
|
kex: {
|
|
type: 'array',
|
|
items: { type: 'string' },
|
|
},
|
|
cipher: {
|
|
type: 'array',
|
|
items: { type: 'string' },
|
|
},
|
|
hmac: {
|
|
type: 'array',
|
|
items: { type: 'string' },
|
|
},
|
|
serverHostKey: {
|
|
type: 'array',
|
|
items: { type: 'string' },
|
|
},
|
|
compress: {
|
|
type: 'array',
|
|
items: { type: 'string' },
|
|
},
|
|
},
|
|
required: ['kex', 'cipher', 'hmac', 'serverHostKey', 'compress'],
|
|
},
|
|
},
|
|
required: ['host', 'port', 'term', 'readyTimeout', 'keepaliveInterval', 'keepaliveCountMax'],
|
|
},
|
|
header: {
|
|
type: 'object',
|
|
properties: {
|
|
text: { type: ['string', 'null'] },
|
|
background: { type: 'string' },
|
|
},
|
|
required: ['text', 'background'],
|
|
},
|
|
options: {
|
|
type: 'object',
|
|
properties: {
|
|
challengeButton: { type: 'boolean' },
|
|
autoLog: { type: 'boolean' },
|
|
allowReauth: { type: 'boolean' },
|
|
allowReconnect: { type: 'boolean' },
|
|
allowReplay: { type: 'boolean' },
|
|
},
|
|
required: ['challengeButton', 'allowReauth', 'allowReplay'],
|
|
},
|
|
session: {
|
|
type: 'object',
|
|
properties: {
|
|
secret: { type: 'string' },
|
|
name: { type: 'string' },
|
|
},
|
|
required: ['secret', 'name'],
|
|
},
|
|
},
|
|
required: ['listen', 'http', 'user', 'ssh', 'header', 'options'],
|
|
}
|
|
|
|
export default configSchema
|