summary refs log tree commit diff
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2015-02-09 12:03:37 +0000
committerKegan Dougal <kegan@matrix.org>2015-02-09 12:03:37 +0000
commitac3183caaa66b750996d90c0ac9ed430f623909c (patch)
tree3cddc8ef5230ac7e206fd0aa0d308feffae79f10
parentAdd errcodes for appservice registrations. (diff)
downloadsynapse-ac3183caaa66b750996d90c0ac9ed430f623909c.tar.xz
Register a user account for the AS when the AS registers. Add 'sender' column to AS table.
-rw-r--r--synapse/appservice/__init__.py3
-rw-r--r--synapse/handlers/appservice.py8
-rw-r--r--synapse/storage/appservice.py5
-rw-r--r--synapse/storage/schema/application_services.sql1
-rw-r--r--synapse/storage/schema/delta/v14.sql1
5 files changed, 14 insertions, 4 deletions
diff --git a/synapse/appservice/__init__.py b/synapse/appservice/__init__.py
index 46d46a5a48..fb9bfffe5d 100644
--- a/synapse/appservice/__init__.py
+++ b/synapse/appservice/__init__.py
@@ -35,10 +35,11 @@ class ApplicationService(object):
     NS_LIST = [NS_USERS, NS_ALIASES, NS_ROOMS]
 
     def __init__(self, token, url=None, namespaces=None, hs_token=None,
-                 txn_id=None):
+                 sender=None, txn_id=None):
         self.token = token
         self.url = url
         self.hs_token = hs_token
+        self.sender = sender
         self.namespaces = self._check_namespaces(namespaces)
         self.txn_id = txn_id
 
diff --git a/synapse/handlers/appservice.py b/synapse/handlers/appservice.py
index fa810b9a98..5071a12eb1 100644
--- a/synapse/handlers/appservice.py
+++ b/synapse/handlers/appservice.py
@@ -52,8 +52,14 @@ class ApplicationServicesHandler(object):
                 "Consult the home server admin.",
                 errcode=Codes.FORBIDDEN
             )
-        logger.info("Updating application service info...")
+
         app_service.hs_token = self._generate_hs_token()
+
+        # create a sender for this application service which is used when
+        # creating rooms, etc..
+        account = yield self.hs.get_handlers().registration_handler.register()
+        app_service.sender = account[0]
+
         yield self.store.update_app_service(app_service)
         defer.returnValue(app_service)
 
diff --git a/synapse/storage/appservice.py b/synapse/storage/appservice.py
index 3c8bf9ad0d..eef77e737e 100644
--- a/synapse/storage/appservice.py
+++ b/synapse/storage/appservice.py
@@ -130,8 +130,9 @@ class ApplicationServiceStore(SQLBaseStore):
             return False
 
         txn.execute(
-            "UPDATE application_services SET url=?, hs_token=? WHERE id=?",
-            (service.url, service.hs_token, as_id,)
+            "UPDATE application_services SET url=?, hs_token=?, sender=? "
+            "WHERE id=?",
+            (service.url, service.hs_token, service.sender, as_id,)
         )
         # cleanup regex
         txn.execute(
diff --git a/synapse/storage/schema/application_services.sql b/synapse/storage/schema/application_services.sql
index 03b5a10c8a..e491ad5aec 100644
--- a/synapse/storage/schema/application_services.sql
+++ b/synapse/storage/schema/application_services.sql
@@ -18,6 +18,7 @@ CREATE TABLE IF NOT EXISTS application_services(
     url TEXT,
     token TEXT,
     hs_token TEXT,
+    sender TEXT,
     UNIQUE(token) ON CONFLICT ROLLBACK
 );
 
diff --git a/synapse/storage/schema/delta/v14.sql b/synapse/storage/schema/delta/v14.sql
index 03b5a10c8a..e491ad5aec 100644
--- a/synapse/storage/schema/delta/v14.sql
+++ b/synapse/storage/schema/delta/v14.sql
@@ -18,6 +18,7 @@ CREATE TABLE IF NOT EXISTS application_services(
     url TEXT,
     token TEXT,
     hs_token TEXT,
+    sender TEXT,
     UNIQUE(token) ON CONFLICT ROLLBACK
 );