mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-19 05:58:34 +02:00
A new admin parameter is available to specify the default application that will be launched when no one is present in the url. (ie. when the top level "/" is called). fixed #165
102 lines
3.2 KiB
Python
102 lines
3.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Postfix auto-replies plugin.
|
|
|
|
This module provides a way to integrate Modoboa auto-reply
|
|
functionality into Postfix.
|
|
|
|
"""
|
|
from django.conf.urls.defaults import include
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.translation import ugettext_noop as _, ugettext
|
|
from modoboa.lib import events, parameters
|
|
from modoboa.lib.webutils import static_url
|
|
from models import *
|
|
|
|
def infos():
|
|
return {
|
|
"name" : "Postfix autoreply",
|
|
"version" : "1.0",
|
|
"description" : ugettext("Auto-reply (vacation) functionality using Postfix"),
|
|
"url" : "postfix_autoreply"
|
|
}
|
|
|
|
def init():
|
|
events.register("CreateDomain", onCreateDomain)
|
|
events.register("DeleteDomain", onDeleteDomain)
|
|
events.register("CreateMailbox", onCreateMailbox)
|
|
events.register("DeleteMailbox", onDeleteMailbox)
|
|
events.register("ModifyMailbox", onModifyMailbox)
|
|
events.register("UserMenuDisplay", menu)
|
|
|
|
parameters.register_admin("AUTOREPLIES_TIMEOUT",
|
|
type="int", deflt=86400,
|
|
help=_("Timeout in seconds between two auto-replies to the same recipient"))
|
|
|
|
def destroy():
|
|
events.unregister("CreateDomain", onCreateDomain)
|
|
events.unregister("DeleteDomain", onDeleteDomain)
|
|
events.unregister("CreateMailbox", onCreateMailbox)
|
|
events.unregister("DeleteMailbox", onDeleteMailbox)
|
|
events.unregister("ModifyMailbox", onModifyMailbox)
|
|
events.unregister("UserMenuDisplay", menu)
|
|
parameters.unregister_app("postfix_autoreply")
|
|
|
|
def urls(prefix):
|
|
return (r'^%spostfix_autoreply/' % prefix,
|
|
include('modoboa.extensions.postfix_autoreply.urls'))
|
|
|
|
def menu(**kwargs):
|
|
import views
|
|
|
|
if kwargs["target"] != "uprefs_menu":
|
|
return []
|
|
return [
|
|
{"name" : "autoreply",
|
|
"url" : reverse(views.autoreply),
|
|
"img" : static_url("pics/auto-reply.png"),
|
|
"class" : "boxed",
|
|
"rel" : "{handler:'iframe',size:{x:440,y:400}}",
|
|
"label" : ugettext("Auto-reply message")}
|
|
]
|
|
|
|
def onCreateDomain(**kwargs):
|
|
dom = kwargs["dom"]
|
|
transport = Transport()
|
|
transport.domain = "autoreply.%s" % dom.name
|
|
transport.method = "autoreply:"
|
|
transport.save()
|
|
|
|
def onDeleteDomain(**kwargs):
|
|
dom = kwargs["dom"]
|
|
trans = Transport.objects.get(domain="autoreply.%s" % dom.name)
|
|
trans.delete()
|
|
|
|
def onCreateMailbox(**kwargs):
|
|
mbox = kwargs["mbox"]
|
|
alias = Alias()
|
|
alias.full_address = mbox.full_address
|
|
alias.autoreply_address = \
|
|
"%s@autoreply.%s" % (mbox.full_address, mbox.domain.name)
|
|
alias.save()
|
|
|
|
def onDeleteMailbox(**kwargs):
|
|
mbox = kwargs["mbox"]
|
|
try:
|
|
alias = Alias.objects.get(full_address=mbox.full_address)
|
|
alias.delete()
|
|
except Alias.DoesNotExist:
|
|
pass
|
|
|
|
def onModifyMailbox(**kwargs):
|
|
mbox = kwargs["mbox"]
|
|
oldmbox = kwargs["oldmbox"]
|
|
if oldmbox.full_address == mbox.full_address:
|
|
return
|
|
alias = Alias.objects.get(full_address=oldmbox.full_address)
|
|
alias.full_address = mbox.full_address
|
|
alias.autoreply_address = \
|
|
"%s@autoreply.%s" % (mbox.full_address, mbox.domain.name)
|
|
alias.save()
|