syncplay server changes
This commit is contained in:
parent
d71b7fca78
commit
c561b8edf1
@ -1,10 +1,13 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from twisted.internet import reactor
|
from twisted.internet import reactor, endpoints
|
||||||
from twisted.internet.endpoints import TCP4ServerEndpoint, TCP6ServerEndpoint
|
from twisted.internet.endpoints import TCP4ServerEndpoint, TCP6ServerEndpoint
|
||||||
from twisted.internet.error import CannotListenError
|
from twisted.internet.error import CannotListenError
|
||||||
|
|
||||||
|
from twisted.web import server, resource
|
||||||
|
|
||||||
from syncplay.server import SyncFactory, ConfigurationGetter
|
from syncplay.server import SyncFactory, ConfigurationGetter
|
||||||
|
from syncplay.webapi import WebAPI
|
||||||
|
|
||||||
class ServerStatus: pass
|
class ServerStatus: pass
|
||||||
|
|
||||||
@ -27,6 +30,7 @@ def failed4(f):
|
|||||||
print(f.value)
|
print(f.value)
|
||||||
print("IPv4 listening failed.")
|
print("IPv4 listening failed.")
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
argsGetter = ConfigurationGetter()
|
argsGetter = ConfigurationGetter()
|
||||||
args = argsGetter.getConfiguration()
|
args = argsGetter.getConfiguration()
|
||||||
@ -43,6 +47,9 @@ def main():
|
|||||||
args.stats_db_file,
|
args.stats_db_file,
|
||||||
args.tls
|
args.tls
|
||||||
)
|
)
|
||||||
|
site = server.Site(WebAPI(factory))
|
||||||
|
endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080)
|
||||||
|
endpoint.listen(site)
|
||||||
endpoint6 = TCP6ServerEndpoint(reactor, int(args.port))
|
endpoint6 = TCP6ServerEndpoint(reactor, int(args.port))
|
||||||
endpoint6.listen(factory).addCallbacks(isListening6, failed6)
|
endpoint6.listen(factory).addCallbacks(isListening6, failed6)
|
||||||
endpoint4 = TCP4ServerEndpoint(reactor, int(args.port))
|
endpoint4 = TCP4ServerEndpoint(reactor, int(args.port))
|
||||||
@ -55,3 +62,4 @@ def main():
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|||||||
@ -260,6 +260,9 @@ class SyncFactory(Factory):
|
|||||||
if self._TLSattempts < constants.TLS_CERT_ROTATION_MAX_RETRIES:
|
if self._TLSattempts < constants.TLS_CERT_ROTATION_MAX_RETRIES:
|
||||||
self.serverAcceptsTLS = True
|
self.serverAcceptsTLS = True
|
||||||
|
|
||||||
|
def _getRoomManager(self):
|
||||||
|
return self._roomManager
|
||||||
|
|
||||||
|
|
||||||
class StatsRecorder(object):
|
class StatsRecorder(object):
|
||||||
def __init__(self, dbHandle, roomManager):
|
def __init__(self, dbHandle, roomManager):
|
||||||
@ -356,8 +359,9 @@ class RoomManager(object):
|
|||||||
return room
|
return room
|
||||||
|
|
||||||
def _deleteRoomIfEmpty(self, room):
|
def _deleteRoomIfEmpty(self, room):
|
||||||
if room.isEmpty() and room.getName() in self._rooms:
|
#if room.isEmpty() and room.getName() in self._rooms:
|
||||||
del self._rooms[room.getName()]
|
# del self._rooms[room.getName()]
|
||||||
|
print("Would delete room: " + room.getName())
|
||||||
|
|
||||||
def findFreeUsername(self, username):
|
def findFreeUsername(self, username):
|
||||||
username = truncateText(username, constants.MAX_USERNAME_LENGTH)
|
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