Move functions for testing for IPv4, IPv6 addresses to nntp.tiny.host
This commit is contained in:
parent
b0cedd492f
commit
36d048713f
2 changed files with 25 additions and 24 deletions
22
lib/nntp/tiny/host.py
Normal file
22
lib/nntp/tiny/host.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
class Host():
|
||||||
|
@staticmethod
|
||||||
|
def is_ipv6(value: str):
|
||||||
|
return value.find(':') >= 0
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def is_ipv4(value: str):
|
||||||
|
parts = value.split('.')
|
||||||
|
|
||||||
|
if len(parts) > 4 or len(parts) == 0:
|
||||||
|
return False
|
||||||
|
|
||||||
|
for part in parts:
|
||||||
|
if not part.isdecimal():
|
||||||
|
return False
|
||||||
|
|
||||||
|
num = int(part)
|
||||||
|
|
||||||
|
if num > 255:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
|
@ -7,6 +7,7 @@ import ssl
|
||||||
|
|
||||||
from nntp.tiny.config import Config, ConfigException
|
from nntp.tiny.config import Config, ConfigException
|
||||||
from nntp.tiny.db import Database
|
from nntp.tiny.db import Database
|
||||||
|
from nntp.tiny.host import Host
|
||||||
from nntp.tiny.newsgroup import Newsgroup
|
from nntp.tiny.newsgroup import Newsgroup
|
||||||
from nntp.tiny.session import Session
|
from nntp.tiny.session import Session
|
||||||
|
|
||||||
|
@ -67,28 +68,6 @@ class Server():
|
||||||
thread = threading.Thread(target=spawn)
|
thread = threading.Thread(target=spawn)
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _is_ipv6(value: str):
|
|
||||||
return value.find(':') >= 0
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _is_ipv4(value: str):
|
|
||||||
parts = value.split('.')
|
|
||||||
|
|
||||||
if len(parts) > 4 or len(parts) == 0:
|
|
||||||
return False
|
|
||||||
|
|
||||||
for part in parts:
|
|
||||||
if not part.isdecimal():
|
|
||||||
return False
|
|
||||||
|
|
||||||
num = int(part)
|
|
||||||
|
|
||||||
if num > 255:
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
hosts = re.split(r'\s*,\s*', self.config.get('listen', 'host'))
|
hosts = re.split(r'\s*,\s*', self.config.get('listen', 'host'))
|
||||||
port = int(self.config.get('listen', 'port'))
|
port = int(self.config.get('listen', 'port'))
|
||||||
|
@ -96,9 +75,9 @@ class Server():
|
||||||
listeners = list()
|
listeners = list()
|
||||||
|
|
||||||
for host in hosts:
|
for host in hosts:
|
||||||
if Server._is_ipv6(host):
|
if Host.is_ipv6(host):
|
||||||
listeners.append(self.listen(host, port, socket.AF_INET6))
|
listeners.append(self.listen(host, port, socket.AF_INET6))
|
||||||
elif Server._is_ipv4(host):
|
elif Host.is_ipv4(host):
|
||||||
listeners.append(self.listen(host, port, socket.AF_INET))
|
listeners.append(self.listen(host, port, socket.AF_INET))
|
||||||
else:
|
else:
|
||||||
for af in (socket.AF_INET, socket.AF_INET6):
|
for af in (socket.AF_INET, socket.AF_INET6):
|
||||||
|
|
Loading…
Add table
Reference in a new issue