Enabled post-login tracking.
This commit is contained in:
@@ -25,7 +25,7 @@ class Dovecot(base.Installer):
|
|||||||
}
|
}
|
||||||
config_files = [
|
config_files = [
|
||||||
"dovecot.conf", "dovecot-dict-sql.conf.ext", "conf.d/10-ssl.conf",
|
"dovecot.conf", "dovecot-dict-sql.conf.ext", "conf.d/10-ssl.conf",
|
||||||
"conf.d/20-lmtp.conf"]
|
"conf.d/10-master.conf", "conf.d/20-lmtp.conf"]
|
||||||
with_user = True
|
with_user = True
|
||||||
|
|
||||||
def get_config_files(self):
|
def get_config_files(self):
|
||||||
@@ -35,6 +35,8 @@ class Dovecot(base.Installer):
|
|||||||
.format(self.dbengine),
|
.format(self.dbengine),
|
||||||
"dovecot-sql-master-{}.conf.ext=dovecot-sql-master.conf.ext"
|
"dovecot-sql-master-{}.conf.ext=dovecot-sql-master.conf.ext"
|
||||||
.format(self.dbengine),
|
.format(self.dbengine),
|
||||||
|
"postlogin-{}.sh=/usr/local/bin/postlogin.sh"
|
||||||
|
.format(self.dbengine),
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_packages(self):
|
def get_packages(self):
|
||||||
@@ -70,6 +72,7 @@ class Dovecot(base.Installer):
|
|||||||
"db_driver": self.db_driver,
|
"db_driver": self.db_driver,
|
||||||
"mailboxes_owner_uid": pw[2],
|
"mailboxes_owner_uid": pw[2],
|
||||||
"mailboxes_owner_gid": pw[3],
|
"mailboxes_owner_gid": pw[3],
|
||||||
|
"modoboa_user": self.config.get("modoboa", "user"),
|
||||||
"modoboa_dbname": self.config.get("modoboa", "dbname"),
|
"modoboa_dbname": self.config.get("modoboa", "dbname"),
|
||||||
"modoboa_dbuser": self.config.get("modoboa", "dbuser"),
|
"modoboa_dbuser": self.config.get("modoboa", "dbuser"),
|
||||||
"modoboa_dbpassword": self.config.get("modoboa", "dbpassword"),
|
"modoboa_dbpassword": self.config.get("modoboa", "dbpassword"),
|
||||||
@@ -95,6 +98,8 @@ class Dovecot(base.Installer):
|
|||||||
)
|
)
|
||||||
for f in glob.glob("{}/*".format(self.get_file_path("conf.d"))):
|
for f in glob.glob("{}/*".format(self.get_file_path("conf.d"))):
|
||||||
utils.copy_file(f, "{}/conf.d".format(self.config_dir))
|
utils.copy_file(f, "{}/conf.d".format(self.config_dir))
|
||||||
|
# Make postlogin script executable
|
||||||
|
utils.exec_cmd("chmod +x /usr/local/bin/postlogin.sh")
|
||||||
|
|
||||||
def restart_daemon(self):
|
def restart_daemon(self):
|
||||||
"""Restart daemon process.
|
"""Restart daemon process.
|
||||||
|
|||||||
@@ -71,11 +71,22 @@ service imap {
|
|||||||
|
|
||||||
# Max. number of IMAP processes (connections)
|
# Max. number of IMAP processes (connections)
|
||||||
#process_limit = 1024
|
#process_limit = 1024
|
||||||
|
|
||||||
|
executable = imap postlogin
|
||||||
}
|
}
|
||||||
|
|
||||||
service pop3 {
|
service pop3 {
|
||||||
# Max. number of POP3 processes (connections)
|
# Max. number of POP3 processes (connections)
|
||||||
#process_limit = 1024
|
#process_limit = 1024
|
||||||
|
|
||||||
|
executable = pop3 postlogin
|
||||||
|
}
|
||||||
|
|
||||||
|
service postlogin {
|
||||||
|
executable = script-login /usr/local/bin/postlogin.sh
|
||||||
|
user = %modoboa_user
|
||||||
|
unix_listener postlogin {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
service auth {
|
service auth {
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
DBNAME=%modoboa_dbname DBUSER=%modoboa_dbuser DBPASSWORD=%modoboa_dbpassword
|
||||||
|
|
||||||
|
echo "UPDATE core_user SET last_login=now() WHERE username='$USER'" | mysql -u $DBUSER -p$DBPASSWORD $DBNAME
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
psql -c "UPDATE core_user SET last_login=now() WHERE username='$USER'" > /dev/null
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
Reference in New Issue
Block a user