Properly split authoritative domain and public IS host
This commit is contained in:
@@ -40,7 +40,7 @@ public class FirebaseConfig {
|
||||
private Logger log = LoggerFactory.getLogger(FirebaseConfig.class);
|
||||
|
||||
@Autowired
|
||||
private ServerConfig srvCfg;
|
||||
private MatrixConfig mxCfg;
|
||||
|
||||
private boolean enabled;
|
||||
private String credentials;
|
||||
@@ -85,7 +85,7 @@ public class FirebaseConfig {
|
||||
if (!enabled) {
|
||||
return new GoogleFirebaseAuthenticator(false);
|
||||
} else {
|
||||
return new GoogleFirebaseAuthenticator(credentials, database, srvCfg.getName());
|
||||
return new GoogleFirebaseAuthenticator(credentials, database, mxCfg.getDomain());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ public class FirebaseConfig {
|
||||
if (!enabled) {
|
||||
return new GoogleFirebaseProvider(false);
|
||||
} else {
|
||||
return new GoogleFirebaseProvider(credentials, database, srvCfg.getName());
|
||||
return new GoogleFirebaseProvider(credentials, database, mxCfg.getDomain());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
59
src/main/groovy/io/kamax/mxisd/config/MatrixConfig.java
Normal file
59
src/main/groovy/io/kamax/mxisd/config/MatrixConfig.java
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* mxisd - Matrix Identity Server Daemon
|
||||
* Copyright (C) 2017 Maxime Dor
|
||||
*
|
||||
* https://max.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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package io.kamax.mxisd.config;
|
||||
|
||||
import io.kamax.mxisd.exception.ConfigurationException;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
@Configuration
|
||||
@ConfigurationProperties("matrix")
|
||||
public class MatrixConfig {
|
||||
|
||||
private Logger log = LoggerFactory.getLogger(MatrixConfig.class);
|
||||
|
||||
private String domain;
|
||||
|
||||
public String getDomain() {
|
||||
return domain;
|
||||
}
|
||||
|
||||
public void setDomain(String domain) {
|
||||
this.domain = domain;
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
private void postConstruct() {
|
||||
log.info("--- Matrix config ---");
|
||||
|
||||
if (StringUtils.isBlank(domain)) {
|
||||
throw new ConfigurationException("matrix.domain");
|
||||
}
|
||||
|
||||
log.info("Domain: {}", getDomain());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,11 +20,11 @@
|
||||
|
||||
package io.kamax.mxisd.config
|
||||
|
||||
import io.kamax.mxisd.exception.ConfigurationException
|
||||
import org.apache.commons.lang.StringUtils
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.beans.factory.InitializingBean
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||
import org.springframework.context.annotation.Configuration
|
||||
|
||||
@@ -34,6 +34,9 @@ class ServerConfig implements InitializingBean {
|
||||
|
||||
private Logger log = LoggerFactory.getLogger(ServerConfig.class);
|
||||
|
||||
@Autowired
|
||||
private MatrixConfig mxCfg;
|
||||
|
||||
private String name
|
||||
private int port
|
||||
private String publicUrl
|
||||
@@ -64,13 +67,18 @@ class ServerConfig implements InitializingBean {
|
||||
|
||||
@Override
|
||||
void afterPropertiesSet() throws Exception {
|
||||
log.info("--- Server config ---")
|
||||
|
||||
if (StringUtils.isBlank(getName())) {
|
||||
throw new ConfigurationException("server.name")
|
||||
setName(mxCfg.getDomain());
|
||||
log.debug("server.name is empty, using matrix.domain");
|
||||
}
|
||||
|
||||
if (StringUtils.isBlank(getPublicUrl())) {
|
||||
log.warn("Public URL is empty, generating from name {}", getName())
|
||||
publicUrl = "https://${getName()}"
|
||||
setPublicUrl("https://${getName()}");
|
||||
log.debug("Public URL is empty, generating from name");
|
||||
} else {
|
||||
setPublicUrl(StringUtils.replace(getPublicUrl(), "%SERVER_NAME%", getName()));
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -79,7 +87,6 @@ class ServerConfig implements InitializingBean {
|
||||
log.warn("Public URL is not valid: {}", StringUtils.defaultIfBlank(e.getMessage(), "<no reason provided>"))
|
||||
}
|
||||
|
||||
log.info("--- Server config ---")
|
||||
log.info("Name: {}", getName())
|
||||
log.info("Port: {}", getPort())
|
||||
log.info("Public URL: {}", getPublicUrl())
|
||||
|
||||
@@ -22,7 +22,7 @@ package io.kamax.mxisd.invitation.sender;
|
||||
|
||||
import com.sun.mail.smtp.SMTPTransport;
|
||||
import io.kamax.matrix.ThreePidMedium;
|
||||
import io.kamax.mxisd.config.ServerConfig;
|
||||
import io.kamax.mxisd.config.MatrixConfig;
|
||||
import io.kamax.mxisd.config.invite.sender.EmailSenderConfig;
|
||||
import io.kamax.mxisd.exception.ConfigurationException;
|
||||
import io.kamax.mxisd.invitation.IThreePidInviteReply;
|
||||
@@ -56,7 +56,7 @@ public class EmailInviteSender implements IInviteSender {
|
||||
private EmailSenderConfig cfg;
|
||||
|
||||
@Autowired
|
||||
private ServerConfig srvCfg;
|
||||
private MatrixConfig mxCfg;
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext app;
|
||||
@@ -87,7 +87,7 @@ public class EmailInviteSender implements IInviteSender {
|
||||
}
|
||||
|
||||
try {
|
||||
String domainPretty = WordUtils.capitalizeFully(srvCfg.getName());
|
||||
String domainPretty = WordUtils.capitalizeFully(mxCfg.getDomain());
|
||||
String senderName = invite.getInvite().getProperties().getOrDefault("sender_display_name", "");
|
||||
String senderNameOrId = StringUtils.defaultIfBlank(senderName, invite.getInvite().getSender().getId());
|
||||
String roomName = invite.getInvite().getProperties().getOrDefault("room_name", "");
|
||||
@@ -97,7 +97,7 @@ public class EmailInviteSender implements IInviteSender {
|
||||
StringUtils.startsWith(cfg.getTemplate(), "classpath:") ?
|
||||
app.getResource(cfg.getTemplate()).getInputStream() : new FileInputStream(cfg.getTemplate()),
|
||||
StandardCharsets.UTF_8);
|
||||
templateBody = templateBody.replace("%DOMAIN%", srvCfg.getName());
|
||||
templateBody = templateBody.replace("%DOMAIN%", mxCfg.getDomain());
|
||||
templateBody = templateBody.replace("%DOMAIN_PRETTY%", domainPretty);
|
||||
templateBody = templateBody.replace("%FROM_EMAIL%", cfg.getEmail());
|
||||
templateBody = templateBody.replace("%FROM_NAME%", cfg.getName());
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
package io.kamax.mxisd.lookup.provider
|
||||
|
||||
import io.kamax.mxisd.config.ServerConfig
|
||||
import io.kamax.mxisd.config.MatrixConfig
|
||||
import io.kamax.mxisd.lookup.SingleLookupReply
|
||||
import io.kamax.mxisd.lookup.SingleLookupRequest
|
||||
import io.kamax.mxisd.lookup.ThreePidMapping
|
||||
@@ -44,7 +44,7 @@ class DnsLookupProvider implements IThreePidProvider {
|
||||
private Logger log = LoggerFactory.getLogger(DnsLookupProvider.class)
|
||||
|
||||
@Autowired
|
||||
private ServerConfig srvCfg
|
||||
private MatrixConfig mxCfg
|
||||
|
||||
@Autowired
|
||||
private IRemoteIdentityServerFetcher fetcher
|
||||
@@ -79,7 +79,7 @@ class DnsLookupProvider implements IThreePidProvider {
|
||||
|
||||
// TODO use caching mechanism
|
||||
Optional<String> findIdentityServerForDomain(String domain) {
|
||||
if (StringUtils.equals(srvCfg.getName(), domain)) {
|
||||
if (StringUtils.equals(mxCfg.getDomain(), domain)) {
|
||||
log.info("We are authoritative for {}, no remote lookup", domain)
|
||||
return Optional.empty()
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
package io.kamax.mxisd.lookup.provider
|
||||
|
||||
import io.kamax.mxisd.config.ServerConfig
|
||||
import io.kamax.mxisd.config.MatrixConfig
|
||||
import io.kamax.mxisd.config.ldap.LdapConfig
|
||||
import io.kamax.mxisd.lookup.SingleLookupReply
|
||||
import io.kamax.mxisd.lookup.SingleLookupRequest
|
||||
@@ -47,7 +47,7 @@ class LdapProvider implements IThreePidProvider {
|
||||
private Logger log = LoggerFactory.getLogger(LdapProvider.class)
|
||||
|
||||
@Autowired
|
||||
private ServerConfig srvCfg
|
||||
private MatrixConfig mxCfg
|
||||
|
||||
@Autowired
|
||||
private LdapConfig ldapCfg
|
||||
@@ -111,7 +111,7 @@ class LdapProvider implements IThreePidProvider {
|
||||
// TODO Should we turn this block into a map of functions?
|
||||
String uidType = ldapCfg.getAttribute().getUid().getType()
|
||||
if (StringUtils.equals(UID, uidType)) {
|
||||
matrixId.append("@").append(data).append(":").append(srvCfg.getName())
|
||||
matrixId.append("@").append(data).append(":").append(mxCfg.getDomain())
|
||||
} else if (StringUtils.equals(MATRIX_ID, uidType)) {
|
||||
matrixId.append(data)
|
||||
} else {
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
package io.kamax.mxisd.lookup.provider;
|
||||
|
||||
import io.kamax.matrix.MatrixID;
|
||||
import io.kamax.mxisd.config.ServerConfig;
|
||||
import io.kamax.mxisd.config.MatrixConfig;
|
||||
import io.kamax.mxisd.config.sql.SqlProviderConfig;
|
||||
import io.kamax.mxisd.lookup.SingleLookupReply;
|
||||
import io.kamax.mxisd.lookup.SingleLookupRequest;
|
||||
@@ -43,7 +43,7 @@ public class SqlProvider implements IThreePidProvider {
|
||||
private Logger log = LoggerFactory.getLogger(SqlProvider.class);
|
||||
|
||||
@Autowired
|
||||
private ServerConfig srvCfg;
|
||||
private MatrixConfig mxCfg;
|
||||
|
||||
@Autowired
|
||||
private SqlProviderConfig cfg;
|
||||
@@ -82,7 +82,7 @@ public class SqlProvider implements IThreePidProvider {
|
||||
log.info("Found match: {}", uid);
|
||||
if (StringUtils.equals("uid", cfg.getIdentity().getType())) {
|
||||
log.info("Resolving as localpart");
|
||||
return Optional.of(new SingleLookupReply(request, new MatrixID(uid, srvCfg.getName())));
|
||||
return Optional.of(new SingleLookupReply(request, new MatrixID(uid, mxCfg.getDomain())));
|
||||
}
|
||||
if (StringUtils.equals("mxid", cfg.getIdentity().getType())) {
|
||||
log.info("Resolving as MXID");
|
||||
|
||||
Reference in New Issue
Block a user