From 7b9319eea4f26ad7d2b6986cfdc1976b7f433e9a Mon Sep 17 00:00:00 2001 From: Steven Winship <39765413+stevenwinship@users.noreply.github.com> Date: Wed, 12 Jun 2024 11:49:38 -0400 Subject: [PATCH 1/3] ignore shapefiles if they are under a hidden directory in the zip file --- .../iq/dataverse/util/ShapefileHandler.java | 42 +++++++++++------- .../util/shapefile/ShapefileHandlerTest.java | 8 +++- src/test/resources/hiddenShapefiles.zip | Bin 0 -> 53764 bytes 3 files changed, 33 insertions(+), 17 deletions(-) create mode 100644 src/test/resources/hiddenShapefiles.zip diff --git a/src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java b/src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java index 9786fda4217..0c77e33712b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java @@ -15,6 +15,7 @@ import java.util.*; import java.nio.file.Files; +import java.nio.file.Paths; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; import java.util.logging.Level; import java.util.logging.Logger; @@ -695,33 +696,42 @@ private boolean examineZipfile(FileInputStream zip_file_stream){ this.filesListInDir.clear(); this.filesizeHash.clear(); this.fileGroups.clear(); - - try{ + + try{ ZipInputStream zipStream = new ZipInputStream(zip_file_stream); ZipEntry entry; - + List hiddenDirectories = new ArrayList<>(); while((entry = zipStream.getNextEntry())!=null){ + String zentryFileName = entry.getName(); + boolean isDirectory = entry.isDirectory(); + + Boolean skip = isDirectory || this.isFileToSkip(zentryFileName); + + // check if path is hidden + if (isDirectory && Files.isHidden(Paths.get(zentryFileName))) { + hiddenDirectories.add(zentryFileName); + logger.info("Ignoring files under hidden directory: " + zentryFileName); + } else { + // check if the path was already found to be hidden + for (String hidden : hiddenDirectories) { + if (zentryFileName.startsWith(hidden)) { + skip = true; + break; + } + } + } - String zentryFileName = entry.getName(); - //msg("zip entry: " + entry.getName()); - // Skip files or folders starting with __ - if (this.isFileToSkip(zentryFileName)){ - continue; - } - - if (entry.isDirectory()) { - //String dirpath = outputFolder + "/" + zentryFileName; - //createDirectory(dirpath); - continue; + if (skip) { + continue; } - + String unzipFileName = this.getFileBasename(zentryFileName); if (unzipFileName==null){ logger.warning("Zip Entry Basename is an empty string: " + zentryFileName); continue; } String unzipFolderName = this.getFolderName(zentryFileName); - + String unzipFilePath = unzipFileName; if (unzipFolderName != null) { unzipFilePath = unzipFolderName + "/" + unzipFileName; diff --git a/src/test/java/edu/harvard/iq/dataverse/util/shapefile/ShapefileHandlerTest.java b/src/test/java/edu/harvard/iq/dataverse/util/shapefile/ShapefileHandlerTest.java index f0e538616b2..3c5b4797b0a 100644 --- a/src/test/java/edu/harvard/iq/dataverse/util/shapefile/ShapefileHandlerTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/util/shapefile/ShapefileHandlerTest.java @@ -282,8 +282,14 @@ public void testZippedShapefileWithExtraFiles() throws IOException{ msg("Passed!"); } - + @Test + public void testHiddenFiles() { + // test with shapefiles in hidden directory + ShapefileHandler shp_handler = new ShapefileHandler("src/test/resources/hiddenShapefiles.zip"); + shp_handler.DEBUG= true; + assertFalse(shp_handler.containsShapefile()); + } diff --git a/src/test/resources/hiddenShapefiles.zip b/src/test/resources/hiddenShapefiles.zip new file mode 100644 index 0000000000000000000000000000000000000000..64ed1721eb20f9c5bcaff7e205ec866a967b90d2 GIT binary patch literal 53764 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 BF?s+1 literal 0 HcmV?d00001 From 2eea8e6a46cf22273ea2f272ac87c4517ed444e1 Mon Sep 17 00:00:00 2001 From: Steven Winship <39765413+stevenwinship@users.noreply.github.com> Date: Wed, 12 Jun 2024 15:42:04 -0400 Subject: [PATCH 2/3] added doc and updated zip file --- ...pefiles-under-hidden-directories-in-zip.md | 5 +++++ src/test/resources/hiddenShapefiles.zip | Bin 53764 -> 54468 bytes 2 files changed, 5 insertions(+) create mode 100644 doc/release-notes/8945-ignore-shapefiles-under-hidden-directories-in-zip.md diff --git a/doc/release-notes/8945-ignore-shapefiles-under-hidden-directories-in-zip.md b/doc/release-notes/8945-ignore-shapefiles-under-hidden-directories-in-zip.md new file mode 100644 index 00000000000..145ae5f6d55 --- /dev/null +++ b/doc/release-notes/8945-ignore-shapefiles-under-hidden-directories-in-zip.md @@ -0,0 +1,5 @@ +### Shapefile Handling will now ignore files under a hidden directory within the zip file + +Directories that are hidden will be ignored when determining if a zip file contains Shapefile files. + +For more information, see #8945. \ No newline at end of file diff --git a/src/test/resources/hiddenShapefiles.zip b/src/test/resources/hiddenShapefiles.zip index 64ed1721eb20f9c5bcaff7e205ec866a967b90d2..c733a2083ae601f27a236284bacd877542e36c78 100644 GIT binary patch delta 1530 zcmZwFUuaTM90%}oy-rAm90$hGIxpM9tPPhqT~=cz*;oscE!UImGPbadw#A@_U}QuT zL3DQ@2!e!sX%MU(wlF7MLYvPFGtP>mS3 z0i}}Dn7}MDgzX@sl5|u}yRlo$XK@b<7o>4K2*c8rYgy;U0WtT|MP3Ms1wZ}83t_P^ zLT}109DxNTH^yYWPuHvxVowd{Ja_^=qvpe`e<0k|tTM{V)8FN0l@RNgNj04y$Q*Gy zZvM=x)$d%8(G{5LiTR6%Ot+) z=ch@@BkojtZM!gf@2lKuH>{<)Vbq*GPFK<<{%y5_&ZoVEp#Mz{e9Mr$O$UfwLw-QQ zcaNUPxQM&PBo30Xi~O%~9KNF6^hL%=dNkd#kS$0Z)R=XWK@IEGfo^7A^L1T<_# zWL~P_Es;o_R8HyFgHB5B9w2)LfrRLAzK=|3Iz1WyOwHd1 zWcaE;M(NTv?DS+tU?F;V#{=eCjRU6Sg47Xjp=`%le{uC&_P+*H&4=hv!9$eV5vuIV z8f1kB#L{reMC@Ag&sZV$%CLcv$NS`<6icC-|v0%92(sebw6b`yI!HLlBkIUYF3ITZB(cyiDFAl(+-+a;3rL~HuRn&6_&oJByL0f zqLGS&xUZ6w4ZYxqejtj{HsqCzR2nYpDw(nn+pyF|4Sl2sMV)4S2O7ESr7dSL@V1)x1Jv%SNbNJYx2p<~Z?n*_C2zgWB886bahw Date: Wed, 12 Jun 2024 19:36:44 -0400 Subject: [PATCH 3/3] Update src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java Co-authored-by: Philip Durbin --- .../java/edu/harvard/iq/dataverse/util/ShapefileHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java b/src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java index 0c77e33712b..f1440cc3c02 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/ShapefileHandler.java @@ -710,7 +710,7 @@ private boolean examineZipfile(FileInputStream zip_file_stream){ // check if path is hidden if (isDirectory && Files.isHidden(Paths.get(zentryFileName))) { hiddenDirectories.add(zentryFileName); - logger.info("Ignoring files under hidden directory: " + zentryFileName); + logger.fine("Ignoring files under hidden directory: " + zentryFileName); } else { // check if the path was already found to be hidden for (String hidden : hiddenDirectories) {