mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2024-11-25 02:47:04 +00:00
when adding/removing mail addresses also update nginx's config
This commit is contained in:
parent
c8856f107d
commit
49d5561933
@ -1,3 +1,7 @@
|
|||||||
|
## NOTE: This file is automatically generated by Mail-in-a-Box.
|
||||||
|
## Do not edit this file. It will be replaced each time
|
||||||
|
## Mail-in-a-Box needs up update the web configuration.
|
||||||
|
|
||||||
# Redirect all HTTP to HTTPS.
|
# Redirect all HTTP to HTTPS.
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
@ -9,7 +13,6 @@ server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# The secure HTTPS server.
|
# The secure HTTPS server.
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
|
|
||||||
|
@ -118,10 +118,10 @@ def do_dns_update(env):
|
|||||||
shell('check_call', ["/usr/sbin/service", "opendkim", "restart"])
|
shell('check_call', ["/usr/sbin/service", "opendkim", "restart"])
|
||||||
|
|
||||||
if len(updated_domains) == 0:
|
if len(updated_domains) == 0:
|
||||||
# if nothing was updated (except maybe DKIM), don't show any output
|
# if nothing was updated (except maybe OpenDKIM's files), don't show any output
|
||||||
return ""
|
return ""
|
||||||
else:
|
else:
|
||||||
return "updated: " + ",".join(updated_domains) + "\n"
|
return "updated DNS: " + ",".join(updated_domains) + "\n"
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
|
@ -91,9 +91,8 @@ def add_mail_user(email, pw, env):
|
|||||||
shutil.copyfile(utils.CONF_DIR + "/dovecot_sieve.txt", user_mail_dir + "/.dovecot.sieve")
|
shutil.copyfile(utils.CONF_DIR + "/dovecot_sieve.txt", user_mail_dir + "/.dovecot.sieve")
|
||||||
os.chown(user_mail_dir + "/.dovecot.sieve", maildirstat.st_uid, maildirstat.st_gid)
|
os.chown(user_mail_dir + "/.dovecot.sieve", maildirstat.st_uid, maildirstat.st_gid)
|
||||||
|
|
||||||
# Update DNS in case any new domains are added.
|
# Update DNS/web in case any new domains are added.
|
||||||
from dns_update import do_dns_update
|
return kick(env, "mail user added")
|
||||||
return do_dns_update(env)
|
|
||||||
|
|
||||||
def set_mail_password(email, pw, env):
|
def set_mail_password(email, pw, env):
|
||||||
# hash the password
|
# hash the password
|
||||||
@ -114,9 +113,8 @@ def remove_mail_user(email, env):
|
|||||||
return ("That's not a user (%s)." % email, 400)
|
return ("That's not a user (%s)." % email, 400)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
||||||
# Update DNS in case any domains are removed.
|
# Update DNS/web in case any domains are removed.
|
||||||
from dns_update import do_dns_update
|
return kick(env, "mail user removed")
|
||||||
return do_dns_update(env)
|
|
||||||
|
|
||||||
def add_mail_alias(source, destination, env):
|
def add_mail_alias(source, destination, env):
|
||||||
if not validate_email(source, False):
|
if not validate_email(source, False):
|
||||||
@ -129,9 +127,8 @@ def add_mail_alias(source, destination, env):
|
|||||||
return ("Alias already exists (%s)." % source, 400)
|
return ("Alias already exists (%s)." % source, 400)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
||||||
# Update DNS in case any new domains are added.
|
# Update DNS/web in case any new domains are added.
|
||||||
from dns_update import do_dns_update
|
return kick(env, "alias added")
|
||||||
return do_dns_update(env)
|
|
||||||
|
|
||||||
def remove_mail_alias(source, env):
|
def remove_mail_alias(source, env):
|
||||||
conn, c = open_database(env, with_connection=True)
|
conn, c = open_database(env, with_connection=True)
|
||||||
@ -140,9 +137,19 @@ def remove_mail_alias(source, env):
|
|||||||
return ("That's not an alias (%s)." % source, 400)
|
return ("That's not an alias (%s)." % source, 400)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
||||||
# Update DNS in case any domains are removed.
|
# Update DNS and nginx in case any domains are removed.
|
||||||
|
return kick(env, "alias removed")
|
||||||
|
|
||||||
|
def kick(env, mail_result):
|
||||||
|
# Update DNS and nginx in case any domains are added/removed.
|
||||||
from dns_update import do_dns_update
|
from dns_update import do_dns_update
|
||||||
return do_dns_update(env)
|
from web_update import do_web_update
|
||||||
|
results = [
|
||||||
|
do_dns_update(env),
|
||||||
|
mail_result + "\n",
|
||||||
|
do_web_update(env),
|
||||||
|
]
|
||||||
|
return "".join(s for s in results if s != "")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import sys
|
import sys
|
||||||
|
@ -31,14 +31,21 @@ def do_web_update(env):
|
|||||||
for domain in get_web_domains(env):
|
for domain in get_web_domains(env):
|
||||||
nginx_conf += make_domain_config(domain, template, env)
|
nginx_conf += make_domain_config(domain, template, env)
|
||||||
|
|
||||||
|
# Did the file change? If not, don't bother writing & restarting nginx.
|
||||||
|
nginx_conf_fn = "/etc/nginx/conf.d/local.conf"
|
||||||
|
if os.path.exists(nginx_conf_fn):
|
||||||
|
with open(nginx_conf_fn) as f:
|
||||||
|
if f.read() == nginx_conf:
|
||||||
|
return ""
|
||||||
|
|
||||||
# Save the file.
|
# Save the file.
|
||||||
with open("/etc/nginx/conf.d/local.conf", "w") as f:
|
with open(nginx_conf_fn, "w") as f:
|
||||||
f.write(nginx_conf)
|
f.write(nginx_conf)
|
||||||
|
|
||||||
# Nick nginx.
|
# Kick nginx.
|
||||||
shell('check_call', ["/usr/sbin/service", "nginx", "restart"])
|
shell('check_call', ["/usr/sbin/service", "nginx", "restart"])
|
||||||
|
|
||||||
return "OK"
|
return "web updated\n"
|
||||||
|
|
||||||
def make_domain_config(domain, template, env):
|
def make_domain_config(domain, template, env):
|
||||||
# How will we configure this domain.
|
# How will we configure this domain.
|
||||||
|
Loading…
Reference in New Issue
Block a user