in src/legacy/server/config/schema.js [39:254]
export default () =>
Joi.object({
elastic: Joi.object({
apm: HANDLED_IN_NEW_PLATFORM,
}).default(),
pkg: Joi.object({
version: Joi.string().default(Joi.ref('$version')),
branch: Joi.string().default(Joi.ref('$branch')),
buildNum: Joi.number().default(Joi.ref('$buildNum')),
buildSha: Joi.string().default(Joi.ref('$buildSha')),
}).default(),
env: Joi.object({
name: Joi.string().default(Joi.ref('$env')),
dev: Joi.boolean().default(Joi.ref('$dev')),
prod: Joi.boolean().default(Joi.ref('$prod')),
}).default(),
dev: HANDLED_IN_NEW_PLATFORM,
pid: HANDLED_IN_NEW_PLATFORM,
csp: HANDLED_IN_NEW_PLATFORM,
server: Joi.object({
name: Joi.string().default(os.hostname()),
// keep them for BWC, remove when not used in Legacy.
// validation should be in sync with one in New platform.
// https://github.com/opensearch-project/OpenSearch-Dashboards/blob/master/src/core/server/http/http_config.ts
basePath: Joi.string()
.default('')
.allow('')
.regex(/(^$|^\/.*[^\/]$)/, `start with a slash, don't end with one`),
host: Joi.string().hostname().default('localhost'),
port: Joi.number().default(5601),
rewriteBasePath: Joi.boolean().when('basePath', {
is: '',
then: Joi.default(false).valid(false),
otherwise: Joi.default(false),
}),
autoListen: HANDLED_IN_NEW_PLATFORM,
cors: HANDLED_IN_NEW_PLATFORM,
customResponseHeaders: HANDLED_IN_NEW_PLATFORM,
keepaliveTimeout: HANDLED_IN_NEW_PLATFORM,
maxPayloadBytes: HANDLED_IN_NEW_PLATFORM,
socketTimeout: HANDLED_IN_NEW_PLATFORM,
ssl: HANDLED_IN_NEW_PLATFORM,
compression: HANDLED_IN_NEW_PLATFORM,
uuid: HANDLED_IN_NEW_PLATFORM,
xsrf: HANDLED_IN_NEW_PLATFORM,
}).default(),
uiSettings: HANDLED_IN_NEW_PLATFORM,
logging: Joi.object()
.keys({
appenders: HANDLED_IN_NEW_PLATFORM,
loggers: HANDLED_IN_NEW_PLATFORM,
root: HANDLED_IN_NEW_PLATFORM,
silent: Joi.boolean().default(false),
quiet: Joi.boolean().when('silent', {
is: true,
then: Joi.default(true).valid(true),
otherwise: Joi.default(false),
}),
verbose: Joi.boolean().when('quiet', {
is: true,
then: Joi.valid(false).default(false),
otherwise: Joi.default(false),
}),
events: Joi.any().default({}),
dest: Joi.string().default('stdout'),
filter: Joi.any().default({}),
json: Joi.boolean().when('dest', {
is: 'stdout',
then: Joi.default(!process.stdout.isTTY),
otherwise: Joi.default(true),
}),
timezone: Joi.string().allow(false).default('UTC'),
rotate: Joi.object()
.keys({
enabled: Joi.boolean().default(false),
everyBytes: Joi.number()
// > 1MB
.greater(1048576)
// < 1GB
.less(1073741825)
// 10MB
.default(10485760),
keepFiles: Joi.number().greater(2).less(1024).default(7),
pollingInterval: Joi.number().greater(5000).less(3600000).default(10000),
usePolling: Joi.boolean().default(false),
})
.default(),
})
.default(),
ops: Joi.object({
interval: Joi.number().default(5000),
cGroupOverrides: HANDLED_IN_NEW_PLATFORM,
}).default(),
// still used by the legacy i18n mixin
plugins: Joi.object({
paths: Joi.array().items(Joi.string()).default([]),
scanDirs: Joi.array().items(Joi.string()).default([]),
initialize: Joi.boolean().default(true),
}).default(),
path: HANDLED_IN_NEW_PLATFORM,
stats: HANDLED_IN_NEW_PLATFORM,
status: HANDLED_IN_NEW_PLATFORM,
map: Joi.object({
includeOpenSearchMapsService: Joi.boolean().default(true),
proxyOpenSearchMapsServiceInMaps: Joi.boolean().default(false),
showRegionBlockedWarning: Joi.boolean().default(false),
tilemap: Joi.object({
url: Joi.string(),
options: Joi.object({
attribution: Joi.string(),
minZoom: Joi.number().min(0, 'Must be 0 or higher').default(0),
maxZoom: Joi.number().default(10),
tileSize: Joi.number(),
subdomains: Joi.array().items(Joi.string()).single(),
errorTileUrl: Joi.string().uri(),
tms: Joi.boolean(),
reuseTiles: Joi.boolean(),
bounds: Joi.array().items(Joi.array().items(Joi.number()).min(2).required()).min(2),
default: Joi.boolean(),
}).default({
default: true,
}),
}).default(),
regionmap: Joi.object({
includeOpenSearchMapsService: Joi.boolean().default(true),
layers: Joi.array()
.items(
Joi.object({
url: Joi.string(),
format: Joi.object({
type: Joi.string().default('geojson'),
}).default({
type: 'geojson',
}),
meta: Joi.object({
feature_collection_path: Joi.string().default('data'),
}).default({
feature_collection_path: 'data',
}),
attribution: Joi.string(),
name: Joi.string(),
fields: Joi.array().items(
Joi.object({
name: Joi.string(),
description: Joi.string(),
})
),
})
)
.default([]),
}).default(),
manifestServiceUrl: Joi.string().default('').allow(''),
opensearchManifestServiceUrl: Joi.string().default('https://maps.opensearch.org/manifest'),
emsFileApiUrl: Joi.string().default('https://vectors.maps.opensearch.org'),
emsTileApiUrl: Joi.string().default('https://tiles.maps.opensearch.org'),
emsLandingPageUrl: Joi.string().default('https://maps.opensearch.org'),
emsFontLibraryUrl: Joi.string().default(
'https://tiles.maps.opensearch.org/fonts/{fontstack}/{range}.pbf'
),
emsTileLayerId: Joi.object({
bright: Joi.string().default('road_map'),
desaturated: Joi.string().default('road_map_desaturated'),
dark: Joi.string().default('dark_map'),
}).default({
bright: 'road_map',
desaturated: 'road_map_desaturated',
dark: 'dark_map',
}),
}).default(),
i18n: Joi.object({
locale: Joi.string().default('en'),
}).default(),
// temporarily moved here from the (now deleted) opensearch-dashboards legacy plugin
opensearchDashboards: Joi.object({
enabled: Joi.boolean().default(true),
index: Joi.string().default('.kibana'),
autocompleteTerminateAfter: Joi.number().integer().min(1).default(100000),
// TODO Also allow units here like in opensearch config once this is moved to the new platform
autocompleteTimeout: Joi.number().integer().min(1).default(1000),
branding: Joi.object({
logo: Joi.object({
defaultUrl: Joi.any().default('/'),
darkModeUrl: Joi.any().default('/'),
}),
mark: Joi.object({
defaultUrl: Joi.any().default('/'),
darkModeUrl: Joi.any().default('/'),
}),
loadingLogo: Joi.object({
defaultUrl: Joi.any().default('/'),
darkModeUrl: Joi.any().default('/'),
}),
faviconUrl: Joi.any().default('/'),
applicationTitle: Joi.any().default(''),
}),
}).default(),
savedObjects: HANDLED_IN_NEW_PLATFORM,
}).default();