Skip to content

GeneXus compression module #874

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 52 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
594547c
Compress EXO initial module outline
tomas-sexenian May 2, 2024
ef67138
Initial implementation of the compress method
tomas-sexenian May 7, 2024
c041d26
Initial decompress functionality implementation
tomas-sexenian May 7, 2024
30f4618
Add Compression data type
tomas-sexenian May 28, 2024
db32861
All 4 compression and decompression methods working
tomas-sexenian May 29, 2024
8307368
Refactor into compression package
tomas-sexenian May 29, 2024
8bf8104
Logging and return values for better flow control
tomas-sexenian May 29, 2024
1554769
Switch compression format type form enum to string
tomas-sexenian May 29, 2024
da6c523
Change parameter types to basic ones
tomas-sexenian May 29, 2024
259af10
Various fixes
tomas-sexenian Jun 3, 2024
f01cb0c
Change junit version
tomas-sexenian Jun 4, 2024
9fd6c8a
Merge branch 'master' into Compress
tomas-sexenian Jun 4, 2024
8837203
Fix error codes
tomas-sexenian Jun 5, 2024
c8c7890
Correct parameters data types
tomas-sexenian Jun 5, 2024
defaeea
Expand error codes
tomas-sexenian Jun 5, 2024
009afc3
Better logging
tomas-sexenian Jun 5, 2024
2d1783e
Remove unnecesary usage of List<File>
tomas-sexenian Jun 10, 2024
bab7cce
Add jar support
tomas-sexenian Jun 10, 2024
b6eb9f5
Add support for decompressing rar files
tomas-sexenian Jun 10, 2024
39180c2
Remove unused imports
tomas-sexenian Jun 10, 2024
5f5233e
Merge nested ifs
tomas-sexenian Jun 10, 2024
23ed813
Merge branch 'master' into Compress
tomas-sexenian Jul 15, 2024
825fdc1
Change operations return type
tomas-sexenian Jul 15, 2024
1bdab85
Fix method naming and logging
tomas-sexenian Jul 15, 2024
6de7f6d
Make attributes readonly
tomas-sexenian Jul 15, 2024
f458aaa
Refactor compression classes to support error messages
tomas-sexenian Jul 16, 2024
7df792c
Add missing message and fix interface return type
tomas-sexenian Jul 16, 2024
3949964
Refactor for better code quality
tomas-sexenian Jul 19, 2024
4e5e5db
Remove unused imports
tomas-sexenian Jul 19, 2024
a8cd11e
Improve error message for invalid compression format
tomas-sexenian Jul 19, 2024
33178d6
Refactor compression classes to use ArrayList instead of Vector
tomas-sexenian Jul 22, 2024
42abd43
Refactor compression interface to use ArrayList instead of Vector
tomas-sexenian Jul 22, 2024
94a553b
Switch from map to set of attributes
tomas-sexenian Jul 23, 2024
499d0e6
Update gxcompress dependencies and refactor compression classes
tomas-sexenian Jul 24, 2024
289d625
Remove unused imports
tomas-sexenian Jul 24, 2024
b64ca63
Consider folder within files to compress for jar and zip formats
tomas-sexenian Aug 22, 2024
e4961fe
Compression module simplification an improvements
tomas-sexenian Nov 1, 2024
7a6d936
Prevent directory traversal attack
tomas-sexenian Nov 12, 2024
c2d4984
Add check for DoS attack and clear error messages
tomas-sexenian Nov 18, 2024
3c86573
Fix compilation error
tomas-sexenian Nov 18, 2024
a396d40
Fix gz compression and decompression issues
tomas-sexenian Jan 9, 2025
7c92b6e
Remove unused imports
tomas-sexenian Feb 26, 2025
efa196e
Remove unused import and usage of deprecated method
tomas-sexenian Mar 19, 2025
113c952
Merge branch 'master' into Compress
tomas-sexenian Mar 28, 2025
81d6fa6
Prevent slips, traversals and bombs
tomas-sexenian Mar 28, 2025
457efed
Add compression utils
tomas-sexenian Mar 28, 2025
a131cfa
Fix wrong directory traversal and zip bomb checks
tomas-sexenian Mar 31, 2025
f418609
Complete rewrite of security checks, read values from given configura…
tomas-sexenian Apr 1, 2025
6b786bd
Fix clear method
tomas-sexenian Apr 9, 2025
21b11bd
Remove not empty constructor
tomas-sexenian Apr 9, 2025
ab9fb64
Merge branch 'master' into Compress
tomas-sexenian Apr 10, 2025
d1d90e7
Create gzip decompression directory if its not there
tomas-sexenian Apr 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions gxcompress/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.genexus</groupId>
<artifactId>parent</artifactId>
<version>${revision}${changelist}</version>
</parent>

<artifactId>gxcompress</artifactId>
<name>GeneXus compression and decompression module</name>

<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.27.1</version>
</dependency>
<dependency>
<groupId>org.tukaani</groupId>
<artifactId>xz</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>gxcommon</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.genexus</groupId>
<artifactId>gxclassR</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>
42 changes: 42 additions & 0 deletions gxcompress/src/main/java/com/genexus/compression/Compression.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.genexus.compression;

import com.genexus.GXBaseCollection;
import com.genexus.SdtMessages_Message;

import java.util.ArrayList;

public class Compression {

private String destinationPath;
private CompressionConfiguration compressionConfiguration;
private GXBaseCollection<SdtMessages_Message>[] messages;
private ArrayList<String> filesToCompress;

public Compression() {}

public Compression(String destinationPath, CompressionConfiguration configuration, GXBaseCollection<SdtMessages_Message>[] messages) {
this.destinationPath = destinationPath;
this.compressionConfiguration = configuration;
this.messages = messages;
filesToCompress = new ArrayList<>();
}

public void setDestinationPath(String path) {
this.destinationPath = path;
}

public void addElement(String filePath) {
filesToCompress.add(filePath);
}

public Boolean save() {
return GXCompressor.compress(filesToCompress, destinationPath, compressionConfiguration, messages);
}

public void clear() {
destinationPath = "";
filesToCompress = new ArrayList<>();
messages = null;
compressionConfiguration = new CompressionConfiguration();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.genexus.compression;

public class CompressionConfiguration {
public long maxCombinedFileSize = -1;
public long maxIndividualFileSize = -1;
public int maxFileCount = -1;
public String targetDirectory = "";

public CompressionConfiguration() {}
}
Loading
Loading