Support Elytron file-based used provider
This commit is contained in:
14
Makefile
14
Makefile
@@ -1,7 +1,15 @@
|
||||
executable:
|
||||
./mvnw package -Pnative
|
||||
./mvnw package -Pnative $(EXECUTABLE_ARGS)
|
||||
|
||||
image:
|
||||
docker build -t rhiobet/lalafin . -f src/main/docker/Dockerfile.native
|
||||
docker build -t rhiobet/lalafin$(IMAGE_TAG) . -f src/main/docker/Dockerfile.native
|
||||
|
||||
all: executable image
|
||||
file:
|
||||
$(MAKE) EXECUTABLE_ARGS="-Dquarkus.oidc.enabled=false -Dquarkus.security.users.file.enabled=true -Dquarkus.security.users.file.users=config/users.properties -Dquarkus.security.users.file.roles=config/roles.properties" executable
|
||||
$(MAKE) IMAGE_TAG=":file" image
|
||||
|
||||
oidc:
|
||||
$(MAKE) executable
|
||||
$(MAKE) IMAGE_TAG=":oidc" image
|
||||
|
||||
all: file oidc
|
||||
|
||||
8
pom.xml
8
pom.xml
@@ -12,10 +12,10 @@
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<quarkus-plugin.version>2.7.1.Final</quarkus-plugin.version>
|
||||
<quarkus-plugin.version>2.14.2.Final</quarkus-plugin.version>
|
||||
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
|
||||
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
|
||||
<quarkus.platform.version>2.7.1.Final</quarkus.platform.version>
|
||||
<quarkus.platform.version>2.14.2.Final</quarkus.platform.version>
|
||||
<surefire-plugin.version>2.22.1</surefire-plugin.version>
|
||||
</properties>
|
||||
<dependencyManagement>
|
||||
@@ -50,6 +50,10 @@
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-config-yaml</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-elytron-security-properties-file</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openimaj</groupId>
|
||||
<artifactId>core-image</artifactId>
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 = "";
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user