diff --git a/Server/wwwroot/src/Main/Chat.ts b/Server/wwwroot/src/Main/Chat.ts index e6473f59..9a00c3a8 100644 --- a/Server/wwwroot/src/Main/Chat.ts +++ b/Server/wwwroot/src/Main/Chat.ts @@ -1,6 +1,7 @@ import * as HubConnection from "./HubConnection.js"; import { DataSource } from "./DataGrid.js"; import { ShowMessage } from "../Shared/UI.js"; +import { EncodeForHTML } from "../Shared/Utilities.js"; export function CreateChatWindow(deviceID: string, deviceName: string) { var chatWindow = document.getElementById("chat-" + deviceID); @@ -59,10 +60,11 @@ export function CreateChatWindow(deviceID: string, deviceName: string) { if (!inputText) { return; } + var encodedText = EncodeForHTML(inputText); (chatWindow.querySelector(".chat-messages") as HTMLDivElement).innerHTML += `
You: - ${inputText} + ${encodedText}
`; (ev.currentTarget as HTMLTextAreaElement).value = ""; diff --git a/Server/wwwroot/src/Main/Commands/WebCommands.ts b/Server/wwwroot/src/Main/Commands/WebCommands.ts index 5544782f..979f0de6 100644 --- a/Server/wwwroot/src/Main/Commands/WebCommands.ts +++ b/Server/wwwroot/src/Main/Commands/WebCommands.ts @@ -7,6 +7,7 @@ import { MainApp } from "../App.js"; import * as DataGrid from "../DataGrid.js"; import { AddConsoleHTML, AddConsoleOutput, AddTransferHarness } from "../Console.js"; import { GetSelectedDevices } from "../DataGrid.js"; +import { EncodeForHTML } from "../../Shared/Utilities.js"; var commands: Array = [ @@ -242,17 +243,17 @@ var commands: Array = [ ${String(x.IsOnline) .replace("true", "") .replace("false", "")} - ${x.DeviceName} - ${x.Alias} - ${x.CurrentUser} + ${EncodeForHTML(x.DeviceName)} + ${EncodeForHTML(x.Alias)} + ${EncodeForHTML(x.CurrentUser)} ${new Date(x.LastOnline).toLocaleString()} - ${x.Platform} - ${x.OSDescription} + ${EncodeForHTML(x.Platform)} + ${EncodeForHTML(x.OSDescription)} ${Math.round(x.UsedStorage / x.TotalStorage * 100)}% - ${x.TotalStorage.toLocaleString()} + ${EncodeForHTML(x.TotalStorage.toLocaleString())} ${Math.round(x.UsedMemory / x.TotalMemory * 100)}% - ${x.TotalMemory.toLocaleString()} - ${x.Tags || ""} + ${EncodeForHTML(x.TotalMemory.toLocaleString())} + ${EncodeForHTML(x.Tags || "")} ` }); output += deviceList.join(""); diff --git a/Server/wwwroot/src/Main/DataGrid.ts b/Server/wwwroot/src/Main/DataGrid.ts index 506aeef4..e3e68c94 100644 --- a/Server/wwwroot/src/Main/DataGrid.ts +++ b/Server/wwwroot/src/Main/DataGrid.ts @@ -4,6 +4,7 @@ import { CreateChatWindow } from "./Chat.js"; import * as HubConnection from "./HubConnection.js" import { ShowModal } from "../Shared/UI.js"; import { Device } from "../Shared/Models/Device.js"; +import { EncodeForHTML } from "../Shared/Utilities.js"; export const DataSource: Array = new Array(); export const FilteredDevices: Array = new Array(); @@ -128,18 +129,18 @@ export function RenderDeviceRows() { "" } - ${device.DeviceName} - ${device.Alias || ""} - ${device.CurrentUser} + ${EncodeForHTML(device.DeviceName)} + ${EncodeForHTML(device.Alias) || ""} + ${EncodeForHTML(device.CurrentUser)} ${new Date(device.LastOnline).toLocaleString()} - ${device.PublicIP} - ${device.Platform} - ${device.OSDescription} + ${EncodeForHTML(device.PublicIP)} + ${EncodeForHTML(device.Platform)} + ${EncodeForHTML(device.OSDescription)} ${Math.round(device.CpuUtilization * 100)}% ${Math.round(device.UsedStorage / device.TotalStorage * 100)}% - ${device.TotalStorage.toLocaleString()} + ${EncodeForHTML(device.TotalStorage.toLocaleString())} ${Math.round(device.UsedMemory / device.TotalMemory * 100)}% - ${device.TotalMemory.toLocaleString()} + ${EncodeForHTML(device.TotalMemory.toLocaleString())} @@ -155,7 +156,7 @@ export function RenderDeviceRows() { (recordRow.querySelector(".device-chat-button") as HTMLButtonElement).onclick = (ev) => { ev.preventDefault(); ev.stopPropagation(); - CreateChatWindow(device.ID, device.DeviceName); + CreateChatWindow(device.ID, EncodeForHTML(device.DeviceName)); }; (recordRow.querySelector(".device-remotecontrol-button") as HTMLButtonElement).onclick = (ev) => { ev.preventDefault(); diff --git a/Server/wwwroot/src/Main/HubConnection.ts b/Server/wwwroot/src/Main/HubConnection.ts index 7196573e..7a8a99e6 100644 --- a/Server/wwwroot/src/Main/HubConnection.ts +++ b/Server/wwwroot/src/Main/HubConnection.ts @@ -10,6 +10,7 @@ import { MainApp } from "./App.js"; import { AddConsoleOutput, AddConsoleHTML } from "./Console.js"; import { ReceiveChatText } from "./Chat.js"; import { ShowMessage, ShowModal } from "../Shared/UI.js"; +import { EncodeForHTML } from "../Shared/Utilities.js"; export var Connection: any; @@ -43,14 +44,15 @@ export function Connect() { function applyMessageHandlers(hubConnection) { hubConnection.on("Chat", (deviceID: string, deviceName: string, message: string, disconnected: boolean) => { + var encodedMessage = EncodeForHTML(message); if (disconnected) { AddConsoleHTML(`${deviceName} disconnected from chat.`); } else if (message) { - AddConsoleHTML(`Chat from ${deviceName}: ${message}`); + AddConsoleHTML(`Chat from ${deviceName}: ${encodedMessage}`); } - ReceiveChatText(deviceID, deviceName, message, disconnected); + ReceiveChatText(deviceID, deviceName, encodedMessage, disconnected); }); hubConnection.on("UserOptions", (options: UserOptions) => { MainApp.UserSettings.CommandModeShortcuts.Web = options.CommandModeShortcutWeb; diff --git a/Utilities/Install-RemotelyServer.ps1 b/Utilities/Install-RemotelyServer.ps1 index c0f80da2..1aa65584 100644 --- a/Utilities/Install-RemotelyServer.ps1 +++ b/Utilities/Install-RemotelyServer.ps1 @@ -372,8 +372,10 @@ Start-Website -Name $SiteName ### SSL certificate installation. ### -if ($WacsPath -ne $null -and (Test-Path -Path $WacsPath)) { - &"$WacsPath" --target iis --siteid (Get-Website -Name $SiteName).ID --installation iis --emailaddress $EmailAddress --accepttos +if ($WacsPath) { + if (Test-Path -Path $WacsPath) { + &"$WacsPath" --target iis --siteid (Get-Website -Name $SiteName).ID --installation iis --emailaddress $EmailAddress --accepttos + } } Wrap-Host