using System;
using System.IO;
using System.Runtime.InteropServices;
namespace PolyTrader.Core.Security
{
///
/// Beschränkt eine Schlüsseldatei auf den Besitzer. Unter Linux/macOS erzeugt
/// mit der üblichen umask sonst 644 —
/// world-readable, und genau dort liegen Master-Key, Watchdog-Token oder OpenRouter-Key im
/// Klartext. Unter Windows greift die NTFS-Vererbung des Profils, dort ist nichts zu tun.
///
public static class FilePermissions
{
public static void RestrictToOwner(string path, Action? onWarning = null)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) return;
try
{
File.SetUnixFileMode(path, UnixFileMode.UserRead | UnixFileMode.UserWrite);
}
catch (Exception ex)
{
onWarning?.Invoke(
$"Dateirechte für {Path.GetFileName(path)} konnten nicht gesetzt werden: {ex.Message}. Bitte manuell prüfen (chmod 600).");
}
}
}
}