From 7e5166a55fa459deab5579f764b7bb34719e5ec9 Mon Sep 17 00:00:00 2001 From: ulrich Date: Thu, 14 Nov 2024 11:06:34 +0000 Subject: [PATCH] Dokumentation in Arbeit: Inflator fertig dokumentiert, kleinere Anpassungen --- src/de/uhilger/fm/Inflator.java | 36 +++++++++++++++++++++--------------- src/de/uhilger/fm/Deflator.java | 15 ++++++++------- src/de/uhilger/fm/package-info.java | 7 +++++++ 3 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/de/uhilger/fm/Deflator.java b/src/de/uhilger/fm/Deflator.java index 5122475..1551c8c 100644 --- a/src/de/uhilger/fm/Deflator.java +++ b/src/de/uhilger/fm/Deflator.java @@ -40,13 +40,14 @@ * gepackt werden soll. Die Datei mit dem gepackten Ordnerinhalt wird in dem Ordner angelegt, der * den zu packenden Ordner enthaelt. * - * @param fName Name des zu packenden Ordners - * @param relPath relativer Pfad zum Ordner, der gepackt werden soll + * @param fName Name und Pfad relativ zu base des zu packenden Ordners /home/neu-2024-11-08-1722/ + * @param relPath relativer Pfad zum Ordner, der gepackt werden soll /h2/cms/home/neu-2024-11-08-1722/?zip + * @param base /Users/ulli/data/helix-data * @return die Meldung mit dem Ergebnis. Wenn die Meldung nicht "ok" lautet wurde die ZIP-Datei * nicht erzeugt und die Meldung nennt den Grund. */ - public String packFolder(String fName, String relPath, String base/*, HttpExchange e*/) { - if (!relPath.startsWith(".")) { + public String packFolder(String fName, /*String relPath, */String base) { +// if (!relPath.startsWith(".")) { try { //String fName = getFileName(e); //logger.fine("fName: " + fName); @@ -72,9 +73,9 @@ //logger.log(Level.SEVERE, result, ex); return result; } - } else { - return "Falsche relative Pfadangabe"; - } +// } else { +// return "Falsche relative Pfadangabe"; +// } } /** diff --git a/src/de/uhilger/fm/Inflator.java b/src/de/uhilger/fm/Inflator.java index a3f72b8..4957baa 100644 --- a/src/de/uhilger/fm/Inflator.java +++ b/src/de/uhilger/fm/Inflator.java @@ -26,18 +26,23 @@ import java.util.zip.ZipFile; /** - * Eine Klasse mit Methoden zum entpacken von Dateien + * Entpacken von Dateien * * @author Ulrich Hilger, 15. Januar 2024 */ public class Inflator { - /* --------- ZIP entpacken ---------------- */ - - public String extractZipfile(String fName, String relPath, String base) { + /** + * Eine Zip-Datei entpacken + * + * @param fName Name der Zip-Datei + * @param base absoluter Pfad des Ablageortes der Zip-Datei + * @return 'ok', wenn erfolgreich oder Fehlermeldung, wenn nicht + */ + public String extractZipfile(String fName, /*String relPath, */String base) { //logger.fine("fName: " + fName + ", relPath: " + relPath); String result = null; - if (!relPath.startsWith(".")) { +// if (!relPath.startsWith(".")) { try { //File targetDir = new File(fileBase, relPath); //File targetDir = getTargetDir(relPath); @@ -51,17 +56,17 @@ result = ex.getLocalizedMessage(); //logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); } - } else { - result = "Falsche relative Pfadangabe."; - } +// } else { +// result = "Falsche relative Pfadangabe."; +// } return result; } /** - * extract a given ZIP archive to the folder respective archive resides in + * Eine Datei in den Ordner entpacken, in dem sie liegt * - * @param archive the archive to extract - * @throws Exception + * @param archive die zu entpackende Zip-Datei + * @throws Exception wenn etwas schief geht */ private boolean extract(File archive) throws Exception { ZipFile zipfile = new ZipFile(archive); @@ -76,11 +81,12 @@ /** * unzip a given entry of a given zip file to a given location + * Einen Eintrag in einer ZIP-Datei an einen gegebenen Ausgabeort extrahieren * - * @param zipfile the zip file to read an entry from - * @param zipentry the zip entry to read - * @param destPath the path to the destination location for the extracted content - * @throws IOException + * @param zipfile die Zip-Datei, aus der ein zu entpackender Eintrag gelesen werden soll + * @param zipentry der Eintrag, der entpackt werden soll + * @param destPath der Pfad zum Ausgabeort + * @throws IOException wenn etwas schief geht */ private void unzip(ZipFile zipfile, ZipEntry zipentry, String destPath) throws IOException { byte buf[] = new byte[1024]; diff --git a/src/de/uhilger/fm/package-info.java b/src/de/uhilger/fm/package-info.java index 1f0e98c..aa832be 100644 --- a/src/de/uhilger/fm/package-info.java +++ b/src/de/uhilger/fm/package-info.java @@ -32,6 +32,13 @@ * Inflator().extractZipfile(fileName, path, base) * </pre> * + * Die hier enthaltenen Funktionen beinhalten keine Massnahmen gegen Path Traversal o.ä. + * Dies ist beabsichtigt, um Pfadausdruecke wie z.B. '../' bei den hier implementierten + * Dateioperationen verarbeiten zu koennen. + * + * <b>Programme, die diese Klassenbibliothek einsetzen, muessen eigene Massnahmen gegen + * Path Traversal o.ä. beisteuern, sofern dies nicht gewuenscht ist.</b> + * * <p>Die folgenden Funktionalitaeten sind in dieser Auspraegung einer * Dateiverwaltung fest angelegt. Sie sind damit Kandidaten fuer eine * Erweiterung dieser Klassenbibliothek um andere evtl. benoetigte -- Gitblit v1.9.3