in server/apps/cli/src/main/java/org/apache/james/cli/ServerCmd.java [251:329]
private void executeCommand(String[] arguments, CmdType cmdType, PrintStream printStream) throws Exception {
switch (cmdType) {
case ADDUSER -> probe.addUser(arguments[1], arguments[2]);
case REMOVEUSER -> probe.removeUser(arguments[1]);
case LISTUSERS -> print(probe.listUsers(), printStream);
case ADDDOMAIN -> probe.addDomain(arguments[1]);
case REMOVEDOMAIN -> probe.removeDomain(arguments[1]);
case CONTAINSDOMAIN -> {
if (probe.containsDomain(arguments[1])) {
printStream.println(arguments[1] + " exists");
} else {
printStream.println(arguments[1] + " does not exists");
}
}
case LISTDOMAINS -> print(probe.listDomains(), printStream);
case ADDDOMAINMAPPING -> probe.addDomainMapping(arguments[1], arguments[2]);
case REMOVEDOMAINMAPPING -> probe.removeDomainMapping(arguments[1], arguments[2]);
case LISTDOMAINMAPPINGS -> {
Mappings domainMappings = probe.listDomainMappings(arguments[1]);
print(domainMappings.asStrings(), printStream);
}
case LISTMAPPINGS -> print(probe.listMappings(), printStream);
case LISTUSERDOMAINMAPPINGS -> {
Mappings userDomainMappings = probe.listUserDomainMappings(arguments[1], arguments[2]);
print(userDomainMappings.asStrings(), printStream);
}
case ADDADDRESSMAPPING -> probe.addAddressMapping(arguments[1], arguments[2], arguments[3]);
case REMOVEADDRESSMAPPING -> probe.removeAddressMapping(arguments[1], arguments[2], arguments[3]);
case ADDREGEXMAPPING -> probe.addRegexMapping(arguments[1], arguments[2], arguments[3]);
case REMOVEREGEXMAPPING -> probe.removeRegexMapping(arguments[1], arguments[2], arguments[3]);
case SETPASSWORD -> probe.setPassword(arguments[1], arguments[2]);
case COPYMAILBOX -> mailboxProbe.copyMailbox(arguments[1], arguments[2]);
case DELETEUSERMAILBOXES -> mailboxProbe.deleteUserMailboxesNames(arguments[1]);
case CREATEMAILBOX -> mailboxProbe.createMailbox(arguments[1], arguments[2], arguments[3]);
case LISTUSERMAILBOXES -> {
Collection<String> mailboxes = mailboxProbe.listUserMailboxes(arguments[1]);
print(mailboxes.toArray(String[]::new), printStream);
}
case DELETEMAILBOX -> mailboxProbe.deleteMailbox(arguments[1], arguments[2], arguments[3]);
case IMPORTEML ->
mailboxProbe.importEmlFileToMailbox(arguments[1], arguments[2], arguments[3], arguments[4]);
case GETSTORAGEQUOTA ->
printStorageQuota(arguments[1], quotaProbe.getStorageQuota(arguments[1]), printStream);
case GETMESSAGECOUNTQUOTA ->
printMessageQuota(arguments[1], quotaProbe.getMessageCountQuota(arguments[1]), printStream);
case GETQUOTAROOT ->
printStream.println("Quota Root: " + quotaProbe.getQuotaRoot(arguments[1], arguments[2], arguments[3]));
case GETMAXSTORAGEQUOTA -> printStream.println("Storage space allowed for Quota Root "
+ arguments[1] + ": " + formatStorageValue(quotaProbe.getMaxStorage(arguments[1])));
case GETMAXMESSAGECOUNTQUOTA -> printStream.println("MailboxMessage count allowed for Quota Root "
+ arguments[1] + ": " + formatMessageValue(quotaProbe.getMaxMessageCount(arguments[1])));
case SETMAXSTORAGEQUOTA -> quotaProbe.setMaxStorage(arguments[1], parseQuotaSize(arguments[2]));
case SETMAXMESSAGECOUNTQUOTA -> quotaProbe.setMaxMessageCount(arguments[1], parseQuotaCount(arguments[2]));
case SETGLOBALMAXSTORAGEQUOTA -> quotaProbe.setGlobalMaxStorage(parseQuotaSize(arguments[1]));
case SETGLOBALMAXMESSAGECOUNTQUOTA -> quotaProbe.setGlobalMaxMessageCount(parseQuotaCount(arguments[1]));
case GETGLOBALMAXSTORAGEQUOTA ->
printStream.println("Global Maximum Storage Quota: " + formatStorageValue(quotaProbe.getGlobalMaxStorage()));
case GETGLOBALMAXMESSAGECOUNTQUOTA ->
printStream.println("Global Maximum message count Quota: " + formatMessageValue(quotaProbe.getGlobalMaxMessageCount()));
case REINDEXMAILBOX -> mailboxProbe.reIndexMailbox(arguments[1], arguments[2], arguments[3]);
case REINDEXALL -> mailboxProbe.reIndexAll();
case SETSIEVEQUOTA -> sieveProbe.setSieveQuota(Size.parse(arguments[1]).asBytes());
case SETSIEVEUSERQUOTA -> sieveProbe.setSieveQuota(arguments[1], Size.parse(arguments[2]).asBytes());
case GETSIEVEQUOTA -> printStream.println("Storage space allowed for Sieve scripts by default: "
+ formatStorageValue(sieveProbe.getSieveQuota()));
case GETSIEVEUSERQUOTA -> printStream.println("Storage space allowed for "
+ arguments[1] + " Sieve scripts: " + formatStorageValue(sieveProbe.getSieveQuota(arguments[1])));
case REMOVESIEVEQUOTA -> sieveProbe.removeSieveQuota();
case REMOVESIEVEUSERQUOTA -> sieveProbe.removeSieveQuota(arguments[1]);
case ADDACTIVESIEVESCRIPT ->
sieveProbe.addActiveSieveScriptFromFile(arguments[1], arguments[2], arguments[3]);
case ADDDROPLISTENTRY -> dropListProbe.addDropListEntry(arguments[1], arguments[2], arguments[3]);
case REMOVEDROPLISTENTRY -> dropListProbe.removeDropListEntry(arguments[1], arguments[2], arguments[3]);
case GETDROPLIST -> print(dropListProbe.getDropList(arguments[1], arguments[2]), printStream);
case DROPLISTQUERY ->
print(List.of(dropListProbe.runDropListQuery(arguments[1], arguments[2], arguments[3])), printStream);
default -> throw new UnrecognizedCommandException(cmdType.getCommand());
}
}