mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-10-01 11:49:51 -04:00
Check users in our table aren't on a different domain to the one we're configured with to try & fix SYN-266
This commit is contained in:
parent
f46eee838a
commit
a7b51f4539
@ -26,6 +26,7 @@ from synapse.server import HomeServer
|
|||||||
from synapse.python_dependencies import check_requirements
|
from synapse.python_dependencies import check_requirements
|
||||||
|
|
||||||
from twisted.internet import reactor
|
from twisted.internet import reactor
|
||||||
|
from twisted.internet import defer
|
||||||
from twisted.application import service
|
from twisted.application import service
|
||||||
from twisted.enterprise import adbapi
|
from twisted.enterprise import adbapi
|
||||||
from twisted.web.resource import Resource
|
from twisted.web.resource import Resource
|
||||||
@ -241,6 +242,22 @@ class SynapseHomeServer(HomeServer):
|
|||||||
)
|
)
|
||||||
logger.info("Metrics now running on 127.0.0.1 port %d", config.metrics_port)
|
logger.info("Metrics now running on 127.0.0.1 port %d", config.metrics_port)
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def post_startup_check(self):
|
||||||
|
all_users_native = yield self.get_datastore().all_users_on_domain(
|
||||||
|
self.hostname
|
||||||
|
)
|
||||||
|
if not all_users_native:
|
||||||
|
sys.stderr.write(
|
||||||
|
"\n"
|
||||||
|
"******************************************************\n"
|
||||||
|
"Found users in database not native to %s!\n"
|
||||||
|
"You cannot changed a synapse server_name after it's been configured\n"
|
||||||
|
"******************************************************\n"
|
||||||
|
"\n"
|
||||||
|
)
|
||||||
|
reactor.stop()
|
||||||
|
|
||||||
|
|
||||||
def get_version_string():
|
def get_version_string():
|
||||||
try:
|
try:
|
||||||
@ -399,6 +416,8 @@ def setup(config_options):
|
|||||||
hs.get_datastore().start_profiling()
|
hs.get_datastore().start_profiling()
|
||||||
hs.get_replication_layer().start_get_pdu_cache()
|
hs.get_replication_layer().start_get_pdu_cache()
|
||||||
|
|
||||||
|
reactor.callWhenRunning(hs.post_startup_check)
|
||||||
|
|
||||||
return hs
|
return hs
|
||||||
|
|
||||||
|
|
||||||
|
@ -144,3 +144,21 @@ class RegistrationStore(SQLBaseStore):
|
|||||||
return rows[0]
|
return rows[0]
|
||||||
|
|
||||||
raise StoreError(404, "Token not found.")
|
raise StoreError(404, "Token not found.")
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def all_users_on_domain(self, domain):
|
||||||
|
res = yield self.runInteraction(
|
||||||
|
"all_users_on_domain",
|
||||||
|
self._all_users_on_domain_txn,
|
||||||
|
domain
|
||||||
|
)
|
||||||
|
defer.returnValue(res)
|
||||||
|
|
||||||
|
def _all_users_on_domain_txn(self, txn, domain):
|
||||||
|
sql = "SELECT COUNT(*) FROM users WHERE name NOT LIKE ?"
|
||||||
|
pat = "%:"+domain
|
||||||
|
cursor = txn.execute(sql, (pat,))
|
||||||
|
num_not_matching = cursor.fetchall()[0][0]
|
||||||
|
if num_not_matching == 0:
|
||||||
|
return True
|
||||||
|
return False
|
Loading…
Reference in New Issue
Block a user