Complete custom database port support
This commit is contained in:
@@ -30,7 +30,10 @@ class Installer(object):
|
|||||||
# Used to install system packages
|
# Used to install system packages
|
||||||
self.db_driver = (
|
self.db_driver = (
|
||||||
"pgsql" if self.dbengine == "postgres" else self.dbengine)
|
"pgsql" if self.dbengine == "postgres" else self.dbengine)
|
||||||
|
self.backend = database.get_backend(self.config)
|
||||||
self.dbhost = self.config.get("database", "host")
|
self.dbhost = self.config.get("database", "host")
|
||||||
|
self.dbport = self.config.get(
|
||||||
|
"database", "port", fallback=self.backend.default_port)
|
||||||
self._config_dir = None
|
self._config_dir = None
|
||||||
if not self.with_db:
|
if not self.with_db:
|
||||||
return
|
return
|
||||||
@@ -61,7 +64,6 @@ class Installer(object):
|
|||||||
"""Setup a database."""
|
"""Setup a database."""
|
||||||
if not self.with_db:
|
if not self.with_db:
|
||||||
return
|
return
|
||||||
self.backend = database.get_backend(self.config)
|
|
||||||
self.backend.create_user(self.dbuser, self.dbpasswd)
|
self.backend.create_user(self.dbuser, self.dbpasswd)
|
||||||
self.backend.create_database(self.dbname, self.dbuser)
|
self.backend.create_database(self.dbname, self.dbuser)
|
||||||
schema = self.get_sql_schema_path()
|
schema = self.get_sql_schema_path()
|
||||||
@@ -86,6 +88,7 @@ class Installer(object):
|
|||||||
"dbengine": (
|
"dbengine": (
|
||||||
"Pg" if self.dbengine == "postgres" else self.dbengine),
|
"Pg" if self.dbengine == "postgres" else self.dbengine),
|
||||||
"dbhost": self.dbhost,
|
"dbhost": self.dbhost,
|
||||||
|
"dbport", self.dbport,
|
||||||
}
|
}
|
||||||
for option, value in self.config.items("general"):
|
for option, value in self.config.items("general"):
|
||||||
context[option] = value
|
context[option] = value
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ $sa_local_tests_only = 0; # only tests which do not require internet access?
|
|||||||
# @storage_redis_dsn = ( {server=>'127.0.0.1:6379', db_id=>1} );
|
# @storage_redis_dsn = ( {server=>'127.0.0.1:6379', db_id=>1} );
|
||||||
# $redis_logging_key = 'amavis-log';
|
# $redis_logging_key = 'amavis-log';
|
||||||
# $redis_logging_queue_size_limit = 300000; # about 250 MB / 100000
|
# $redis_logging_queue_size_limit = 300000; # about 250 MB / 100000
|
||||||
@lookup_sql_dsn = ( [ 'DBI:%dbengine:database=%dbname;host=%dbhost', '%dbuser', '%dbpassword' ]);
|
@lookup_sql_dsn = ( [ 'DBI:%dbengine:database=%dbname;host=%dbhost;port=%dbport', '%dbuser', '%dbpassword' ]);
|
||||||
@storage_sql_dsn = @lookup_sql_dsn;
|
@storage_sql_dsn = @lookup_sql_dsn;
|
||||||
$sql_allow_8bit_address = 1;
|
$sql_allow_8bit_address = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ $max_servers = %max_servers;
|
|||||||
|
|
||||||
# SQL configuration
|
# SQL configuration
|
||||||
#
|
#
|
||||||
@lookup_sql_dsn = ( [ 'DBI:%dbengine:database=%dbname;host=%dbhost', '%dbuser', '%dbpassword' ]);
|
@lookup_sql_dsn = ( [ 'DBI:%dbengine:database=%dbname;host=%dbhost;port=%dbport', '%dbuser', '%dbpassword' ]);
|
||||||
@storage_sql_dsn = @lookup_sql_dsn;
|
@storage_sql_dsn = @lookup_sql_dsn;
|
||||||
$sql_allow_8bit_address = 1;
|
$sql_allow_8bit_address = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
connect = host=%dbhost dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
connect = host=%dbhost port=%dbport dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
||||||
|
|
||||||
# CREATE TABLE quota (
|
# CREATE TABLE quota (
|
||||||
# username varchar(100) not null,
|
# username varchar(100) not null,
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ driver = %db_driver
|
|||||||
# connect = /etc/dovecot/authdb.sqlite
|
# connect = /etc/dovecot/authdb.sqlite
|
||||||
#
|
#
|
||||||
#connect =
|
#connect =
|
||||||
connect = host=%dbhost dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
connect = host=%dbhost port=%dbport dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
||||||
|
|
||||||
# Default password scheme.
|
# Default password scheme.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ driver = %db_driver
|
|||||||
# connect = /etc/dovecot/authdb.sqlite
|
# connect = /etc/dovecot/authdb.sqlite
|
||||||
#
|
#
|
||||||
#connect =
|
#connect =
|
||||||
connect = host=%dbhost dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
connect = host=%dbhost port=%dbport dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
||||||
|
|
||||||
# Default password scheme.
|
# Default password scheme.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ driver = %db_driver
|
|||||||
# connect = /etc/dovecot/authdb.sqlite
|
# connect = /etc/dovecot/authdb.sqlite
|
||||||
#
|
#
|
||||||
#connect =
|
#connect =
|
||||||
connect = host=%dbhost dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
connect = host=%dbhost port=%dbport dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
||||||
|
|
||||||
# Default password scheme.
|
# Default password scheme.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ driver = %db_driver
|
|||||||
# connect = /etc/dovecot/authdb.sqlite
|
# connect = /etc/dovecot/authdb.sqlite
|
||||||
#
|
#
|
||||||
#connect =
|
#connect =
|
||||||
connect = host=%dbhost dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
connect = host=%dbhost port=%dbport dbname=%modoboa_dbname user=%modoboa_dbuser password=%modoboa_dbpassword
|
||||||
|
|
||||||
# Default password scheme.
|
# Default password scheme.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ UMask 007
|
|||||||
#KeyFile /etc/dkimkeys/dkim.key
|
#KeyFile /etc/dkimkeys/dkim.key
|
||||||
#Selector 2007
|
#Selector 2007
|
||||||
|
|
||||||
KeyTable dsn:%{db_driver}://%{db_user}:%{db_password}@%{dbhost}/%{db_name}/table=dkim?keycol=id?datacol=domain_name,selector,private_key_path
|
KeyTable dsn:%{db_driver}://%{db_user}:%{db_password}@%{dbhost}:%{dbport}/%{db_name}/table=dkim?keycol=id?datacol=domain_name,selector,private_key_path
|
||||||
SigningTable dsn:%db_driver://%{db_user}:%{db_password}@%{dbhost}/%{db_name}/table=dkim?keycol=domain_name?datacol=id
|
SigningTable dsn:%db_driver://%{db_user}:%{db_password}@%{dbhost}:%{dbport}/%{db_name}/table=dkim?keycol=domain_name?datacol=id
|
||||||
|
|
||||||
# Commonly-used options; the commented-out versions show the defaults.
|
# Commonly-used options; the commented-out versions show the defaults.
|
||||||
#Canonicalization simple
|
#Canonicalization simple
|
||||||
|
|||||||
@@ -144,20 +144,22 @@ class Modoboa(base.Installer):
|
|||||||
"--domain", self.config.get("general", "hostname"),
|
"--domain", self.config.get("general", "hostname"),
|
||||||
"--extensions", " ".join(self.extensions),
|
"--extensions", " ".join(self.extensions),
|
||||||
"--dont-install-extensions",
|
"--dont-install-extensions",
|
||||||
"--dburl", "'default:{}://{}:{}@{}/{}'".format(
|
"--dburl", "'default:{}://{}:{}@{}:{}/{}'".format(
|
||||||
self.config.get("database", "engine"),
|
self.config.get("database", "engine"),
|
||||||
self.dbuser, self.dbpasswd, self.dbhost, self.dbname
|
self.dbuser, self.dbpasswd, self.dbhost, self.dbport,
|
||||||
|
self.dbname
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
if self.devmode:
|
if self.devmode:
|
||||||
args = ["--devel"] + args
|
args = ["--devel"] + args
|
||||||
if self.amavis_enabled:
|
if self.amavis_enabled:
|
||||||
args += [
|
args += [
|
||||||
"'amavis:{}://{}:{}@{}/{}'".format(
|
"'amavis:{}://{}:{}@{}:{}/{}'".format(
|
||||||
self.config.get("database", "engine"),
|
self.config.get("database", "engine"),
|
||||||
self.config.get("amavis", "dbuser"),
|
self.config.get("amavis", "dbuser"),
|
||||||
self.config.get("amavis", "dbpassword"),
|
self.config.get("amavis", "dbpassword"),
|
||||||
self.dbhost,
|
self.dbhost,
|
||||||
|
self.dbport,
|
||||||
self.config.get("amavis", "dbname")
|
self.config.get("amavis", "dbname")
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -45,10 +45,12 @@ class Spamassassin(base.Installer):
|
|||||||
context = super(Spamassassin, self).get_template_context()
|
context = super(Spamassassin, self).get_template_context()
|
||||||
if self.dbengine == "postgres":
|
if self.dbengine == "postgres":
|
||||||
store_module = "Mail::SpamAssassin::BayesStore::PgSQL"
|
store_module = "Mail::SpamAssassin::BayesStore::PgSQL"
|
||||||
dsn = "DBI:Pg:dbname={};host={}".format(self.dbname, self.dbhost)
|
dsn = "DBI:Pg:dbname={};host={};port={}".format(
|
||||||
|
self.dbname, self.dbhost, self.dbport)
|
||||||
else:
|
else:
|
||||||
store_module = "Mail::SpamAssassin::BayesStore::MySQL"
|
store_module = "Mail::SpamAssassin::BayesStore::MySQL"
|
||||||
dsn = "DBI:mysql:{}:{}".format(self.dbname, self.dbhost)
|
dsn = "DBI:mysql:{}:{}:{}".format(
|
||||||
|
self.dbname, self.dbhost, self.dbport)
|
||||||
context.update({
|
context.update({
|
||||||
"store_module": store_module, "dsn": dsn, "dcc_enabled": "#"})
|
"store_module": store_module, "dsn": dsn, "dcc_enabled": "#"})
|
||||||
return context
|
return context
|
||||||
|
|||||||
Reference in New Issue
Block a user