2502: Resolve using socrate function r=mergify[bot] a=ghostwheel42

## What type of PR?

enhancement

## What does this PR do?

nginx.py had a copy of the socrate function resolve_hostname.
This removes the duplicated code and uses the socrate function.
The socrate functions does the same but prefers ipv4 addresses when resolving.


Co-authored-by: Alexander Graf <ghostwheel42@users.noreply.github.com>
main
bors[bot] 2 years ago committed by GitHub
commit 659cf8894c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,12 +1,11 @@
from mailu import models, utils from mailu import models, utils
from flask import current_app as app from flask import current_app as app
from socrate import system
import re import re
import urllib import urllib
import ipaddress import ipaddress
import socket
import sqlalchemy.exc import sqlalchemy.exc
import tenacity
SUPPORTED_AUTH_METHODS = ["none", "plain"] SUPPORTED_AUTH_METHODS = ["none", "plain"]
@ -146,13 +145,5 @@ def get_server(protocol, authenticated=False):
ipaddress.ip_address(hostname) ipaddress.ip_address(hostname)
except: except:
# hostname is not an ip address - so we need to resolve it # hostname is not an ip address - so we need to resolve it
hostname = resolve_hostname(hostname) hostname = system.resolve_hostname(hostname)
return hostname, port return hostname, port
@tenacity.retry(stop=tenacity.stop_after_attempt(100),
wait=tenacity.wait_random(min=2, max=5))
def resolve_hostname(hostname):
""" This function uses system DNS to resolve a hostname.
It is capable of retrying in case the host is not immediately available
"""
return socket.gethostbyname(hostname)

Loading…
Cancel
Save