adds description field

* don't cache ajax reqs on localhost
 * enable markdown editor
This commit is contained in:
Smith
2024-03-23 09:01:09 +01:00
parent 4ad9fbb608
commit 2c00299799
10 changed files with 49 additions and 6 deletions

1
TODO
View File

@@ -1,3 +1,4 @@
// serve a list of game servers and some basic info
// flush game server specific (d/t) data
//v4

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "game-server-watcher",
"version": "3.1.2",
"version": "3.1.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "game-server-watcher",
"version": "3.1.2",
"version": "3.1.3",
"license": "AGPL-3.0-or-later",
"dependencies": {
"@slack/bolt": "^3.17.1",

View File

@@ -1,6 +1,6 @@
{
"name": "game-server-watcher",
"version": "3.1.2",
"version": "3.1.3",
"description": "A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎",
"exports": "./dist/server.js",
"type": "module",

View File

@@ -201,6 +201,30 @@
"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.",

View File

@@ -15,19 +15,19 @@
<link href="https://fonts.googleapis.com/css2?family=Marvel&family=Roboto&display=swap" rel="stylesheet">
<link href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/animate.css@4/animate.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/simplemde@1/dist/simplemde.min.css" rel="stylesheet">
<!--
<link href="https://cdn.jsdelivr.net/npm/select2@4/dist/css/select2.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/flatpickr@4/dist/flatpickr.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/simplemde@1/dist/simplemde.min.css" rel="stylesheet">
-->
<script src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/simplemde@1/dist/simplemde.min.js"></script>
<!--
<script src="https://cdn.jsdelivr.net/npm/select2@4/dist/js/select2.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/flatpickr@4/dist/flatpickr.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/simplemde@1/dist/simplemde.min.js"></script>
-->
<script src="https://cdn.jsdelivr.net/npm/node-forge@1/dist/forge.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script>

View File

@@ -45,7 +45,7 @@ $(async () => {
"use_default_values": true,
"ajax": true,
"ajaxCredentials": false,
"ajax_cache_responses": true,
"ajax_cache_responses": !Boolean(location.hostname === "localhost" || location.hostname === "127.0.0.1"),
"ajax_cache_buster": 'gsw-v' + gswFeatures.features.version + '+gamedig-v' + gswFeatures.features.gamedig,
"disable_edit_json": false,
"disable_collapse": true,

View File

@@ -178,6 +178,8 @@ class ServerInfoMessage {
fields.push({ name: 'Players', value: String(gs.info.playersNum + '/' + gs.info.playersMax), inline: true});
fields.push({ name: 'Address', value: String(gs.info.connect)});
if (gs.config.description) fields.push({ name: 'Description', value: String(gs.config.description).slice(0, 1024)});
if (showPlayersList && gs.info?.players.length > 0) {
const pNames: string[] = [];
const pTimes: string[] = [];

View File

@@ -202,6 +202,17 @@ class ServerInfoMessage {
});
}
if (gs.config.description) {
text += '\r\nDescription:\r\n' + String(gs.config.description).slice(0, 1024);
blocks.push({
type: 'section',
fields: [{
type: 'mrkdwn',
text: '*Description* \r\n' + String(gs.config.description).slice(0, 1024)
}]
});
}
if (showPlayersList && gs.info?.players.length > 0) {
const pNames: string[] = [];
for (const p of gs.info?.players) {

View File

@@ -131,6 +131,7 @@ class ServerInfoMessage {
const chart = showGraph ? '[📈](' + gs.history.statsChart() + ')' : '';
let infoText = this.escapeMarkdown(gs.niceName) + ' offline...';
if (gs.info && gs.online) {
infoText = [
this.escapeMarkdown(gs.niceName),
@@ -139,6 +140,8 @@ class ServerInfoMessage {
'Players ' + gs.info.playersNum + '/' + gs.info.playersMax
].join('\n');
if (gs.config.description) infoText += 'Description:\n' + String(gs.config.description).slice(0, 1024) + '\n';
if (showPlayersList && gs.info.players.length > 0) {
const pnArr: string[] = [];
for (const p of gs.info.players) {
@@ -154,6 +157,7 @@ class ServerInfoMessage {
}
}
}
infoText += chart;
try {

View File

@@ -39,6 +39,7 @@ export interface GameServerConfig {
updateIntervalMinutes?: number;//5
graphHistoryHours?: number;//12
timezoneOffset?: number;//0
description?: string;
discord?: DiscordConfig[];
telegram?: TelegramConfig[];
slack?: SlackConfig[];