![JAR search and dependency download from the Maven repository](/logo.png)
com.anrisoftware.sscontrol.mail.postfix.courierdelivery.linux.CourierMysqlDeliveryConfig.groovy Maven / Gradle / Ivy
/*
* Copyright 2013-2014 Erwin Müller
*
* This file is part of sscontrol-mail-postfix.
*
* sscontrol-mail-postfix is free software: you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* sscontrol-mail-postfix is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
* for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with sscontrol-mail-postfix. If not, see .
*/
package com.anrisoftware.sscontrol.mail.postfix.courierdelivery.linux
import static java.util.regex.Pattern.*
import static org.apache.commons.io.FileUtils.*
import groovy.util.logging.Slf4j
import javax.inject.Inject
import com.anrisoftware.globalpom.textmatch.tokentemplate.TokenTemplate
import com.anrisoftware.resources.templates.api.TemplateResource
import com.anrisoftware.resources.templates.api.Templates
import com.anrisoftware.resources.templates.api.TemplatesFactory
import com.anrisoftware.sscontrol.mail.api.MailService
import com.anrisoftware.sscontrol.mail.postfix.linux.DeliveryConfig
import com.anrisoftware.sscontrol.mail.postfix.script.linux.BaseDelivery
import com.anrisoftware.sscontrol.scripts.unix.InstallPackagesFactory
/**
* Courier/Mysql delivery.
*
* @author Erwin Mueller, [email protected]
* @since 1.0
*/
@Slf4j
abstract class CourierMysqlDeliveryConfig extends BaseDelivery implements DeliveryConfig {
public static final String NAME = "courier.mysql"
@Inject
private CourierMysqlDeliveryConfigLogger logg
@Inject
TemplatesFactory templatesFactory
@Inject
InstallPackagesFactory installPackagesFactory
/**
* The {@link Templates} for the script.
*/
Templates courierTemplates
TemplateResource authConfigTemplate
TemplateResource imapdConfigTemplate
TemplateResource imapdSslConfigTemplate
@Override
String getDeliveryName() {
NAME
}
@Override
void deployDelivery() {
courierTemplates = templatesFactory.create "CourierMysqlDeliveryConfig"
authConfigTemplate = courierTemplates.getResource "authconfig"
imapdConfigTemplate = courierTemplates.getResource "imapdconfig"
imapdSslConfigTemplate = courierTemplates.getResource "imapdsslconfig"
installPackages()
deployAuthdaemonConfig()
deployAuthmysqlConfig()
deployImapdConfig()
deployImapdSslConfig()
}
/**
* Installs the packages for Courier/Mysql delivery.
*/
void installPackages() {
installPackagesFactory.create(
log: log,
command: script.installCommand,
packages: courierPackages,
system: systemName,
this, threads)()
}
/**
* Deploys the Courier {@code "authdaemonrc"} configuration.
*/
void deployAuthdaemonConfig() {
def config = []
config << moduleListConfig()
config << debugLoggingConfig(service)
def current = currentConfiguration authdaemonFile
deployConfiguration configurationTokens(), current, config, authdaemonFile
logg.configurationDeployed this, authdaemonFile
}
def moduleListConfig() {
def search = authConfigTemplate.getText(true, "moduleListSearch")
def replace = authConfigTemplate.getText(true, "moduleList", "modules", authModules)
new TokenTemplate(search, replace, MULTILINE)
}
def debugLoggingConfig(MailService service) {
def search = authConfigTemplate.getText(true, "debugLoggingSearch")
def replace = authConfigTemplate.getText(true, "debugLogging", "level", service.debug.level)
new TokenTemplate(search, replace, MULTILINE)
}
/**
* Deploys the Courier {@code "authmysqlrc"} configuration.
*/
void deployAuthmysqlConfig() {
def conf = []
conf << mysqlServerConfig(service)
conf << mysqlPortConfig(service)
conf << mysqlDatabaseConfig(service)
conf << mysqlUsernameConfig(service)
conf << mysqlPasswordConfig(service)
conf << mysqlUserTableConfig(service)
conf << mysqlCryptPwfieldConfig(service)
conf << mysqlClearPwfieldConfig()
conf << mysqlUidFieldConfig()
conf << mysqlGidFieldConfig()
conf << mysqlLoginFieldConfig()
conf << mysqlHomeFieldConfig()
conf << mysqlNameFieldConfig()
conf << mysqlMaildirFieldConfig()
conf << mysqlWhereClauseConfig()
def current = currentConfiguration authmysqlFile
deployConfiguration configurationTokens(), current, conf, authmysqlFile
logg.configurationDeployed this, authmysqlFile
}
def mysqlServerConfig(MailService service) {
def search = authConfigTemplate.getText(true, "mysqlServerSearch")
def config = authConfigTemplate.getText(true, "mysqlServer", "service", service)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlPortConfig(MailService service) {
def search = authConfigTemplate.getText(true, "mysqlPortSearch")
def config = authConfigTemplate.getText(true, "mysqlPort", "service", service)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlDatabaseConfig(MailService service) {
def search = authConfigTemplate.getText(true, "mysqlDatabaseSearch")
def config = authConfigTemplate.getText(true, "mysqlDatabase", "service", service)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlUsernameConfig(MailService service) {
def search = authConfigTemplate.getText(true, "mysqlUsernameSearch")
def config = authConfigTemplate.getText(true, "mysqlUsername", "service", service)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlPasswordConfig(MailService service) {
def search = authConfigTemplate.getText(true, "mysqlPasswordSearch")
def config = authConfigTemplate.getText(true, "mysqlPassword", "service", service)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlUserTableConfig(MailService service) {
def search = authConfigTemplate.getText(true, "mysqlUserTableSearch")
def config = authConfigTemplate.getText(true, "mysqlUserTable", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlCryptPwfieldConfig(MailService service) {
def search = authConfigTemplate.getText(true, "mysqlCryptPwfieldSearch")
def config = authConfigTemplate.getText(true, "mysqlCryptPwfield", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlClearPwfieldConfig() {
def search = authConfigTemplate.getText(true, "mysqlClearPwfieldSearch")
def config = authConfigTemplate.getText(true, "mysqlClearPwfield", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlUidFieldConfig() {
def search = authConfigTemplate.getText(true, "mysqlUidFieldSearch")
def config = authConfigTemplate.getText(true, "mysqlUidField", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlGidFieldConfig() {
def search = authConfigTemplate.getText(true, "mysqlGidFieldSearch")
def config = authConfigTemplate.getText(true, "mysqlGidField", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlLoginFieldConfig() {
def search = authConfigTemplate.getText(true, "mysqlLoginFieldSearch")
def config = authConfigTemplate.getText(true, "mysqlLoginField", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlHomeFieldConfig() {
def search = authConfigTemplate.getText(true, "mysqlHomeFieldSearch")
def config = authConfigTemplate.getText(true, "mysqlHomeField", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlNameFieldConfig() {
def search = authConfigTemplate.getText(true, "mysqlNameFieldSearch")
def config = authConfigTemplate.getText(true, "mysqlNameField", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlMaildirFieldConfig() {
def search = authConfigTemplate.getText(true, "mysqlMaildirFieldSearch")
def config = authConfigTemplate.getText(true, "mysqlMaildirField", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
def mysqlWhereClauseConfig() {
def search = authConfigTemplate.getText(true, "mysqlWhereClauseSearch")
def config = authConfigTemplate.getText(true, "mysqlWhereClause", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
/**
* Deploys the Courier {@code "imapd"} configuration.
*/
void deployImapdConfig() {
def conf = []
conf << imapCapabilityConfig()
def current = currentConfiguration imapdFile
deployConfiguration configurationTokens(), current, conf, imapdFile
logg.configurationDeployed this, imapdFile
}
def imapCapabilityConfig() {
def search = imapdConfigTemplate.getText(true, "imapCapabilitySearch")
def config = imapdConfigTemplate.getText(true, "imapCapability", "properties", this)
new TokenTemplate(search, config, MULTILINE)
}
/**
* Returns the list of Courier IMAP capabilities.
*
*
* - property {@code "courier_imap_capabilities"}
*
*
* @see #getDeliveryProperties()
*/
List getImapCapabilities() {
profileListProperty "courier_imap_capabilities", deliveryProperties
}
/**
* Deploys the Courier {@code "imapd-ssl"} configuration.
*/
void deployImapdSslConfig() {
def conf = []
conf << certFileConfig()
conf << trustCertsConfig()
conf << tlsRequiredConfig()
def current = currentConfiguration imapdSslFile
deployConfiguration configurationTokens(), current, conf, imapdSslFile
logg.configurationDeployed this, imapdSslFile
}
def certFileConfig() {
def file = deployCertPemFile(service)
if (!file) {
return []
}
def search = imapdSslConfigTemplate.getText(true, "certFileSearch")
def config = imapdSslConfigTemplate.getText(true, "certFile", "file", file)
new TokenTemplate(search, config, MULTILINE)
}
def trustCertsConfig() {
def search = imapdSslConfigTemplate.getText(true, "trustCertsSearch")
def config = imapdSslConfigTemplate.getText(true, "trustCerts", "dir", certsDir)
new TokenTemplate(search, config, MULTILINE)
}
def tlsRequiredConfig() {
def search = imapdSslConfigTemplate.getText(true, "tlsRequiredSearch")
def config = imapdSslConfigTemplate.getText(true, "tlsRequired", "enabled", tlsRequiredEnabled)
new TokenTemplate(search, config, MULTILINE)
}
/**
* Returns to require TLS.
*
*
* - property {@code "courier_tls_required_enabled"}
*
*
* @see #getDeliveryProperties()
*/
boolean getTlsRequiredEnabled() {
profileBooleanProperty "courier_tls_required_enabled", deliveryProperties
}
String getUsersTable() {
script.profileProperty "users_table", deliveryProperties
}
String getEnabledField() {
script.profileProperty "enabled_field", deliveryProperties
}
String getLoginField() {
script.profileProperty "login_field", deliveryProperties
}
String getNameField() {
script.profileProperty "name_field", deliveryProperties
}
String getUidField() {
script.profileProperty "uid_field", deliveryProperties
}
String getGidField() {
script.profileProperty "gid_field", deliveryProperties
}
String getHomeField() {
script.profileProperty "home_field", deliveryProperties
}
String getMaildirField() {
script.profileProperty "maildir_field", deliveryProperties
}
String getClearField() {
script.profileProperty "clear_field", deliveryProperties
}
String getCryptField() {
script.profileProperty "crypt_field", deliveryProperties
}
/**
* Returns the list of authentication modules.
*
*
* - property {@code "courier_auth_modules"}
*
*
* @see #getMainFile()
*/
List getAuthModules() {
profileListProperty "courier_auth_modules", deliveryProperties
}
/**
* Returns the list of Courier/packages.
*
*
* - property {@code "courier_packages"}
*
*
* @see #getDeliveryProperties()
*/
List getCourierPackages() {
profileListProperty "courier_packages", deliveryProperties
}
/**
* Returns the path of the configuration directory.
*
*
* - property {@code "courier_configuration_directory"}
*
*
* @see #getDeliveryProperties()
*/
File getCourierConfigurationDir() {
script.profileProperty("courier_configuration_directory", deliveryProperties) as File
}
/**
* Returns the {@code authdaemonrc} file. If the path is not absolute
* then it is assume to be under the configuration directory.
*
*
* - property {@code "courier_authdaemon_file"}
*
*
* @see #getCourierConfigurationDir()
* @see #getDeliveryProperties()
*/
File getAuthdaemonFile() {
script.profileFileProperty "courier_authdaemon_file", courierConfigurationDir, deliveryProperties
}
/**
* Returns the {@code authmysqlrc} file. If the path is not absolute
* then it is assume to be under the configuration directory.
*
*
* - property {@code "courier_authmysql_file"}
*
*
* @see #getCourierConfigurationDir()
* @see #getDeliveryProperties()
*/
File getAuthmysqlFile() {
profileFileProperty "courier_authmysql_file", courierConfigurationDir, deliveryProperties
}
/**
* Returns the {@code imapd} file. If the path is not absolute
* then it is assume to be under the configuration directory.
*
*
* - property {@code "courier_imapd_file"}
*
*
* @see #getCourierConfigurationDir()
* @see #getDeliveryProperties()
*/
File getImapdFile() {
profileFileProperty "courier_imapd_file", courierConfigurationDir, deliveryProperties
}
/**
* Returns the {@code imapd-ssl} file. If the path is not absolute
* then it is assume to be under the configuration directory.
*
*
* - property {@code "courier_imapd_ssl_file"}
*
*
* @see #getCourierConfigurationDir()
* @see #getDeliveryProperties()
*/
File getImapdSslFile() {
profileFileProperty "courier_imapd_ssl_file", courierConfigurationDir, deliveryProperties
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy