Skip to content

v1.0.4

Latest

Choose a tag to compare

@KEV0143 KEV0143 released this 06 May 17:50

KevqDMA v1.0.3 → v1.0.4: WebRadar VDS Remote Update

Date: 06.05.2026 | Changes: +56,683 / -6,404 lines | Files: 121

Description

KevqDMA v1.0.4 is a WebRadar-focused technical release.

The main change in this version is the addition of full WebRadar support through a VDS server.
The release adds a separate remote WebRadar runtime, VDS connection settings, SSH/SFTP deployment, remote server diagnostics, persistent WebRadar configuration, LAN binding, origin allowlist, WebRadar UI/viewer updates, crash dump handling, and ESP/rendering pipeline changes.

Added / Changed

1. WebRadar via VDS / Remote WebRadar

  • Added a new WebRadar remote module:
    • include/Features/WebRadar/web_remote.h
    • src/Features/WebRadar/Runtime/web_remote.cpp
  • Added a separate namespace:
    • webradar::remote
  • Added VDS connection settings:
    • enabled
    • host
    • webPort
    • sshPort
    • login
    • password
    • remotePath
  • Added default values:
    • Web port: 8080
    • SSH port: 22
    • login: root
    • remote path: /opt/kevqdma-webradar

Remote WebRadar is now implemented as a separate runtime component.
It is not mixed with the local WebRadar server and is responsible for sending live WebRadar payloads to a remote VDS server.

Remote Publishing

  • Added compact WebRadar payload publishing to a remote server.
  • Added method:
    • Publish
  • Added remote runtime control methods:
    • Start
    • Stop
    • Configure
  • Added active data consumer check:
    • HasActiveConsumerDemand
  • Remote sender now uses a pending payload queue.
  • Maximum pending payload size:
    • 256 KB
  • When an unsent payload is replaced, the following counter is increased:
    • queueDrops
  • Added tracking for:
    • sent packets;
    • sent bytes;
    • reconnects;
    • last error;
    • last send time.

This allows WebRadar to work through an external VDS server while also providing runtime visibility into the state of remote data transmission.

WebSocket Remote Transport

  • Added remote WebRadar endpoint connection logic.
  • Added WebSocket handshake.
  • Added validation for 101 Switching Protocols.
  • Added validation for Sec-WebSocket-Accept.
  • Added WebSocket text frame sending.
  • WebSocket frames are generated with client-side masking.

Remote payloads can now be sent to the VDS through a WebSocket-compatible transport, with connection validation performed during the WebSocket handshake.

VDS Diagnostics

  • Added remote server test functions:
    • TestPing
    • TestHttpStatus
    • TestSshConnection
    • CheckServerReady
  • Added HTTP status check for the remote WebRadar endpoint:
    • /api/status
  • Added remote statistics state:
    • enabled
    • configured
    • connected
    • sentPackets
    • sentBytes
    • queueDrops
    • reconnects
    • lastSendUnixMs
    • lastPingMs
    • lastError

These checks make it possible to verify whether the VDS is reachable, whether the WebRadar endpoint is responding, whether SSH access is configured correctly, and whether the server is ready for use.

WebRadar Deployment to VDS

  • Added functions:
    • ExportDeployPackage
    • DeployToServer
  • Added deployment progress callback:
    • DeployProgressCallback
  • Added libssh2 integration.
  • Added SSH connection support.
  • Added SFTP file upload support.
  • Added recursive remote directory creation.
  • Added file and directory upload to the remote server.
  • Added remote path validation and normalization.

Remote deployment can now prepare WebRadar files and upload them to a VDS through SSH/SFTP.
Remote path protection was also added: unsafe paths, system directories, and path traversal are blocked.


2. WebRadar Config Persistence Update

  • Added separate WebRadar configuration persistence.
  • Added runtime config file:
    • x64/Release/data/config/WebRadarConfig.json
  • Added this file to .gitignore so user-specific WebRadar configuration is not committed to the repository.
  • Added WebRadar config path logic:
    • BuildSettingsPath
  • Added legacy logic for profile-based WebRadar config:
    • BuildLegacySettingsPath
  • Profile saving now calls:
    • webradar::remote::SaveSettings
  • Profile loading now calls:
    • webradar::remote::LoadSettings

This is important for VDS mode: remote server data is now saved separately and does not need to be re-entered after restarting the application.

Saved Local WebRadar Parameters

  • Enabled
  • Port
  • BindLan
  • IntervalMs
  • OriginAllowlist
  • MapOverride

IntervalMs is now loaded with clamp validation against the allowed range instead of being accepted directly.

Saved Remote WebRadar Parameters

  • enabled
  • settingsOpen
  • host
  • webPort
  • sshPort
  • login
  • password
  • remotePath

A separate structure was added to AppState:

  • webRadarRemote

As a result, local WebRadar and remote WebRadar now have separate state and separate persistence logic.


3. LAN Binding and WebRadar Access Control

  • Added parameter:
    • bindLan
  • Default value:
    • true
  • If bindLan = true, WebRadar binds to:
    • INADDR_ANY
  • If bindLan = false, WebRadar binds to:
    • INADDR_LOOPBACK
  • Added local state check:
    • IsLocalEnabled

This allows the user to explicitly choose the WebRadar operating mode: local-only access or LAN-accessible mode.

Origin Allowlist

  • Added parameter:
    • originAllowlist
  • Origin allowlist is applied to API endpoints:
    • /api/ws
    • /api/live
    • /api/stream
    • /api/status
    • /api/ping
  • If the origin is not allowed, the server returns:
    • 403 Origin not allowed

This adds browser-origin access control for WebRadar, which is especially important for LAN, VDS, and reverse proxy scenarios.


4. WebRadar Protocol / Payload Runtime Update

  • Minimum realtime interval changed:
    • 15 ms17 ms
  • Default WebRadar interval changed:
    • 15 ms33 ms
  • WebRadar protocol is now fixed to v2:
    • kMinProtocolVersion = 2
    • kMaxProtocolVersion = 2
    • kDefaultProtocolVersion = 2
  • Compact payload v2 is now the primary format.
  • Legacy payload is generated only when legacy clients are present.
  • Legacy demand is tracked for:
    • WebSocket clients;
    • SSE stream clients;
    • HTTP polling clients.

This reduces unnecessary load and prevents continuous legacy payload generation when it is not required by older-format clients.

Remote-Aware Payload Generation

  • Payload generation is now active if local WebRadar is enabled or if there is active remote consumer demand.
  • This allows remote/VDS WebRadar to receive data even when there is no active local viewer.
  • Added logic for keeping the latest live map name.
  • Added recent live payload retention up to 3500 ms.
  • Added protection against temporary team collapse so snapshots are not cleared too aggressively during short data loss periods.

This improves WebRadar stability during map changes, temporary snapshot loss, or unstable data reads.


5. WebRadar UI Update

  • Added remote WebRadar section:
    • RenderRemoteSection
  • Added remote WebRadar debug section:
    • RenderRemoteDebugSection
  • Added UI fields:
    • Host/IP
    • Web Port
    • SSH Port
    • Login
    • Password
    • Remote Path
  • Added actions:
    • Save
    • Test Ping
    • Test Connection
    • Check Server Ready
    • Deploy Web Files
  • Added remote status display:
    • connected/offline/disabled;
    • packets;
    • drops;
    • remote out KB;
    • last ping;
    • last error.

The WebRadar interface can now configure the VDS, test the connection, deploy files, and display remote transmission status without requiring manual log analysis.


6. WebRadar Links and QR Update

  • The connection section now separates:
    • local WebRadar link;
    • remote/web WebRadar link.
  • Added actions:
    • Open LocalRadar
    • Open WebRadar
    • Copy WebRadar link
  • The QR section now supports two QR codes:
    • Local WebRadar
    • WebRadar
  • QR cache was updated: instead of one static cached QR code, the cache is now based on the link string.

This fixes the previous limitation where the QR code was cached for only one link and did not work correctly when both local and remote links were used.


7. WebRadar Viewer and Assets

  • Updated:
    • viewer.js
  • Added SVG grenade icons:
    • decoy.svg
    • flashbang.svg
    • hegrenade.svg
    • incgrenade.svg
    • molotov.svg
    • smokegrenade.svg

This updates the assets used by the browser-based WebRadar viewer and adds separate icons for projectile/grenade rendering.


8. Crash Handler

  • Added crash handler:
    • src/app/Bootstrap/crash_handler.cpp
    • src/app/Bootstrap/crash_handler.h
  • Application startup now calls:
    • bootstrap::InstallCrashHandler
  • A .dmp file is created on unhandled exception.
  • The dump file is created near the executable.
  • The dump includes:
    • thread info;
    • indirectly referenced memory;
    • scanned memory.
  • The dump file path is printed to stderr.

This adds basic crash diagnostics and simplifies analysis of crash scenarios.


9. Menu Key Capture Update

  • Updated menu key capture logic.
  • Added a list of blocked keys for capture:
    • mouse buttons;
    • Win keys;
    • Shift / Ctrl / Alt;
    • End;
    • service/system keys;
    • extended keys.
  • Added snapshot of the current key state.
  • Capture is performed only on a new key press, not on an already held key.
  • Snapshot is reset after capture.

This prevents accidental assignment of system keys, modifier keys, or already-held keys as the menu key.


10. ESP / Rendering / Weapon Metadata Update

  • Updated ESP/rendering pipeline components:
    • player rendering;
    • weapon rendering;
    • bomb rendering;
    • world ESP;
    • spectator overlay;
    • bomb timer overlay;
    • world marker synthesis;
    • weapon lookup.
  • Added extended data to WeaponLookupEntry:
    • weapon id;
    • display name;
    • visual key;
    • icon glyph;
    • fallback icon;
    • slot kind;
    • max clip.
  • Added weapon slot categories:
    • Knife
    • Sidearm
    • Primary
    • Utility
    • Objective
    • Gear
  • Added font handles:
    • fontWeaponIconsSmall
    • fontWeaponIconsLarge
  • Weapon icon font is now loaded in multiple sizes.

This updates the base logic for more accurate rendering of weapons, utility, bomb/world entities, and overlay elements.


11. Runtime State Thread-Safety

  • Runtime base addresses were moved to atomic storage:
    • clientBase
    • engine2Base
  • Updated global references for atomic base addresses.

This reduces the risk of incorrect access to base address values from different runtime threads.


12. Project / Dependencies / Build Output

  • Version updated:
    • v1.0.3v1.0.4
  • Build tag updated:
    • kVersionTag = "v1.0.4"
  • Added to the Visual Studio project:
    • web_remote.cpp
    • web_remote.h
  • Added vendor integration:
    • libssh2
  • Updated project filters.
  • Updated release output files:
    • KevqDMA.exe
    • KevqDefault.json
    • settings.json
    • imgui.ini
    • client_dll.hpp
    • offsets.hpp
    • offsets.json
    • info.json

This completes the integration of remote WebRadar, SSH/SFTP deployment, and the v1.0.4 release output.

Summary

KevqDMA v1.0.4 is a WebRadar-focused release.

The key change is the addition of WebRadar support through VDS:

  • remote WebRadar runtime;
  • VDS connection settings;
  • WebSocket remote publishing;
  • SSH/SFTP deployment;
  • server readiness diagnostics;
  • persistent WebRadar config;
  • LAN binding;
  • origin allowlist;
  • remote WebRadar UI;
  • local/remote QR links;
  • crash dump handler;
  • ESP/rendering metadata updates.

Compared to v1.0.3, WebRadar is no longer limited to a local/LAN viewer and now supports a full remote VDS-based workflow.