JAMES-2150 Added the ability to upload Sieve scripts via the CLI
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ef37d6b4 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ef37d6b4 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ef37d6b4 Branch: refs/heads/master Commit: ef37d6b4bf4fdb5819d93a1af65dd4466703e43d Parents: d630f65 Author: matzepan <[email protected]> Authored: Sat Oct 20 20:08:46 2018 +0200 Committer: Benoit Tellier <[email protected]> Committed: Mon Oct 29 19:14:40 2018 +0700 ---------------------------------------------------------------------- .../src/main/java/org/apache/james/cli/ServerCmd.java | 3 +++ .../main/java/org/apache/james/cli/type/CmdType.java | 3 ++- .../test/java/org/apache/james/cli/ServerCmdTest.java | 14 ++++++++++++++ .../java/org/apache/james/cli/type/CmdTypeTest.java | 5 +++++ .../api/SieveRepositoryManagementMBean.java | 2 ++ .../lib/SieveRepositoryManagement.java | 9 +++++++++ 6 files changed, 35 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ef37d6b4/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java ---------------------------------------------------------------------- diff --git a/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java b/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java index cecb719..59c79b4 100644 --- a/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java +++ b/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java @@ -331,6 +331,9 @@ public class ServerCmd { case REMOVESIEVEUSERQUOTA: sieveProbe.removeSieveQuota(arguments[1]); break; + case ADDACTIVESIEVESCRIPT: + sieveProbe.addActiveSieveScript(arguments[1], arguments[2], arguments[3]); + break; default: throw new UnrecognizedCommandException(cmdType.getCommand()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/ef37d6b4/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java ---------------------------------------------------------------------- diff --git a/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java b/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java index 9e3dc3d..d3aa511 100644 --- a/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java +++ b/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java @@ -62,7 +62,8 @@ public enum CmdType { REMOVESIEVEQUOTA("RemoveSieveQuota"), GETSIEVEUSERQUOTA("GetSieveUserQuota", "username"), SETSIEVEUSERQUOTA("SetSieveUserQuota", "username", "quota"), - REMOVESIEVEUSERQUOTA("RemoveSieveUserQuota", "username"); + REMOVESIEVEUSERQUOTA("RemoveSieveUserQuota", "username"), + ADDACTIVESIEVESCRIPT("AddActiveSieveScript", "username", "scriptname", "script"); private final String command; private final String[] arguments; http://git-wip-us.apache.org/repos/asf/james-project/blob/ef37d6b4/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java ---------------------------------------------------------------------- diff --git a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java index 0b3aacd..8613797 100644 --- a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java +++ b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java @@ -1063,6 +1063,20 @@ public class ServerCmdTest { } @Test + public void addActiveSieveScriptCommandShouldThrowOnAdditionalArguments() throws Exception { + String user = "user@domain"; + String scriptName = "no_fast_money"; + String script = "if header :contains :comparator \"i;octet\" \"Subject\"" + + "\"MAKE MONEY FAST\" {discard;}"; + + String[] arguments = { "-h", "127.0.0.1", "-p", "9999", CmdType.ADDACTIVESIEVESCRIPT.getCommand(), user, scriptName, script, ADDITIONAL_ARGUMENT }; + CommandLine commandLine = ServerCmd.parseCommandLine(arguments); + + assertThatThrownBy(() -> testee.executeCommandLine(commandLine)) + .isInstanceOf(InvalidArgumentNumberException.class); + } + + @Test public void executeCommandLineShouldThrowOnUnrecognizedCommands() throws Exception { String[] arguments = { "-h", "127.0.0.1", "-p", "9999", "wrongCommand"}; CommandLine commandLine = ServerCmd.parseCommandLine(arguments); http://git-wip-us.apache.org/repos/asf/james-project/blob/ef37d6b4/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java ---------------------------------------------------------------------- diff --git a/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java b/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java index 0b16133..8a32619 100644 --- a/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java +++ b/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java @@ -234,6 +234,11 @@ public class CmdTypeTest { assertThat(CmdType.lookup("removesieveuserquota")).isEqualTo(CmdType.REMOVESIEVEUSERQUOTA); } + @Test + public void addSieveScriptShouldReturnEnumValue() { + assertThat(CmdType.lookup("addactivesievescript")).isEqualTo(CmdType.ADDACTIVESIEVESCRIPT); + } + @Test public void lookupEmptyStringShouldReturnNull() { assertThat(CmdType.lookup("")).isNull(); http://git-wip-us.apache.org/repos/asf/james-project/blob/ef37d6b4/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java b/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java index cde69df..1347583 100644 --- a/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java +++ b/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java @@ -36,4 +36,6 @@ public interface SieveRepositoryManagementMBean { void removeQuota(String user) throws SieveRepositoryException; + void addActiveSieveScript(String userName, String scriptName, String script) throws SieveRepositoryException; + } http://git-wip-us.apache.org/repos/asf/james-project/blob/ef37d6b4/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java b/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java index 0fdd8e9..00ba200 100644 --- a/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java +++ b/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java @@ -26,6 +26,8 @@ import javax.management.StandardMBean; import org.apache.james.core.User; import org.apache.james.core.quota.QuotaSize; +import org.apache.james.sieverepository.api.ScriptContent; +import org.apache.james.sieverepository.api.ScriptName; import org.apache.james.sieverepository.api.SieveRepository; import org.apache.james.sieverepository.api.SieveRepositoryManagementMBean; import org.apache.james.sieverepository.api.exception.SieveRepositoryException; @@ -72,4 +74,11 @@ public class SieveRepositoryManagement extends StandardMBean implements SieveRep public void removeQuota(String user) throws SieveRepositoryException { sieveRepository.removeQuota(User.fromUsername(user)); } + + @Override + public void addActiveSieveScript(String userName, String scriptName, String script) throws SieveRepositoryException { + User user = User.fromUsername(userName); + sieveRepository.putScript(user, new ScriptName(scriptName), new ScriptContent(script)); + sieveRepository.setActive(user, new ScriptName(scriptName)); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
