diff --git a/syncplay/ep_server.py b/syncplay/ep_server.py index 22aec44..132ccc6 100644 --- a/syncplay/ep_server.py +++ b/syncplay/ep_server.py @@ -1,10 +1,13 @@ import sys -from twisted.internet import reactor +from twisted.internet import reactor, endpoints from twisted.internet.endpoints import TCP4ServerEndpoint, TCP6ServerEndpoint from twisted.internet.error import CannotListenError +from twisted.web import server, resource + from syncplay.server import SyncFactory, ConfigurationGetter +from syncplay.webapi import WebAPI class ServerStatus: pass @@ -27,6 +30,7 @@ def failed4(f): print(f.value) print("IPv4 listening failed.") + def main(): argsGetter = ConfigurationGetter() args = argsGetter.getConfiguration() @@ -43,6 +47,9 @@ def main(): args.stats_db_file, args.tls ) + site = server.Site(WebAPI(factory)) + endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080) + endpoint.listen(site) endpoint6 = TCP6ServerEndpoint(reactor, int(args.port)) endpoint6.listen(factory).addCallbacks(isListening6, failed6) endpoint4 = TCP4ServerEndpoint(reactor, int(args.port)) @@ -54,4 +61,5 @@ def main(): sys.exit() if __name__ == "__main__": - main() \ No newline at end of file + main() + diff --git a/syncplay/server.py b/syncplay/server.py index 21de91b..b3f9408 100755 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -260,6 +260,9 @@ class SyncFactory(Factory): if self._TLSattempts < constants.TLS_CERT_ROTATION_MAX_RETRIES: self.serverAcceptsTLS = True + def _getRoomManager(self): + return self._roomManager + class StatsRecorder(object): def __init__(self, dbHandle, roomManager): @@ -356,8 +359,9 @@ class RoomManager(object): return room def _deleteRoomIfEmpty(self, room): - if room.isEmpty() and room.getName() in self._rooms: - del self._rooms[room.getName()] + #if room.isEmpty() and room.getName() in self._rooms: + # del self._rooms[room.getName()] + print("Would delete room: " + room.getName()) def findFreeUsername(self, username): username = truncateText(username, constants.MAX_USERNAME_LENGTH) diff --git a/syncplay/webapi.py b/syncplay/webapi.py new file mode 100644 index 0000000..84e8883 --- /dev/null +++ b/syncplay/webapi.py @@ -0,0 +1,38 @@ +from syncplay.utils import RoomPasswordProvider, NotControlledRoom, RandomStringGenerator, meetsMinVersion, playlistIsValid, truncateText +from twisted.web import server, resource +import syncplay +from syncplay import constants +import json + +class WebAPI(resource.Resource): + isLeaf = True + def __init__(self, factory): + self._factory = factory + + def render_GET(self, request): + return (b"
" + b"