[MiG] port from 19
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# Copyright 2024 Open2Bizz <info@open2bizz.nl>
|
||||
# License LGPL-3
|
||||
|
||||
import logging
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def post_init_hook(cr, registry):
|
||||
"""Install MailHog as a systemd service when the module is installed."""
|
||||
script_path = os.path.join(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
'install_mailhog_as_service.sh',
|
||||
)
|
||||
|
||||
if not os.path.isfile(script_path):
|
||||
_logger.error("MailHog install script not found at %s", script_path)
|
||||
return
|
||||
|
||||
_logger.info("Running MailHog install script: %s", script_path)
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['bash', script_path],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=300,
|
||||
)
|
||||
if result.returncode == 0:
|
||||
_logger.info("MailHog installed successfully.\n%s", result.stdout)
|
||||
else:
|
||||
_logger.error(
|
||||
"MailHog install script failed (exit %s):\n%s\n%s",
|
||||
result.returncode, result.stdout, result.stderr,
|
||||
)
|
||||
except subprocess.TimeoutExpired:
|
||||
_logger.error("MailHog install script timed out after 300 seconds")
|
||||
except Exception as e:
|
||||
_logger.error("Failed to run MailHog install script: %s", e)
|
||||
@@ -0,0 +1,86 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e # stop bij fouten
|
||||
|
||||
echo ""
|
||||
echo "==================================="
|
||||
echo "Update apt..."
|
||||
echo "==================================="
|
||||
apt update
|
||||
|
||||
echo ""
|
||||
echo "==================================="
|
||||
echo "Install dependencies..."
|
||||
echo "==================================="
|
||||
apt-get -y install wget tar
|
||||
|
||||
echo ""
|
||||
echo "==================================="
|
||||
echo "Install Go 1.24.3..."
|
||||
echo "==================================="
|
||||
GO_VERSION=1.24.3
|
||||
wget https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz
|
||||
|
||||
sudo rm -rf /usr/local/go
|
||||
sudo tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz
|
||||
|
||||
# Go environment correct instellen
|
||||
export GOROOT=/usr/local/go
|
||||
export GOPATH=$HOME/go
|
||||
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
|
||||
|
||||
echo "Go version:"
|
||||
go version
|
||||
|
||||
echo ""
|
||||
echo "==================================="
|
||||
echo "Installing MailHog..."
|
||||
echo "==================================="
|
||||
/usr/local/go/bin/go install github.com/mailhog/MailHog@latest
|
||||
|
||||
if [ -f "$HOME/go/bin/MailHog" ]; then
|
||||
echo "MailHog installed successfully"
|
||||
else
|
||||
echo "ERROR: MailHog binary not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "==================================="
|
||||
echo "Copy MailHog to /usr/local/bin..."
|
||||
echo "==================================="
|
||||
sudo cp "$HOME/go/bin/MailHog" /usr/local/bin/MailHog
|
||||
|
||||
echo ""
|
||||
echo "==================================="
|
||||
echo "Create MailHog service..."
|
||||
echo "==================================="
|
||||
sudo tee /etc/systemd/system/mailhog.service > /dev/null <<EOL
|
||||
[Unit]
|
||||
Description=MailHog
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=root
|
||||
ExecStart=/usr/local/bin/MailHog
|
||||
Restart=always
|
||||
Environment="PATH=/usr/local/go/bin:/usr/bin:/bin"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOL
|
||||
|
||||
echo ""
|
||||
echo "==================================="
|
||||
echo "Enable + start MailHog service..."
|
||||
echo "==================================="
|
||||
systemctl daemon-reload
|
||||
systemctl enable mailhog
|
||||
systemctl start mailhog
|
||||
|
||||
echo ""
|
||||
echo "==================================="
|
||||
echo "MailHog is running!"
|
||||
echo "Web UI: http://localhost:8025"
|
||||
echo "SMTP: localhost:1025"
|
||||
echo "==================================="
|
||||
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import install_warning_wizard
|
||||
@@ -0,0 +1,43 @@
|
||||
# Copyright 2024 Open2Bizz <info@open2bizz.nl>
|
||||
# License LGPL-3
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
|
||||
|
||||
class MailcatcherInstallWarningWizard(models.TransientModel):
|
||||
_name = 'mailcatcher.install.warning.wizard'
|
||||
_description = 'MailCatcher Install Warning'
|
||||
|
||||
module_id = fields.Many2one('ir.module.module', string='Module', readonly=True)
|
||||
|
||||
def action_confirm_install(self):
|
||||
"""User confirmed — proceed with the actual module installation."""
|
||||
self.ensure_one()
|
||||
return self.module_id.with_context(
|
||||
skip_mailcatcher_warning=True
|
||||
).button_immediate_install()
|
||||
|
||||
|
||||
class IrModuleModule(models.Model):
|
||||
_inherit = 'ir.module.module'
|
||||
|
||||
def button_immediate_install(self):
|
||||
"""Override to show a warning before installing mailcatcher_menu."""
|
||||
if self.env.context.get('skip_mailcatcher_warning'):
|
||||
return super().button_immediate_install()
|
||||
|
||||
mailcatcher_modules = self.filtered(lambda m: m.name == 'mailcatcher_menu')
|
||||
if mailcatcher_modules:
|
||||
wizard = self.env['mailcatcher.install.warning.wizard'].create({
|
||||
'module_id': mailcatcher_modules[0].id,
|
||||
})
|
||||
return {
|
||||
'name': _('Install MailCatcher Module'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'mailcatcher.install.warning.wizard',
|
||||
'res_id': wizard.id,
|
||||
'view_mode': 'form',
|
||||
'target': 'new',
|
||||
}
|
||||
|
||||
return super().button_immediate_install()
|
||||
@@ -0,0 +1,28 @@
|
||||
<odoo>
|
||||
<record id="view_mailcatcher_install_warning_wizard" model="ir.ui.view">
|
||||
<field name="name">mailcatcher.install.warning.wizard.form</field>
|
||||
<field name="model">mailcatcher.install.warning.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Install MailCatcher">
|
||||
<div class="alert alert-warning" role="alert">
|
||||
<h4 class="alert-heading">Warning</h4>
|
||||
<p>
|
||||
You are about to install the <strong>MailCatcher</strong> module.
|
||||
</p>
|
||||
<p>
|
||||
This will also install <strong>MailHog</strong> as a systemd service on this server.
|
||||
MailHog will listen on port <strong>8025</strong> (Web UI) and port <strong>1025</strong> (SMTP).
|
||||
</p>
|
||||
<p>
|
||||
Do you want to proceed with the installation?
|
||||
</p>
|
||||
</div>
|
||||
<footer>
|
||||
<button name="action_confirm_install" type="object"
|
||||
string="Confirm Install" class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user