diff --git a/pom.xml b/pom.xml
index ced6f65..a5ef9ac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,12 +33,6 @@
1.18.30
-
- org.im4java
- im4java
- 1.4.0
-
-
org.slf4j
slf4j-api
@@ -101,6 +95,7 @@
-H:+ReportExceptionStackTraces
--gc=G1
+ -Ob
--enable-url-protocols=https
-H:ReflectionConfigurationFiles=src/main/resources/reflect-config.json
diff --git a/src/main/java/lion/Domain/GalleryTask.java b/src/main/java/lion/Domain/GalleryTask.java
index 09b7904..f57b90e 100644
--- a/src/main/java/lion/Domain/GalleryTask.java
+++ b/src/main/java/lion/Domain/GalleryTask.java
@@ -17,26 +17,15 @@ public class GalleryTask {
public static byte COMPRESSING = 5;
-
- public static byte DOWNLOAD_ALL = 3;
- public static byte DOWNLOAD_PREVIEW = 2;
- public static byte DOWNLOAD_SOURCE = 1;
-
-
-
@JsonInclude(JsonInclude.Include.NON_NULL)
private String name;
private int gid;
- private int pages;
-
private byte status;
private int proceeding;
- private byte type;
-
@JsonIgnore
private String path;
diff --git a/src/main/java/lion/Message/AbstractMessage.java b/src/main/java/lion/Message/AbstractMessage.java
index 8491abb..ff7aada 100644
--- a/src/main/java/lion/Message/AbstractMessage.java
+++ b/src/main/java/lion/Message/AbstractMessage.java
@@ -10,14 +10,10 @@ public class AbstractMessage {
public static final byte RESPONSE_MESSAGE = 0;
- public static final byte GALLERY_PAGE_QUERY_MESSAGE = 5;
-
public static final byte IDENTITY_MESSAGE = 6;
public static final byte MAINTAIN_MESSAGE = 7;
- public static final byte GALLERY_REQUEST_MESSAGE = 101;
-
public byte messageType;
public int messageId;
diff --git a/src/main/java/lion/Message/Main/GalleryPageQueryMessage.java b/src/main/java/lion/Message/Main/GalleryPageQueryMessage.java
deleted file mode 100644
index c51b0b6..0000000
--- a/src/main/java/lion/Message/Main/GalleryPageQueryMessage.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package lion.Message.Main;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import lion.Message.AbstractMessage;
-import lombok.Data;
-
-@Data
-public class GalleryPageQueryMessage extends AbstractMessage {
- {
- messageType = GALLERY_PAGE_QUERY_MESSAGE;
- }
-
- @JsonInclude(JsonInclude.Include.NON_NULL)
- String name;
-
- int page;
-
- @JsonInclude(JsonInclude.Include.NON_NULL)
- String pageName;
-
- byte result;
-}
diff --git a/src/main/java/lion/Message/Main/GalleryRequestMessage.java b/src/main/java/lion/Message/Main/GalleryRequestMessage.java
deleted file mode 100644
index 470771e..0000000
--- a/src/main/java/lion/Message/Main/GalleryRequestMessage.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package lion.Message.Main;
-
-import lion.Message.AbstractMessage;
-import lombok.Data;
-
-@Data
-//请求预览/压缩包
-public class GalleryRequestMessage extends AbstractMessage {
-
- public static final byte SOURCE = 1;
- public static final byte PREVIEW = 2;
-
- public static final byte COMPRESS_SOURCE = 3;
-
- {
- messageType = GALLERY_REQUEST_MESSAGE;
- }
-
- String galleryName;
-
- byte type;
-
- short page;
-
- short port;
-}
diff --git a/src/main/java/lion/Message/MessageCodec.java b/src/main/java/lion/Message/MessageCodec.java
index f8e913b..d61c135 100644
--- a/src/main/java/lion/Message/MessageCodec.java
+++ b/src/main/java/lion/Message/MessageCodec.java
@@ -41,10 +41,8 @@ public class MessageCodec extends ByteToMessageCodec {
AbstractMessage abstractMessage = switch (messageType){
case AbstractMessage.DOWNLOAD_POST_MESSAGE -> objectMapper.readValue(metadata, DownloadPostMessage.class);
case AbstractMessage.DOWNLOAD_STATUS_MESSAGE -> objectMapper.readValue(metadata, DownloadStatusMessage.class);
- case AbstractMessage.GALLERY_REQUEST_MESSAGE -> objectMapper.readValue(metadata, GalleryRequestMessage.class);
case AbstractMessage.RESPONSE_MESSAGE -> objectMapper.readValue(metadata, ResponseMessage.class);
case AbstractMessage.DELETE_GALLERY_MESSAGE -> objectMapper.readValue(metadata, DeleteGalleryMessage.class);
- case AbstractMessage.GALLERY_PAGE_QUERY_MESSAGE -> objectMapper.readValue(metadata, GalleryPageQueryMessage.class);
case AbstractMessage.IDENTITY_MESSAGE -> objectMapper.readValue(metadata, IdentityMessage.class);
case AbstractMessage.MAINTAIN_MESSAGE -> objectMapper.readValue(metadata, MaintainMessage.class);
default -> null;
diff --git a/src/main/java/lion/Service/DeliveryService.java b/src/main/java/lion/Service/DeliveryService.java
deleted file mode 100644
index fcf6aea..0000000
--- a/src/main/java/lion/Service/DeliveryService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package lion.Service;
-import lion.ErrorCode.ErrorCode;
-import lion.Message.Main.GalleryPageQueryMessage;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-import java.nio.channels.SocketChannel;
-import java.nio.file.StandardOpenOption;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-import java.util.Comparator;
-import java.util.LinkedHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-public class DeliveryService {
-
- static String storagePath = "/root/gallery/gallery/";
- //缓存排序后的页数
- static LinkedHashMap> pageCache;
-
- static ExecutorService singleThreadPool = Executors.newSingleThreadExecutor();
-
-
- static {
- pageCache = new LinkedHashMap<>();
- }
-
- public static byte deliveryPreview(String name, short page, short port){
- if(!pageCache.containsKey(name) || page > pageCache.get(name).size()){ //缓存中不存在或者页数超出缓存数量
- byte result;
- if((result = pageCache(name)) != 0)
- return result;
- }
-
- //0页为缩略图
- if(page == 0){
- return delivery(new File(storagePath, name + "/thumbnail.webp"), port);
- }else{
- return delivery(new File(storagePath, name + "/" + pageCache.get(name).get(page)), port);
- }
- }
-
- public static byte delivery(File file, short port){
- if(!file.exists())
- return ErrorCode.FILE_NOT_FOUND;
-
- singleThreadPool.submit(() -> {
- try(SocketChannel socketChannel = SocketChannel.open(new InetSocketAddress("lionwebsite.xyz", port));
- FileChannel fileChannel = FileChannel.open(file.toPath(), StandardOpenOption.READ)) {
- ByteBuffer buffer = ByteBuffer.allocate(1024);
- while (fileChannel.read(buffer)!=-1){
- buffer.flip();
- socketChannel.write(buffer);
- buffer.clear();
- }
- socketChannel.shutdownOutput();
- return 0;
- }catch (IOException e){
- e.printStackTrace();
- return ErrorCode.IO_ERROR;
- }
- });
- return 0;
- }
-
- public static byte pageQuery(GalleryPageQueryMessage gpqm){
- if(!pageCache.containsKey(gpqm.getName())){
- byte result;
- if((result = pageCache(gpqm.getName())) != 0)
- return result;
- }
- ArrayList pages = pageCache.get(gpqm.getName());
- if(pages.size() <= gpqm.getPage())
- return ErrorCode.FILE_NOT_FOUND;
- gpqm.setPageName(pageCache.get(gpqm.getName()).get(gpqm.getPage()));
- return 0;
- }
-
- public static byte pageCache(String name){
- File directory = new File(storagePath, name);
- if(!directory.isDirectory()) {
- System.out.printf("文件夹%s没找到\n", directory.getAbsolutePath());
- return ErrorCode.FILE_NOT_FOUND;
- }
- ArrayList pageList = new ArrayList<>();
- File[] files = directory.listFiles(((dir, name1) -> !name1.equals("galleryinfo.txt") && !name1.equals("thumbnail.webp") && !name1.endsWith(".zip")));
-
- if(files == null)
- return ErrorCode.FILE_NOT_FOUND;
- ArrayList fileArrayList = new ArrayList<>(Arrays.asList(files));
- fileArrayList.sort(Comparator.naturalOrder());
- pageList.add("thumbnail.webp");
- fileArrayList.forEach((f) -> pageList.add(f.getName()));
- pageCache.put(name, pageList);
- return 0;
- }
-}
diff --git a/src/main/java/lion/Service/DownloadCheckService.java b/src/main/java/lion/Service/DownloadCheckService.java
index 71ff594..d2d86c8 100644
--- a/src/main/java/lion/Service/DownloadCheckService.java
+++ b/src/main/java/lion/Service/DownloadCheckService.java
@@ -11,9 +11,6 @@ import cn.hutool.core.util.ZipUtil;
import lion.Message.AbstractMessage;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import org.im4java.core.ConvertCmd;
-import org.im4java.core.IM4JavaException;
-import org.im4java.core.IMOperation;
import java.io.*;
import java.util.*;
@@ -120,8 +117,6 @@ public class DownloadCheckService {
galleryTask.setStatus(ErrorCode.COMPRESS_ERROR);
continue;
}
- //仅比较字典序
- images = Arrays.stream(images).sorted(Comparator.naturalOrder()).toArray(File[]::new);
//创建文件夹
File file = new File(storagePath + galleryTask.getName());
@@ -132,43 +127,12 @@ public class DownloadCheckService {
continue;
}
- //thumbnail
- log.info("文件" + images[0].getName() + ",转换为thumbnail.webp");
- convert_local(galleryTask, images[0], true);
+ //生成压缩包
+ ZipUtil.zip(galleryTask.getPath(), storagePath + galleryTask.getName() + "/" + galleryTask.getName() + ".zip");
+ log.info(galleryTask.getName() + "压缩完成" );
- if ((galleryTask.getType() & GalleryTask.DOWNLOAD_PREVIEW) != 0)
- for (int i = 0; i < images.length; i++) {
- log.info("文件" + images[i].getName() + ",转换为webp[" + i + "/" + images.length + "]");
- convert_local(galleryTask, images[i], false);
- }
-
- if ((galleryTask.getType() & GalleryTask.DOWNLOAD_SOURCE) != 0) {
- ZipUtil.zip(galleryTask.getPath(), storagePath + galleryTask.getName() + "/" + galleryTask.getName() + ".zip");
- log.info(galleryTask.getName() + "压缩完成" );
- }
FileUtil.del(galleryTask.getPath());
galleryTask.setStatus(GalleryTask.COMPRESS_COMPLETE);
}
}
-
- public void convert_local(GalleryTask galleryTask, File file, boolean isThumbnail){
- ConvertCmd convertCmd = new ConvertCmd(true);
- IMOperation operation = new IMOperation();
- operation.addImage(file.getAbsolutePath());
-
- if(isThumbnail) {
- operation.resize(500, 500);
- operation.format("webp");
- operation.addImage(storagePath + galleryTask.getName() + "/thumbnail.webp");
- } else {
- operation.format("webp");
- operation.addImage(storagePath + galleryTask.getName() + "/" + file.getName().replace(".png", ".webp").replace(".jpg", ".webp"));
- }
- try {
- convertCmd.run(operation);
- } catch (IOException | IM4JavaException | InterruptedException e) {
- log.error("文件" + file.getName() + "转换失败");
- galleryTask.setStatus(ErrorCode.COMPRESS_ERROR);
- }
- }
}
diff --git a/src/main/java/lion/storageNode.java b/src/main/java/lion/storageNode.java
index 6f3ded5..1aba734 100644
--- a/src/main/java/lion/storageNode.java
+++ b/src/main/java/lion/storageNode.java
@@ -5,7 +5,6 @@ import lion.Domain.GalleryTask;
import lion.Message.*;
import lion.Message.Main.*;
import lion.Service.DeleteService;
-import lion.Service.DeliveryService;
import lion.Service.DownloadCheckService;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;
@@ -155,21 +154,6 @@ public class storageNode {
ResponseMessage responseMessage = new ResponseMessage(deleteGalleryMessage.messageId, result);
ctx.writeAndFlush(responseMessage);
}
- case AbstractMessage.GALLERY_REQUEST_MESSAGE -> {
- GalleryRequestMessage grm = (GalleryRequestMessage) abstractMessage;
- byte result = DeliveryService.deliveryPreview(grm.getGalleryName(), grm.getPage(), grm.getPort());
-
- ResponseMessage responseMessage = new ResponseMessage();
- responseMessage.messageId = grm.messageId;
- responseMessage.setResult(result);
- ctx.writeAndFlush(responseMessage);
- }
- case AbstractMessage.GALLERY_PAGE_QUERY_MESSAGE -> {
- GalleryPageQueryMessage gpqm = (GalleryPageQueryMessage) abstractMessage;
- byte result = DeliveryService.pageQuery(gpqm);
- gpqm.setResult(result);
- ctx.writeAndFlush(gpqm);
- }
}
//
// //修复预览