This is an automated email from the ASF dual-hosted git repository.
benjobs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev by this push:
new 18b5cd890 [Fix] Interceptors add /resource/upload (#3154)
18b5cd890 is described below
commit 18b5cd8903eba994439f4d3d3fc34a8ca4abd003
Author: ChengJie1053 <[email protected]>
AuthorDate: Sat Sep 23 15:17:22 2023 +0800
[Fix] Interceptors add /resource/upload (#3154)
* [Fix] Interceptors add /resource/upload
* Modify message
* Modify FileUtils
* Modify FileUtils and UploadFileTypeInterceptor
* add tika
* Update FileUtils.scala
---
streampark-common/pom.xml | 7 +++++++
.../apache/streampark/common/util/FileUtils.scala | 20 ++++++++++++++++++++
.../streampark/console/base/config/WebMvcConfig.java | 4 +++-
.../base/interceptor/UploadFileTypeInterceptor.java | 8 ++++++--
4 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/streampark-common/pom.xml b/streampark-common/pom.xml
index 32babf65c..3214107ee 100644
--- a/streampark-common/pom.xml
+++ b/streampark-common/pom.xml
@@ -156,6 +156,13 @@
<optional>true</optional>
</dependency>
+ <!--tika -->
+ <dependency>
+ <groupId>org.apache.tika</groupId>
+ <artifactId>tika-core</artifactId>
+ <version>1.20</version>
+ </dependency>
+
</dependencies>
<build>
diff --git
a/streampark-common/src/main/scala/org/apache/streampark/common/util/FileUtils.scala
b/streampark-common/src/main/scala/org/apache/streampark/common/util/FileUtils.scala
index 6b95884bc..6ebad0699 100644
---
a/streampark-common/src/main/scala/org/apache/streampark/common/util/FileUtils.scala
+++
b/streampark-common/src/main/scala/org/apache/streampark/common/util/FileUtils.scala
@@ -18,6 +18,12 @@ package org.apache.streampark.common.util
import org.apache.streampark.common.util.ImplicitsUtils._
+import org.apache.commons.lang3.StringUtils
+import org.apache.tika.metadata.{HttpHeaders, Metadata}
+import org.apache.tika.mime.MediaType
+import org.apache.tika.parser.{AutoDetectParser, ParseContext}
+import org.xml.sax.helpers.DefaultHandler
+
import java.io._
import java.net.URL
import java.nio.ByteBuffer
@@ -58,6 +64,20 @@ object FileUtils {
}) == "504B0304"
}
+ def isPythonFileType(contentType: String, input: InputStream): Boolean = {
+ if (StringUtils.isBlank(contentType) || input == null) {
+ throw new RuntimeException("The contentType or inputStream can not be
null")
+ }
+ getMimeType(input) == MediaType.TEXT_PLAIN.toString &&
contentType.contains("text/x-python")
+ }
+
+ def getMimeType(stream: InputStream): String = {
+ val metadata: Metadata = new Metadata
+ val parser: AutoDetectParser = new AutoDetectParser
+ parser.parse(stream, new DefaultHandler, metadata, new ParseContext)
+ metadata.get(HttpHeaders.CONTENT_TYPE)
+ }
+
def isJarFileType(file: File): Boolean = {
if (!file.exists || !file.isFile) {
throw new RuntimeException("The file does not exist or the path is a
directory")
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/WebMvcConfig.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/WebMvcConfig.java
index 52164d960..92c66c303 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/WebMvcConfig.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/WebMvcConfig.java
@@ -79,6 +79,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
-
registry.addInterceptor(uploadFileTypeInterceptor).addPathPatterns("/flink/app/upload");
+ registry
+ .addInterceptor(uploadFileTypeInterceptor)
+ .addPathPatterns("/flink/app/upload", "/resource/upload");
}
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/interceptor/UploadFileTypeInterceptor.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/interceptor/UploadFileTypeInterceptor.java
index 4af12c99b..169c8f457 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/interceptor/UploadFileTypeInterceptor.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/interceptor/UploadFileTypeInterceptor.java
@@ -44,9 +44,13 @@ public class UploadFileTypeInterceptor implements
HandlerInterceptor {
MultipartFile multipartFile = multipartRequest.getFile(file);
ApiAlertException.throwIfNull(
multipartFile, "File to upload can't be null. Upload file
failed.");
- boolean fileType =
FileUtils.isJarFileType(multipartFile.getInputStream());
+ boolean isJarOrPyFile =
+ FileUtils.isJarFileType(multipartFile.getInputStream())
+ || FileUtils.isPythonFileType(
+ multipartFile.getContentType(),
multipartFile.getInputStream());
ApiAlertException.throwIfFalse(
- fileType, "Illegal file type, Only support standard jar files.
Upload file failed.");
+ isJarOrPyFile,
+ "Illegal file type, Only support standard jar or py files. Upload
file failed.");
}
}
return true;