Kurze Hostnamen in Freigaben aufloesen, Protokolle am Ende oeffnen

Freigaben mit kurzem Hostnamen (\S2025\Share) scheiterten mit "could not
resolve address for S2025". Ursache: dieser Server hat keine Suchdomaene
(search . in resolv.conf), ein Windows-Client hat eine. Der Name ist also
richtig, nur hier nicht auflösbar. Die AD-Domaene ist aus den Einstellungen
des Verzeichnisdienstes bekannt und wird jetzt zum Vervollstaendigen benutzt;
laesst sich der Name gar nicht aufloesen, sagt die Meldung was zu tun ist
statt "Unknown error". Auf POETEST gegen echtes DNS geprueft:
\S2025\LDAP_Share -> \S2025.ad.eertmoed.net\LDAP_Share, und dieser Pfad
bindet ein.

Protokollansichten standen beim Oeffnen oben. Die neueste Zeile steht aber
unten, und weil die Aktualisierung nur mitzieht, wenn man ohnehin am Ende ist,
zog sie danach nie mit -- es sah aus wie ein kaputter Autoscroll, war aber nur
die falsche Anfangsposition. Die Protokollansichten sind jetzt per data-tail
markiert und springen beim Laden nach unten. Konfigurationsvorschauen (nginx,
Kea) und der Offline-Code sind bewusst nicht markiert: die beginnen oben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-02 22:21:42 +02:00
co-authored by Claude Opus 5
parent d8368fc200
commit cf16809ee2
6 changed files with 223 additions and 53 deletions
@@ -563,7 +563,8 @@ function initAutoRefresh() {
// von innerHTML entsteht ein neues Element -- mit scrollTop 0. Genau
// deshalb sprang ein laufendes Auftragsprotokoll bei jeder
// Aktualisierung an den Anfang zurueck.
const scrollerOf = (el) => el.querySelector(".log-view, [data-scroll]") || el;
const scrollerOf = (el) =>
el.querySelector("[data-tail], .log-view, [data-scroll]") || el;
const before = scrollerOf(region);
const position = before.scrollTop;
// "Am Ende" grosszuegig auslegen: wer mitliest, soll mitgezogen
@@ -814,6 +815,25 @@ function initTileFilters() {
/* -- Start ---------------------------------------------------------------- */
/**
* Protokollansichten stehen am Ende, nicht am Anfang.
*
* Bei einem Protokoll ist die neueste Zeile die interessante, und die steht
* unten. Ohne diesen Anfangssprung blieb die Ansicht oben stehen -- und weil
* die Aktualisierung nur mitzieht, wenn man ohnehin schon am Ende ist, zog
* sie danach nie mit. Es sah aus, als waere der Autoscroll kaputt; in
* Wirklichkeit stand man nur nie an der Stelle, an der er greift.
*
* Ausdruecklich per ``data-tail`` markiert: eine Konfigurationsvorschau
* (nginx, Kea) und der Offline-Code sind auch <pre class="log-view">, sollen
* aber oben beginnen.
*/
function initLogTails(root = document) {
root.querySelectorAll("[data-tail]").forEach((view) => {
view.scrollTop = view.scrollHeight;
});
}
function boot() {
initTheme();
initSidebar();
@@ -830,6 +850,7 @@ function boot() {
initPalette();
initSubmitGuards();
initTileFilters();
initLogTails();
unsavedGuard.init();
}
@@ -1,5 +1,5 @@
{% if lines %}
<pre class="log-view">{% for line in lines %}{{ line }}
<pre class="log-view" data-tail>{% for line in lines %}{{ line }}
{% endfor %}</pre>
{% else %}
<div class="empty"><div class="empty__title">Keine Zeilen</div>