Stufe 4c (#764): Kommentare in C#, WebUI-Skripten, CSS und HTML auf Englisch
Rund 2.600 Kommentarblöcke in 310 C#-Dateien übersetzt, Begründungen vollständig erhalten: blockweise gleiche Anzahl wie vorher, kein Block unter 60 % seiner Länge, der Code außerhalb der Kommentare per Tokenizer byte-identisch geprüft. Zitate deutscher Oberflächentexte und Testdaten bleiben deutsch. WebUI: Kommentare in JS/CSS/HTML übersetzt, JSDoc-@param an die in 4b umbenannten Parameter angeglichen. Dabei behoben: - 4b hatte "tag" (HTML-Tag) als deutsches "Tag" gelesen und zu "dayValue" gemacht (makeElement, svg, Tagesübersicht) - zurück auf tag/day. - Aufgaben "InProgress" bekamen die Plakettenart "laufend", für die es nie eine CSS-Klasse gab - jetzt "success" wie laufende Instanzen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
da4ceac7d5
commit
837a634a22
@@ -4,9 +4,9 @@ using Shouldly;
|
||||
namespace ClawdDotNet.Tools.Tests.WebFetch;
|
||||
|
||||
/// <summary>
|
||||
/// S5 aus der Bestandsaufnahme: Die Whitelist wurde nur auf die Ausgangs-URL angewendet,
|
||||
/// HttpClient folgte Weiterleitungen aber selbst. Eine erlaubte Domain konnte damit ins
|
||||
/// lokale Netz weiterleiten — Router, NAS, der eigene Git-Server, Cloud-Metadatendienste.
|
||||
/// S5 from the inventory: the whitelist was only applied to the initial URL,
|
||||
/// but HttpClient followed redirects itself. An allowed domain could thus redirect into the
|
||||
/// local network — router, NAS, the own Git server, cloud metadata services.
|
||||
/// </summary>
|
||||
public sealed class UrlGuardTests
|
||||
{
|
||||
@@ -16,11 +16,11 @@ public sealed class UrlGuardTests
|
||||
=> UrlGuard.TryValidate(url, Allowed, out _, out error);
|
||||
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
// Netzsperren
|
||||
// Network blocks
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Theory]
|
||||
[InlineData("http://169.254.169.254/latest/meta-data/")] // Cloud-Metadaten
|
||||
[InlineData("http://169.254.169.254/latest/meta-data/")] // cloud metadata
|
||||
[InlineData("http://127.0.0.1:8080/")]
|
||||
[InlineData("http://localhost:8418/")]
|
||||
[InlineData("http://192.168.178.10:8418/Richard/ClawdDotNet.git")]
|
||||
@@ -40,8 +40,8 @@ public sealed class UrlGuardTests
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("172.15.0.1")] // knapp unterhalb von 172.16/12
|
||||
[InlineData("172.32.0.1")] // knapp oberhalb
|
||||
[InlineData("172.15.0.1")] // just below 172.16/12
|
||||
[InlineData("172.32.0.1")] // just above
|
||||
[InlineData("11.0.0.1")]
|
||||
[InlineData("8.8.8.8")]
|
||||
public void Oeffentliche_Adressen_gelten_nicht_als_privat(string host)
|
||||
@@ -94,8 +94,8 @@ public sealed class UrlGuardTests
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Die alte Fassung entfernte "www." per Ersetzen über die ganze Zeichenkette:
|
||||
/// aus "mywww.example.com" wurde "myexample.com".
|
||||
/// The old version removed "www." via a replace across the whole string:
|
||||
/// "mywww.example.com" became "myexample.com".
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void Die_www_Behandlung_verstuemmelt_keine_anderen_Hostnamen()
|
||||
@@ -107,7 +107,7 @@ public sealed class UrlGuardTests
|
||||
[Fact]
|
||||
public void Ein_abschliessender_Punkt_im_Host_umgeht_die_Whitelist_nicht()
|
||||
{
|
||||
// "example.com." ist DNS-technisch derselbe Host.
|
||||
// "example.com." is the same host in DNS terms.
|
||||
UrlGuard.IsDomainAllowed("evil.com.", Allowed).ShouldBeFalse();
|
||||
UrlGuard.IsDomainAllowed("example.com.", Allowed).ShouldBeTrue();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user