From 0bbe8c87f0d381ad883721f870875d610a314e62 Mon Sep 17 00:00:00 2001 From: Andy Taylor Date: Wed, 6 May 2015 08:46:34 +0100 Subject: [PATCH 1/4] add the ability to off set the defaul ports for the CLI create command --- .../activemq/artemis/cli/commands/Create.java | 15 +++++++++++++++ .../activemq/artemis/cli/commands/etc/broker.xml | 10 +++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java index 4c09202475..099e737764 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java @@ -52,12 +52,23 @@ import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE; @Command(name = "create", description = "creates a new broker instance") public class Create implements Action { + private static final Integer DEFAULT_PORT = 61616; + + private static final Integer AMQP_PORT = 5672; + + private static final Integer STOMP_PORT = 61613; + + private static final Integer HQ_PORT = 5445; + @Arguments(description = "The instance directory to hold the broker's configuration and data", required = true) File directory; @Option(name = "--host", description = "The host name of the broker") String host; + @Option(name = "--port-offset", description = "Off sets the default ports") + int portOffset; + @Option(name = "--force", description = "Overwrite configuration at destination directory") boolean force; @@ -141,6 +152,10 @@ public class Create implements Action filters.put("${user}", System.getProperty("user.name", "")); filters.put("${host}", host); + filters.put("${default.port}", String.valueOf(DEFAULT_PORT + portOffset)); + filters.put("${amqp.port}", String.valueOf(AMQP_PORT + portOffset)); + filters.put("${stomp.port}", String.valueOf(STOMP_PORT + portOffset)); + filters.put("${hq.port}", String.valueOf(HQ_PORT + portOffset)); if (home != null) { filters.put("${home}", path(home, false)); diff --git a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml index 7b92851990..ed7ac67b01 100644 --- a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml +++ b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml @@ -38,21 +38,21 @@ under the License. - tcp://${activemq.remoting.default.host:${host}}:${activemq.remoting.default.port:61616} + tcp://${activemq.remoting.default.host:${host}}:${activemq.remoting.default.port:${default.port}} - tcp://${activemq.remoting.default.host:${host}}:${activemq.remoting.default.port:61616} + tcp://${activemq.remoting.default.host:${host}}:${activemq.remoting.default.port:${default.port}} - tcp://${activemq.remoting.amqp.host:${host}}:${activemq.remoting.amqp.port:5672}?protocols=AMQP + tcp://${activemq.remoting.amqp.host:${host}}:${activemq.remoting.amqp.port:${amqp.port}}?protocols=AMQP - tcp://${activemq.remoting.stomp.host:${host}}:${activemq.remoting.stomp.port:61613}?protocols=STOMP + tcp://${activemq.remoting.stomp.host:${host}}:${activemq.remoting.stomp.port:${stomp.port}}?protocols=STOMP - tcp://${activemq.remoting.hornetq.host:${host}}:${activemq.remoting.hornetq.port:5445}?protocols=CORE,STOMP + tcp://${activemq.remoting.hornetq.host:${host}}:${activemq.remoting.hornetq.port:${hq.port}}?protocols=CORE,STOMP ${cluster.settings}${replicated.settings}${shared-store.settings} From 0099c361254f5fe9ab8c69c611d4ae8948763191 Mon Sep 17 00:00:00 2001 From: Andy Taylor Date: Wed, 6 May 2015 09:00:41 +0100 Subject: [PATCH 2/4] remove wilth-ssl option from CLI create command --- .../java/org/apache/activemq/artemis/cli/commands/Create.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java index 099e737764..8209204ebc 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java @@ -75,9 +75,6 @@ public class Create implements Action @Option(name = "--home", description = "Directory where ActiveMQ Artemis is installed") File home; - @Option(name = "--with-ssl", description = "Generate an SSL enabled configuration") - boolean with_ssl = true; - @Option(name = "--clustered", description = "Enable clustering") boolean clustered = false; From 8446bce8e9dbb8db78d6ec79f0d9dc910fb648c6 Mon Sep 17 00:00:00 2001 From: Andy Taylor Date: Wed, 6 May 2015 10:59:45 +0100 Subject: [PATCH 3/4] added cluster security settings to CLI create command --- .../activemq/artemis/cli/commands/Create.java | 51 +++++++++++++++++-- .../artemis/cli/commands/etc/broker.xml | 2 +- .../etc/cluster-security-settings.txt | 3 ++ 3 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/cluster-security-settings.txt diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java index 8209204ebc..9eaf4daf0c 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java @@ -30,6 +30,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -84,11 +85,21 @@ public class Create implements Action @Option(name = "--shared-store", description = "Enable broker shared store") boolean sharedStore = false; + @Option(name = "--cluster-user", description = "The cluster user to use for clustering") + String clusterUser = null; + + @Option(name = "--cluster-password", description = "The cluster password to use for clustering") + String clusterPassword = null; + @Option(name = "--encoding", description = "The encoding that text files should use") String encoding = "UTF-8"; ActionContext context; + + private Scanner scanner; + boolean IS_WINDOWS; + boolean IS_CYGWIN; @Override @@ -108,14 +119,10 @@ public class Create implements Action public Object run(ActionContext context) throws Exception { this.context = context; + scanner = new Scanner(System.in); IS_WINDOWS = System.getProperty("os.name").toLowerCase().trim().startsWith("win"); IS_CYGWIN = IS_WINDOWS && System.getenv("OSTYPE") == "cygwin"; - if (clustered & sharedStore) - { - - } - context.out.println(String.format("Creating ActiveMQ Artemis instance at: %s", directory.getCanonicalPath())); if (host == null) { @@ -140,11 +147,39 @@ public class Create implements Action filters.put("${shared-store.settings}", sharedStoreSettings); String clusterSettings = ""; + String clusterSecuritySettings = ""; + String clusterUserSettings = ""; + String clusterPasswordSettings = ""; if (clustered) { clusterSettings = readTextFile("etc/cluster-settings.txt"); + + if (clusterUser == null) + { + clusterUser = input("Please provide a user name for clustering (leave empty for default)"); + } + + if (clusterUser != null && clusterUser.length() > 0) + { + clusterUserSettings = clusterUser; + clusterSecuritySettings = readTextFile("etc/cluster-security-settings.txt"); + } + + if (clusterPassword == null) + { + clusterPassword = input("Please provide a password for clustering (leave empty for default)"); + + } + + if (clusterPassword != null && clusterPassword.length() > 0) + { + clusterPasswordSettings = clusterPassword; + } } + filters.put("${cluster-security.settings}", clusterSecuritySettings); filters.put("${cluster.settings}", clusterSettings); + filters.put("${cluster-user}", clusterUserSettings); + filters.put("${cluster-password}", clusterPasswordSettings); filters.put("${user}", System.getProperty("user.name", "")); @@ -237,6 +272,12 @@ public class Create implements Action return null; } + private String input(String prompt) + { + context.out.println(prompt); + return scanner.nextLine(); + } + private void makeExec(String path) throws IOException { try diff --git a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml index ed7ac67b01..e32e966ba0 100644 --- a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml +++ b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml @@ -55,7 +55,7 @@ under the License. tcp://${activemq.remoting.hornetq.host:${host}}:${activemq.remoting.hornetq.port:${hq.port}}?protocols=CORE,STOMP - ${cluster.settings}${replicated.settings}${shared-store.settings} + ${cluster-security.settings}${cluster.settings}${replicated.settings}${shared-store.settings} diff --git a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/cluster-security-settings.txt b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/cluster-security-settings.txt new file mode 100644 index 0000000000..bb8178014b --- /dev/null +++ b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/cluster-security-settings.txt @@ -0,0 +1,3 @@ + + ${cluster-user} + ${cluster-password} \ No newline at end of file From 6fea6ca66e617546dc1743295f1efb35dba45175 Mon Sep 17 00:00:00 2001 From: Andy Taylor Date: Wed, 6 May 2015 11:04:02 +0100 Subject: [PATCH 4/4] small CLI CREATE fix --- .../java/org/apache/activemq/artemis/cli/commands/Create.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java index 9eaf4daf0c..074ced08e0 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java @@ -121,7 +121,7 @@ public class Create implements Action this.context = context; scanner = new Scanner(System.in); IS_WINDOWS = System.getProperty("os.name").toLowerCase().trim().startsWith("win"); - IS_CYGWIN = IS_WINDOWS && System.getenv("OSTYPE") == "cygwin"; + IS_CYGWIN = IS_WINDOWS && "cygwin".equals(System.getenv("OSTYPE")); context.out.println(String.format("Creating ActiveMQ Artemis instance at: %s", directory.getCanonicalPath())); if (host == null)