diff --git a/README.md b/README.md
index 490d755..9b1346e 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-# ja-netfilter v1.1.5
+# ja-netfilter v1.1.6
### A javaagent lib for network filter
## Usage
-* download from the [releases page](https://github.com/pengzhile/ja-netfilter/releases)
+* download from the [releases page](https://github.com/ja-netfilter/ja-netfilter/releases)
* add `-javaagent:/absolute/path/to/ja-netfilter.jar` argument (**Change to your actual path**)
* add as an argument of the `java` command. eg: `java -javaagent:/absolute/path/to/ja-netfilter.jar -jar executable_jar_file.jar`
* some apps support the `JVM Options file`, you can add as a line of the `JVM Options file`.
@@ -36,11 +36,15 @@ EQUAL,https://someurl
[DNS]
EQUAL,somedomain
-# EQUAL Use `equals` to compare
-# KEYWORD Use `contains` to compare
-# PREFIX Use `startsWith` to compare
-# SUFFIX Use `endsWith` to compare
-# REGEXP Use regular expressions to match
+# EQUAL Use `equals` to compare
+# EQUAL_IC Use `equals` to compare, ignore case
+# KEYWORD Use `contains` to compare
+# KEYWORD_IC Use `contains` to compare, ignore case
+# PREFIX Use `startsWith` to compare
+# PREFIX_IC Use `startsWith` to compare, ignore case
+# SUFFIX Use `endsWith` to compare
+# SUFFIX_IC Use `endsWith` to compare, ignore case
+# REGEXP Use regular expressions to match
```
## Debug info
@@ -52,7 +56,7 @@ EQUAL,somedomain
## Plugin system
* for developer:
- * view the [scaffold project](https://github.com/pengzhile/ja-netfilter-sample-plugin) written for the plugin system
+ * view the [scaffold project](https://github.com/ja-netfilter/ja-netfilter-sample-plugin) written for the plugin system
* compile your plugin and publish it
* just use your imagination~
diff --git a/pom.xml b/pom.xml
index 4c0279a..2f76aa0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
io.zhile.research
ja-netfilter
- 1.1.5
+ 1.1.6
UTF-8
@@ -47,6 +47,7 @@
true
+ neo
io.zhile.research.ja.netfilter.Launcher
io.zhile.research.ja.netfilter.Launcher
true
diff --git a/src/main/java/io/zhile/research/ja/netfilter/Launcher.java b/src/main/java/io/zhile/research/ja/netfilter/Launcher.java
index f5d69de..f2f1edd 100644
--- a/src/main/java/io/zhile/research/ja/netfilter/Launcher.java
+++ b/src/main/java/io/zhile/research/ja/netfilter/Launcher.java
@@ -9,7 +9,7 @@ import java.net.URL;
import java.util.jar.JarFile;
public class Launcher {
- private static final String VERSION = "v1.1.5";
+ private static final String VERSION = "v1.1.6";
public static void main(String[] args) {
printUsage();
diff --git a/src/main/java/io/zhile/research/ja/netfilter/commons/ConfigParser.java b/src/main/java/io/zhile/research/ja/netfilter/commons/ConfigParser.java
index fdc6ff3..13a1b32 100644
--- a/src/main/java/io/zhile/research/ja/netfilter/commons/ConfigParser.java
+++ b/src/main/java/io/zhile/research/ja/netfilter/commons/ConfigParser.java
@@ -44,11 +44,7 @@ public class ConfigParser {
throw new Exception("Empty section name! Line: " + lineNumber);
}
- lastSection = section;
- if (null == map.get(lastSection)) {
- // do NOT override existing sections
- map.put(lastSection, new ArrayList<>());
- }
+ map.computeIfAbsent(lastSection = section, k -> new ArrayList<>());
break;
case '#':
case ';':
diff --git a/src/main/java/io/zhile/research/ja/netfilter/enums/RuleType.java b/src/main/java/io/zhile/research/ja/netfilter/enums/RuleType.java
index 4e9d325..a46b54b 100644
--- a/src/main/java/io/zhile/research/ja/netfilter/enums/RuleType.java
+++ b/src/main/java/io/zhile/research/ja/netfilter/enums/RuleType.java
@@ -4,10 +4,14 @@ import io.zhile.research.ja.netfilter.rulers.*;
public enum RuleType {
PREFIX(new PrefixRuler()),
+ PREFIX_IC(new PrefixICRuler()),
SUFFIX(new SuffixRuler()),
+ SUFFIX_IC(new SuffixICRuler()),
KEYWORD(new KeywordRuler()),
- REGEXP(new RegExpRuler()),
- EQUAL(new EqualRuler());
+ KEYWORD_IC(new KeywordICRuler()),
+ EQUAL(new EqualRuler()),
+ EQUAL_IC(new EqualICRuler()),
+ REGEXP(new RegExpRuler());
private final Ruler ruler;
diff --git a/src/main/java/io/zhile/research/ja/netfilter/rulers/EqualICRuler.java b/src/main/java/io/zhile/research/ja/netfilter/rulers/EqualICRuler.java
new file mode 100644
index 0000000..ef12785
--- /dev/null
+++ b/src/main/java/io/zhile/research/ja/netfilter/rulers/EqualICRuler.java
@@ -0,0 +1,8 @@
+package io.zhile.research.ja.netfilter.rulers;
+
+public class EqualICRuler implements Ruler {
+ @Override
+ public boolean test(String rule, String content) {
+ return content.equalsIgnoreCase(rule);
+ }
+}
diff --git a/src/main/java/io/zhile/research/ja/netfilter/rulers/KeywordICRuler.java b/src/main/java/io/zhile/research/ja/netfilter/rulers/KeywordICRuler.java
new file mode 100644
index 0000000..1529b4c
--- /dev/null
+++ b/src/main/java/io/zhile/research/ja/netfilter/rulers/KeywordICRuler.java
@@ -0,0 +1,8 @@
+package io.zhile.research.ja.netfilter.rulers;
+
+public class KeywordICRuler implements Ruler {
+ @Override
+ public boolean test(String rule, String content) {
+ return content.toLowerCase().contains(rule.toLowerCase());
+ }
+}
diff --git a/src/main/java/io/zhile/research/ja/netfilter/rulers/PrefixICRuler.java b/src/main/java/io/zhile/research/ja/netfilter/rulers/PrefixICRuler.java
new file mode 100644
index 0000000..fb28235
--- /dev/null
+++ b/src/main/java/io/zhile/research/ja/netfilter/rulers/PrefixICRuler.java
@@ -0,0 +1,8 @@
+package io.zhile.research.ja.netfilter.rulers;
+
+public class PrefixICRuler implements Ruler {
+ @Override
+ public boolean test(String rule, String content) {
+ return content.toLowerCase().startsWith(rule.toLowerCase());
+ }
+}
diff --git a/src/main/java/io/zhile/research/ja/netfilter/rulers/SuffixICRuler.java b/src/main/java/io/zhile/research/ja/netfilter/rulers/SuffixICRuler.java
new file mode 100644
index 0000000..ce3deb0
--- /dev/null
+++ b/src/main/java/io/zhile/research/ja/netfilter/rulers/SuffixICRuler.java
@@ -0,0 +1,8 @@
+package io.zhile.research.ja.netfilter.rulers;
+
+public class SuffixICRuler implements Ruler {
+ @Override
+ public boolean test(String rule, String content) {
+ return content.toLowerCase().endsWith(rule.toLowerCase());
+ }
+}