Files
game-server-watcher/public/game-server-config.schema.json
Smith 2c00299799 adds description field
* don't cache ajax reqs on localhost
 * enable markdown editor
2024-03-23 09:01:09 +01:00

306 lines
10 KiB
JSON

{
"title": "Game Server",
"type": "object",
"required": [
"name",
"type",
"host",
"port"
],
"properties": {
"name": {
"title": "Name",
"type": "string",
"minLength": 1,
"options": {
"grid_columns": 12
}
},
"type": {
"title": "GameDig type",
"description": "Check the <a href=\"https://github.com/gamedig/node-gamedig/blob/master/GAMES_LIST.md\">GameDig games list</a> for requirements.",
"type": "string",
"minLength": 1,
"options": {
"grid_columns": 3
},
"$ref": "gamedig-games"
},
"host": {
"title": "Host name or IP",
"type": "string",
"pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)+([A-Za-z]|[A-Za-z][A-Za-z0-9\\-]*[A-Za-z0-9])$",
"options": {
"grid_columns": 3,
"error_messages": {
"en": {
"error_pattern": "Value must be a valid host name or IP"
}
}
}
},
"port": {
"title": "Port number",
"type": "integer",
"minimum": 1,
"maximum": 65535,
"format": "number",
"options": {
"grid_columns": 3
}
},
"appId": {
"title": "Steam App ID",
"description": "Look for the <i>AppID</i> in the <a href=\"https://steamdb.info/apps/\">apps list</a>.",
"type": "integer",
"minimum": 1,
"format": "number",
"options": {
"grid_columns": 3
}
},
"discord": {
"type": "array",
"title": "Discord channels",
"description": "The simplest way to get a discord channel ID is to enable developer mode in settings, then right clicking on the channel name will give you the <b>Copy ID</b> option.",
"minItems": 0,
"uniqueItems": true,
"items": {
"type": "object",
"title": "Channel",
"required": [
"channelId"
],
"properties": {
"channelId": {
"title": "Channel ID",
"type": "string"
},
"showPlayersList": {
"title": "Show players list",
"default": true,
"type": "boolean",
"format": "checkbox"
},
"showGraph": {
"title": "Show graph",
"default": true,
"type": "boolean",
"format": "checkbox"
},
"onlineColor": {
"title": "Online color",
"default": "#000000",
"type": "string",
"format": "color"
},
"offlineColor": {
"title": "Offline color",
"default": "#ff0000",
"type": "string",
"format": "color"
}
}
},
"format": "table",
"options": {
"grid_columns": 12
}
},
"telegram": {
"type": "array",
"title": "Telegram chats",
"description": "The simplest way to get a telegram chat ID is to invite <a target=\"_blank\" href=\"https://telegram.me/getidsbot\">@getidsbot</a> and use <code>/start</code> to make it post (among other data) the chat ID.",
"minItems": 0,
"uniqueItems": true,
"items": {
"type": "object",
"title": "Chat",
"required": [
"chatId"
],
"properties": {
"chatId": {
"type": "string",
"title": "Chat ID"
},
"showPlayersList": {
"title": "Show players list",
"default": true,
"type": "boolean",
"format": "checkbox"
},
"showGraph": {
"title": "Show graph",
"default": true,
"type": "boolean",
"format": "checkbox"
}
}
},
"format": "table",
"options": {
"grid_columns": 12
}
},
"slack": {
"type": "array",
"title": "Slack channels",
"description": "The simplest way to get a slack channel ID is to right click on the channel name, then go to <b>View channel details</b> and scroll down to the very bottom where you can copy the <i>Channel ID</i>.",
"minItems": 0,
"uniqueItems": true,
"items": {
"type": "object",
"title": "Channel",
"required": [
"channelId"
],
"properties": {
"channelId": {
"title": "Channel ID",
"type": "string"
},
"showPlayersList": {
"title": "Show players list",
"default": true,
"type": "boolean",
"format": "checkbox"
},
"showGraph": {
"title": "Show graph",
"default": true,
"type": "boolean",
"format": "checkbox"
}
}
},
"format": "table",
"options": {
"grid_columns": 12
}
},
"graphHistoryHours": {
"title": "Graph history time span (hours)",
"type": "integer",
"default": 12,
"minimum": 1,
"maximum": 24,
"format": "range",
"options": {
"grid_columns": 12
}
},
"timezoneOffset": {
"title": "Time zone offset of the server",
"default": 0,
"type": "number",
"minimum": -12,
"maximum": 14,
"format": "range",
"options": {
"grid_columns": 12
}
},
"description": {
"title": "Description",
"type": "string",
"format": "markdown",
"options": {
"simplemde": {
"spellChecker": false,
"toolbar": [
"bold",
"italic",
"|",
"unordered-list",
"ordered-list",
"|",
"code",
"link",
"quote",
"|",
"side-by-side",
"preview"
]
}
}
},
"givenPortOnly": {
"title": "givenPortOnly",
"description": "Only attempt to query server on given port.",
"type": "boolean",
"format": "checkbox",
"options": {
"grid_columns": 3
}
},
"requestRules": {
"title": "requestRules (Valve)",
"description": "Additional server info may be fetched into the <code>raw</code> field.",
"type": "boolean",
"format": "checkbox",
"options": {
"grid_columns": 3
}
},
"requestRulesRequired": {
"title": "requestRulesRequired (Valve)",
"description": "<code>requestRules</code> is always required to have a response or the query will timeout.",
"type": "boolean",
"format": "checkbox",
"options": {
"grid_columns": 3
}
},
"requestPlayersRequired": {
"title": "requestPlayersRequired (Valve)",
"description": "Querying players is always required to have a response or the query will timeout. Some <a href=\"https://github.com/gamedig/node-gamedig/blob/master/GAMES_LIST.md\">games</a> may not provide a players response.",
"type": "boolean",
"format": "checkbox",
"options": {
"grid_columns": 3
}
},
"teamspeakQueryPort": {
"title": "teamspeakQueryPort (TeamSpeak 3)",
"type": "integer",
"minimum": 1,
"maximum": 65535,
"format": "number",
"options": {
"grid_columns": 3
}
},
"guildId": {
"title": "guildId (Discord)",
"type": "string",
"options": {
"grid_columns": 3
}
},
"login": {
"title": "login (Nadeo)",
"type": "string",
"options": {
"grid_columns": 3
}
},
"password": {
"title": "password (Nadeo)",
"type": "string",
"options": {
"grid_columns": 3
}
},
"token": {
"title": "token (Terraria)",
"type": "string",
"options": {
"grid_columns": 3
}
}
},
"format": "grid-strict",
"headerTemplate": "{{#self.name}}{{self.name}}{{/self.name}}{{^self.name}}{{self.type}}:{{self.host}}:{{self.port}}{{/self.name}}"
}