diff --git a/docs/syncplay-server.1 b/docs/syncplay-server.1 index 7bd1847..8c4007a 100644 --- a/docs/syncplay-server.1 +++ b/docs/syncplay-server.1 @@ -102,6 +102,10 @@ Enable server statistics using the SQLite database file. .B \-\-tls [path] Enable TLS connections using the certificate files in path. +.TP +.B \-\-webhook-port [port] +Enables the Webhook API over port port. This API enables adding entries to the playlist over HTTP. + .SH SEE ALSO .BR syncplay (1). diff --git a/syncplay/ep_server.py b/syncplay/ep_server.py index 7d97e7a..3a935a7 100644 --- a/syncplay/ep_server.py +++ b/syncplay/ep_server.py @@ -50,8 +50,9 @@ def main(): args.tls ) site = server.Site(WebAPI(factory)) - endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080) - endpoint.listen(site) + if args.webhook_port: + endpoint = endpoints.TCP4ServerEndpoint(reactor, int(args.webhook_port)) + endpoint.listen(site) endpoint6 = TCP6ServerEndpoint(reactor, int(args.port)) endpoint6.listen(factory).addCallbacks(isListening6, failed6) endpoint4 = TCP4ServerEndpoint(reactor, int(args.port)) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 79e1388..ca9cfae 100755 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -483,6 +483,7 @@ de = { "server-maxusernamelength-argument": "Maximale Zeichenzahl in einem Benutzernamen (Standard ist {})", "server-stats-db-file-argument": "Aktiviere Server-Statistiken mithilfe der bereitgestellten SQLite-db-Datei", "server-startTLS-argument": "Erlaube TLS-Verbindungen mit den Zertifikatdateien im Angegebenen Pfad", + "server-webhook-port-argument": 'Server Webhook TCP-port', "server-messed-up-motd-unescaped-placeholders": "Die Nachricht des Tages hat unmaskierte Platzhalter. Alle $-Zeichen sollten verdoppelt werden ($$).", "server-messed-up-motd-too-long": "Die Nachricht des Tages ist zu lang - Maximal {} Zeichen, aktuell {}.", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 97491fe..ccc5dcb 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -484,6 +484,7 @@ en = { "server-maxusernamelength-argument": "Maximum number of characters in a username (default is {})", "server-stats-db-file-argument": "Enable server stats using the SQLite db file provided", "server-startTLS-argument": "Enable TLS connections using the certificate files in the path provided", + "server-webhook-port-argument": 'server Webhook TCP port', "server-messed-up-motd-unescaped-placeholders": "Message of the Day has unescaped placeholders. All $ signs should be doubled ($$).", "server-messed-up-motd-too-long": "Message of the Day is too long - maximum of {} chars, {} given.", diff --git a/syncplay/messages_es.py b/syncplay/messages_es.py index 5e86762..37495dc 100644 --- a/syncplay/messages_es.py +++ b/syncplay/messages_es.py @@ -483,6 +483,7 @@ es = { "server-maxusernamelength-argument": "Número máximo de caracteres para el nombre de usuario (el valor predeterminado es {})", "server-stats-db-file-argument": "Habilitar estadísticas del servidor utilizando el archivo db SQLite proporcionado", "server-startTLS-argument": "Habilitar conexiones TLS usando los archivos de certificado en la ruta provista", + "server-webhook-port-argument": 'server Webhook TCP port', #TODO translate "server-messed-up-motd-unescaped-placeholders": "El mensaje del dia contiene marcadores de posición sin escapar. Todos los signos $ deberían ser dobles ($$).", "server-messed-up-motd-too-long": "El mensaje del día es muy largo - máximo de {} caracteres, se recibieron {}.", diff --git a/syncplay/messages_fr.py b/syncplay/messages_fr.py index f5c88a9..f6c5046 100644 --- a/syncplay/messages_fr.py +++ b/syncplay/messages_fr.py @@ -483,6 +483,7 @@ fr = { "server-maxusernamelength-argument": "Nombre maximum de caractères dans un nom d'utilisateur (la valeur par défaut est {})", "server-stats-db-file-argument": "Activer les statistiques du serveur à l'aide du fichier db SQLite fourni", "server-startTLS-argument": "Activer les connexions TLS à l'aide des fichiers de certificat dans le chemin fourni", + "server-webhook-port-argument": 'server Webhook TCP port', # TODO translate "server-messed-up-motd-unescaped-placeholders": "Le message du jour a des espaces réservés non échappés. Tous les signes $ doivent être doublés ($$).", "server-messed-up-motd-too-long": "Le message du jour est trop long: {}caractères maximum, {} donnés.", diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index 9e80cb4..e7bb817 100755 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -483,6 +483,7 @@ it = { "server-maxusernamelength-argument": "Numero massimo di caratteri in un nome utente (default è {})", "server-stats-db-file-argument": "Abilita la raccolta dei dati statistici nel file SQLite indicato", "server-startTLS-argument": "Abilita il protocollo TLS usando i certificati contenuti nel percorso indicato", + "server-webhook-port-argument": 'server Webhook TCP port', # TODO translate "server-messed-up-motd-unescaped-placeholders": "Il messaggio del giorno ha dei caratteri non 'escaped'. Tutti i simboli $ devono essere doppi ($$).", "server-messed-up-motd-too-long": "Il messaggio del giorno è troppo lungo - numero massimo di caratteri è {}, {} trovati.", diff --git a/syncplay/messages_pt_BR.py b/syncplay/messages_pt_BR.py index 96f8b97..86417e3 100644 --- a/syncplay/messages_pt_BR.py +++ b/syncplay/messages_pt_BR.py @@ -484,6 +484,7 @@ pt_BR = { "server-maxusernamelength-argument": "Número máximos de caracteres num nome de usuário (o padrão é {})", "server-stats-db-file-argument": "Habilita estatísticas de servidor usando o arquivo db SQLite fornecido", "server-startTLS-argument": "Habilita conexões TLS usando os arquivos de certificado no caminho fornecido", + "server-webhook-port-argument": 'server Webhook TCP port', # TODO translate "server-messed-up-motd-unescaped-placeholders": "A Mensagem do Dia possui placeholders não escapados. Todos os sinais de $ devem ser dobrados (como em $$).", "server-messed-up-motd-too-long": "A Mensagem do Dia é muito longa - máximo de {} caracteres, {} foram dados.", diff --git a/syncplay/messages_pt_PT.py b/syncplay/messages_pt_PT.py index d09a65e..bc00905 100644 --- a/syncplay/messages_pt_PT.py +++ b/syncplay/messages_pt_PT.py @@ -483,6 +483,7 @@ pt_PT = { "server-maxusernamelength-argument": "Número máximos de caracteres num nome de utilizador (o padrão é {})", "server-stats-db-file-argument": "Habilita estatísticas de servidor usando o arquivo db SQLite fornecido", "server-startTLS-argument": "Habilita conexões TLS usando os arquivos de certificado no caminho fornecido", + "server-webhook-port-argument": 'server Webhook TCP port', # TODO translate "server-messed-up-motd-unescaped-placeholders": "A Mensagem do Dia possui placeholders não escapados. Todos os sinais de $ devem ser dobrados (como em $$).", "server-messed-up-motd-too-long": "A Mensagem do Dia é muito longa - máximo de {} caracteres, {} foram dados.", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index cb1302e..bda5623 100755 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -480,6 +480,7 @@ ru = { "server-maxusernamelength-argument": "Максимальное число символов в именах пользователей (по умолчанию {})", "server-stats-db-file-argument": "Включить статистику сервера в указанном файле SQLite", "server-startTLS-argument": "Включить TLS-соединения используя файлы сертификатов в указанном пути", + "server-webhook-port-argument": 'server Webhook TCP port', # TODO translate "server-messed-up-motd-unescaped-placeholders": "MOTD-сообщение содержит неэкранированные спецсимволы. Все знаки $ должны быть продублированы ($$).", "server-messed-up-motd-too-long": "MOTD-сообщение слишком длинное: максимальная длина - {} символ(ов), текущая длина - {} символ(ов).", diff --git a/syncplay/messages_tr.py b/syncplay/messages_tr.py index b4f6cd9..149faeb 100644 --- a/syncplay/messages_tr.py +++ b/syncplay/messages_tr.py @@ -484,6 +484,7 @@ tr = { "server-maxusernamelength-argument": "Bir kullanıcı adındaki maksimum karakter sayısı (varsayılan {})", "server-stats-db-file-argument": "SQLite db dosyasını kullanarak sunucu istatistiklerini etkinleştirin", "server-startTLS-argument": "Dosya yolundaki sertifika dosyalarını kullanarak TLS bağlantılarını etkinleştirin", + "server-webhook-port-argument": 'server Webhook TCP port', # TODO translate "server-messed-up-motd-unescaped-placeholders": "Günün Mesajında çıkış karaktersiz yer tutucular var. Tüm $ işaretleri iki katına çıkarılmalıdır ($$).", "server-messed-up-motd-too-long": "Günün Mesajı çok uzun - maksimum {} karakter olmalı, {} verildi.", diff --git a/syncplay/messages_zh_CN.py b/syncplay/messages_zh_CN.py index 19b4ab1..aff95eb 100644 --- a/syncplay/messages_zh_CN.py +++ b/syncplay/messages_zh_CN.py @@ -484,6 +484,7 @@ zh_CN = { "server-maxusernamelength-argument": "用户名中的最大字符数(默认为{})。", "server-stats-db-file-argument": "使用提供的SQLite db文件启用服务器统计功能", "server-startTLS-argument": "使用提供的路径中的证书文件启用TLS连接", + "server-webhook-port-argument": 'server Webhook TCP port', # TODO translate "server-messed-up-motd-unescaped-placeholders": "每日信息中有未转义的占位符。所有 $ 字符应当重复两遍 ($$).", "server-messed-up-motd-too-long": "每日信息过长 - 最大{}个chars, 给出的长度{}", diff --git a/syncplay/server.py b/syncplay/server.py index d03fc3d..d762197 100755 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -892,3 +892,4 @@ class ConfigurationGetter(object): self._argparser.add_argument('--max-username-length', metavar='maxUsernameLength', type=int, nargs='?', help=getMessage("server-maxusernamelength-argument").format(constants.MAX_USERNAME_LENGTH)) self._argparser.add_argument('--stats-db-file', metavar='file', type=str, nargs='?', help=getMessage("server-stats-db-file-argument")) self._argparser.add_argument('--tls', metavar='path', type=str, nargs='?', help=getMessage("server-startTLS-argument")) + self._argparser.add_argument('--webhook-port', metavar='webhook_port', type=str, nargs='?', help=getMessage("server-webhook-port-argument")) diff --git a/syncplay/webapi.py b/syncplay/webapi.py index 84e8883..9ca288a 100644 --- a/syncplay/webapi.py +++ b/syncplay/webapi.py @@ -10,6 +10,7 @@ class WebAPI(resource.Resource): self._factory = factory def render_GET(self, request): + # return a simple form for browsers return (b"" b"" b"
")