Logos resolve domain, then tenant, then server-wide, then the built-in, with subdomains finding their domain. GET /logo serves a data-URL image, redirects to a URL logo without fetching it, sandboxes SVG, and answers 404 when no custom logo applies. Emails embed the first PNG, JPEG or GIF logo. Logo and template writes are checked; stored templates are read at send time, always escaped, and fall back to the built-in with a build warning when they don't parse. The RSVP page is served byte for byte with a CSP and no-referrer. The sign-in and RSVP pages load the logo through an image element. MT-22's session logo follows the chain to the server-wide logo. Acceptance tests 1 to 17; test 18 written as the ignored branding_compat.
28 lines
489 B
Rust
28 lines
489 B
Rust
/*
|
|
* SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
|
|
*/
|
|
|
|
#![warn(clippy::large_futures)]
|
|
|
|
pub mod api;
|
|
pub mod auth;
|
|
pub mod branding; // inbuxa: branding
|
|
pub mod form;
|
|
pub mod request;
|
|
|
|
use common::Inner;
|
|
use std::sync::Arc;
|
|
|
|
#[derive(Clone)]
|
|
pub struct HttpSessionManager {
|
|
pub inner: Arc<Inner>,
|
|
}
|
|
|
|
impl HttpSessionManager {
|
|
pub fn new(inner: Arc<Inner>) -> Self {
|
|
Self { inner }
|
|
}
|
|
}
|