NEW : Introducing Nica System

This commit is contained in:
2022-04-06 09:59:48 +02:00
parent f66fb9dd95
commit af0bf649dc
22 changed files with 215 additions and 31 deletions

View File

@@ -0,0 +1,17 @@
package Files;
import java.io.FileInputStream;
import java.io.IOException;
import static Credentials.UserCredentials.getHomeRoot;
public class ReadExcelFile {
public void readExcel() throws IOException {
// Create an instance of the class that reads Excel files
// Read XLSX file
FileInputStream file = new FileInputStream(getHomeRoot() + "Spritztagebuch.xlsx");
}
}

View File

@@ -0,0 +1,113 @@
package Files;
import Credentials.UserCredentials;
import HttpCall.PlonkHttpGet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnZipFile {
// public static void main(String[] args) {
//
// UserCredentials userCredentials = new UserCredentials();
// String workPath = userCredentials.getHomeRoot();
//
// Path source = Paths.get(workPath+"PlonkData.zip");
// Path target = Paths.get(workPath);
//
// try {
//
// unzipFolder(source, target);
// System.out.println("Done");
//
// } catch (IOException e) {
// e.printStackTrace();
// }
//
// }
public static void unzipFolder(Path source, Path target) throws IOException {
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(source.toFile()))) {
// list files in zip
ZipEntry zipEntry = zis.getNextEntry();
while (zipEntry != null) {
boolean isDirectory = false;
// example 1.1
// some zip stored files and folders separately
// e.g data/
// data/folder/
// data/folder/file.txt
if (zipEntry.getName().endsWith(File.separator)) {
isDirectory = true;
}
Path newPath = zipSlipProtect(zipEntry, target);
if (isDirectory) {
Files.createDirectories(newPath);
} else {
// example 1.2
// some zip stored file path only, need create parent directories
// e.g data/folder/file.txt
if (newPath.getParent() != null) {
if (Files.notExists(newPath.getParent())) {
Files.createDirectories(newPath.getParent());
}
}
// copy files, nio
Files.copy(zis, newPath, StandardCopyOption.REPLACE_EXISTING);
// copy files, classic
/*try (FileOutputStream fos = new FileOutputStream(newPath.toFile())) {
byte[] buffer = new byte[1024];
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
}*/
}
zipEntry = zis.getNextEntry();
}
zis.closeEntry();
}
}
// protect zip slip attack
public static Path zipSlipProtect(ZipEntry zipEntry, Path targetDir)
throws IOException {
// test zip slip vulnerability
// Path targetDirResolved = targetDir.resolve("../../" + zipEntry.getName());
Path targetDirResolved = targetDir.resolve(zipEntry.getName());
// make sure normalized file still has targetDir as its prefix
// else throws exception
Path normalizePath = targetDirResolved.normalize();
if (!normalizePath.startsWith(targetDir)) {
throw new IOException("Bad zip entry: " + zipEntry.getName());
}
return normalizePath;
}
}