syncplay server changes
This commit is contained in:
parent
d71b7fca78
commit
c561b8edf1
@ -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))
|
||||
@ -55,3 +62,4 @@ def main():
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
38
syncplay/webapi.py
Normal file
38
syncplay/webapi.py
Normal file
@ -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"<!DOCTYPE html><html><head><meta charset='utf-8'>"
|
||||
b"<title></title></head><body>"
|
||||
b"<form method='POST'><input name='room'><input name='url'></form>")
|
||||
|
||||
def render_POST(self, request):
|
||||
url = ""
|
||||
r = ""
|
||||
if b"url" in request.args and b"room" in request.args:
|
||||
url = request.args[b"url"][0].decode("utf-8")
|
||||
r = request.args[b"room"][0].decode("utf-8")
|
||||
else:
|
||||
obj = json.load(request.content)
|
||||
#print(obj)
|
||||
url = obj["text"]
|
||||
r = obj["channel_name"]
|
||||
|
||||
room = self._factory._getRoomManager()._getRoom(r)
|
||||
pl = room.getPlaylist()
|
||||
pl += [url]
|
||||
room.setPlaylist(pl)
|
||||
#print("Room: " + r + " - adding: " + url)
|
||||
for receiver in room.getWatchers():
|
||||
receiver.setPlaylist(room.getName(), room.getPlaylist())
|
||||
|
||||
return b"<html>Inserted</html>"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user