From 534f7f2af55b67180a074e7009c74763dc6ebf0a Mon Sep 17 00:00:00 2001 From: powerjungle Date: Thu, 26 Jan 2023 09:58:13 +0100 Subject: [PATCH] server: add options to choose the address to bind to Sometimes a user might want to bind to localhost only for testing or have multiple interfaces per IP version and only one must be used. --- syncplay/ep_server.py | 9 +++++---- syncplay/messages_de.py | 2 ++ syncplay/messages_en.py | 2 ++ syncplay/messages_eo.py | 2 ++ syncplay/messages_es.py | 2 ++ syncplay/messages_fr.py | 2 ++ syncplay/messages_it.py | 2 ++ syncplay/messages_pt_BR.py | 2 ++ syncplay/messages_pt_PT.py | 2 ++ syncplay/messages_ru.py | 2 ++ syncplay/messages_tr.py | 2 ++ syncplay/messages_zh_CN.py | 2 ++ syncplay/server.py | 2 ++ 13 files changed, 29 insertions(+), 4 deletions(-) diff --git a/syncplay/ep_server.py b/syncplay/ep_server.py index f21854d..10a74b5 100644 --- a/syncplay/ep_server.py +++ b/syncplay/ep_server.py @@ -38,6 +38,7 @@ def failed4(f): def main(): argsGetter = ConfigurationGetter() args = argsGetter.getConfiguration() + factory = SyncFactory( args.port, args.password, @@ -55,15 +56,15 @@ def main(): ) if args.ipv6_only is True: - endpoint6 = TCP6ServerEndpoint(reactor, int(args.port)) + endpoint6 = TCP6ServerEndpoint(reactor, int(args.port), interface=args.interface_ipv6) endpoint6.listen(factory).addCallbacks(isListening6, failed6) elif args.ipv4_only is True: - endpoint4 = TCP4ServerEndpoint(reactor, int(args.port)) + endpoint4 = TCP4ServerEndpoint(reactor, int(args.port), interface=args.interface_ipv4) endpoint4.listen(factory).addCallbacks(isListening4, failed4) else: - endpoint6 = TCP6ServerEndpoint(reactor, int(args.port)) + endpoint6 = TCP6ServerEndpoint(reactor, int(args.port), interface=args.interface_ipv6) endpoint6.listen(factory).addCallbacks(isListening6, failed6) - endpoint4 = TCP4ServerEndpoint(reactor, int(args.port)) + endpoint4 = TCP4ServerEndpoint(reactor, int(args.port), interface=args.interface_ipv4) endpoint4.listen(factory).addCallbacks(isListening4, failed4) if ServerStatus.listening6 or ServerStatus.listening4: diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 943e5af..affa51f 100755 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -501,6 +501,8 @@ de = { "server-messed-up-motd-too-long": "Die Nachricht des Tages ist zu lang - Maximal {} Zeichen, aktuell {}.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Unbekannter Befehl {}", # message diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 0100d8e..97a759d 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -502,6 +502,8 @@ en = { "server-messed-up-motd-too-long": "Message of the Day is too long - maximum of {} chars, {} given.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Unknown command {}", # message diff --git a/syncplay/messages_eo.py b/syncplay/messages_eo.py index 3d1dda8..4225f7c 100644 --- a/syncplay/messages_eo.py +++ b/syncplay/messages_eo.py @@ -505,6 +505,8 @@ eo = { "server-messed-up-motd-too-long": "Mesaĝo de tago estas tro longa – maksimuma kvanto estas {} signoj, sed {} estas donitaj.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Nekonata ordono {}", # message diff --git a/syncplay/messages_es.py b/syncplay/messages_es.py index ef2438c..890b249 100644 --- a/syncplay/messages_es.py +++ b/syncplay/messages_es.py @@ -501,6 +501,8 @@ es = { "server-messed-up-motd-too-long": "El mensaje del día es muy largo - máximo de {} caracteres, se recibieron {}.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Comando desconocido {}", # message diff --git a/syncplay/messages_fr.py b/syncplay/messages_fr.py index 1abe4a4..6d95add 100644 --- a/syncplay/messages_fr.py +++ b/syncplay/messages_fr.py @@ -502,6 +502,8 @@ fr = { "server-messed-up-motd-too-long": "Le message du jour est trop long: {}caractères maximum, {} donnés.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Commande inconnue {}", # message diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index 35941e5..cdf2b76 100755 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -501,6 +501,8 @@ it = { "server-messed-up-motd-too-long": "Il messaggio del giorno è troppo lungo - numero massimo di caratteri è {}, {} trovati.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Comando non riconosciuto {}", # message diff --git a/syncplay/messages_pt_BR.py b/syncplay/messages_pt_BR.py index 927c3d5..c7a2535 100644 --- a/syncplay/messages_pt_BR.py +++ b/syncplay/messages_pt_BR.py @@ -502,6 +502,8 @@ pt_BR = { "server-messed-up-motd-too-long": "A Mensagem do Dia é muito longa - máximo de {} caracteres, {} foram dados.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Comando desconhecido: {}", # message diff --git a/syncplay/messages_pt_PT.py b/syncplay/messages_pt_PT.py index 337e789..a32d24c 100644 --- a/syncplay/messages_pt_PT.py +++ b/syncplay/messages_pt_PT.py @@ -501,6 +501,8 @@ pt_PT = { "server-messed-up-motd-too-long": "A Mensagem do Dia é muito longa - máximo de {} caracteres, {} foram dados.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Comando desconhecido: {}", # message diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 4f104a8..ce30c21 100755 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -498,6 +498,8 @@ ru = { "server-messed-up-motd-too-long": "MOTD-сообщение слишком длинное: максимальная длина - {} символ(ов), текущая длина - {} символ(ов).", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Неизвестная команда: {}", # message diff --git a/syncplay/messages_tr.py b/syncplay/messages_tr.py index a23abb6..cb4e759 100644 --- a/syncplay/messages_tr.py +++ b/syncplay/messages_tr.py @@ -502,6 +502,8 @@ tr = { "server-messed-up-motd-too-long": "Günün Mesajı çok uzun - maksimum {} karakter olmalı, {} verildi.", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "Bilinmeyen komut {}", # message diff --git a/syncplay/messages_zh_CN.py b/syncplay/messages_zh_CN.py index 7170495..9fbdff7 100644 --- a/syncplay/messages_zh_CN.py +++ b/syncplay/messages_zh_CN.py @@ -502,6 +502,8 @@ zh_CN = { "server-messed-up-motd-too-long": "每日信息过长 - 最大{}个chars, 给出的长度{}", "server-listen-only-on-ipv4": "Listen only on IPv4 when starting the server.", "server-listen-only-on-ipv6": "Listen only on IPv6 when starting the server.", + "server-interface-ipv4": "The IP address to bind to for IPv4. Leaving it empty defaults to using all.", + "server-interface-ipv6": "The IP address to bind to for IPv6. Leaving it empty defaults to using all.", # Server errors "unknown-command-server-error": "未知命令 {}", # message diff --git a/syncplay/server.py b/syncplay/server.py index 51cbd3d..c5a04ac 100755 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -891,3 +891,5 @@ class ConfigurationGetter(object): self._argparser.add_argument('--tls', metavar='path', type=str, nargs='?', help=getMessage("server-startTLS-argument")) self._argparser.add_argument('--ipv4-only', action='store_true', help=getMessage("server-listen-only-on-ipv4")) self._argparser.add_argument('--ipv6-only', action='store_true', help=getMessage("server-listen-only-on-ipv6")) + self._argparser.add_argument('--interface-ipv4', metavar='interfaceIPv4', type=str, nargs='?', help=getMessage("server-interface-ipv4"), default='') + self._argparser.add_argument('--interface-ipv6', metavar='interfaceIPv6', type=str, nargs='?', help=getMessage("server-interface-ipv6"), default='')