1
0
mirror of https://git.sr.ht/~tsileo/microblog.pub synced 2025-06-05 21:59:23 +02:00

Initial import

This commit is contained in:
Thomas Sileo
2018-05-18 20:41:41 +02:00
commit 43e113e420
50 changed files with 4378 additions and 0 deletions

27
utils/urlutils.py Normal file
View File

@ -0,0 +1,27 @@
import logging
import socket
import ipaddress
from urllib.parse import urlparse
logger = logging.getLogger(__name__)
def is_url_valid(url):
parsed = urlparse(url)
if parsed.scheme not in ['http', 'https']:
return False
if parsed.hostname in ['localhost']:
return False
try:
ip_address = socket.getaddrinfo(parsed.hostname, parsed.port or 80)[0][4][0]
except socket.gaierror:
logger.exception(f'failed to lookup url {url}')
return False
if ipaddress.ip_address(ip_address).is_private:
logger.info(f'rejecting private URL {url}')
return False
return True