|
|
|
|
@ -1,5 +1,16 @@
@@ -1,5 +1,16 @@
|
|
|
|
|
/* © SRSoftware 2025 */ |
|
|
|
|
package de.srsoftware.umbrella.files; |
|
|
|
|
|
|
|
|
|
import static de.srsoftware.umbrella.core.ConnectionProvider.connect; |
|
|
|
|
import static de.srsoftware.umbrella.core.Constants.*; |
|
|
|
|
import static de.srsoftware.umbrella.core.ModuleRegistry.projectService; |
|
|
|
|
import static de.srsoftware.umbrella.core.ModuleRegistry.userService; |
|
|
|
|
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*; |
|
|
|
|
import static de.srsoftware.umbrella.files.Constants.CONFIG_DATABASE; |
|
|
|
|
import static de.srsoftware.umbrella.files.Constants.CONFIG_FILESTORE; |
|
|
|
|
import static java.net.HttpURLConnection.HTTP_OK; |
|
|
|
|
import static java.nio.charset.StandardCharsets.UTF_8; |
|
|
|
|
|
|
|
|
|
import com.sun.net.httpserver.HttpExchange; |
|
|
|
|
import de.srsoftware.configuration.Configuration; |
|
|
|
|
import de.srsoftware.tools.Path; |
|
|
|
|
@ -11,26 +22,16 @@ import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
@@ -11,26 +22,16 @@ import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
|
|
|
|
import de.srsoftware.umbrella.core.model.Project; |
|
|
|
|
import de.srsoftware.umbrella.core.model.Token; |
|
|
|
|
import de.srsoftware.umbrella.core.model.UmbrellaUser; |
|
|
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
|
import java.io.FileInputStream; |
|
|
|
|
import java.io.FileNotFoundException; |
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.net.URLDecoder; |
|
|
|
|
import java.nio.file.Files; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Optional; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
import static de.srsoftware.umbrella.core.ConnectionProvider.connect; |
|
|
|
|
import static de.srsoftware.umbrella.core.Constants.*; |
|
|
|
|
import static de.srsoftware.umbrella.core.ModuleRegistry.projectService; |
|
|
|
|
import static de.srsoftware.umbrella.core.ModuleRegistry.userService; |
|
|
|
|
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*; |
|
|
|
|
import static de.srsoftware.umbrella.files.Constants.CONFIG_DATABASE; |
|
|
|
|
import static de.srsoftware.umbrella.files.Constants.CONFIG_FILESTORE; |
|
|
|
|
import static java.net.HttpURLConnection.HTTP_OK; |
|
|
|
|
|
|
|
|
|
public class FileModule extends BaseHandler implements FileService { |
|
|
|
|
|
|
|
|
|
private final File baseDir; |
|
|
|
|
@ -91,7 +92,7 @@ public class FileModule extends BaseHandler implements FileService {
@@ -91,7 +92,7 @@ public class FileModule extends BaseHandler implements FileService {
|
|
|
|
|
} |
|
|
|
|
var project = projects.loadMembers(projects.load(pid)); |
|
|
|
|
var filename = "/project/"+pid; |
|
|
|
|
if (!path.empty()) filename += "/"+path; |
|
|
|
|
if (!path.empty()) filename += "/"+URLDecoder.decode(path.toString(),UTF_8); |
|
|
|
|
if (!project.hasMember(user) && !fileDb.isPermitted(user,filename)) throw forbidden("You are not allowed to access {0}",filename); |
|
|
|
|
var file = new File(baseDir+filename); |
|
|
|
|
if (!file.exists()) throw unprocessable("{0} does not exist!",filename); |
|
|
|
|
|