/* * mxisd - Matrix Identity Server Daemon * Copyright (C) 2018 Kamax Sàrl * * https://www.kamax.io/ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package io.kamax.mxisd.config; import io.kamax.mxisd.config.ldap.generic.GenericLdapConfig; import io.kamax.mxisd.config.ldap.netiq.NetIqLdapConfig; import io.kamax.mxisd.config.memory.MemoryStoreConfig; import io.kamax.mxisd.config.rest.RestBackendConfig; import io.kamax.mxisd.config.sql.generic.GenericSqlProviderConfig; import io.kamax.mxisd.config.sql.synapse.SynapseSqlProviderConfig; import io.kamax.mxisd.config.threepid.ThreePidConfig; import io.kamax.mxisd.config.threepid.notification.NotificationConfig; import io.kamax.mxisd.config.wordpress.WordpressConfig; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MxisdConfig { private static final Logger log = LoggerFactory.getLogger(MxisdConfig.class); public static class Dns { private DnsOverwriteConfig overwrite = new DnsOverwriteConfig(); public DnsOverwriteConfig getOverwrite() { return overwrite; } public void setOverwrite(DnsOverwriteConfig overwrite) { this.overwrite = overwrite; } public void build() { overwrite.build(); } } public static class Lookup { private BulkLookupConfig bulk = new BulkLookupConfig(); private RecursiveLookupConfig recursive = new RecursiveLookupConfig(); public BulkLookupConfig getBulk() { return bulk; } public void setBulk(BulkLookupConfig bulk) { this.bulk = bulk; } public RecursiveLookupConfig getRecursive() { return recursive; } public void setRecursive(RecursiveLookupConfig recursive) { this.recursive = recursive; } public void build() { getBulk().build(); getRecursive().build(); } } public static MxisdConfig forDomain(String domain) { MxisdConfig cfg = new MxisdConfig(); cfg.getMatrix().setDomain(domain); return cfg; } private AppServiceConfig appsvc = new AppServiceConfig(); private AuthenticationConfig auth = new AuthenticationConfig(); private DirectoryConfig directory = new DirectoryConfig(); private AccountConfig accountConfig = new AccountConfig(); private Dns dns = new Dns(); private ExecConfig exec = new ExecConfig(); private FirebaseConfig firebase = new FirebaseConfig(); private ForwardConfig forward = new ForwardConfig(); private InvitationConfig invite = new InvitationConfig(); private KeyConfig key = new KeyConfig(); private GenericLdapConfig ldap = new GenericLdapConfig(); private Lookup lookup = new Lookup(); private MatrixConfig matrix = new MatrixConfig(); private MemoryStoreConfig memory = new MemoryStoreConfig(); private NotificationConfig notification = new NotificationConfig(); private NetIqLdapConfig netiq = new NetIqLdapConfig(); private RegisterConfig register = new RegisterConfig(); private ServerConfig server = new ServerConfig(); private SessionConfig session = new SessionConfig(); private StorageConfig storage = new StorageConfig(); private RestBackendConfig rest = new RestBackendConfig(); private GenericSqlProviderConfig sql = new GenericSqlProviderConfig(); private SynapseSqlProviderConfig synapseSql = new SynapseSqlProviderConfig(); private ThreePidConfig threepid = new ThreePidConfig(); private ViewConfig view = new ViewConfig(); private WordpressConfig wordpress = new WordpressConfig(); private PolicyConfig policy = new PolicyConfig(); private HashingConfig hashing = new HashingConfig(); public AppServiceConfig getAppsvc() { return appsvc; } public void setAppsvc(AppServiceConfig appsvc) { this.appsvc = appsvc; } public AuthenticationConfig getAuth() { return auth; } public void setAuth(AuthenticationConfig auth) { this.auth = auth; } public AccountConfig getAccountConfig() { return accountConfig; } public void setAccountConfig(AccountConfig accountConfig) { this.accountConfig = accountConfig; } public DirectoryConfig getDirectory() { return directory; } public void setDirectory(DirectoryConfig directory) { this.directory = directory; } public Dns getDns() { return dns; } public void setDns(Dns dns) { this.dns = dns; } public ExecConfig getExec() { return exec; } public void setExec(ExecConfig exec) { this.exec = exec; } public FirebaseConfig getFirebase() { return firebase; } public void setFirebase(FirebaseConfig firebase) { this.firebase = firebase; } public ForwardConfig getForward() { return forward; } public void setForward(ForwardConfig forward) { this.forward = forward; } public InvitationConfig getInvite() { return invite; } public void setInvite(InvitationConfig invite) { this.invite = invite; } public KeyConfig getKey() { return key; } public void setKey(KeyConfig key) { this.key = key; } public GenericLdapConfig getLdap() { return ldap; } public void setLdap(GenericLdapConfig ldap) { this.ldap = ldap; } public Lookup getLookup() { return lookup; } public void setLookup(Lookup lookup) { this.lookup = lookup; } public MatrixConfig getMatrix() { return matrix; } public void setMatrix(MatrixConfig matrix) { this.matrix = matrix; } public MemoryStoreConfig getMemory() { return memory; } public void setMemory(MemoryStoreConfig memory) { this.memory = memory; } public NotificationConfig getNotification() { return notification; } public void setNotification(NotificationConfig notification) { this.notification = notification; } public NetIqLdapConfig getNetiq() { return netiq; } public void setNetiq(NetIqLdapConfig netiq) { this.netiq = netiq; } public RegisterConfig getRegister() { return register; } public void setRegister(RegisterConfig register) { this.register = register; } public ServerConfig getServer() { return server; } public void setServer(ServerConfig server) { this.server = server; } public SessionConfig getSession() { return session; } public void setSession(SessionConfig session) { this.session = session; } public StorageConfig getStorage() { return storage; } public void setStorage(StorageConfig storage) { this.storage = storage; } public RestBackendConfig getRest() { return rest; } public void setRest(RestBackendConfig rest) { this.rest = rest; } public GenericSqlProviderConfig getSql() { return sql; } public void setSql(GenericSqlProviderConfig sql) { this.sql = sql; } public SynapseSqlProviderConfig getSynapseSql() { return synapseSql; } public void setSynapseSql(SynapseSqlProviderConfig synapseSql) { this.synapseSql = synapseSql; } public ThreePidConfig getThreepid() { return threepid; } public void setThreepid(ThreePidConfig threepid) { this.threepid = threepid; } public ViewConfig getView() { return view; } public void setView(ViewConfig view) { this.view = view; } public WordpressConfig getWordpress() { return wordpress; } public void setWordpress(WordpressConfig wordpress) { this.wordpress = wordpress; } public PolicyConfig getPolicy() { return policy; } public void setPolicy(PolicyConfig policy) { this.policy = policy; } public HashingConfig getHashing() { return hashing; } public void setHashing(HashingConfig hashing) { this.hashing = hashing; } public MxisdConfig inMemory() { getKey().setPath(":memory:"); getStorage().getProvider().getSqlite().setDatabase(":memory:"); return this; } public MxisdConfig build() { if (StringUtils.isBlank(getServer().getName())) { getServer().setName(getMatrix().getDomain()); log.debug("server.name is empty, using matrix.domain"); } getAppsvc().build(); getAuth().build(); getAccountConfig().build(); getDirectory().build(); getDns().build(); getExec().build(); getFirebase().build(); getForward().build(); getInvite().build(); getKey().build(); getLdap().build(); getLookup().build(); getMatrix().build(); getMemory().build(); getNetiq().build(); getNotification().build(); getRegister().build(); getRest().build(); getSession().build(); getServer().build(); getSql().build(); getStorage().build(); getSynapseSql().build(); getThreepid().build(); getView().build(); getWordpress().build(); getPolicy().build(); getHashing().build(); return this; } }