Linux - relative Pfade für Kontoauszüge

richard.dg

Betreff:

Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 30.01.2020 - 15:52 Uhr  ·  #153826
Hallo zusammen,

ich nutze jameica & hibiscus auf verschieden Rechnern, auf denen Linux läuft. Ich habe auf den Rechnern unterschiedliche Benutzernamen. Das Verzeichnis
Code
~/.jameica
halte ich dabei mittels webdav synchron. Allerdings ist mir aufgefallen, dass die Kontoauszüge beim herunterladen von der Bank immer den absoluten Pfad
Code
/home/BENUTZERNAME/pfad/zum/auszug
bekommen.

Daraus ergibt sich das Problem, dass die Auszüge auf einem Rechner unter
Code
/home/peter/pfad/zum/auszug
landen, auf dem anderen unter
Code
/home/paul/pfad/zum/auszug
. Diese absoluten Pfade stehen dann auch im Datensatz. Wenn ich diese in
Code
~/pfad/zum/auszug
ändere, versucht jameica allerdings, diese in
Code
/pfad/zur/software/~/pfad/zum/auszug
zu finden. Offenbar wird die ~ nicht durch /home/BENUTZERNAME ersetzt.

Gibt es hier eventuell schon eine Lösung? Oder -wenn nicht- ist das ein sinnvolles Feature Request?

Danke & Grüße

Richard

hibiscus

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 30.01.2020 - 16:24 Uhr  ·  #153829
Nein, hier gibt es leider keine wirkliche Lösung. "~" ist ein Platzhalter der Linux-Shell. Das macht z.Bsp. die Bash intern. In Java gibt es diese Möglichkeit nicht.

richard.dg

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 30.01.2020 - 16:31 Uhr  ·  #153831
Danke für die schnelle Rückmeldung. Gibt es nicht auch in der grafischen Oberfläche Umgebungsvariablen, die man auswerten könnte?

Soweit ich weiß, kann java auch den Namen des aktuellen Benutzers auslesen mit
Code
System.getProperty("user.name")


Allerdings weiß ich natürlich nicht, wie aufwändig das zu implementieren wäre.

Schöne Grüße

Richard

hibiscus

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 30.01.2020 - 17:44 Uhr  ·  #153832
Das würde dann aber nur funktionieren, wenn die Daten im Benutzerordner gespeichert wurden. Bei mir liegen die PDF-Dateien z.Bsp. auf einem per NFS gemounteten Share. Hier könnte man auch einen relativen Pfad bilden - so a la: ../../../<pfad>/<pfad2>. Auf einem anderen Rechner befindet sich der Mountpoint aber u.U. woanders und es passt nicht mehr.

Will sagen: Relative Pfade machen nur Sinn, wenn einigermaßen sichergestellt ist, dass sich die Daten innerhalb des Jameica-Benutzerordners befinden. Das ist bei den PDF-Dateien aber nicht der Fall. man müsste also konfigurierbar machen, ob relative oder absolute Pfade verwendet werden sollen. Und wenn der User den Parameter ändert, müssten eigentlich auch die in der Datenbank gespeicherten Pfad-Angaben aktualisiert werden. Das Thema lässt sich dann beliebig komplex machen. Das ist mir ehrlich gesagt zu aufwändig. Absolute Pfadangaben sind immer eindeutig. Wenn es bei dir auf einem Rechner nicht passt, könntest du ja einen passenden Symlink setzen.

msa

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 30.01.2020 - 18:03 Uhr  ·  #153833
Mal eine blöde Frage zum Verständnis: Wieso wird der Pfad offenbar bei jeder einzelnen Datei in der Datenbank gespeichert? Wieso wird nicht nur der Dateiname gespeichert und diese Dateien liegen dann alle in einem - in einem Einstellungsdialog konfigurierbaren - Verzeichnis? Es gibt doch sicher Einstellungen, die pro Rechner auf dem das Programm läuft vorgehalten werden?

ds10

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 30.01.2020 - 18:38 Uhr  ·  #153837
Es gäbe ja als Kompromiss die Möglichkeit einfach den Platzhalter "~" zu unterstützen und diesen dann immer durch System.getProperty("user.home") zu ersetzen, wenn dieser am Beginn des Pfades steht. Dann werden zwar keine relativen Pfade unterstützt, aber immerhin die Verwendung von unterschiedlichen Benutzerverzeichnissen. Obwohl natürlich ein Symlink auf das Verzeichnis auch eine brauchbare und simple Lösung ist.

hibiscus

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 30.01.2020 - 20:56 Uhr  ·  #153845
Zitat geschrieben von msa

Mal eine blöde Frage zum Verständnis: Wieso wird der Pfad offenbar bei jeder einzelnen Datei in der Datenbank gespeichert?

Weil pro Konto mit einer Reihe von Platzhaltern definiert werden kann, in welchen Ordner die Dateien gespeichert werden sollen, wenn sie von der Bank abgerufen werden. Im Wiki unter https://www.willuhn.de/wiki/do…ontoauszug ist das beschrieben. Die Werte der Platzhalter sind teilweise nur zum Zeitpunkt des Abrufs bekannt oder koennen spaeter noch vom User geaendert werden. Daher muss der Pfad mit gespeichert werden. Wenn er dynamisch erzeugt werden wuerde, wuerde er danach nicht mehr stimmen und die Datei nicht mehr gefunden werden. Sollte der User dennoch die Dateien an einen anderen Ort verschieben wollen, besitzt Hibiscus auch eine Migrationsfunktion (Rechtsklick auf den Kontoauszug). Falls sich also etwas aendert, kann der User die Dateien verschieben lassen und die Pfade werden in der Datenbank automatisch angepasst.

Es ist nicht so, dass die genannten Funktionen fixe Ideen waren, die mal eben auf die Schnelle wieder auf was anderes umgekrempelt werden koennen. Da steckt schon etwas an Arbeit drin.

hibiscus

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 30.01.2020 - 20:59 Uhr  ·  #153846
Zitat geschrieben von ds10

Es gäbe ja als Kompromiss die Möglichkeit einfach den Platzhalter "~" zu unterstützen und diesen dann immer durch System.getProperty("user.home") zu ersetzen, wenn dieser am Beginn des Pfades steht.


Dann haette man in den Pfaden aber zwei unterschiedliche Arten von Platzhaltern. Die einen (wie z.Bsp. "${jahr}"), die zum Zeitpunkt des Abrufs von der Bank aufgeloest werden. Und dann noch andere (wie "~"), die erst zum Zeitpunkt des Zugriffs auf die Datei aufgeloest werden. Und dann kommt der erste Windows-User, der "~" im Ordner- oder Dateinamen verwendet, weil das dort eben geht. Die Konfigurierbarkeit der Pfade beim Abruf der Kontoauszuege ist bereits jetzt komplex genug. Ich moechte da nicht noch mehr Featuritis reinbauen.

ds10

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 31.01.2020 - 21:44 Uhr  ·  #153859
Zitat geschrieben von hibiscus
Und dann kommt der erste Windows-User, der "~" im Ordner- oder Dateinamen verwendet, weil das dort eben geht.
Deshalb meinte ich auch nur den Platzhalter "~", wenn der ganz am Anfang steht, denn das geht unter Windows nicht, da zuerst der Laufwerksbuchstabe käme. Oder eben gleich "~/" am Anfang.

Zitat geschrieben von hibiscus
Die Konfigurierbarkeit der Pfade beim Abruf der Kontoauszuege ist bereits jetzt komplex genug. Ich moechte da nicht noch mehr Featuritis reinbauen.
Ja das ist schon verständlich, man muss auch darauf achten, die Komplexität nicht zu hoch zu schrauben.

Wie schon geschrieben ist ein Symlink definitiv eine brauchbare Lösung.

hibiscus

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 01.02.2020 - 09:40 Uhr  ·  #153861
Mit "~" wäre es aber relativ zu Homebereich des Users. Wenn tatsächlich relative Pfade, dann wäre doch relativ zum Jameica-Benutzerordner sinnvoller, oder?

ds10

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 01.02.2020 - 17:43 Uhr  ·  #153863
Das wäre dann die komplette Unterstützung für relative Pfade. Den Platzhalter "~" zu unterstützen war nur mein Vorschlag für einen möglichen Kompromiss, der nicht direkt relative Pfade hinzufügt, sondern nur die Ersetzung von "~" am Anfang mit System.getProperty("user.home"). Das würde das ursprüngliche Problem des Nutzers lösen, ohne dass der ganze Aufwand für relative Pfade notwendig würde.

Das sollte dann funktionieren, wenn die Kontoauszüge unterhalb des Nutzerverzeichnisses liegen, wenn sie da nicht sind, sondern ganz woanders, dann geht es natürlich nicht mit "~".

Ich hatte das Problem bei TV-Browser auch und das dann tatsächlich so gelöst, wie deine Idee es relativ zum Einstellungsverzeichnis zu beziehen. Siehe:
https://sourceforge.net/p/tvbr…ities.java

Ab Zeile 1246 die Methoden checkForRelativePath und translateRelativePath. Die Idee dahinter ist, einfach alles was als relativer Pfad gespeichert werden kann, auch als solcher abzuspeichern. Der Benutzer bekommt davon in der Regel gar nichts mit, da diesem immer der vollständige Pfad angezeigt wird.

hibiscus

Betreff:

Re: Linux - relative Pfade für Kontoauszüge

 ·  Gepostet: 03.02.2020 - 09:15 Uhr  ·  #153875
Bei den Konfigurationsdateien der Bankzugänge (die Passport-Dateien) gibt es genau sowas auch bereits. Dort wird geprüft, ob sich der Pfad zur Passport-Datei innerhalb des Jameica-Benutzerordners befindet. Wenn das der Fall ist, wird der Pfad "relativiert". Dafür gibt es sogar Funktionen direkt in Jameica:

Application.getPlatform().toRelative(String)
Application.getPlatform().toAbsolute(String)

Bei einfach abzuspeichernden Dateien sehe ich da auch kein Problem. Wenn aber sowohl im Dateinamen als auch im Ordner noch dynamische Platzhalter hinzukommen (https://github.com/willuhn/hibiscus/blob/master/src/de/willuhn/jameica/hbci/server/KontoauszugPdfUtil.java#L368), die Ordner-Strukturen on demand automatisch erstellt werden und das Speichern der ganzen Kontoauszüge alternativ auch über einen Server per "jameica.messaging"-Plugin erfolgen kann, dann ist da bereits eine Komplexität drin, die ich nich noch weiter erhöhen will.