diff --git a/dyndns.py b/dyndns.py
index 321cd7f407b4dedee91db2fd70c049591c22e353..a085d4cb60a90dba779a3d59f7b8c7efee74d57a 100644
--- a/dyndns.py
+++ b/dyndns.py
@@ -4,6 +4,7 @@ import os
 import requests
 import datetime
 import config
+from werkzeug.security import check_password_hash
 
 
 plugin_dir = os.path.dirname(__file__) # parent folder name of the absolute path of this file
@@ -13,6 +14,7 @@ def register(add_endpoint):
     add_endpoint(endpoint_id='dyndns', handler=dyndns, permission_name='dyndns', menutext='DynDNS')
     add_endpoint(endpoint_id='dyndns-register', handler=dyndnsRegister, permission_name='dyndns', method='POST')
     add_endpoint(endpoint_id='dyndns-update', handler=dyndnsUpdate, permission_name=None) # Auth is handled by DynDNS server using a token
+    add_endpoint(endpoint_id='dyndns-list', handler=dyndnsList, permission_name=None) # Auth is handled internally, not by framework
     
 def dyndns(**kwargs):
     session = kwargs['session']
@@ -63,7 +65,7 @@ def dyndnsUpdate(**kwargs):
     rqtools = kwargs['rqtools']
     ip = request.remote_addr
     if not 'token' in request.args.keys():
-        return rqtools.get_400("You need to provide your token.")
+        return rqtools.get_400(None, errormsg="You need to provide your token.")
     x = db.db['dyndns-records'].find_one({'token': request.args['token']})
     if x['ip'] == ip:
         return {'message': 'Already set.'}, 200
@@ -73,3 +75,32 @@ def dyndnsUpdate(**kwargs):
         print("Updated " + x['domain'] + " from " + x['ip'] + " to " + ip)
         db.db['dyndns-records'].update_one(filter={'token': request.args['token']}, update={'$set': {'ip': ip, 'lastupdate': datetime.datetime.now()}})
     return reply, r.status_code
+
+def dyndnsList(**kwargs):
+
+    # Authorization
+    request = kwargs['request']
+    rqtools = kwargs['rqtools']
+    if not 'id' in request.args.keys():
+        return rqtools.get_403(None, errormsg="Provide an id.")
+    if not 'key' in request.args.keys():
+        return rqtools.get_403(None, errormsg="Provide a key for this.")
+    id = request.args['id']
+    key = request.args['key']
+    x = db.db['dyndns-servers'].find_one({'id': id})
+    if x is None:
+        return rqtools.get_403(None)
+    if not check_password_hash(x['keyhash'], key):
+        return rqtools.get_403(None, errormsg="Wrong key.")
+    
+    # Dump all dyndns records
+    records = []
+    for record in db.db['dyndns-records'].find():
+        records.append({
+            'domain': record['domain'],
+            'token': record['token'],
+            'ip': record['ip']
+        })
+    return records # this automatically returns JSON
+
+