89 lines
3.5 KiB
Bash
Executable File
89 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
DATABASE_INITIALIZED=$(exec psql "postgres://$PGUSER:$PGPASSWORD@$PGHOST:$PGPORT/$ODOO_DATABASE" -tAc "SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 'ir_module_module'")
|
|
|
|
if [ "$DATABASE_INITIALIZED" = "1" ]; then
|
|
|
|
PYTHON_SCRIPT=$(cat <<EOF
|
|
|
|
# Set python vars from env vars
|
|
smtp_host = '$ODOO_MAIL_SMTP_HOST'
|
|
smtp_port = ${ODOO_MAIL_SMTP_PORT:="587"}
|
|
smtp_encryption = '${ODOO_MAIL_SMTP_ENCRYPTION:="starttls"}'
|
|
smtp_from_filter = '${ODOO_MAIL_SMTP_FROM_FILTER:=""}'
|
|
imap_host = '$ODOO_MAIL_IMAP_HOST'
|
|
imap_port = ${ODOO_MAIL_IMAP_PORT:="993"}
|
|
imap_ssl = ${ODOO_MAIL_IMAP_SSL:="True"}
|
|
mail_user = '$ODOO_MAIL_USER'
|
|
mail_password = '$ODOO_MAIL_PASSWORD'
|
|
mail_catchall_alias = '$ODOO_MAIL_CATCHALL_ALIAS'
|
|
mail_catchall_domain = '$ODOO_MAIL_CATCHALL_DOMAIN'
|
|
mail_default_from = '$ODOO_MAIL_DEFAULT_FROM'
|
|
|
|
# Setup outgoing mail server
|
|
if smtp_host:
|
|
ir_mail_server = {
|
|
'name': smtp_host,
|
|
'smtp_host': smtp_host,
|
|
'smtp_port': smtp_port,
|
|
'smtp_user': mail_user,
|
|
'smtp_pass': mail_password,
|
|
'smtp_encryption': smtp_encryption,
|
|
'from_filter': smtp_from_filter
|
|
}
|
|
ir_mail_server_id = env['ir.mail_server'].search([('name', '=', smtp_host)], limit=1)
|
|
if ir_mail_server_id:
|
|
ir_mail_server_id.write(ir_mail_server)
|
|
else:
|
|
env['ir.mail_server'].create(ir_mail_server)
|
|
env.cr.commit()
|
|
|
|
# Setup incoming mail server
|
|
if imap_host:
|
|
fetchmail_server = {
|
|
'name': imap_host,
|
|
'server': imap_host,
|
|
'port': imap_port,
|
|
'user': mail_user,
|
|
'password': mail_password,
|
|
'is_ssl': imap_ssl,
|
|
'state': 'done'
|
|
}
|
|
fetchmail_server_id = env['fetchmail.server'].search([('name', '=', imap_host)], limit=1)
|
|
if fetchmail_server_id:
|
|
fetchmail_server_id.write(fetchmail_server)
|
|
else:
|
|
env['fetchmail.server'].create(fetchmail_server)
|
|
env.cr.commit()
|
|
|
|
# Setup system parameters
|
|
|
|
if mail_catchall_alias:
|
|
mail_catchall_alias_id = env['ir.config_parameter'].search([('key', '=', 'mail.catchall.alias')], limit=1)
|
|
if not mail_catchall_alias_id:
|
|
env['ir.config_parameter'].create({'key': 'mail.catchall.alias', 'value': mail_catchall_alias})
|
|
if mail_catchall_alias_id.value != mail_catchall_alias:
|
|
env['ir.config_parameter'].search([('key', '=', 'mail.catchall.alias')], limit=1).write({'value': mail_catchall_alias})
|
|
env.cr.commit()
|
|
|
|
if mail_catchall_domain:
|
|
mail_catchall_domain_id = env['ir.config_parameter'].search([('key', '=', 'mail.catchall.domain')], limit=1)
|
|
if not mail_catchall_domain_id:
|
|
env['ir.config_parameter'].create({'key': 'mail.catchall.domain', 'value': mail_catchall_domain})
|
|
if mail_catchall_domain_id.value != mail_catchall_domain:
|
|
env['ir.config_parameter'].search([('key', '=', 'mail.catchall.domain')], limit=1).write({'value': mail_catchall_domain})
|
|
env.cr.commit()
|
|
|
|
if mail_default_from:
|
|
mail_default_from_id = env['ir.config_parameter'].search([('key', '=', 'mail.default.from')], limit=1)
|
|
if not mail_default_from_id:
|
|
env['ir.config_parameter'].create({'key': 'mail.default.from', 'value': mail_default_from})
|
|
if mail_default_from_id.value != mail_default_from:
|
|
env['ir.config_parameter'].search([('key', '=', 'mail.default.from')], limit=1).write({'value': mail_default_from})
|
|
env.cr.commit()
|
|
EOF
|
|
)
|
|
|
|
entrypoint-log "Setup mail server configuation for database $DATABASE."
|
|
(echo "$PYTHON_SCRIPT" | odoo shell "${DB_ARGS[@]}" --database "$ODOO_DATABASE" --config "$ODOO_RC" --stop-after-init --no-http) || true
|
|
fi |