Resolve hosts in admin

master
Ionut Filip 6 years ago committed by Tim Möhlmann
parent 004a431e97
commit f8dffe5a19
No known key found for this signature in database
GPG Key ID: 8677988D8072E8DE

@ -1,8 +1,9 @@
FROM alpine:3.8 FROM alpine:3.8
# python3 shared with most images # python3 shared with most images
RUN apk add --no-cache \ RUN apk add --no-cache \
python3 py3-pip \ python3 py3-pip git \
&& pip3 install --upgrade pip && pip3 install --upgrade pip
RUN pip3 install git+https://github.com/usrpro/MailuStart.git#egg=mailustart
# Image specific layers under this line # Image specific layers under this line
RUN mkdir -p /app RUN mkdir -p /app
WORKDIR /app WORKDIR /app

@ -1,5 +1,5 @@
import os import os
from mailustart import resolve
DEFAULT_CONFIG = { DEFAULT_CONFIG = {
# Specific to the admin UI # Specific to the admin UI
@ -60,7 +60,6 @@ DEFAULT_CONFIG = {
'POD_ADDRESS_RANGE': None 'POD_ADDRESS_RANGE': None
} }
class ConfigManager(dict): class ConfigManager(dict):
""" Naive configuration manager that uses environment only """ Naive configuration manager that uses environment only
""" """
@ -74,6 +73,12 @@ class ConfigManager(dict):
def __init__(self): def __init__(self):
self.config = dict() self.config = dict()
def resolve_host(self):
self.config['HOST_IMAP'] = resolve(self.config['HOST_IMAP'])
self.config['HOST_POP3'] = resolve(self.config['HOST_POP3'])
self.config['HOST_AUTHSMTP'] = resolve(self.config['HOST_AUTHSMTP'])
self.config['HOST_SMTP'] = resolve(self.config['HOST_SMTP'])
def __coerce_value(self, value): def __coerce_value(self, value):
if isinstance(value, str) and value.lower() in ('true','yes'): if isinstance(value, str) and value.lower() in ('true','yes'):
return True return True
@ -88,6 +93,7 @@ class ConfigManager(dict):
key: self.__coerce_value(os.environ.get(key, value)) key: self.__coerce_value(os.environ.get(key, value))
for key, value in DEFAULT_CONFIG.items() for key, value in DEFAULT_CONFIG.items()
}) })
self.resolve_host()
# automatically set the sqlalchemy string # automatically set the sqlalchemy string
if self.config['DB_FLAVOR']: if self.config['DB_FLAVOR']:

@ -2,7 +2,6 @@ from mailu import models
from flask import current_app as app from flask import current_app as app
import re import re
import socket
import urllib import urllib
@ -89,5 +88,4 @@ def get_server(protocol, authenticated=False):
hostname, port = extract_host_port(app.config['HOST_AUTHSMTP'], 10025) hostname, port = extract_host_port(app.config['HOST_AUTHSMTP'], 10025)
else: else:
hostname, port = extract_host_port(app.config['HOST_SMTP'], 25) hostname, port = extract_host_port(app.config['HOST_SMTP'], 25)
address = socket.gethostbyname(hostname) return hostname, port
return address, port

@ -14,10 +14,14 @@ with open("/etc/resolv.conf") as handle:
content = handle.read().split() content = handle.read().split()
args["RESOLVER"] = content[content.index("nameserver") + 1] args["RESOLVER"] = content[content.index("nameserver") + 1]
args["HOST_WEBMAIL"] = resolve(args.get("HOST_WEBMAIL", "webmail"))
args["HOST_ADMIN"] = resolve(args.get("HOST_ADMIN", "admin")) args["HOST_ADMIN"] = resolve(args.get("HOST_ADMIN", "admin"))
args["HOST_WEBDAV"] = resolve(args.get("HOST_WEBDAV", "webdav:5232"))
args["HOST_ANTISPAM"] = resolve(args.get("HOST_ANTISPAM", "antispam:11334")) args["HOST_ANTISPAM"] = resolve(args.get("HOST_ANTISPAM", "antispam:11334"))
args["HOST_WEBMAIL"] = args.get("HOST_WEBMAIL", "webmail")
if args["WEBMAIL"] != "none":
args["HOST_WEBMAIL"] = resolve(args.get("HOST_WEBMAIL"))
args["HOST_WEBDAV"] = args.get("HOST_WEBDAV", "webdav:5232")
if args["WEBDAV"] != "none":
args["HOST_WEBDAV"] = resolve(args.get("HOST_WEBDAV"))
# TLS configuration # TLS configuration
cert_name = os.getenv("TLS_CERT_FILENAME", default="cert.pem") cert_name = os.getenv("TLS_CERT_FILENAME", default="cert.pem")

Loading…
Cancel
Save