Support Elytron file-based used provider

This commit is contained in:
2022-12-06 17:26:57 +01:00
parent b615e486d6
commit 0d6219f6b6
10 changed files with 77 additions and 17 deletions

View File

@@ -1,5 +1,7 @@
package sh.rhiobet.lalafin;
import java.util.List;
import java.util.Optional;
import io.smallrye.config.ConfigMapping;
@ConfigMapping(prefix = "lalafin")
@@ -7,5 +9,6 @@ public interface LalafinConfiguration {
public String base_url();
public String user_management_url();
public Optional<List<String>> disabled_services();
}
}

View File

@@ -13,11 +13,15 @@ import org.jboss.resteasy.reactive.MultipartForm;
import io.quarkus.security.Authenticated;
import io.quarkus.security.identity.SecurityIdentity;
import sh.rhiobet.lalafin.api.model.UploadForm;
import sh.rhiobet.lalafin.LalafinConfiguration;
import sh.rhiobet.lalafin.upload.UploadService;
@Authenticated
@Path("/api/private/upload")
public class UploadPrivateAPI {
@Inject
LalafinConfiguration lalafinConfiguration;
@Inject
UploadService uploadService;
@@ -28,6 +32,10 @@ public class UploadPrivateAPI {
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public Response uploadFile(@MultipartForm UploadForm data) {
if (lalafinConfiguration.disabled_services().isPresent()
&& lalafinConfiguration.disabled_services().get().contains("upload")) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return uploadService.upload(securityIdentity.getPrincipal().getName(), data.filename,
data.password, data.file);
}
@@ -35,12 +43,20 @@ public class UploadPrivateAPI {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response listUploads() {
if (lalafinConfiguration.disabled_services().isPresent()
&& lalafinConfiguration.disabled_services().get().contains("upload")) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return uploadService.list(securityIdentity.getPrincipal().getName());
}
@DELETE
@Path("/{iv}")
public Response getFile(String iv) {
if (lalafinConfiguration.disabled_services().isPresent()
&& lalafinConfiguration.disabled_services().get().contains("upload")) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return uploadService.delete(securityIdentity.getPrincipal().getName(), iv);
}
}

View File

@@ -6,11 +6,15 @@ import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import io.quarkus.runtime.annotations.RegisterForReflection;
import sh.rhiobet.lalafin.LalafinConfiguration;
import sh.rhiobet.lalafin.upload.UploadService;
@RegisterForReflection
@Path("/api/public/upload")
public class UploadPublicAPI {
@Inject
LalafinConfiguration lalafinConfiguration;
@Inject
UploadService uploadService;
@@ -18,6 +22,10 @@ public class UploadPublicAPI {
@Path("/{user}/{iv}")
public Response getFile(String user, String iv,
@QueryParam("password") String password) {
if (lalafinConfiguration.disabled_services().isPresent()
&& lalafinConfiguration.disabled_services().get().contains("upload")) {
return Response.status(Response.Status.NOT_FOUND).build();
}
if (password == null) {
password = "";
}

View File

@@ -8,7 +8,7 @@ import io.smallrye.config.ConfigMapping;
public interface FileApiConfiguration {
public String directory();
public List<String> ignored();
public Optional<List<String>> ignored();
public List<Route> routes();
public static interface Route {
@@ -16,4 +16,4 @@ public interface FileApiConfiguration {
public Optional<List<String>> roles();
}
}
}

View File

@@ -115,9 +115,14 @@ public class FileInfoService {
String fileName = p.getFileName().toString();
String fileUri = URLEncoder.encode(fileName, StandardCharsets.UTF_8)
.replace("+", "%20");
for (String ignoreString : fileApiConfiguration.ignored()) {
if (fileName.startsWith(".") || fileName.endsWith(ignoreString)) {
return;
if (fileName.startsWith(".")) {
return;
}
if (fileApiConfiguration.ignored().isPresent()) {
for (String ignoreString : fileApiConfiguration.ignored().get()) {
if (fileName.endsWith(ignoreString)) {
return;
}
}
}
Path thumbPath = null;

View File

@@ -1,14 +1,17 @@
package sh.rhiobet.lalafin.nzb;
import javax.annotation.security.RolesAllowed;
import io.quarkus.security.Authenticated;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import sh.rhiobet.lalafin.LalafinConfiguration;
@RolesAllowed("japan7")
@Authenticated
@Path("/nzb")
public class NzbResource {
@Inject
LalafinConfiguration lalafinConfiguration;
@Inject
NzbResultService resultService;
@@ -16,6 +19,10 @@ public class NzbResource {
@GET
@Path("/id/{id}")
public Response getResult(String id) {
if (lalafinConfiguration.disabled_services().isPresent()
&& lalafinConfiguration.disabled_services().get().contains("nzb")) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return resultService.getResult(id);
}

View File

@@ -6,10 +6,14 @@ import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import io.quarkus.security.Authenticated;
import io.quarkus.security.identity.SecurityIdentity;
import sh.rhiobet.lalafin.LalafinConfiguration;
@Authenticated
@Path("/upload")
public class UploadResource {
@Inject
LalafinConfiguration lalafinConfiguration;
@Inject
SecurityIdentity securityIdentity;
@@ -19,6 +23,10 @@ public class UploadResource {
@GET
@Path("/")
public Response serveIndex() {
if (lalafinConfiguration.disabled_services().isPresent()
&& lalafinConfiguration.disabled_services().get().contains("upload")) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return fileUploadService.index(securityIdentity.getPrincipal().getName());
}

View File

@@ -24,9 +24,10 @@ quarkus:
token:
refresh-expired: true
# lalafin:
# base_url: <url>
# user_management_url: <url>
lalafin:
base_url: 127.0.0.1:8910
disabled_services: {}
user_management_url: 127.0.0.1:8910
api:
file:
@@ -46,4 +47,4 @@ api:
# events:
# - path: /
# year: 2021
# month: 12
# month: 12