webssh2/app/configSchema.js

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