From 42c281ab883cee5fb1ae05c62861f2d7f05a7875 Mon Sep 17 00:00:00 2001 From: Gideon Le Grange Date: Sat, 4 Jan 2020 20:10:14 +0200 Subject: [PATCH] Fixed bug in handling nested expressions. Added simple excample class --- src/main/java/examples/Config.java | 6 ++-- src/main/java/examples/NestedExpressions.java | 33 +++++++++++++++++++ .../me/legrange/mikrotik/impl/Scanner.java | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/main/java/examples/NestedExpressions.java diff --git a/src/main/java/examples/Config.java b/src/main/java/examples/Config.java index 9940c01..03d6b1b 100644 --- a/src/main/java/examples/Config.java +++ b/src/main/java/examples/Config.java @@ -7,8 +7,8 @@ package examples; */ public class Config { - public static final String HOST = "192.168.1.1"; - public static final String USERNAME = "admin"; - public static final String PASSWORD = ""; + public static final String HOST = "192.168.1.25"; + public static final String USERNAME = "gideon"; + public static final String PASSWORD = "minapp"; } diff --git a/src/main/java/examples/NestedExpressions.java b/src/main/java/examples/NestedExpressions.java new file mode 100644 index 0000000..d8def14 --- /dev/null +++ b/src/main/java/examples/NestedExpressions.java @@ -0,0 +1,33 @@ +package examples; + +import me.legrange.mikrotik.MikrotikApiException; + +import java.util.List; +import java.util.Map; + +/** + * Example 2: A command that returns results. Print all interfaces + * + * @author gideon + */ +public class NestedExpressions extends Example { + + public static void main(String... args) throws Exception { + NestedExpressions ex = new NestedExpressions(); + ex.connect(); + ex.test("/ip/firewall/nat/print where (src-address=\"192.168.15.52\" or src-address=\"192.168.15.53\")"); + ex.test("/ip/firewall/nat/print where chain=api_test and (src-address=192.168.15.52) and action=log "); + ex.test("/ip/firewall/nat/print where chain=api_test and (src-address=192.168.15.53 or src-address=192.168.15.52) and action=log "); + ex.test("/ip/firewall/nat/print where chain=api_test and (src-address=\"192.168.15.53\" or src-address=\"192.168.15.52\") and action=log "); + ex.disconnect(); + } + + private void test(String cmd) throws MikrotikApiException { + System.out.println("Command: " + cmd); + List> results = con.execute(cmd); + for (Map result : results) { + System.out.println(result); + } + System.out.println(); + } +} diff --git a/src/main/java/me/legrange/mikrotik/impl/Scanner.java b/src/main/java/me/legrange/mikrotik/impl/Scanner.java index e899b2f..1ee52e1 100644 --- a/src/main/java/me/legrange/mikrotik/impl/Scanner.java +++ b/src/main/java/me/legrange/mikrotik/impl/Scanner.java @@ -121,7 +121,7 @@ class Scanner { */ private Token name() throws ScanException { text = new StringBuilder(); - while (!in(c, "[ \t\r\n=<>!]")) { + while (!in(c, "[ \t\r\n=<>!)]")) { text.append(c); nextChar(); }