Fixes related with ANSI colors

This commit is contained in:
Carlos 2024-07-25 11:24:42 +02:00
parent ef7ebdc219
commit 652a81bce4
8 changed files with 29 additions and 29 deletions

View File

@ -4,7 +4,7 @@
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/mesacarlos/WebConsole)](https://github.com/mesacarlos/WebConsole/releases/latest) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/mesacarlos/WebConsole)](https://github.com/mesacarlos/WebConsole/releases/latest)
![GitHub All Releases](https://img.shields.io/github/downloads/mesacarlos/WebConsole/total?label=total%20downloads) ![GitHub All Releases](https://img.shields.io/github/downloads/mesacarlos/WebConsole/total?label=total%20downloads)
WebConsole is a Spigot plugin for Minecraft 1.8-1.18+ that allows you to view your server console and manage your server from anywhere. It creates a WebSocket server in the background used by the web interface to send commands, receive your console log and manage your server. WebConsole is a Spigot plugin for Minecraft 1.8-1.21+ that allows you to view your server console and manage your server from anywhere. It creates a WebSocket server in the background used by the web interface to send commands, receive your console log and manage your server.
Don't worry about privacy or security: all data is stored in your browser locally and your PC will connect directly to your minecraft server. No intermediary web servers, just you and your MC server. Don't worry about privacy or security: all data is stored in your browser locally and your PC will connect directly to your minecraft server. No intermediary web servers, just you and your MC server.

View File

@ -1,12 +1,12 @@
{ {
"name": "web-console-client", "name": "web-console-client",
"version": "2.5.0", "version": "2.6.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "web-console-client", "name": "web-console-client",
"version": "2.5.0", "version": "2.6.0",
"dependencies": { "dependencies": {
"@angular/animations": "~13.3.0", "@angular/animations": "~13.3.0",
"@angular/common": "~13.3.0", "@angular/common": "~13.3.0",
@ -26,6 +26,7 @@
"@ngx-translate/core": "^14.0.0", "@ngx-translate/core": "^14.0.0",
"@ngx-translate/http-loader": "^7.0.0", "@ngx-translate/http-loader": "^7.0.0",
"@popperjs/core": "^2.10.2", "@popperjs/core": "^2.10.2",
"ansi_up": "^6.0.2",
"bootstrap": "^5.1.3", "bootstrap": "^5.1.3",
"rxjs": "~7.5.0", "rxjs": "~7.5.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",
@ -3432,6 +3433,14 @@
"ajv": "^8.8.2" "ajv": "^8.8.2"
} }
}, },
"node_modules/ansi_up": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-6.0.2.tgz",
"integrity": "sha512-3G3vKvl1ilEp7J1u6BmULpMA0xVoW/f4Ekqhl8RTrJrhEBkonKn5k3bUc5Xt+qDayA6iDX0jyUh3AbZjB/l0tw==",
"engines": {
"node": "*"
}
},
"node_modules/ansi-colors": { "node_modules/ansi-colors": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@ -14572,6 +14581,11 @@
"fast-deep-equal": "^3.1.3" "fast-deep-equal": "^3.1.3"
} }
}, },
"ansi_up": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-6.0.2.tgz",
"integrity": "sha512-3G3vKvl1ilEp7J1u6BmULpMA0xVoW/f4Ekqhl8RTrJrhEBkonKn5k3bUc5Xt+qDayA6iDX0jyUh3AbZjB/l0tw=="
},
"ansi-colors": { "ansi-colors": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",

View File

@ -1,6 +1,6 @@
{ {
"name": "web-console-client", "name": "web-console-client",
"version": "2.5.0", "version": "2.7.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",
@ -28,6 +28,7 @@
"@ngx-translate/core": "^14.0.0", "@ngx-translate/core": "^14.0.0",
"@ngx-translate/http-loader": "^7.0.0", "@ngx-translate/http-loader": "^7.0.0",
"@popperjs/core": "^2.10.2", "@popperjs/core": "^2.10.2",
"ansi_up": "^6.0.2",
"bootstrap": "^5.1.3", "bootstrap": "^5.1.3",
"rxjs": "~7.5.0", "rxjs": "~7.5.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",

View File

@ -19,6 +19,7 @@ import { WebSocketResponse } from 'src/app/_dto/response/WebSocketResponse';
import { ServerDto } from 'src/app/_dto/ServerDto'; import { ServerDto } from 'src/app/_dto/ServerDto';
import { SettingsEnum, StorageService } from 'src/app/_services/storage.service'; import { SettingsEnum, StorageService } from 'src/app/_services/storage.service';
import { WebconsoleService } from 'src/app/_services/webconsole.service'; import { WebconsoleService } from 'src/app/_services/webconsole.service';
import { AnsiUp } from "ansi_up"
@Component({ @Component({
selector: 'app-console', selector: 'app-console',
@ -211,26 +212,7 @@ export class ConsoleComponent implements OnInit, AfterViewInit, OnDestroy {
msg = msg.replace(/</g, "&lt;"); msg = msg.replace(/</g, "&lt;");
msg = msg.replace(/(?:\r\n|\r|\n)/g, "<br>"); msg = msg.replace(/(?:\r\n|\r|\n)/g, "<br>");
//Color filter for Windows (thanks to SuperPykkon) //Color filter for MC codes.
msg = msg.replace(/\[0;30;22m/g, "<span style='color: #000000;'>"); //&0
msg = msg.replace(/\[0;34;22m/g, "<span style='color: #0000AA;'>"); //&1
msg = msg.replace(/\[0;32;22m/g, "<span style='color: #00AA00;'>"); //&2
msg = msg.replace(/\[0;36;22m/g, "<span style='color: #00AAAA;'>"); //&3
msg = msg.replace(/\[0;31;22m/g, "<span style='color: #AA0000;'>"); //&4
msg = msg.replace(/\[0;35;22m/g, "<span style='color: #AA00AA;'>"); //&5
msg = msg.replace(/\[0;33;22m/g, "<span style='color: #FFAA00;'>"); //&6
msg = msg.replace(/\[0;37;22m/g, "<span style='color: #AAAAAA;'>"); //&7
msg = msg.replace(/\[0;30;1m/g, "<span style='color: #555555;'>"); //&8
msg = msg.replace(/\[0;34;1m/g, "<span style='color: #5555FF;'>"); //&9
msg = msg.replace(/\[0;32;1m/g, "<span style='color: #55FF55;'>"); //&a
msg = msg.replace(/\[0;36;1m/g, "<span style='color: #55FFFF;'>"); //&b
msg = msg.replace(/\[0;31;1m/g, "<span style='color: #FF5555;'>"); //&c
msg = msg.replace(/\[0;35;1m/g, "<span style='color: #FF55FF;'>"); //&d
msg = msg.replace(/\[0;33;1m/g, "<span style='color: #FFFF55;'>"); //&e
msg = msg.replace(/\[0;37;1m/g, "<span style='color: #FFFFFF;'>"); //&f
msg = msg.replace(/\[m/g, "</span>"); //&f
//Color filter for UNIX (This is easier!)
msg = msg.replace(/§0/g, "<span style='color: #000000;'>"); //&0 msg = msg.replace(/§0/g, "<span style='color: #000000;'>"); //&0
msg = msg.replace(/§1/g, "<span style='color: #0000AA;'>"); //&1 msg = msg.replace(/§1/g, "<span style='color: #0000AA;'>"); //&1
msg = msg.replace(/§2/g, "<span style='color: #00AA00;'>"); //&2 msg = msg.replace(/§2/g, "<span style='color: #00AA00;'>"); //&2
@ -280,6 +262,10 @@ export class ConsoleComponent implements OnInit, AfterViewInit, OnDestroy {
msg = msg.replace(/r/g, "</span>"); //&r msg = msg.replace(/r/g, "</span>"); //&r
// ANSI Processing
var ansi_up = new AnsiUp();
msg = ansi_up.ansi_to_html(msg);
//Append datetime if enabled //Append datetime if enabled
if (this.storageService.getSetting(SettingsEnum.DateTimePrefix)) { if (this.storageService.getSetting(SettingsEnum.DateTimePrefix)) {
if (typeof time !== 'undefined' && time !== null) //if time is present and not null if (typeof time !== 'undefined' && time !== null) //if time is present and not null

View File

@ -16,7 +16,7 @@
</li> </li>
</ul> </ul>
<ul class="navbar-nav ms-auto"> <ul class="navbar-nav ms-auto">
<span class="navbar-text">v2.5 - </span> <span class="navbar-text">v2.7 - </span>
<a class="nav-link" target="_blank" href="https://github.com/mesacarlos/WebConsole"> <a class="nav-link" target="_blank" href="https://github.com/mesacarlos/WebConsole">
<fa-icon [icon]="icons.faArrowUpRightFromSquare"></fa-icon> GitHub <fa-icon [icon]="icons.faArrowUpRightFromSquare"></fa-icon> GitHub
</a> </a>

View File

@ -1,7 +1,7 @@
name: WebConsole name: WebConsole
main: es.mesacarlos.webconsole.WebConsole main: es.mesacarlos.webconsole.WebConsole
api-version: 1.13 api-version: 1.13
version: 2.6 version: 2.7
description: WebSocket-based web console description: WebSocket-based web console
author: Carlos Mesa author: Carlos Mesa
commands: commands:

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>WebConsole</groupId> <groupId>WebConsole</groupId>
<artifactId>WebConsole</artifactId> <artifactId>WebConsole</artifactId>
<version>2.6</version> <version>2.7</version>
<build> <build>
<sourceDirectory>src</sourceDirectory> <sourceDirectory>src</sourceDirectory>
<plugins> <plugins>

View File

@ -130,8 +130,7 @@ public class LogFilter implements Filter{
@Override @Override
public Result filter(LogEvent event) { public Result filter(LogEvent event) {
String message = event.getMessage().getFormattedMessage().replaceAll("\u001b"," "); wsServer.onNewConsoleLinePrinted(event.getMessage().getFormattedMessage());
wsServer.onNewConsoleLinePrinted(message);
return null; return null;
} }