- Add luci-app-lyrion: Music server dashboard - Add luci-app-mailinabox: Email server management - Add luci-app-nextcloud: Cloud storage dashboard - Add luci-app-mitmproxy: Security proxy in security section - Add luci-app-magicmirror2: Smart display dashboard - Add secubox-app-metablogizer: CLI tool with uhttpd/nginx support - Update luci-app-metablogizer: Runtime selection, QR codes, social share - Update secubox-core v0.8.1: Service watchdog (auto-restart crashed services) - Update haproxyctl: Hostname validation to prevent config errors - Fix portal.js app discovery Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
76 lines
2.0 KiB
JavaScript
76 lines
2.0 KiB
JavaScript
'use strict';
|
|
'require view';
|
|
'require form';
|
|
'require uci';
|
|
|
|
return view.extend({
|
|
load: function() { return uci.load('mailinabox'); },
|
|
|
|
render: function() {
|
|
var m, s, o;
|
|
|
|
m = new form.Map('mailinabox', _('Mail Server Settings'),
|
|
_('Configure your mail server. IMPORTANT: Set hostname and domain before installing.'));
|
|
|
|
s = m.section(form.TypedSection, 'mailinabox', _('General Settings'));
|
|
s.anonymous = true;
|
|
s.addremove = false;
|
|
|
|
o = s.option(form.Flag, 'enabled', _('Enabled'));
|
|
o.default = '0';
|
|
|
|
o = s.option(form.Value, 'hostname', _('Mail Hostname'),
|
|
_('Full hostname for mail server (e.g., mail.example.com)'));
|
|
o.default = 'mail.example.com';
|
|
|
|
o = s.option(form.Value, 'domain', _('Domain'),
|
|
_('Primary email domain (e.g., example.com)'));
|
|
o.default = 'example.com';
|
|
|
|
o = s.option(form.Value, 'data_path', _('Data Path'));
|
|
o.default = '/srv/mailserver';
|
|
|
|
o = s.option(form.Value, 'timezone', _('Timezone'));
|
|
o.default = 'UTC';
|
|
|
|
s = m.section(form.TypedSection, 'mailinabox', _('Ports'));
|
|
s.anonymous = true;
|
|
|
|
o = s.option(form.Value, 'smtp_port', _('SMTP Port'));
|
|
o.datatype = 'port';
|
|
o.default = '25';
|
|
|
|
o = s.option(form.Value, 'submission_port', _('Submission Port'));
|
|
o.datatype = 'port';
|
|
o.default = '587';
|
|
|
|
o = s.option(form.Value, 'imap_port', _('IMAP Port'));
|
|
o.datatype = 'port';
|
|
o.default = '143';
|
|
|
|
o = s.option(form.Value, 'imaps_port', _('IMAPS Port'));
|
|
o.datatype = 'port';
|
|
o.default = '993';
|
|
|
|
s = m.section(form.TypedSection, 'mailinabox', _('Features'));
|
|
s.anonymous = true;
|
|
|
|
o = s.option(form.Flag, 'enable_spamassassin', _('SpamAssassin'));
|
|
o.default = '1';
|
|
|
|
o = s.option(form.Flag, 'enable_clamav', _('ClamAV Antivirus'));
|
|
o.default = '0';
|
|
|
|
o = s.option(form.Flag, 'enable_fail2ban', _('Fail2ban'));
|
|
o.default = '1';
|
|
|
|
o = s.option(form.ListValue, 'ssl_type', _('SSL Type'));
|
|
o.value('letsencrypt', _("Let's Encrypt"));
|
|
o.value('manual', _('Manual'));
|
|
o.value('self-signed', _('Self-signed'));
|
|
o.default = 'letsencrypt';
|
|
|
|
return m.render();
|
|
}
|
|
});
|