You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2016/11/07 16:36:23 UTC
[03/50] [abbrv] activemq-artemis git commit: ARTEMIS-786 checking for
inputs and some reorg of the class model on user actions
ARTEMIS-786 checking for inputs and some reorg of the class model on user actions
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/119476dd
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/119476dd
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/119476dd
Branch: refs/heads/ARTEMIS-780
Commit: 119476ddcc77cfc7a2192f8ba87101dcbd7b44b1
Parents: cd7b838
Author: Clebert Suconic <cl...@apache.org>
Authored: Wed Nov 2 14:58:48 2016 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Wed Nov 2 15:17:31 2016 -0400
----------------------------------------------------------------------
.../artemis/cli/commands/user/AddUser.java | 32 ++++++------
.../artemis/cli/commands/user/ListUser.java | 15 ++++++
.../cli/commands/user/PasswordAction.java | 37 ++++++++++++++
.../artemis/cli/commands/user/RemoveUser.java | 9 ++++
.../artemis/cli/commands/user/ResetUser.java | 27 +++++-----
.../artemis/cli/commands/user/UserAction.java | 54 ++++++--------------
6 files changed, 107 insertions(+), 67 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/119476dd/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java
index cbb8f60..caa32a7 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java
@@ -20,6 +20,7 @@ import io.airlift.airline.Command;
import io.airlift.airline.Option;
import org.apache.activemq.artemis.cli.commands.ActionContext;
import org.apache.activemq.artemis.cli.commands.util.HashUtil;
+import org.apache.activemq.artemis.util.FileBasedSecStoreConfig;
import org.apache.commons.lang3.StringUtils;
/**
@@ -27,13 +28,7 @@ import org.apache.commons.lang3.StringUtils;
* ./artemis user add --username guest --role admin --password ***
*/
@Command(name = "add", description = "Add a new user")
-public class AddUser extends UserAction {
-
- @Option(name = "--password", description = "the password (Default: input)")
- String password;
-
- @Option(name = "--role", description = "user's role(s), comma separated", required = true)
- String role;
+public class AddUser extends PasswordAction {
@Option(name = "--plaintext", description = "using plaintext (Default false)")
boolean plaintext = false;
@@ -42,9 +37,9 @@ public class AddUser extends UserAction {
public Object execute(ActionContext context) throws Exception {
super.execute(context);
- if (password == null) {
- password = inputPassword("--password", "Please provide the password:", null);
- }
+ checkInputUser();
+ checkInputPassword();
+ checkInputRole();
String hash = plaintext ? password : HashUtil.tryHash(context, password);
add(hash, StringUtils.split(role, ","));
@@ -52,11 +47,16 @@ public class AddUser extends UserAction {
return null;
}
- public void setPassword(String password) {
- this.password = password;
- }
-
- public void setRole(String role) {
- this.role = role;
+ /**
+ * Adding a new user
+ * @param hash the password
+ * @param role the role
+ * @throws IllegalArgumentException if user exists
+ */
+ protected void add(String hash, String... role) throws Exception {
+ FileBasedSecStoreConfig config = getConfiguration();
+ config.addNewUser(username, hash, role);
+ config.save();
+ context.out.println("User added successfully.");
}
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/119476dd/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java
index cb3ff39..136a417 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java
@@ -16,8 +16,11 @@
*/
package org.apache.activemq.artemis.cli.commands.user;
+import java.util.List;
+
import io.airlift.airline.Command;
import org.apache.activemq.artemis.cli.commands.ActionContext;
+import org.apache.activemq.artemis.util.FileBasedSecStoreConfig;
/**
* list existing users, example:
@@ -35,4 +38,16 @@ public class ListUser extends UserAction {
return null;
}
+ /**
+ * list a single user or all users
+ * if username is not specified
+ */
+ protected void list() throws Exception {
+ FileBasedSecStoreConfig config = getConfiguration();
+ List<String> result = config.listUser(username);
+ for (String str : result) {
+ context.out.println(str);
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/119476dd/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/PasswordAction.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/PasswordAction.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/PasswordAction.java
new file mode 100644
index 0000000..2260488
--- /dev/null
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/PasswordAction.java
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.cli.commands.user;
+
+import io.airlift.airline.Option;
+
+public class PasswordAction extends UserAction {
+
+ @Option(name = "--password", description = "the password (Default: input)")
+ String password;
+
+ protected void checkInputPassword() {
+ if (password == null) {
+ password = inputPassword("--password", "Please provide the password:", null);
+ }
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/119476dd/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java
index 172a76d..70167da 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java
@@ -18,6 +18,7 @@ package org.apache.activemq.artemis.cli.commands.user;
import io.airlift.airline.Command;
import org.apache.activemq.artemis.cli.commands.ActionContext;
+import org.apache.activemq.artemis.util.FileBasedSecStoreConfig;
/**
* Remove a user, example:
@@ -29,8 +30,16 @@ public class RemoveUser extends UserAction {
@Override
public Object execute(ActionContext context) throws Exception {
super.execute(context);
+ checkInputUser();
remove();
return null;
}
+ protected void remove() throws Exception {
+ FileBasedSecStoreConfig config = getConfiguration();
+ config.removeUser(username);
+ config.save();
+ context.out.println("User removed.");
+ }
+
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/119476dd/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java
index 27da6c7..c219ef5 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java
@@ -20,6 +20,7 @@ import io.airlift.airline.Command;
import io.airlift.airline.Option;
import org.apache.activemq.artemis.cli.commands.ActionContext;
import org.apache.activemq.artemis.cli.commands.util.HashUtil;
+import org.apache.activemq.artemis.util.FileBasedSecStoreConfig;
import org.apache.commons.lang3.StringUtils;
/**
@@ -27,13 +28,7 @@ import org.apache.commons.lang3.StringUtils;
* ./artemis user reset --username guest --role admin --password ***
*/
@Command(name = "reset", description = "Reset user's password or roles")
-public class ResetUser extends UserAction {
-
- @Option(name = "--password", description = "the password (Default: input)")
- String password;
-
- @Option(name = "--role", description = "user's role(s), comma separated")
- String role;
+public class ResetUser extends PasswordAction {
@Option(name = "--plaintext", description = "using plaintext (Default false)")
boolean plaintext = false;
@@ -42,6 +37,9 @@ public class ResetUser extends UserAction {
public Object execute(ActionContext context) throws Exception {
super.execute(context);
+ checkInputUser();
+ checkInputPassword();
+
if (password != null) {
password = plaintext ? password : HashUtil.tryHash(context, password);
}
@@ -55,11 +53,14 @@ public class ResetUser extends UserAction {
return null;
}
- public void setPassword(String password) {
- this.password = password;
- }
-
- public void setRole(String role) {
- this.role = role;
+ protected void reset(String password, String[] roles) throws Exception {
+ if (password == null && roles == null) {
+ context.err.println("Nothing to update.");
+ return;
+ }
+ FileBasedSecStoreConfig config = getConfiguration();
+ config.updateUser(username, password, roles);
+ config.save();
+ context.out.println("User updated");
}
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/119476dd/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java
index 918338e..2f7c77f 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java
@@ -24,63 +24,41 @@ import org.apache.activemq.artemis.util.FileBasedSecStoreConfig;
import javax.security.auth.login.AppConfigurationEntry;
import javax.security.auth.login.Configuration;
import java.io.File;
-import java.util.List;
import static org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule.ROLE_FILE_PROP_NAME;
import static org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule.USER_FILE_PROP_NAME;
public abstract class UserAction extends InputAbstract {
- @Option(name = "--user", description = "The user name")
+ @Option(name = "--role", description = "user's role(s), comma separated")
+ String role;
+
+ @Option(name = "--user", description = "The user name (Default: input)")
String username = null;
- /**
- * Adding a new user
- * @param hash the password
- * @param role the role
- * @throws IllegalArgumentException if user exists
- */
- protected void add(String hash, String... role) throws Exception {
- FileBasedSecStoreConfig config = getConfiguration();
- config.addNewUser(username, hash, role);
- config.save();
- context.out.println("User added successfully.");
- }
+ @Option(name = "--entry", description = "The appConfigurationEntry (default: activemq)")
+ String entry = "activemq";
- /**
- * list a single user or all users
- * if username is not specified
- */
- protected void list() throws Exception {
- FileBasedSecStoreConfig config = getConfiguration();
- List<String> result = config.listUser(username);
- for (String str : result) {
- context.out.println(str);
+ protected void checkInputUser() {
+ if (username == null) {
+ username = input("--user", "Please provider the userName:", null);
}
}
- protected void remove() throws Exception {
- FileBasedSecStoreConfig config = getConfiguration();
- config.removeUser(username);
- config.save();
- context.out.println("User removed.");
+ public void setRole(String role) {
+ this.role = role;
}
- protected void reset(String password, String[] roles) throws Exception {
- if (password == null && roles == null) {
- context.err.println("Nothing to update.");
- return;
+ public void checkInputRole() {
+ if (role == null) {
+ role = input("--role", "type a comma separated list of roles", null);
}
- FileBasedSecStoreConfig config = getConfiguration();
- config.updateUser(username, password, roles);
- config.save();
- context.out.println("User updated");
}
- private FileBasedSecStoreConfig getConfiguration() throws Exception {
+ protected FileBasedSecStoreConfig getConfiguration() throws Exception {
Configuration securityConfig = Configuration.getConfiguration();
- AppConfigurationEntry[] entries = securityConfig.getAppConfigurationEntry("activemq");
+ AppConfigurationEntry[] entries = securityConfig.getAppConfigurationEntry(entry);
for (AppConfigurationEntry entry : entries) {
if (entry.getLoginModuleName().equals(PropertiesLoginModule.class.getName())) {