Write the brand in lowercase where people see it
The name is inbuxa, lowercase, like the wordmark; INBUXA reads as an acronym. The admin and webmail already changed. Here that's everything the server shows people: the brand macro behind the protocol greetings, the HTTP and SCIM realms, the startup banner and the calendar and contact PRODID; the first-party OAuth client descriptions; the legacy-protocol refusals; the default calendar and address book names and the SMTP greeting default, in the code and the schema served to the admin (checksum regenerated); startup and shutdown events; the User-Agent; the sign-in and RSVP pages; the service units; the OpenAPI realm; the crate descriptions and the README, where it's set in bold. Identifiers that are uppercase for their own reasons stay: INBUXA_* settings, SUBSPACE_INBUXA. So do code comments and the AGPL 5(a) notice lines. Tests follow: the IMAP ID name, the default collection names, the PRODID in the iTIP fixtures and the CalDAV free-busy expectations, and the e2e legacy-protocol refusals. The webdav, imap and jmap suites pass, so do the unit tests of every crate touched, and 73 of 75 SMTP tests; of the other two, antispam fails on main too, and queue_retry is a timing flake that passes on its own.
This commit is contained in:
@@ -8,13 +8,13 @@
|
||||
|
||||
---
|
||||
|
||||
**INBUXA** is a mail and collaboration server: JMAP, IMAP, POP3, SMTP,
|
||||
**inbuxa** is a mail and collaboration server: JMAP, IMAP, POP3, SMTP,
|
||||
CalDAV, CardDAV and WebDAV, in one Rust binary, with ihasmail as its web front
|
||||
end. It is a fork of [Stalwart](https://github.com/stalwartlabs/stalwart).
|
||||
Project site: [inbuxa.org](https://inbuxa.org). Documentation: [docs.inbuxa.org](https://docs.inbuxa.org).
|
||||
|
||||
Stalwart ships some features only in a paid Enterprise Edition: multi-tenancy,
|
||||
masked email, undelete and others. INBUXA ships everything to everybody under
|
||||
masked email, undelete and others. **inbuxa** ships everything to everybody under
|
||||
the AGPL-3.0, rebuilding those features independently and without using any
|
||||
of Stalwart's Enterprise code.
|
||||
|
||||
@@ -54,18 +54,18 @@ already names, so none of their data moves.
|
||||
|
||||
## License and credits
|
||||
|
||||
INBUXA is free software under the [GNU Affero General Public License,
|
||||
**inbuxa** is free software under the [GNU Affero General Public License,
|
||||
version 3](./LICENSES/AGPL-3.0-only.txt).
|
||||
|
||||
It is a fork of Stalwart, copyright © Stalwart Labs LLC, **modified by
|
||||
Coffey Labs in 2026**. Upstream's copyright notices are kept on every file
|
||||
they cover, and every upstream file this fork changed says so in its header,
|
||||
under the notice it came with. Stalwart's files are dual-licensed
|
||||
AGPL-3.0-only or Stalwart's Enterprise License, and INBUXA takes them under
|
||||
AGPL-3.0-only or Stalwart's Enterprise License, and **inbuxa** takes them under
|
||||
the AGPL-3.0 only. A few of those files also carry code from other projects
|
||||
under MIT or BSD licenses, which stays under those licenses;
|
||||
[THIRD-PARTY.md](./THIRD-PARTY.md) lists it with its notices. "Stalwart" is
|
||||
Stalwart Labs' name. INBUXA isn't affiliated with or endorsed by Stalwart
|
||||
Stalwart Labs' name. **inbuxa** isn't affiliated with or endorsed by Stalwart
|
||||
Labs.
|
||||
|
||||
The INBUXA mark reuses ihasmail's cat-and-envelope artwork.
|
||||
The **inbuxa** mark reuses ihasmail's cat-and-envelope artwork.
|
||||
|
||||
+1
-1
@@ -395,7 +395,7 @@ components:
|
||||
WWW-Authenticate:
|
||||
schema:
|
||||
type: string
|
||||
example: Bearer realm="INBUXA Server"
|
||||
example: Bearer realm="inbuxa Server"
|
||||
content:
|
||||
application/problem+json:
|
||||
schema:
|
||||
|
||||
@@ -105,7 +105,7 @@ pub fn first_party_clients(
|
||||
if let Some(url) = admin_url.map(|url| url.trim().trim_end_matches('/')).filter(|url| !url.is_empty()) {
|
||||
clients.push(FirstPartyClient {
|
||||
client_id: ADMIN_CLIENT_ID.to_string(),
|
||||
description: "INBUXA Admin".to_string(),
|
||||
description: "inbuxa Admin".to_string(),
|
||||
redirect_uris: vec![format!("{url}/oauth/callback")],
|
||||
secret: None,
|
||||
});
|
||||
@@ -356,7 +356,7 @@ mod tests {
|
||||
|
||||
fn web_interface() -> Application {
|
||||
Application {
|
||||
description: "INBUXA Web Interface".to_string(),
|
||||
description: "inbuxa Web Interface".to_string(),
|
||||
enabled: true,
|
||||
url_prefix: Map::new(vec!["/admin".into(), "/account".into()]),
|
||||
..Default::default()
|
||||
@@ -370,7 +370,7 @@ mod tests {
|
||||
clients,
|
||||
vec![FirstPartyClient {
|
||||
client_id: WEB_INTERFACE_CLIENT_ID.to_string(),
|
||||
description: "INBUXA Web Interface (served by this server)".to_string(),
|
||||
description: "inbuxa Web Interface (served by this server)".to_string(),
|
||||
redirect_uris: vec![
|
||||
"https://mail.example.org/admin/oauth/callback".to_string(),
|
||||
"https://mail.example.org/account/oauth/callback".to_string(),
|
||||
|
||||
@@ -299,28 +299,28 @@ impl LegacyProtocol {
|
||||
pub fn refusal(&self, scope: RefusalScope) -> &'static str {
|
||||
match (scope, self) {
|
||||
(RefusalScope::Server, LegacyProtocol::Imap) => {
|
||||
"This server allows only INBUXA webmail and JMAP apps. This mail app can't sign in."
|
||||
"This server allows only inbuxa webmail and JMAP apps. This mail app can't sign in."
|
||||
}
|
||||
(RefusalScope::Server, LegacyProtocol::Pop3) => {
|
||||
"[AUTH] This server allows only INBUXA webmail and JMAP apps. This mail app can't sign in."
|
||||
"[AUTH] This server allows only inbuxa webmail and JMAP apps. This mail app can't sign in."
|
||||
}
|
||||
(RefusalScope::Server, LegacyProtocol::ManageSieve) => {
|
||||
"This server allows only INBUXA webmail and JMAP apps."
|
||||
"This server allows only inbuxa webmail and JMAP apps."
|
||||
}
|
||||
(RefusalScope::Server, LegacyProtocol::Submission) => {
|
||||
"535 5.7.0 This server allows only INBUXA webmail and JMAP apps. This mail app can't send.\r\n"
|
||||
"535 5.7.0 This server allows only inbuxa webmail and JMAP apps. This mail app can't send.\r\n"
|
||||
}
|
||||
(RefusalScope::Tenant(_), LegacyProtocol::Imap) => {
|
||||
"Your organization allows only INBUXA webmail and JMAP apps. This mail app can't sign in."
|
||||
"Your organization allows only inbuxa webmail and JMAP apps. This mail app can't sign in."
|
||||
}
|
||||
(RefusalScope::Tenant(_), LegacyProtocol::Pop3) => {
|
||||
"[AUTH] Your organization allows only INBUXA webmail and JMAP apps. This mail app can't sign in."
|
||||
"[AUTH] Your organization allows only inbuxa webmail and JMAP apps. This mail app can't sign in."
|
||||
}
|
||||
(RefusalScope::Tenant(_), LegacyProtocol::ManageSieve) => {
|
||||
"Your organization allows only INBUXA webmail and JMAP apps."
|
||||
"Your organization allows only inbuxa webmail and JMAP apps."
|
||||
}
|
||||
(RefusalScope::Tenant(_), LegacyProtocol::Submission) => {
|
||||
"535 5.7.0 Your organization allows only INBUXA webmail and JMAP apps. This mail app can't send.\r\n"
|
||||
"535 5.7.0 Your organization allows only inbuxa webmail and JMAP apps. This mail app can't send.\r\n"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -541,7 +541,7 @@ mod tests {
|
||||
let server = RefusalScope::Server;
|
||||
assert_eq!(
|
||||
LegacyProtocol::Imap.refusal(server),
|
||||
"This server allows only INBUXA webmail and JMAP apps. This mail app can't sign in."
|
||||
"This server allows only inbuxa webmail and JMAP apps. This mail app can't sign in."
|
||||
);
|
||||
assert!(
|
||||
LegacyProtocol::Pop3
|
||||
@@ -550,11 +550,11 @@ mod tests {
|
||||
);
|
||||
assert_eq!(
|
||||
LegacyProtocol::ManageSieve.refusal(server),
|
||||
"This server allows only INBUXA webmail and JMAP apps."
|
||||
"This server allows only inbuxa webmail and JMAP apps."
|
||||
);
|
||||
assert_eq!(
|
||||
LegacyProtocol::Submission.refusal(server),
|
||||
"535 5.7.0 This server allows only INBUXA webmail and JMAP apps. This mail app can't send.\r\n"
|
||||
"535 5.7.0 This server allows only inbuxa webmail and JMAP apps. This mail app can't send.\r\n"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -564,19 +564,19 @@ mod tests {
|
||||
let tenant = RefusalScope::Tenant(7);
|
||||
assert_eq!(
|
||||
LegacyProtocol::Imap.refusal(tenant),
|
||||
"Your organization allows only INBUXA webmail and JMAP apps. This mail app can't sign in."
|
||||
"Your organization allows only inbuxa webmail and JMAP apps. This mail app can't sign in."
|
||||
);
|
||||
assert_eq!(
|
||||
LegacyProtocol::Pop3.refusal(tenant),
|
||||
"[AUTH] Your organization allows only INBUXA webmail and JMAP apps. This mail app can't sign in."
|
||||
"[AUTH] Your organization allows only inbuxa webmail and JMAP apps. This mail app can't sign in."
|
||||
);
|
||||
assert_eq!(
|
||||
LegacyProtocol::ManageSieve.refusal(tenant),
|
||||
"Your organization allows only INBUXA webmail and JMAP apps."
|
||||
"Your organization allows only inbuxa webmail and JMAP apps."
|
||||
);
|
||||
assert_eq!(
|
||||
LegacyProtocol::Submission.refusal(tenant),
|
||||
"535 5.7.0 Your organization allows only INBUXA webmail and JMAP apps. This mail app can't send.\r\n"
|
||||
"535 5.7.0 Your organization allows only inbuxa webmail and JMAP apps. This mail app can't send.\r\n"
|
||||
);
|
||||
let err = LegacyProtocol::Imap.refused(tenant, Some("example.org".into()));
|
||||
assert_eq!(err.value_as_str(trc::Key::Policy), Some("tenant"));
|
||||
|
||||
@@ -40,7 +40,7 @@ impl OpenIdDirectory {
|
||||
|
||||
pub async fn new(config: OidcConfig) -> Result<Self, OidcError> {
|
||||
let http = utils::http::http_client_builder(false)
|
||||
.user_agent("INBUXA/1.0") // types::brand!(); this crate does not depend on types
|
||||
.user_agent("inbuxa/1.0") // types::brand!(); this crate does not depend on types
|
||||
.timeout(Duration::from_secs(30))
|
||||
.build()
|
||||
.map_err(|e| OidcError::Network(format!("HTTP client build failed: {e}")))?;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "inbuxa-features"
|
||||
description = "INBUXA's rebuilt features: behavior Stalwart ships only in its Enterprise Edition, rebuilt clean-room"
|
||||
description = "inbuxa's rebuilt features: behavior Stalwart ships only in its Enterprise Edition, rebuilt clean-room"
|
||||
license = "AGPL-3.0-only"
|
||||
version = "0.16.22"
|
||||
edition = "2024"
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[package]
|
||||
name = "inbuxa"
|
||||
description = "INBUXA Mail and Collaboration Server, a fork of Stalwart"
|
||||
description = "inbuxa mail and collaboration server, a fork of Stalwart"
|
||||
authors = [ "Stalwart Labs LLC <[email protected]>"]
|
||||
homepage = "https://inbuxa.org"
|
||||
keywords = ["imap", "jmap", "smtp", "email", "mail", "webdav", "server"]
|
||||
categories = ["email"]
|
||||
# Upstream offers AGPL-3.0-only OR LicenseRef-SEL; INBUXA takes the AGPL only.
|
||||
# Upstream offers AGPL-3.0-only OR LicenseRef-SEL; inbuxa takes the AGPL only.
|
||||
license = "AGPL-3.0-only"
|
||||
version = "0.16.23"
|
||||
edition = "2024"
|
||||
|
||||
@@ -732,7 +732,7 @@ impl Pickle for AddressBook {
|
||||
impl Default for AddressBook {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
default_display_name: Some("INBUXA Address Book".to_string()),
|
||||
default_display_name: Some("inbuxa Address Book".to_string()),
|
||||
default_href_name: Some("default".to_string()),
|
||||
max_v_card_size: 524288u64,
|
||||
max_address_books: Some(250u64),
|
||||
@@ -4597,7 +4597,7 @@ impl Pickle for Calendar {
|
||||
impl Default for Calendar {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
default_display_name: Some("INBUXA Calendar".to_string()),
|
||||
default_display_name: Some("inbuxa Calendar".to_string()),
|
||||
default_href_name: Some("default".to_string()),
|
||||
max_attendees: 20u64,
|
||||
max_recurrence_expansions: 3000u64,
|
||||
@@ -4734,7 +4734,7 @@ impl Default for CalendarAlarm {
|
||||
allow_external_rcpts: false,
|
||||
enable: true,
|
||||
from_email: Default::default(),
|
||||
from_name: "INBUXA Calendar".to_string(),
|
||||
from_name: "inbuxa Calendar".to_string(),
|
||||
min_trigger_interval: Duration::from_millis(3600000),
|
||||
template: Default::default(),
|
||||
}
|
||||
@@ -28310,7 +28310,7 @@ impl MtaStageConnect {
|
||||
ExpressionContext {
|
||||
expr: &self.smtp_greeting,
|
||||
default: Some(Expression {
|
||||
else_: "system('hostname') + ' INBUXA ESMTP at your service'".to_string(),
|
||||
else_: "system('hostname') + ' inbuxa ESMTP at your service'".to_string(),
|
||||
..Default::default()
|
||||
}),
|
||||
property: Property::SmtpGreeting,
|
||||
@@ -28374,7 +28374,7 @@ impl Default for MtaStageConnect {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
smtp_greeting: Expression {
|
||||
else_: "system('hostname') + ' INBUXA ESMTP at your service'".to_string(),
|
||||
else_: "system('hostname') + ' inbuxa ESMTP at your service'".to_string(),
|
||||
..Default::default()
|
||||
},
|
||||
hostname: Expression {
|
||||
|
||||
@@ -205,7 +205,7 @@ impl ScimResponse {
|
||||
if error.status == 401 {
|
||||
response.headers.push((
|
||||
"WWW-Authenticate",
|
||||
"Bearer realm=\"INBUXA SCIM\"".to_string(),
|
||||
"Bearer realm=\"inbuxa SCIM\"".to_string(),
|
||||
));
|
||||
}
|
||||
response
|
||||
|
||||
@@ -47,7 +47,7 @@ impl RegistryStore {
|
||||
.collect::<String>();
|
||||
eprintln!();
|
||||
eprintln!("════════════════════════════════════════════════════════════");
|
||||
eprintln!("🔑 INBUXA bootstrap mode - temporary administrator account");
|
||||
eprintln!("🔑 inbuxa bootstrap mode - temporary administrator account");
|
||||
eprintln!();
|
||||
eprintln!(" username: admin");
|
||||
eprintln!(" password: {password}");
|
||||
|
||||
@@ -3729,8 +3729,8 @@ impl EventType {
|
||||
EventType::Security(SecurityEvent::LegacyProtocolsChanged) => {
|
||||
"Legacy mail protocols switch changed"
|
||||
}
|
||||
EventType::Server(ServerEvent::Startup) => "Starting INBUXA Server",
|
||||
EventType::Server(ServerEvent::Shutdown) => "Shutting down INBUXA Server",
|
||||
EventType::Server(ServerEvent::Startup) => "Starting inbuxa Server",
|
||||
EventType::Server(ServerEvent::Shutdown) => "Shutting down inbuxa Server",
|
||||
EventType::Server(ServerEvent::StartupError) => "Server startup error",
|
||||
EventType::Server(ServerEvent::ThreadError) => "Server thread error",
|
||||
EventType::Server(ServerEvent::Licensing) => "Server licensing event",
|
||||
@@ -3983,7 +3983,7 @@ impl EventType {
|
||||
EventType::Auth(AuthEvent::ClientRegistration) => "Authentication error",
|
||||
// inbuxa: legacy-protocols LP-6
|
||||
EventType::Auth(AuthEvent::LegacyProtocolRefused) => {
|
||||
"This server allows only INBUXA webmail and JMAP apps"
|
||||
"This server allows only inbuxa webmail and JMAP apps"
|
||||
}
|
||||
EventType::Auth(AuthEvent::Error) => "Authentication error",
|
||||
EventType::Auth(AuthEvent::CredentialExpired) => "Credential expired",
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#[macro_export]
|
||||
macro_rules! brand {
|
||||
() => {
|
||||
"INBUXA"
|
||||
"inbuxa"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ pub fn build_http_client(
|
||||
allow_invalid_certs: bool,
|
||||
) -> Result<Client, String> {
|
||||
let mut headers = build_http_headers(raw_headers, username, password, token, content_type)?;
|
||||
headers.insert(USER_AGENT, "INBUXA/1.0.0".parse().unwrap()); // types::brand!(); utils does not depend on types
|
||||
headers.insert(USER_AGENT, "inbuxa/1.0.0".parse().unwrap()); // types::brand!(); utils does not depend on types
|
||||
|
||||
match http_client_builder(allow_invalid_certs)
|
||||
.connect_timeout(timeout)
|
||||
|
||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
wa2yYpZjVWiT3bW8anintWsnNSjDQUXa8U-Va-s6mZQ
|
||||
rWqJwNJkqgKsbC1eqcEmmIAMtJPmnlDlThR2ZtW_N1c
|
||||
@@ -6,7 +6,7 @@
|
||||
<key>Label</key>
|
||||
<string>inbuxa.mail</string>
|
||||
<key>ServiceDescription</key>
|
||||
<string>INBUXA</string>
|
||||
<string>inbuxa</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>__PATH__/bin/inbuxa</string>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[Unit]
|
||||
Description=INBUXA Server
|
||||
Description=inbuxa Server
|
||||
Conflicts=postfix.service sendmail.service exim4.service
|
||||
ConditionPathExists=__PATH__/etc/config.json
|
||||
After=network-online.target
|
||||
|
||||
@@ -49,7 +49,7 @@ HTTP = "http://127.0.0.1:18080"
|
||||
# made to speak.
|
||||
PORTS = {"imap": 18993, "pop3": 18995, "submissions": 18465, "smtp": 18025}
|
||||
TLS_PORTS = {18993, 18995, 18465}
|
||||
SMTP_REFUSAL = ("535 5.7.0 This server allows only INBUXA webmail and JMAP apps. "
|
||||
SMTP_REFUSAL = ("535 5.7.0 This server allows only inbuxa webmail and JMAP apps. "
|
||||
"This mail app can't send.")
|
||||
INBUXA = "urn:inbuxa:jmap"
|
||||
failures = []
|
||||
@@ -333,7 +333,7 @@ def tenant_checks(admin, admin_pw, account):
|
||||
"and still enabled for an account outside the tenant (test 13)")
|
||||
|
||||
# Refused on the tenant's domain, every way in the same words (tests 6-8).
|
||||
imap_no = ("NO [ALERT] Your organization allows only INBUXA webmail and JMAP apps. "
|
||||
imap_no = ("NO [ALERT] Your organization allows only inbuxa webmail and JMAP apps. "
|
||||
"This mail app can't sign in.")
|
||||
check(imap_login(PORTS["imap"], tu, user_pw) == imap_no,
|
||||
"the tenant's user is refused over IMAP with the right password (test 6)")
|
||||
@@ -341,10 +341,10 @@ def tenant_checks(admin, admin_pw, account):
|
||||
check(imap_login(PORTS["imap"], "[email protected]", "x") == imap_no,
|
||||
"and a made-up address on the domain gets the same (test 7)")
|
||||
check(pop3_login(PORTS["pop3"], tu, user_pw) ==
|
||||
"-ERR [AUTH] Your organization allows only INBUXA webmail and JMAP apps. "
|
||||
"-ERR [AUTH] Your organization allows only inbuxa webmail and JMAP apps. "
|
||||
"This mail app can't sign in.", "POP3 refuses in its own form (test 8)")
|
||||
check(smtp_auths(PORTS["submissions"], tu, [user_pw])[0] ==
|
||||
"535 5.7.0 Your organization allows only INBUXA webmail and JMAP apps. "
|
||||
"535 5.7.0 Your organization allows only inbuxa webmail and JMAP apps. "
|
||||
"This mail app can't send.", "submission refuses in its own form (test 8)")
|
||||
check(imap_login(PORTS["imap"], admin, admin_pw).startswith("OK"),
|
||||
"an account on another domain signs in over IMAP normally (test 6)")
|
||||
|
||||
@@ -61,7 +61,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Weekly, until: None, count:
|
||||
summary.summary: Text("Meet me maybe")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
X-MICROSOFT-CDO-OWNERAPPTID:299828133
|
||||
@@ -176,7 +176,7 @@ summary.summary: Text("Meet me maybe")
|
||||
~summary.description: Text("This is the event description")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
X-MICROSOFT-CDO-OWNERAPPTID:299828133
|
||||
@@ -224,7 +224,7 @@ END:VCALENDAR
|
||||
# Make sure the original alarms are preserved
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
X-MICROSOFT-CDO-OWNERAPPTID:299828133
|
||||
|
||||
@@ -64,7 +64,7 @@ summary.location: Text("Conference Room A")
|
||||
summary.summary: Text("Review Accounts")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
LOCATION:Conference Room A
|
||||
@@ -114,7 +114,7 @@ summary.location: Text("Conference Room A")
|
||||
summary.summary: Text("Review Accounts")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
LOCATION:Conference Room A
|
||||
|
||||
@@ -146,7 +146,7 @@ summary.dtstart: Time(ItipTime { start: 867787200, tz_id: 32768 })
|
||||
summary.summary: Text("Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -402,7 +402,7 @@ summary.dtstart: Time(ItipTime { start: 867787200, tz_id: 32768 })
|
||||
summary.summary: Text("Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -450,7 +450,7 @@ summary.dtstart: Time(ItipTime { start: 867787200, tz_id: 32768 })
|
||||
summary.summary: Text("Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
|
||||
@@ -37,7 +37,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Monthly, until: Some(Partia
|
||||
summary.summary: Text("IETF Calendaring Working Group Meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
CLASS:PUBLIC
|
||||
@@ -117,7 +117,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Monthly, until: Some(Partia
|
||||
summary.summary: Text("IETF Calendaring Working Group Meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
CLASS:PUBLIC
|
||||
@@ -207,7 +207,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Monthly, until: Some(Partia
|
||||
summary.summary: Text("IETF Calendaring Working Group Meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:CANCEL
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CANCELLED
|
||||
@@ -226,7 +226,7 @@ END:VCALENDAR
|
||||
# Make sure B has the cancelled event
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
CLASS:PUBLIC
|
||||
@@ -358,7 +358,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Monthly, until: Some(Partia
|
||||
summary.summary: Text("IETF Calendaring Working Group Meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
CLASS:PUBLIC
|
||||
@@ -386,7 +386,7 @@ END:VCALENDAR
|
||||
# Make sure B has the complete event including all updates
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
CLASS:PUBLIC
|
||||
@@ -538,7 +538,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Monthly, until: Some(Partia
|
||||
summary.summary: Text("IETF Calendaring Working Group Meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:CANCEL
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
DESCRIPTION:IETF-C&S Conference Call
|
||||
@@ -564,7 +564,7 @@ END:VCALENDAR
|
||||
# Make sure all instances in B were deleted
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
CLASS:PUBLIC
|
||||
@@ -677,7 +677,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Weekly, until: None, count:
|
||||
summary.summary: Text("Review Accounts")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
LOCATION:The White Room
|
||||
@@ -742,7 +742,7 @@ summary.summary: Text("Review Accounts")
|
||||
~summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Weekly, until: None, count: None, interval: None, bysecond: [], byminute: [], byhour: [], byday: [ICalendarDay { ordwk: None, weekday: Tuesday }], bymonthday: [], byyearday: [], byweekno: [], bymonth: [], bysetpos: [], wkst: Some(Sunday), rscale: None, skip: None })
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
LOCATION:The White Room
|
||||
@@ -770,7 +770,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Weekly, until: None, count:
|
||||
summary.summary: Text("Review Accounts")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:CANCEL
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
LOCATION:The Red Room
|
||||
@@ -791,7 +791,7 @@ END:VCALENDAR
|
||||
# Make sure B has the updated event
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
LOCATION:The White Room
|
||||
@@ -812,7 +812,7 @@ END:VCALENDAR
|
||||
# Make sure C has the updated event
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
LOCATION:The Red Room
|
||||
@@ -853,7 +853,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Weekly, until: None, count:
|
||||
summary.summary: Text("Review Accounts")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Review Accounts
|
||||
@@ -919,7 +919,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Weekly, until: None, count:
|
||||
summary.summary: Text("Weekly Sync")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Weekly Sync
|
||||
@@ -967,7 +967,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Weekly, until: None, count:
|
||||
summary.summary: Text("Weekly Sync")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Weekly Sync
|
||||
|
||||
@@ -32,7 +32,7 @@ summary.dtstart: Time(ItipTime { start: 867787200, tz_id: 32768 })
|
||||
summary.summary: Text("Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -61,7 +61,7 @@ END:VCALENDAR
|
||||
# Make sure B receives the request
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -88,7 +88,7 @@ END:VCALENDAR
|
||||
> put [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:19970701T200000Z
|
||||
SEQUENCE:1
|
||||
@@ -119,7 +119,7 @@ summary.dtstart: Time(ItipTime { start: 867787200, tz_id: 32768 })
|
||||
summary.summary: Text("Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Conference
|
||||
@@ -198,7 +198,7 @@ summary.summary: Text("Phone Conference")
|
||||
~summary.summary: Text("Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -228,7 +228,7 @@ END:VCALENDAR
|
||||
# Make sure C receives the request
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -256,7 +256,7 @@ END:VCALENDAR
|
||||
> put [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:19970701T180000Z
|
||||
UID:[email protected]
|
||||
@@ -287,7 +287,7 @@ summary.dtstart: Time(ItipTime { start: 867780000, tz_id: 32768 })
|
||||
summary.summary: Text("Phone Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Phone Conference
|
||||
@@ -313,7 +313,7 @@ summary.dtstart: Time(ItipTime { start: 867780000, tz_id: 32768 })
|
||||
summary.summary: Text("Phone Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -343,7 +343,7 @@ END:VCALENDAR
|
||||
# Make sure E receives the request
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -398,7 +398,7 @@ END:VCALENDAR
|
||||
> put [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:19970701T180000Z
|
||||
SEQUENCE:2
|
||||
@@ -430,7 +430,7 @@ summary.dtstart: Time(ItipTime { start: 867780000, tz_id: 32768 })
|
||||
summary.summary: Text("Phone Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Phone Conference
|
||||
@@ -479,7 +479,7 @@ END:VCALENDAR
|
||||
# Make sure C receives the reply
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -508,7 +508,7 @@ END:VCALENDAR
|
||||
> put [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:19970701T180000Z
|
||||
SEQUENCE:2
|
||||
@@ -540,7 +540,7 @@ summary.dtstart: Time(ItipTime { start: 867780000, tz_id: 32768 })
|
||||
summary.summary: Text("Phone Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Phone Conference
|
||||
@@ -564,7 +564,7 @@ END:VCALENDAR
|
||||
# Make sure C receives the reply
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -650,7 +650,7 @@ summary.summary: Text("Phone Conference")
|
||||
~summary.attendee: Participants([ItipParticipant { email: "[email protected]", name: None, is_organizer: true }, ItipParticipant { email: "[email protected]", name: None, is_organizer: false }, ItipParticipant { email: "[email protected]", name: None, is_organizer: false }, ItipParticipant { email: "[email protected]", name: None, is_organizer: false }, ItipParticipant { email: "[email protected]", name: Some("Hal"), is_organizer: false }, ItipParticipant { email: "[email protected]", name: None, is_organizer: false }])
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
@@ -681,7 +681,7 @@ summary.dtstart: Time(ItipTime { start: 867780000, tz_id: 32768 })
|
||||
summary.summary: Text("Phone Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:CANCEL
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CANCELLED
|
||||
@@ -702,7 +702,7 @@ END:VCALENDAR
|
||||
# Make sure B receives the cancelation
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CANCELLED
|
||||
@@ -727,7 +727,7 @@ summary.dtstart: Time(ItipTime { start: 867780000, tz_id: 32768 })
|
||||
summary.summary: Text("Phone Conference")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:CANCEL
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CANCELLED
|
||||
|
||||
@@ -32,7 +32,7 @@ summary.dtstart: Time(ItipTime { start: 867776400, tz_id: 32768 })
|
||||
summary.summary: Text("Create the requirements document")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
PRIORITY:1
|
||||
@@ -57,7 +57,7 @@ END:VCALENDAR
|
||||
# Make sure B received the todo
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
PRIORITY:1
|
||||
@@ -103,7 +103,7 @@ summary.attendee: Participants([ItipParticipant { email: "[email protected]", name:
|
||||
summary.dtstart: Time(ItipTime { start: 867776400, tz_id: 32768 })
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
STATUS:IN-PROCESS
|
||||
@@ -172,7 +172,7 @@ summary.attendee: Participants([ItipParticipant { email: "[email protected]", name:
|
||||
summary.dtstart: Time(ItipTime { start: 867776400, tz_id: 32768 })
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
PERCENT-COMPLETE:75
|
||||
@@ -241,7 +241,7 @@ summary.attendee: Participants([ItipParticipant { email: "[email protected]", name:
|
||||
summary.dtstart: Time(ItipTime { start: 867776400, tz_id: 32768 })
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
DUE:19970722T170000Z
|
||||
@@ -317,7 +317,7 @@ summary.summary: Text("Send Status Reports to Area Managers")
|
||||
~summary.summary: Text("Create the requirements document")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
PRIORITY:1
|
||||
@@ -347,7 +347,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Monthly, until: None, count
|
||||
summary.summary: Text("Create the requirements document")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:CANCEL
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
STATUS:CANCELLED
|
||||
@@ -367,7 +367,7 @@ END:VCALENDAR
|
||||
# Make sure "C" received the cancel request
|
||||
> get [email protected] [email protected]
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
PRIORITY:1
|
||||
@@ -451,7 +451,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Monthly, until: None, count
|
||||
summary.summary: Text("Send Status Reports to Area Managers")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTODO
|
||||
PERCENT-COMPLETE:75
|
||||
|
||||
@@ -47,7 +47,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Daily, until: None, count:
|
||||
summary.summary: Text("Review Internet-Draft")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Review Internet-Draft
|
||||
@@ -89,7 +89,7 @@ END:VCALENDAR
|
||||
# Make sure the participant receives the event
|
||||
> get [email protected] 9263504FD3AD
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Review Internet-Draft
|
||||
@@ -185,7 +185,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Daily, until: None, count:
|
||||
summary.summary: Text("Review Internet-Draft")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Review Internet-Draft
|
||||
@@ -343,7 +343,7 @@ summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Daily, until: None, count:
|
||||
summary.summary: Text("Review Internet-Draft")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Review Internet-Draft
|
||||
|
||||
@@ -30,7 +30,7 @@ summary.dtstart: Time(ItipTime { start: 1243958400, tz_id: 32768 })
|
||||
summary.summary: Text("Lunch")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Lunch
|
||||
@@ -83,7 +83,7 @@ END:VCALENDAR
|
||||
# Make sure the message was received by the attendees
|
||||
> get [email protected] 9263504FD3AD
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Lunch
|
||||
@@ -170,7 +170,7 @@ summary.dtstart: Time(ItipTime { start: 1243958400, tz_id: 32768 })
|
||||
summary.summary: Text("Lunch")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Lunch
|
||||
|
||||
@@ -26,7 +26,7 @@ summary.dtstart: Time(ItipTime { start: 1794322800, tz_id: 433 })
|
||||
summary.summary: Text("Berlin meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Berlin meeting
|
||||
@@ -92,7 +92,7 @@ summary.dtstart: Time(ItipTime { start: 1794322800, tz_id: 433 })
|
||||
summary.summary: Text("Berlin meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REPLY
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Berlin meeting
|
||||
@@ -144,7 +144,7 @@ summary.dtstart: Time(ItipTime { start: 1794322800, tz_id: 433 })
|
||||
summary.summary: Text("Berlin meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:CANCEL
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
STATUS:CANCELLED
|
||||
@@ -228,7 +228,7 @@ summary.dtstart: Time(ItipTime { start: 1794322800, tz_id: 433 })
|
||||
summary.summary: Text("Berlin meeting")
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Berlin meeting
|
||||
|
||||
@@ -47,7 +47,7 @@ pub async fn test(imap: &mut ImapConnection, _imap_check: &mut ImapConnection) {
|
||||
imap.send("ID").await;
|
||||
imap.assert_read(Type::Tagged, ResponseType::Ok)
|
||||
.await
|
||||
.assert_contains("* ID (\"name\" \"INBUXA\" \"version\" ");
|
||||
.assert_contains("* ID (\"name\" \"inbuxa\" \"version\" ");
|
||||
|
||||
// Login should be disabled
|
||||
imap.send("LOGIN [email protected] secret").await;
|
||||
|
||||
@@ -45,7 +45,7 @@ pub async fn test(test: &TestServer) {
|
||||
list[0],
|
||||
json!({
|
||||
"id": default_calendar_id,
|
||||
"name": "INBUXA Calendar ([email protected])",
|
||||
"name": "inbuxa Calendar ([email protected])",
|
||||
"description": null,
|
||||
"sortOrder": 0,
|
||||
"isSubscribed": true,
|
||||
@@ -310,7 +310,7 @@ pub async fn test(test: &TestServer) {
|
||||
}));
|
||||
response.list()[1].assert_is_equal(json!({
|
||||
"id": default_calendar_id,
|
||||
"name": "INBUXA Calendar ([email protected])",
|
||||
"name": "inbuxa Calendar ([email protected])",
|
||||
"description": (),
|
||||
"sortOrder": 0,
|
||||
"isSubscribed": true,
|
||||
|
||||
@@ -38,7 +38,7 @@ pub async fn test(test: &TestServer) {
|
||||
assert_eq!(
|
||||
list[0],
|
||||
json!({
|
||||
"name": "INBUXA Address Book ([email protected])",
|
||||
"name": "inbuxa Address Book ([email protected])",
|
||||
"description": (),
|
||||
"sortOrder": 0,
|
||||
"isSubscribed": true,
|
||||
@@ -148,7 +148,7 @@ pub async fn test(test: &TestServer) {
|
||||
"id": addressbook_id,
|
||||
}),
|
||||
json!({
|
||||
"name": "INBUXA Address Book ([email protected])",
|
||||
"name": "inbuxa Address Book ([email protected])",
|
||||
"description": (),
|
||||
"sortOrder": 0,
|
||||
"isSubscribed": true,
|
||||
|
||||
@@ -106,7 +106,7 @@ async fn discovery(scim: &ScimTest) {
|
||||
);
|
||||
assert!(
|
||||
!config.body.contains("stalw"),
|
||||
"SCIM-4: documentation is INBUXA's own"
|
||||
"SCIM-4: documentation is inbuxa's own"
|
||||
);
|
||||
|
||||
let types = anonymous.get("/ResourceTypes").await;
|
||||
|
||||
@@ -503,7 +503,7 @@ pub async fn branding_compat() {
|
||||
let admin = std::env::var("INBUXA_COMPAT_ADMIN").expect("INBUXA_COMPAT_ADMIN");
|
||||
assert!(
|
||||
std::env::var("NO_INSERT").is_ok(),
|
||||
"NO_INSERT must be set, or the copy of INBUXA's data is wiped"
|
||||
"NO_INSERT must be set, or the copy of inbuxa's data is wiped"
|
||||
);
|
||||
let test = TestServerBuilder::new("branding_compat")
|
||||
.await
|
||||
|
||||
@@ -431,7 +431,7 @@ pub async fn masked_email_compat() {
|
||||
.expect("masks JSON");
|
||||
assert!(
|
||||
std::env::var("NO_INSERT").is_ok(),
|
||||
"NO_INSERT must be set, or the copy of INBUXA's data is wiped"
|
||||
"NO_INSERT must be set, or the copy of inbuxa's data is wiped"
|
||||
);
|
||||
|
||||
let test = TestServerBuilder::new("masked_email_compat")
|
||||
|
||||
@@ -908,7 +908,7 @@ pub async fn tenant_compat() {
|
||||
.expect("expected JSON");
|
||||
assert!(
|
||||
std::env::var("NO_INSERT").is_ok(),
|
||||
"NO_INSERT must be set, or the copy of INBUXA's data is wiped"
|
||||
"NO_INSERT must be set, or the copy of inbuxa's data is wiped"
|
||||
);
|
||||
|
||||
let test = TestServerBuilder::new("tenant_compat")
|
||||
|
||||
@@ -618,7 +618,7 @@ pub async fn undelete_compat() {
|
||||
.expect("archived items JSON");
|
||||
assert!(
|
||||
std::env::var("NO_INSERT").is_ok(),
|
||||
"NO_INSERT must be set, or the copy of INBUXA's data is wiped"
|
||||
"NO_INSERT must be set, or the copy of inbuxa's data is wiped"
|
||||
);
|
||||
|
||||
let test = TestServerBuilder::new("undelete_compat")
|
||||
|
||||
@@ -907,7 +907,7 @@ const REPORT_10: &str = r#"<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
const REPORT_10_RESPONSE: &str = r#"BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
BEGIN:VFREEBUSY
|
||||
DTSTART:20060104T140000Z
|
||||
DTEND:20060105T220000Z
|
||||
@@ -928,7 +928,7 @@ const REPORT_11: &str = r#"<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
const REPORT_11_RESPONSE: &str = r#"BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//INBUXA//INBUXA Server//EN
|
||||
PRODID:-//inbuxa//inbuxa Server//EN
|
||||
BEGIN:VFREEBUSY
|
||||
DTSTART:20060101T000000Z
|
||||
DTEND:20060104T140000Z
|
||||
|
||||
Reference in New Issue
Block a user