Make the Console<->Launcher system source-built and modern now that the console is under our control and the WinXP-era pods are gone. Contract extraction (Contract/Tesla.Contract.csproj): - One multi-targeted (net48;net8.0-windows) source project for the RPC contract, replacing the vendored TeslaConsoleLaunchLib.dll and the hand-synced Tesla.Net replica in Launcher/LaunchModels_Shared.cs. Emits assembly TeslaConsoleLaunchLib. SecureConfig extraction (SecureConfig/Tesla.SecureConfig.csproj): - net48 source of the first-boot provisioning protocol (UDP beacons, OFB crypto, RSA key exchange), replacing the vendored TeslaSecureConfiguration.dll. Remove BinaryFormatter from the wire (RCE sink + the reason net6 was pinned): - Console<->Launcher RPC is now length-prefixed System.Text.Json frames (Contract/PodRpcProtocol.cs) over the unchanged OFB transport; dispatch by method name. Deleted the SerializationBinder / MethodInfoProxy machinery. - Console-local BinaryFormatter (Site config, mission replays) intentionally retained: local net48 file I/O, not the network surface. Runtime modernization: - Launcher Service + Agent: net6 -> net8, win-x86 -> win-x64 (all pods are 64-bit Win10). Kept the SHA1-default PBKDF2 (Console key-derivation compat) with SYSLIB0041 suppressed and documented. Tests: differential suite now 73 green. Added SecureConfigCompatTests (OFB ciphertext byte-identical to the vendored DLL) and PodRpcProtocolTests (JSON round-trip of every request/response shape); removed the now-obsolete BinaryFormatter byte-identity guard. Build hygiene: per-project obj dirs (Launcher/Directory.Build.props) fix a NuGet restore collision between the two Launcher projects sharing one folder. NOT runtime-verified against a live pod. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1.3 KiB
C#
32 lines
1.3 KiB
C#
// =============================================================================
|
|
// TeslaLauncher — Shared IPC Models
|
|
// =============================================================================
|
|
// IPC types (Tesla.Launcher.Shared): JSON messages between the Windows Service
|
|
// and the user-session Agent over a Named Pipe. These never touch the Console
|
|
// TCP connection.
|
|
//
|
|
// The BinaryFormatter wire types (Tesla.Net: LaunchData, InvokeCommand, ...)
|
|
// formerly replicated here by hand now live in the shared Tesla.Contract project
|
|
// (assembly TeslaConsoleLaunchLib), referenced by the Service. This file is also
|
|
// compiled into the Agent, which uses only the IPC types below.
|
|
// =============================================================================
|
|
|
|
namespace Tesla.Launcher.Shared
|
|
{
|
|
/// <summary>Command forwarded from the Windows Service to the Userspace Agent.</summary>
|
|
public sealed class IpcMessage
|
|
{
|
|
public string Command { get; set; }
|
|
public string LaunchKey { get; set; }
|
|
public string PayloadJson { get; set; }
|
|
}
|
|
|
|
/// <summary>Response from the Userspace Agent back to the Windows Service.</summary>
|
|
public sealed class IpcResponse
|
|
{
|
|
public bool Success { get; set; }
|
|
public string Message { get; set; }
|
|
public object Data { get; set; }
|
|
}
|
|
}
|