No web interface on the mail host: first boot installs and downloads none (SPEC §5.3)
This commit is contained in:
@@ -54,28 +54,10 @@ async fn insert_safe_defaults(bp: &mut Bootstrap) -> trc::Result<()> {
|
|||||||
let is_recovery_mode = bp.registry.is_recovery_mode();
|
let is_recovery_mode = bp.registry.is_recovery_mode();
|
||||||
let is_bootstrap_mode = bp.registry.is_bootstrap_mode();
|
let is_bootstrap_mode = bp.registry.is_bootstrap_mode();
|
||||||
|
|
||||||
#[cfg(not(feature = "test_mode"))]
|
// inbuxa: no web interface is installed on the mail host, and nothing is
|
||||||
if bp.registry.count_object(ObjectType::Application).await? == 0 {
|
// downloaded for one (docs/spec/SPEC.md §5.3). Administration is INBUXA
|
||||||
bp.registry
|
// Admin and webmail is ihasmail, both deployed separately. An install
|
||||||
.write(RegistryWrite::insert(
|
// upgraded from Stalwart keeps any web application it already has.
|
||||||
&Application {
|
|
||||||
auto_update_frequency: Duration::from_millis(30 * 24 * 60 * 60 * 1000),
|
|
||||||
description: "Stalwart Web Interface".to_string(),
|
|
||||||
enabled: true,
|
|
||||||
#[cfg(not(feature = "dev_mode"))]
|
|
||||||
resource_url:
|
|
||||||
"https://github.com/stalwartlabs/webui/releases/latest/download/webui.zip"
|
|
||||||
.into(),
|
|
||||||
#[cfg(feature = "dev_mode")]
|
|
||||||
resource_url: "file:///Users/me/code/webui/.ignore/webui.zip".into(),
|
|
||||||
unpack_directory: None,
|
|
||||||
oauth_client_id: None,
|
|
||||||
url_prefix: Map::new(vec!["/admin".into(), "/account".into()]),
|
|
||||||
}
|
|
||||||
.into(),
|
|
||||||
))
|
|
||||||
.await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
if is_bootstrap_mode {
|
if is_bootstrap_mode {
|
||||||
#[cfg(not(any(feature = "dev_mode", feature = "test_mode")))]
|
#[cfg(not(any(feature = "dev_mode", feature = "test_mode")))]
|
||||||
|
|||||||
+9
-2
@@ -380,10 +380,16 @@ Upstream installs its web interface at first boot, serving `/admin` and
|
|||||||
`/account` from the mail server itself, by inserting a default web application
|
`/account` from the mail server itself, by inserting a default web application
|
||||||
that downloads a release of `stalwartlabs/webui` from GitHub. The fork:
|
that downloads a release of `stalwartlabs/webui` from GitHub. The fork:
|
||||||
|
|
||||||
- inserts no default web application, and never fetches anything at boot;
|
- inserts no default web application, and downloads no web interface;
|
||||||
- keeps the generic web-application mechanism for operators who want it,
|
- keeps the generic web-application mechanism for operators who want it,
|
||||||
documented as unsupported.
|
documented as unsupported.
|
||||||
|
|
||||||
|
Done 2026-09-18. A first boot of the debug build answered 404 on `/admin` and
|
||||||
|
`/account` in bootstrap mode and after setup, held no web application and no
|
||||||
|
OAuth client, and logged no download. Setup worked over JMAP. An install
|
||||||
|
upgraded from Stalwart keeps any web application it has, and contract C-6
|
||||||
|
still registers its OAuth client.
|
||||||
|
|
||||||
Where each of the web interface's jobs goes:
|
Where each of the web interface's jobs goes:
|
||||||
|
|
||||||
| Was | Becomes |
|
| Was | Becomes |
|
||||||
@@ -455,7 +461,8 @@ Oneshot's sequence, all over JMAP, with no web interface involved:
|
|||||||
Found at the fork's first boot, and to fix:
|
Found at the fork's first boot, and to fix:
|
||||||
|
|
||||||
- On first boot the server downloads Stalwart's web interface
|
- On first boot the server downloads Stalwart's web interface
|
||||||
(`webui.zip` from GitHub) before anything is configured. §5.3 removes this.
|
(`webui.zip` from GitHub) before anything is configured. Removed
|
||||||
|
2026-09-18 (§5.3).
|
||||||
- Whenever `STALWART_RECOVERY_ADMIN` is set, its password is a full admin
|
- Whenever `STALWART_RECOVERY_ADMIN` is set, its password is a full admin
|
||||||
login, outside bootstrap and recovery mode too. oneshot is safe, because
|
login, outside bootstrap and recovery mode too. oneshot is safe, because
|
||||||
it recreates the container without the variable once setup is done, but a
|
it recreates the container without the variable once setup is done, but a
|
||||||
|
|||||||
@@ -104,9 +104,9 @@ Each has an ID, and tests name the IDs they check.
|
|||||||
start. Until `x:FrontEnds` exists, three environment variables stand in for
|
start. Until `x:FrontEnds` exists, three environment variables stand in for
|
||||||
it: `INBUXA_ADMIN_URL`, `INBUXA_WEBMAIL_URL` and
|
it: `INBUXA_ADMIN_URL`, `INBUXA_WEBMAIL_URL` and
|
||||||
`INBUXA_WEBMAIL_CLIENT_SECRET` (the webmail client is registered only when
|
`INBUXA_WEBMAIL_CLIENT_SECRET` (the webmail client is registered only when
|
||||||
both of its variables are set). The web interface the server still serves
|
both of its variables are set). A web interface the server serves itself
|
||||||
itself (`/admin`, `/account`, until SPEC.md §5.3 removes it) is registered
|
(none on a new install since SPEC.md §5.3; possible on one upgraded from
|
||||||
too, as its application's OAuth client id or `stalwart-webui`, at the
|
Stalwart) is registered too, as its application's OAuth client id or `stalwart-webui`, at the
|
||||||
server's public URL. A missing client is created. An existing one gains any
|
server's public URL. A missing client is created. An existing one gains any
|
||||||
redirect URI it lacks, and the webmail client gets the configured secret.
|
redirect URI it lacks, and the webmail client gets the configured secret.
|
||||||
Nothing an operator added is removed. Bootstrap and recovery mode skip this:
|
Nothing an operator added is removed. Bootstrap and recovery mode skip this:
|
||||||
|
|||||||
Reference in New Issue
Block a user