Closed WeT-Klb closed 1 year ago
Hi Werner,
eine Erklärung könnte sein, dass es spezielle Zugriffsrechte für Dein Submitter Objekt gibt. Kannst Du das unter HEAD in webtrees anschauen (HEAD in Suchfeld eingeben)?
Bei DownloadGedcomWithURL dann auch die Rechte (privacy level) für den Export prüfen. In URL: &privacy=... und in den Default Settings unter Verwaltung.
Grüße
Markus
Hallo Markus,
in Webtrees habe ich ja unter "HEAD" die Eintragung vorgenommen.
Die Einstellung in DownloadGedcomWithURL habe ich so stehen, wie Du es gezeigt hast.
Ich habe auch mal mit "Herunterladen" und "Save" gespielt - macht keine Änderung.
Ich verstehe aber nicht ganz, was Du mit
In URL: &privacy=... und in den DefaultSettings unter Verwaltung.<<
meinst bzw. wie und wo genau ich da was prüfen soll.
Wie gesagt, wenn das Modul die Gedcom selber erzeugt, fehlt der Eintrag zu SUBM. Wenn ich im Modul ganz unten auf "Herunterladen testen" klicke und diese Gedcom-Datei überprüfen lasse, funktioniert alles und der SUBM-Eintrag ist auch vorhanden.
Von: Jefferson49 @.*** Gesendet: Donnerstag, 21. September 2023 11:16 An: Jefferson49/DownloadGedcomWithURL Cc: Werner; Author Betreff: Re: [Jefferson49/DownloadGedcomWithURL] Automatisch erzeugtes Gedcom-File unterscheidet sich von manuell erzeugtem (Issue #9)
Hi Werner,
eine Erklärung könnte sein, dass es spezielle Zugriffsrechte für Dein Submitter Objekt gibt. Kannst Du das unter HEAD in webtrees anschauen (HEAD in Suchfeld eingeben)?
Bei DownloadGedcomWithURL dann auch die Rechte (privacy level) für den Export prüfen. In URL: &privacy=... und in den Default Settings unter Verwaltung.
Grüße
Markus
Reply to this email directly, view it on GitHub https://github.com/Jefferson49/DownloadGedcomWithURL/issues/9#issuecomment- 1729179945 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AE5FMFWOTWCWWGCOS4DHET3X3 QATBANCNFSM6AAAAAA5A6YQYE . You are receiving this because you authored the thread. https://github.com/notifications/beacon/AE5FMFTZQU6UN4XUHMY55WTX3QATBA5CNFS M6AAAAAA5A6YQYGWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTT HCEYSS.gif Message ID: @.***>
Ok, wenn es in der Verwaltung funktioniert, sind die dortigen Einstellungen ok.
Verbleibt noch der Aufruf in der URL.
Ich verstehe aber nicht ganz, was Du mit
In URL: &privacy=... und in den DefaultSettings unter Verwaltung.<< meinst bzw. wie und wo genau ich da was prüfen soll.
Mit dem Aufruf in der URL kannst die gleichen Einstellungen wie auch in der webtrees Verwaltung beeinflussen. Wenn Du also "&privacy=visitor" in Deine URL einfügst, hat das die gleichen Auswirkungen, wie wenn Du exportieren als "Besucher" im Browser auswählst. Wenn die URL nichts enthält, wird der Default Wert aus der Verwaltung genommen.
Wenn also eine Einstellung in der URL enthalten ist, solltest Du diese vielleicht einfach löschen.
Meinen Link zum Download lasse ich täglich so aufrufen:
wget --timeout=60 --tries=1 "https://My-DOMAIN/webtrees/index.php?route=/webtrees/DownloadGedcomWithURL&tree=tree1&key=xxxxxxxxxxxxx&privacy=none&format=gedcom&encoding=UTF-8&line_endings=CRLF&action=save"
Ich habe den kompletten Pfad auch einmal manuell ausgeführt - auch da fehlt die Angabe des SUBM.
Dann habe ich noch https://My-Domain/webtrees/index.php?route=/webtrees/DownloadGedcomWithURL&tree=tree1&key=xxxxxxxxxxxxx versucht - auch da fehlt SUBM.
Mit dem "Test-Button" im Modul selbst funktioniert es aber korrekt.
Ok, das sieht eigentlich alles vernünftig aus.
Muss erst Mal nachdenken und selber ein paar Versuche starten.
Na klar, ist ja nicht so brisant.
Wenn Du willst, kann ich Dir auch mal beide Gedcoms zuschicken - nur nicht hier in der Öffentlichkeit.
Vielleicht kannst Du hier was sehen?
Von: Jefferson49 @.*** Gesendet: Donnerstag, 21. September 2023 15:18 An: Jefferson49/DownloadGedcomWithURL Cc: Werner; Author Betreff: Re: [Jefferson49/DownloadGedcomWithURL] Automatisch erzeugtes Gedcom-File unterscheidet sich von manuell erzeugtem (Issue #9)
Ok, das sieht eigentlich alles vernünftig aus.
Muss erst Mal nachdenken und selber ein paar Versuche starten.
— Reply to this email directly, view it on GitHub https://github.com/Jefferson49/DownloadGedcomWithURL/issues/9#issuecomment-1729569812 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AE5FMFSC66CVB2JLXHFSLSTX3Q5AXANCNFSM6AAAAAA5A6YQYE . You are receiving this because you authored the thread. https://github.com/notifications/beacon/AE5FMFWKATTNYZZPUAFGXCDX3Q5AXA5CNFSM6AAAAAA5A6YQYGWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTTHC4SBI.gif Message ID: @.***>
Habe ein paar Themen angeschaut; bin aber noch nicht weitergekommen.
Habe nun eine Debug-Version für die Datei DownloadGedcomWithURL.php erstellt. Kannst Du diese Datei bei Dir mit der beiliegenden Datei ersetzen und dann jeweils einen Testdownload (in der Verwaltung) und einen URL-Download (https://my-domain/webtrees/index.php?route=/webtrees/DownloadGedcomWithURL&tree=tree1&key=xxxxxxxxxxxxx) durchführen?
Anschließend werden jeweils Debug-Informationen ausgegeben. Gibt es hier einen Unterschied zwischen den beiden Ausgaben?
Die Debug-Version gibt folgende Informationen aus:
Debug info "DownloadGedcomWithURL":
$tree_name: test
$file_name: test
$format: gedcom
$privacy: none
$encoding: UTF-8
$line_endings: CRLF
$gedcom7: false
$gedcom_l: false
$action: save
$time_stamp: none
Hallo,
ich habe die Debug-Version probiert - aber keine Unterschiede festgestellt. Ich habe beide Screenshots angefügt.
Sicherung per Modul:
Sicherung per URL:
Danke für die Daten. Das ist wirklich sehr merkwürdig. Wenn das Programm jeweils mit den gleichen Daten aufgerufen wird, sollte eigentlich das gleiche passieren.
Beim Aufruf aus der Verwaltung hat man Manager Rechte. Vielleicht resultiert daraus irgendein Unterschied bei der weiteren Verarbeitung innerhalb von webtrees.
Ich habe jetzt vier Varianten probiert:
Download der Gedcom-Datei automatisiert über einen CRON-Job direkt auf der NAS
Download der Gedcom-Datei per URL-Aufruf
Download der Gedcom-Datei aus dem Modul heraus
Export der Gedcom-Datei direkt aus Webtrees-Verwaltung
Bei Punkt 1 und 2 fehlt der SUBM-Eintrag, bei 3 und 4 ist er vorhanden.
Ich weiß nicht, ob das weiterhilft.
Läßt sich mit einer Debug-Version feststellen, mit welchen Rechten bzw. User die (jeweilige) Aktion ausgeführt wird?
Bei Punkt 1 und 2 fehlt der SUBM-Eintrag, bei 3 und 4 ist er vorhanden.
Ja, das passt zu den bisherigen Erkenntnissen: Immer, wenn der Aufruf über das User Interface von webtrees ausgelöst wird (bei 3 und 4), funktioniert es. Wenn der Aufruf über eine URL erfolgt (Punkt 1 und 2), funktioniert es nicht.
Habe nun eine konkrete Stelle im webtrees Code im Verdacht, dass dort die Ursache liegt. Um das einzugrenzen, habe ich nochmal eine Debug-Version für eine Code-Datei erstellt, siehe Anhang. Es würde mir helfen, wenn Du temporär die webtrees-Datei "\webtrees\app\Services\GedcomExportService" ersetzen könntest und dann nochmal die obigen Versuche startest. Bitte die alte Datei vorher sichern und anschließend wieder zurückspielen.
Es müsste folgende Debug-Information erscheinen:
Debug info from: "GedcomExportService":
$facts_in_header: 8
Im Gutfall sollte $facts_in_header größer Null sein. Im Schlechtfall (Submitter fehlt) sollte $facts_in_header entweder Null sein oder kleiner als im Gutfall.
Anmerkung: Die vorherige Debug-Version für die Datei "DownloadGedcomWithURL.php" kannst Du auch wieder durch die ursprüngliche Datei ersetzen.
Parallel wäre es auch hilfreich, wenn Du die beiden Header der Gedcom-Dateien (ganz am Anfang) vergleichen könntest.
Im Gutfall sollte es ca. wie folgt aussehen:
0 HEAD
1 SOUR webtrees
2 NAME webtrees
2 VERS 2.1.17
1 DEST DISKETTE
1 DATE 23 SEP 2023
2 TIME 20:26:47
1 GEDC
2 VERS 5.5.1
2 FORM LINEAGE-LINKED
1 CHAR UTF-8
1 FILE test.ged
1 LANG German
1 SUBM @SUB1@
Im Schlechtfall sollten nach der Zeile "1 FILE ..." keine weiteren Zeilen enthalten sein. Das Fehlen des "1 SUBM ..." Eintrags ist ja der Kern dieses ganzen Themas.
Im webtrees Code für Gedcom-Exporte werden "Ausstehende Änderungen" berücksichtigt. Vielleicht gibt es hier eine Wechselwirkung. Kannst Du prüfen, ob Du evtl. ausstehende Änderungen für HEAD bzw. submitter hast?
Ausstehende Änderungen habe ich keine anstehen. Zu Deiner webtrees-Debug-Version: Ich erhalte beim Export direkt aus webtrees keine Anzeige, so wie Du beschrieben hast. Bei Aufruf per URL funktioniert die Anzeige aber.
Export aus der Verwaltung von webtrees:
0 HEAD 1 SOUR webtrees 2 NAME webtrees 2 VERS 2.1.17 1 DEST DISKETTE 1 DATE 24 SEP 2023 2 TIME 07:33:35 1 GEDC 2 VERS 5.5.1 2 FORM LINEAGE-LINKED 1 CHAR UTF-8 1 FILE tree1.ged 1 SUBM @X789@ 1 SUBN @X822@
Aufruf per URL:
0 HEAD 1 SOUR webtrees 2 NAME webtrees 2 VERS 2.1.17 1 DEST DISKETTE 1 DATE 24 SEP 2023 2 TIME 07:44:25 1 GEDC 2 VERS 5.5.1 2 FORM LINEAGE-LINKED 1 CHAR UTF-8 1 FILE tree1.ged
Aufruf aus Modul:
0 HEAD 1 SOUR webtrees 2 NAME webtrees 2 VERS 2.1.17 1 DEST DISKETTE 1 DATE 24 SEP 2023 2 TIME 07:48:44 1 GEDC 2 VERS 5.5.1 2 FORM LINEAGE-LINKED 1 CHAR UTF-8 1 FILE tree1.ged 1 SUBM @X789@ 1 SUBN @X822@
Interessanterweise kommt bei beiden über DownloadGedcomWithURL als facts_in_header: 7, trotzdem wird bei Aufruf per URL der SUBM nicht angezeigt, bei Aufruf aus dem Modul schon. Auch wir bei Aufruf per URL die Meldung 3x angezeigt - siehe Screenshots. Ich kriege es nicht gebacken, daß im Code hier die Zeilenumbrüche dargestellt werden.
Irgendwie kann man immer mehr Dinge ausschließen und es scheint nicht mehr viel übrig zu bleiben. Anbei nochmal eine erweiterte Debug-Version, welche noch 2 weitere verbleibende Werte aus dem Code anzeigt.
Auch wir bei Aufruf per URL die Meldung 3x angezeigt
Ist das reproduzierbar, d.h. es werden jedes Mal 3 Meldungen angezeigt? Manchmal scheint webtrees auch Meldungen anzuzeigen, die von einem früheren Aufruf stammen und in einem Zwischenspeicher gelandet sind.
Ich habe nochmal mit der ersten Debug-Version von GedcomExportService den URL-Aufruf gestartet. Diesmal kam nur einmal die Meldung - dafür aber mit $facts_in_header: 4 und jetzt wir es lustig: Wenn ich nun webtrees aufrufe und mich einlogge, sehe ich $facts_in_header: 7
URL-Aufruf ausgeloggt:
Die gleiche Seite nach dem Einloggen:
Ich glaube, jetzt bin ich einen Schritt weiter:
Wenn ich in webtrees eingeloggt bin und den URL-Aufruf starte, wird SUBM mit ausgegeben. Wenn ich aus webtrees ausgeloggt bin und den Aufruf URL-Aufruf starte, fehlt der SUBM-Eintrag.
Kannst Du damit was anfangen? . . . . . Bei Debug V2 sehen die Bilder so aus - das Verhalten ist aber gleich:
URL-Aufruf ausgeloggt:
Die gleiche Seite nach dem Einloggen:
Die Ausgabe der Gedcom-Datei und deren Inhalt hängt also davon ab, ob man in webtrees eingeloggt ist oder nicht! Macht es einen Unterschied, daß ich SUBM nicht in der Verwaltung unter Stammbaum sondern direkt im HEADER definiert habe?
Die Ausgabe der Gedcom-Datei und deren Inhalt hängt also davon ab, ob man in webtrees eingeloggt ist oder nicht!
Das passt ins Bild. Ich hatte schon länger die Vermutung, dass das Verhalten von den Nutzer-Rechten abhängt.
Die Ausgabe von 7 bzw 4 Facts ist nun auch der Beweis, dass es von der vermuteten Code-Zeile abhängt. Werde dort nochmal genauer schauen und ansonsten im Forum nachfragen
Macht es einen Unterschied, daß ich SUBM nicht in der Verwaltung unter Stammbaum sondern direkt im HEADER definiert habe?
In dieser Richtung würde ich auch nach einer Erklärung suchen. Habe beim Herumprobieren auch schon festgestellt, dass man zum Editieren von HEAD (über Suchfeld) Adminrechte benötigt. Vielleicht speichert webtrees das dann mit besonderen Zugriffsrechten ab. Wobei es bei mir funktioniert. Es muss also noch eine weitere Bedingung dazu kommen.
Habe bei mir nun auch ein Beispiel erzeugen können, wo der Fehler reproduzierbar auftritt. Das macht Vieles einfacher, da ich nun konkret im Code debuggen kann.
Eine erste Erkenntnis ist, dass die Unterdrückung des Exports an den Datenschutzeinstellungen liegt. Wenn man in der Verwaltung für einen Stammbaum den Datenschutz aufruft, können dort Restriktionen für bestimmte Daten festgelegt werden. Beim Neuanlegen eines Stammbaums legt webtrees offensichtlich standardmäßig eine Restriktion für Übermittler an, siehe Screenshot. Aufgrund dieser Restriktion wird der Übermittler in bestimmten Fällen nicht exportiert. Wenn man als Verwalter angemeldet ist, funktioniert es jedoch.
Ein schneller Workaround wäre, die Restriktion für den Übermittler im Datenschutz zu löschen. Bei mir funktioniert dann der Export auch, wenn kein Verwalter angemeldet ist. Das könnte Dir vielleicht auch kurzfristig weiterhelfen.
Bzgl. einer grundsätzlichen Lösung muss ich noch weiter testen und nachdenken. Kann jetzt aber deutlich länger dauern, da ich in nächster Zeit nicht so viel dazukommen werde.
Webtrees scheint hier tatsächlich einen Fehler zu haben. Beim Export werden für Header-Daten nicht die angeforderte Rechte-Einstellungen sondern die Rechte des eingeloggten Users herangezogen.
Mit dem beiliegenden Patch müsste der Fehler behoben sein. Bei meinen Tests hat es damit funktioniert.
Werde ein Issue bei webtrees melden. Nachdem es auch beim normalen Export aus der Verwaltung heraus ein reproduzierbares Fehlverhalten gibt, stehen die Chancen vmtl. ganz gut, dass es gefixt wird.
Hallo Markus,
mit der V3 funktioniert der Export tadellos. Vielen Dank dafür. Mal sehen, ob das in webtrees gefixt wird. Hast Du einen Link zu diesem Issue in webtrees?
Bei webtrees als Issue 4883 gemeldet.
Pull Request 4884 mit Vorschlag für Code Änderungen.
Auf Basis des Feedbacks zum webtrees Issue anbei ein Update für den Patch.
Änderung: Ein SUBM Eintrag soll immer generiert werden, selbst wenn es den Datenschutz-Regeln widerspricht. Argumentation: Vermeidung eines nicht Standard konformen GEDCOM Exports hat höhere Priorität als Datenschutz.
Vielen Dank für die Info und die V4.
Da es bei webtrees wohl keine Änderung gibt, habe ich nun den Code von DownloadGedcomWithURL angepasst. Anbei zum Test eine beta Version.
Wichtig: Da der Bugfix nun im Custom Module enthalten ist, unbedingt wieder die original webtrees Datei für GedcomExportService.php benutzen.
Im Moment sieht das super aus - vielen Dank für Dein Engagement. Nur ein Hinweis: In der "DownloadGedcomWithURL.php" steht noch die Version 3.2.1 anstelle 3.2.2beta.
Habe jetzt eine Version 3.2.2 als Release veröffentlicht.
Super - vielen Dank. Läuft im Moment 1a!
Mit "DownloadGedcomWithURL" lasse ich täglich meine GEDCOM-Datei aus Webtrees erzeugen. Wenn ich diese mit GedcomValidator anschaue, erscheint jedesmal der Hinweis, daß "SUBM" unter "HEAD" fehlen würde. Erzeuge ich die GEDCOM-Datei im PlugIn manuell, ist dieser Hinweis nicht mehr vorhanden. Ich habe mal beide Files gesichert, würde sie aber ungern hier in der Öffentlichkeit hochladen.