Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public static class Builder {
private Optional<UsersRepositoryModuleChooser.Implementation> usersRepositoryImplementation;
private Optional<VaultConfiguration> vaultConfiguration;
private Optional<Boolean> jmapEnabled;
private Optional<Boolean> vapidEnabled;
private Optional<Boolean> quotaCompatibilityMode;
private Optional<Boolean> dropListsEnabled;

Expand All @@ -64,6 +65,7 @@ private Builder() {
mailQueueChoice = Optional.empty();
vaultConfiguration = Optional.empty();
jmapEnabled = Optional.empty();
vapidEnabled = Optional.empty();
quotaCompatibilityMode = Optional.empty();
dropListsEnabled = Optional.empty();
}
Expand Down Expand Up @@ -131,6 +133,11 @@ public Builder enableJMAP() {
return this;
}

public Builder enableVapid() {
this.vapidEnabled = Optional.of(true);
return this;
}

public Builder quotaCompatibilityModeEnabled(boolean value) {
this.quotaCompatibilityMode = Optional.of(value);
return this;
Expand Down Expand Up @@ -187,6 +194,16 @@ public CassandraRabbitMQJamesConfiguration build() {
}
});

boolean vapidEnabled = this.vapidEnabled.orElseGet(() -> {
try {
return propertiesProvider.getConfiguration("jmap").getBoolean("webpush.vapid.auth.enabled", false);
} catch (FileNotFoundException e) {
return false;
} catch (ConfigurationException e) {
throw new RuntimeException(e);
}
});

boolean quotaCompatibilityMode = this.quotaCompatibilityMode.orElseGet(() -> {
try {
return propertiesProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false);
Expand Down Expand Up @@ -216,6 +233,7 @@ public CassandraRabbitMQJamesConfiguration build() {
mailQueueChoice,
mailQueueViewChoice, vaultConfiguration,
jmapEnabled,
vapidEnabled,
quotaCompatibilityMode,
dropListsEnabled);
}
Expand All @@ -234,14 +252,15 @@ public static CassandraRabbitMQJamesConfiguration.Builder builder() {
private final MailQueueViewChoice mailQueueViewChoice;
private final VaultConfiguration vaultConfiguration;
private final boolean jmapEnabled;
private final boolean vapidEnabled;
private final boolean quotaCompatibilityMode;
private final boolean dropListsEnabled;

public CassandraRabbitMQJamesConfiguration(ConfigurationPath configurationPath, JamesDirectoriesProvider directories,
BlobStoreConfiguration blobStoreConfiguration, SearchConfiguration searchConfiguration,
UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation, MailQueueChoice mailQueueChoice,
MailQueueViewChoice mailQueueViewChoice, VaultConfiguration vaultConfiguration,
boolean jmapEnabled, boolean quotaCompatibilityMode, boolean dropListsEnabled) {
boolean jmapEnabled, boolean vapidEnabled, boolean quotaCompatibilityMode, boolean dropListsEnabled) {
this.configurationPath = configurationPath;
this.directories = directories;
this.blobStoreConfiguration = blobStoreConfiguration;
Expand All @@ -251,6 +270,7 @@ public CassandraRabbitMQJamesConfiguration(ConfigurationPath configurationPath,
this.mailQueueViewChoice = mailQueueViewChoice;
this.vaultConfiguration = vaultConfiguration;
this.jmapEnabled = jmapEnabled;
this.vapidEnabled = vapidEnabled;
this.quotaCompatibilityMode = quotaCompatibilityMode;
this.dropListsEnabled = dropListsEnabled;
}
Expand Down Expand Up @@ -293,6 +313,10 @@ public boolean isJmapEnabled() {
return jmapEnabled;
}

public boolean isVapidEnabled() {
return vapidEnabled;
}

public boolean isQuotaCompatibilityMode() {
return quotaCompatibilityMode;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.apache.james.eventsourcing.eventstore.EventNestedTypes;
import org.apache.james.jmap.JMAPListenerModule;
import org.apache.james.jmap.JMAPModule;
import org.apache.james.jmap.JMAPVapidModule;
import org.apache.james.json.DTO;
import org.apache.james.json.DTOModule;
import org.apache.james.modules.BlobExportMechanismModule;
Expand Down Expand Up @@ -215,6 +216,7 @@ public static GuiceJamesServer createServer(CassandraRabbitMQJamesConfiguration
.combineWith(chooseDeletedMessageVault(configuration.getVaultConfiguration()))
.combineWith(chooseQuotaModule(configuration))
.overrideWith(chooseJmapModules(configuration))
.overrideWith(chooseVapid(configuration))
.overrideWith(chooseDropListsModule(configuration));
}

Expand Down Expand Up @@ -252,6 +254,15 @@ private static Module chooseJmapModules(CassandraRabbitMQJamesConfiguration conf
};
}

private static Module chooseVapid(CassandraRabbitMQJamesConfiguration configuration) {
if (configuration.isVapidEnabled()) {
return new JMAPVapidModule();
}
return binder -> {

};
}

private static Module chooseQuotaModule(CassandraRabbitMQJamesConfiguration configuration) {
if (configuration.isQuotaCompatibilityMode()) {
return Modules.combine(new CassandraMailboxQuotaLegacyModule(), new CassandraSieveQuotaLegacyModule());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,15 @@ public static class Builder {
private Optional<ConfigurationPath> configurationPath;
private Optional<UsersRepositoryModuleChooser.Implementation> usersRepositoryImplementation;
private Optional<Boolean> jmapEnabled;
private Optional<Boolean> vapidEnabled;
private Optional<Boolean> dropListsEnabled;

private Builder() {
rootDirectory = Optional.empty();
configurationPath = Optional.empty();
usersRepositoryImplementation = Optional.empty();
jmapEnabled = Optional.empty();
vapidEnabled = Optional.empty();
dropListsEnabled = Optional.empty();
}

Expand Down Expand Up @@ -89,6 +91,11 @@ public Builder enableJMAP() {
return this;
}

public Builder enableVapid() {
this.vapidEnabled = Optional.of(true);
return this;
}

public Builder enableDropLists() {
this.dropListsEnabled = Optional.of(true);
return this;
Expand All @@ -108,8 +115,8 @@ public MemoryJamesConfiguration build() {
UsersRepositoryModuleChooser.Implementation usersRepositoryChoice = usersRepositoryImplementation.orElseGet(
() -> UsersRepositoryModuleChooser.Implementation.parse(configurationProvider));

PropertiesProvider propertiesProvider = new PropertiesProvider(fileSystem, configurationPath);
boolean jmapEnabled = this.jmapEnabled.orElseGet(() -> {
PropertiesProvider propertiesProvider = new PropertiesProvider(fileSystem, configurationPath);
try {
return JMAPModule.parseConfiguration(propertiesProvider).isEnabled();
} catch (FileNotFoundException e) {
Expand All @@ -119,8 +126,17 @@ public MemoryJamesConfiguration build() {
}
});

boolean vapidEnabled = this.vapidEnabled.orElseGet(() -> {
try {
return propertiesProvider.getConfiguration("jmap").getBoolean("webpush.vapid.auth.enabled", false);
} catch (FileNotFoundException e) {
return false;
} catch (ConfigurationException e) {
throw new RuntimeException(e);
}
});

boolean dropListsEnabled = this.dropListsEnabled.orElseGet(() -> {
PropertiesProvider propertiesProvider = new PropertiesProvider(fileSystem, configurationPath);
try {
return propertiesProvider.getConfiguration("droplists").getBoolean("enabled", false);
} catch (FileNotFoundException e) {
Expand All @@ -134,7 +150,7 @@ public MemoryJamesConfiguration build() {
return new MemoryJamesConfiguration(
configurationPath,
directories,
usersRepositoryChoice, jmapEnabled, dropListsEnabled);
usersRepositoryChoice, jmapEnabled, vapidEnabled, dropListsEnabled);
}
}

Expand All @@ -146,15 +162,17 @@ public static Builder builder() {
private final JamesDirectoriesProvider directories;
private final UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation;
private final boolean jmapEnabled;
private final boolean vapidEnabled;
private final boolean dropListsEnabled;

public MemoryJamesConfiguration(ConfigurationPath configurationPath, JamesDirectoriesProvider directories,
UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation,
boolean jmapEnabled, boolean dropListsEnabled) {
boolean jmapEnabled, boolean vapidEnabled, boolean dropListsEnabled) {
this.configurationPath = configurationPath;
this.directories = directories;
this.usersRepositoryImplementation = usersRepositoryImplementation;
this.jmapEnabled = jmapEnabled;
this.vapidEnabled = vapidEnabled;
this.dropListsEnabled = dropListsEnabled;
}

Expand All @@ -176,6 +194,10 @@ public boolean isJmapEnabled() {
return jmapEnabled;
}

public boolean isVapidEnabled() {
return vapidEnabled;
}

public boolean isDropListsEnabled() {
return dropListsEnabled;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.apache.james.data.UsersRepositoryModuleChooser;
import org.apache.james.jmap.JMAPListenerModule;
import org.apache.james.jmap.JMAPModule;
import org.apache.james.jmap.JMAPVapidModule;
import org.apache.james.jmap.api.identity.CustomIdentityDAO;
import org.apache.james.jmap.memory.identity.MemoryCustomIdentityDAO;
import org.apache.james.jmap.memory.pushsubscription.MemoryPushSubscriptionModule;
Expand Down Expand Up @@ -179,6 +180,7 @@ public static GuiceJamesServer createServer(MemoryJamesConfiguration configurati
.combineWith(new UsersRepositoryModuleChooser(new MemoryUsersRepositoryModule())
.chooseModules(configuration.getUsersRepositoryImplementation()))
.combineWith(chooseJmapModule(configuration))
.combineWith(chooseVapid(configuration))
.combineWith(chooseDropListsModule(configuration));
}

Expand All @@ -191,6 +193,15 @@ private static Module chooseJmapModule(MemoryJamesConfiguration configuration) {
};
}

private static Module chooseVapid(MemoryJamesConfiguration configuration) {
if (configuration.isVapidEnabled()) {
return new JMAPVapidModule();
}
return binder -> {

};
}

private static Module chooseDropListsModule(MemoryJamesConfiguration configuration) {
if (configuration.isDropListsEnabled()) {
return Modules.combine(new MemoryDropListsModule(), new DropListsRoutesModule());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public static class Builder {
private Optional<EventBusImpl> eventBusImpl;
private Optional<VaultConfiguration> deletedMessageVaultConfiguration;
private Optional<Boolean> jmapEnabled;
private Optional<Boolean> vapidEnabled;
private Optional<Boolean> dropListsEnabled;
private Optional<Boolean> rlsEnabled;

Expand All @@ -87,6 +88,7 @@ private Builder() {
eventBusImpl = Optional.empty();
deletedMessageVaultConfiguration = Optional.empty();
jmapEnabled = Optional.empty();
vapidEnabled = Optional.empty();
dropListsEnabled = Optional.empty();
rlsEnabled = Optional.empty();
}
Expand Down Expand Up @@ -149,6 +151,11 @@ public Builder jmapEnabled(Optional<Boolean> jmapEnabled) {
return this;
}

public Builder enableVapid() {
this.vapidEnabled = Optional.of(true);
return this;
}

public Builder enableDropLists() {
this.dropListsEnabled = Optional.of(true);
return this;
Expand Down Expand Up @@ -206,6 +213,16 @@ public PostgresJamesConfiguration build() {
}
});

boolean vapidEnabled = this.vapidEnabled.orElseGet(() -> {
try {
return propertiesProvider.getConfiguration("jmap").getBoolean("webpush.vapid.auth.enabled", false);
} catch (FileNotFoundException e) {
return false;
} catch (ConfigurationException e) {
throw new RuntimeException(e);
}
});

boolean dropListsEnabled = this.dropListsEnabled.orElseGet(() -> {
try {
return configurationProvider.getConfiguration("droplists").getBoolean("enabled", false);
Expand All @@ -224,6 +241,7 @@ public PostgresJamesConfiguration build() {
eventBusImpl,
deletedMessageVaultConfiguration,
jmapEnabled,
vapidEnabled,
dropListsEnabled,
rlsEnabled);
}
Expand Down Expand Up @@ -251,6 +269,7 @@ public static Builder builder() {
private final EventBusImpl eventBusImpl;
private final VaultConfiguration deletedMessageVaultConfiguration;
private final boolean jmapEnabled;
private final boolean vapidEnabled;
private final boolean dropListsEnabled;
private final boolean rlsEnabled;

Expand All @@ -262,6 +281,7 @@ private PostgresJamesConfiguration(ConfigurationPath configurationPath,
EventBusImpl eventBusImpl,
VaultConfiguration deletedMessageVaultConfiguration,
boolean jmapEnabled,
boolean vapidEnabled,
boolean dropListsEnabled,
boolean rlsEnabled) {
this.configurationPath = configurationPath;
Expand All @@ -272,6 +292,7 @@ private PostgresJamesConfiguration(ConfigurationPath configurationPath,
this.eventBusImpl = eventBusImpl;
this.deletedMessageVaultConfiguration = deletedMessageVaultConfiguration;
this.jmapEnabled = jmapEnabled;
this.vapidEnabled = vapidEnabled;
this.dropListsEnabled = dropListsEnabled;
this.rlsEnabled = rlsEnabled;
}
Expand Down Expand Up @@ -310,6 +331,10 @@ public boolean isJmapEnabled() {
return jmapEnabled;
}

public boolean isVapidEnabled() {
return vapidEnabled;
}

public boolean isDropListsEnabled() {
return dropListsEnabled;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.apache.james.eventsourcing.eventstore.EventNestedTypes;
import org.apache.james.jmap.JMAPListenerModule;
import org.apache.james.jmap.JMAPModule;
import org.apache.james.jmap.JMAPVapidModule;
import org.apache.james.json.DTO;
import org.apache.james.json.DTOModule;
import org.apache.james.modules.BlobExportMechanismModule;
Expand Down Expand Up @@ -196,6 +197,7 @@ public static GuiceJamesServer createServer(PostgresJamesConfiguration configura
.combineWith(chooseDeletedMessageVaultModules(configuration.getDeletedMessageVaultConfiguration()))
.combineWith(chooseRLSSupportPostgresMailboxModule(configuration))
.overrideWith(chooseJmapModules(configuration))
.overrideWith(chooseVapid(configuration))
.overrideWith(chooseTaskManagerModules(configuration))
.overrideWith(chooseDropListsModule(configuration));
}
Expand Down Expand Up @@ -265,6 +267,15 @@ private static Module chooseJmapModules(PostgresJamesConfiguration configuration
};
}

private static Module chooseVapid(PostgresJamesConfiguration configuration) {
if (configuration.isVapidEnabled()) {
return new JMAPVapidModule();
}
return binder -> {

};
}

private static Module chooseDropListsModule(PostgresJamesConfiguration configuration) {
if (configuration.isDropListsEnabled()) {
return Modules.combine(new PostgresDropListsModule(), new DropListsRoutesModule());
Expand Down
Loading