Merge main (upstream v0.16.24) into feature/compliance-roles
The schema conflicted as a binary file: taken from main and the one edit here re-applied (sysComplianceGet after sysLegalHoldExport). The import kept the permission count at 673, so the new id stays 673. Retested on the merged tree in its own target directory: the compliance and system suites pass. One earlier system run failed in purge.rs (an imported blob not found) and didn't recur.
This commit is contained in:
@@ -0,0 +1,724 @@
|
||||
{
|
||||
"ref": "v0.16.24",
|
||||
"commit": "af37a234981722493b74623a983581691d2b70b6",
|
||||
"removed_files": [
|
||||
"crates/common/src/enterprise/alerts.rs",
|
||||
"crates/common/src/enterprise/config.rs",
|
||||
"crates/common/src/enterprise/license.rs",
|
||||
"crates/common/src/enterprise/llm.rs",
|
||||
"crates/common/src/enterprise/masked.rs",
|
||||
"crates/common/src/enterprise/mod.rs",
|
||||
"crates/common/src/telemetry/metrics/store.rs",
|
||||
"crates/common/src/telemetry/metrics/test_data.rs",
|
||||
"crates/common/src/telemetry/tracers/store.rs",
|
||||
"crates/http/src/api/telemetry.rs",
|
||||
"crates/jmap/src/registry/mapping/archived_item.rs",
|
||||
"crates/jmap/src/registry/mapping/masked_email.rs",
|
||||
"crates/jmap/src/registry/mapping/telemetry.rs",
|
||||
"crates/scim-proto/src/attributes.rs",
|
||||
"crates/scim-proto/src/etag.rs",
|
||||
"crates/scim-proto/src/filter.rs",
|
||||
"crates/scim-proto/src/json.rs",
|
||||
"crates/scim-proto/src/lib.rs",
|
||||
"crates/scim-proto/src/message/bulk.rs",
|
||||
"crates/scim-proto/src/message/error.rs",
|
||||
"crates/scim-proto/src/message/list.rs",
|
||||
"crates/scim-proto/src/message/mod.rs",
|
||||
"crates/scim-proto/src/message/patch.rs",
|
||||
"crates/scim-proto/src/message/search.rs",
|
||||
"crates/scim-proto/src/path.rs",
|
||||
"crates/scim-proto/src/schema/group.rs",
|
||||
"crates/scim-proto/src/schema/mod.rs",
|
||||
"crates/scim-proto/src/schema/spc.rs",
|
||||
"crates/scim-proto/src/schema/user.rs",
|
||||
"crates/scim/src/auth.rs",
|
||||
"crates/scim/src/bulk.rs",
|
||||
"crates/scim/src/context.rs",
|
||||
"crates/scim/src/discovery.rs",
|
||||
"crates/scim/src/error.rs",
|
||||
"crates/scim/src/groups/get.rs",
|
||||
"crates/scim/src/groups/mod.rs",
|
||||
"crates/scim/src/groups/patch.rs",
|
||||
"crates/scim/src/groups/set.rs",
|
||||
"crates/scim/src/lib.rs",
|
||||
"crates/scim/src/query/cursor.rs",
|
||||
"crates/scim/src/query/mod.rs",
|
||||
"crates/scim/src/request.rs",
|
||||
"crates/scim/src/users/get.rs",
|
||||
"crates/scim/src/users/mod.rs",
|
||||
"crates/scim/src/users/patch.rs",
|
||||
"crates/scim/src/users/set.rs",
|
||||
"crates/spam-filter/src/analysis/llm.rs",
|
||||
"crates/store/src/backend/composite/mod.rs",
|
||||
"crates/store/src/backend/composite/read_replica.rs",
|
||||
"crates/store/src/backend/composite/sharded_blob.rs",
|
||||
"crates/store/src/backend/composite/sharded_lookup.rs",
|
||||
"crates/trc/src/serializers/binary.rs",
|
||||
"tests/src/directory/oidc.rs",
|
||||
"tests/src/scim/auth.rs",
|
||||
"tests/src/scim/bulk.rs",
|
||||
"tests/src/scim/discovery.rs",
|
||||
"tests/src/scim/groups.rs",
|
||||
"tests/src/scim/limits.rs",
|
||||
"tests/src/scim/mod.rs",
|
||||
"tests/src/scim/query.rs",
|
||||
"tests/src/scim/users.rs",
|
||||
"tests/src/system/archiving.rs",
|
||||
"tests/src/system/tenant.rs"
|
||||
],
|
||||
"removed_snippets": {
|
||||
"crates/common/src/auth/authentication.rs": 3,
|
||||
"crates/common/src/auth/mod.rs": 2,
|
||||
"crates/common/src/auth/permissions.rs": 1,
|
||||
"crates/common/src/cache/directory.rs": 6,
|
||||
"crates/common/src/cache/invalidate.rs": 1,
|
||||
"crates/common/src/cache/principals.rs": 2,
|
||||
"crates/common/src/cache/reload.rs": 1,
|
||||
"crates/common/src/config/mod.rs": 2,
|
||||
"crates/common/src/config/telemetry.rs": 4,
|
||||
"crates/common/src/lib.rs": 2,
|
||||
"crates/common/src/manager/boot.rs": 1,
|
||||
"crates/common/src/network/mta.rs": 1,
|
||||
"crates/common/src/scripts/plugins/llm_prompt.rs": 1,
|
||||
"crates/common/src/storage/quota.rs": 2,
|
||||
"crates/common/src/telemetry/metrics/mod.rs": 1,
|
||||
"crates/common/src/telemetry/metrics/prometheus.rs": 1,
|
||||
"crates/common/src/telemetry/mod.rs": 1,
|
||||
"crates/common/src/telemetry/tracers/mod.rs": 1,
|
||||
"crates/http/src/api/mod.rs": 4,
|
||||
"crates/http/src/auth/permissions.rs": 1,
|
||||
"crates/http/src/request.rs": 4,
|
||||
"crates/jmap/src/registry/get.rs": 1,
|
||||
"crates/jmap/src/registry/mapping/mod.rs": 1,
|
||||
"crates/jmap/src/registry/mapping/principal.rs": 3,
|
||||
"crates/jmap/src/registry/mapping/queued_message.rs": 1,
|
||||
"crates/jmap/src/registry/mapping/task.rs": 1,
|
||||
"crates/jmap/src/registry/mod.rs": 1,
|
||||
"crates/jmap/src/registry/query.rs": 1,
|
||||
"crates/jmap/src/registry/set.rs": 2,
|
||||
"crates/main/src/main.rs": 1,
|
||||
"crates/services/src/task_manager/alarm.rs": 1,
|
||||
"crates/services/src/task_manager/imip.rs": 1,
|
||||
"crates/services/src/task_manager/index.rs": 2,
|
||||
"crates/services/src/task_manager/maintenance.rs": 3,
|
||||
"crates/services/src/task_manager/scheduler.rs": 8,
|
||||
"crates/spam-filter/src/analysis/mod.rs": 1,
|
||||
"crates/spam-filter/src/analysis/score.rs": 2,
|
||||
"crates/store/src/backend/mod.rs": 1,
|
||||
"crates/store/src/backend/mysql/main.rs": 1,
|
||||
"crates/store/src/backend/postgres/main.rs": 1,
|
||||
"crates/store/src/build/blob.rs": 2,
|
||||
"crates/store/src/build/lookup.rs": 1,
|
||||
"crates/store/src/build/memory.rs": 2,
|
||||
"crates/store/src/dispatch/blob.rs": 6,
|
||||
"crates/store/src/dispatch/lookup.rs": 10,
|
||||
"crates/store/src/dispatch/mod.rs": 1,
|
||||
"crates/store/src/dispatch/search.rs": 6,
|
||||
"crates/store/src/dispatch/store.rs": 8,
|
||||
"crates/store/src/lib.rs": 6,
|
||||
"crates/trc/src/serializers/mod.rs": 1
|
||||
},
|
||||
"cargo_edits": [
|
||||
{
|
||||
"file": "crates/main/Cargo.toml",
|
||||
"line": 50,
|
||||
"before": "default = [\"rocks\", \"enterprise\"]",
|
||||
"after": "default = [\"rocks\"]"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 22,
|
||||
"before": "store = { path = \"../crates/store\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "store = { path = \"../crates/store\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 24,
|
||||
"before": "directory = { path = \"../crates/directory\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "directory = { path = \"../crates/directory\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 25,
|
||||
"before": "coordinator = { path = \"../crates/coordinator\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "coordinator = { path = \"../crates/coordinator\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 26,
|
||||
"before": "jmap = { path = \"../crates/jmap\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "jmap = { path = \"../crates/jmap\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 35,
|
||||
"before": "http = { path = \"../crates/http\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "http = { path = \"../crates/http\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 37,
|
||||
"before": "scim = { path = \"../crates/scim\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "scim = { path = \"../crates/scim\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 39,
|
||||
"before": "services = { path = \"../crates/services\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "services = { path = \"../crates/services\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 41,
|
||||
"before": "smtp = { path = \"../crates/smtp\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "smtp = { path = \"../crates/smtp\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 42,
|
||||
"before": "common = { path = \"../crates/common\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "common = { path = \"../crates/common\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 44,
|
||||
"before": "email = { path = \"../crates/email\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "email = { path = \"../crates/email\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 45,
|
||||
"before": "spam-filter = { path = \"../crates/spam-filter\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "spam-filter = { path = \"../crates/spam-filter\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 46,
|
||||
"before": "trc = { path = \"../crates/trc\", features = [\"enterprise\"] }",
|
||||
"after": "trc = { path = \"../crates/trc\", features = [] }"
|
||||
},
|
||||
{
|
||||
"file": "tests/Cargo.toml",
|
||||
"line": 47,
|
||||
"before": "managesieve = { path = \"../crates/managesieve\", features = [\"test_mode\", \"enterprise\"] }",
|
||||
"after": "managesieve = { path = \"../crates/managesieve\", features = [\"test_mode\"] }"
|
||||
},
|
||||
{
|
||||
"file": ".github/workflows/ci.yml",
|
||||
"line": 341,
|
||||
"before": "cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats enterprise\"",
|
||||
"after": "cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats\""
|
||||
},
|
||||
{
|
||||
"file": ".github/workflows/ci.yml",
|
||||
"line": 379,
|
||||
"before": "# cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features \"foundationdb s3 redis nats enterprise\"",
|
||||
"after": "# cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features \"foundationdb s3 redis nats\""
|
||||
},
|
||||
{
|
||||
"file": ".github/workflows/ci.yml",
|
||||
"line": 386,
|
||||
"before": "cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats enterprise\"",
|
||||
"after": "cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats\""
|
||||
},
|
||||
{
|
||||
"file": ".github/workflows/ci.yml",
|
||||
"line": 442,
|
||||
"before": "cargo build --release -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats enterprise\"",
|
||||
"after": "cargo build --release -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats\""
|
||||
},
|
||||
{
|
||||
"file": "Dockerfile",
|
||||
"line": 22,
|
||||
"before": "RUN RUSTFLAGS=\"$(cat /flags.txt)\" cargo chef cook --target \"$(cat /target.txt)\" --release --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats enterprise\" --recipe-path /recipe.json",
|
||||
"after": "RUN RUSTFLAGS=\"$(cat /flags.txt)\" cargo chef cook --target \"$(cat /target.txt)\" --release --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats\" --recipe-path /recipe.json"
|
||||
},
|
||||
{
|
||||
"file": "Dockerfile",
|
||||
"line": 24,
|
||||
"before": "RUN RUSTFLAGS=\"$(cat /flags.txt)\" cargo build --target \"$(cat /target.txt)\" --release -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats enterprise\"",
|
||||
"after": "RUN RUSTFLAGS=\"$(cat /flags.txt)\" cargo build --target \"$(cat /target.txt)\" --release -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats\""
|
||||
},
|
||||
{
|
||||
"file": "Dockerfile.build",
|
||||
"line": 111,
|
||||
"before": "RUSTFLAGS=\"-L /usr/lib\" cargo chef cook --recipe-path recipe.json --zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features \"foundationdb s3 redis nats enterprise\"; \\",
|
||||
"after": "RUSTFLAGS=\"-L /usr/lib\" cargo chef cook --recipe-path recipe.json --zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features \"foundationdb s3 redis nats\"; \\"
|
||||
},
|
||||
{
|
||||
"file": "Dockerfile.build",
|
||||
"line": 119,
|
||||
"before": "cargo chef cook --recipe-path recipe.json --zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats enterprise\"",
|
||||
"after": "cargo chef cook --recipe-path recipe.json --zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats\""
|
||||
},
|
||||
{
|
||||
"file": "Dockerfile.build",
|
||||
"line": 132,
|
||||
"before": "RUSTFLAGS=\"-L /usr/lib\" cargo zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features \"foundationdb s3 redis nats enterprise\" && \\",
|
||||
"after": "RUSTFLAGS=\"-L /usr/lib\" cargo zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features \"foundationdb s3 redis nats\" && \\"
|
||||
},
|
||||
{
|
||||
"file": "Dockerfile.build",
|
||||
"line": 142,
|
||||
"before": "cargo zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats enterprise\" && \\",
|
||||
"after": "cargo zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features \"sqlite postgres mysql rocks s3 redis azure nats\" && \\"
|
||||
},
|
||||
{
|
||||
"file": "Dockerfile.fdb",
|
||||
"line": 56,
|
||||
"before": "RUN cargo build -p stalwart --no-default-features --features \"foundationdb s3 redis azure nats enterprise\" --release",
|
||||
"after": "RUN cargo build -p stalwart --no-default-features --features \"foundationdb s3 redis azure nats\" --release"
|
||||
}
|
||||
],
|
||||
"dangling_mods": [
|
||||
{
|
||||
"file": "crates/common/src/telemetry/metrics/mod.rs",
|
||||
"line": 12,
|
||||
"module": "test_data",
|
||||
"lines": [
|
||||
"#[cfg(any(feature = \"dev_mode\", feature = \"test_mode\"))]",
|
||||
"pub mod test_data;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "tests/src/directory/mod.rs",
|
||||
"line": 11,
|
||||
"module": "oidc",
|
||||
"lines": [
|
||||
"pub mod oidc;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "tests/src/lib.rs",
|
||||
"line": 27,
|
||||
"module": "scim",
|
||||
"lines": [
|
||||
"#[cfg(test)]",
|
||||
"pub mod scim;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "tests/src/system/mod.rs",
|
||||
"line": 8,
|
||||
"module": "archiving",
|
||||
"lines": [
|
||||
"pub mod archiving;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "tests/src/system/mod.rs",
|
||||
"line": 19,
|
||||
"module": "tenant",
|
||||
"lines": [
|
||||
"pub mod tenant;"
|
||||
]
|
||||
}
|
||||
],
|
||||
"problems": [
|
||||
"tests/src/directory/issuer.rs:8: does not compile: unresolved import `crate::directory::oidc`",
|
||||
"tests/src/directory/issuer.rs:67: does not compile: the size for values of type `str` cannot be known at compilation time",
|
||||
"tests/src/directory/issuer.rs:74: does not compile: the size for values of type `str` cannot be known at compilation time"
|
||||
],
|
||||
"feature_gates": {
|
||||
"crates/common/src/cache/reload.rs": 1,
|
||||
"crates/common/src/manager/boot.rs": 1,
|
||||
"crates/common/src/storage/mod.rs": 1,
|
||||
"crates/common/src/storage/quota.rs": 1,
|
||||
"crates/common/src/telemetry/metrics/prometheus.rs": 1,
|
||||
"crates/http/src/api/mod.rs": 1,
|
||||
"crates/http/src/auth/permissions.rs": 1,
|
||||
"crates/jmap/src/registry/get.rs": 1,
|
||||
"crates/jmap/src/registry/mapping/principal.rs": 2,
|
||||
"crates/jmap/src/registry/mapping/queued_message.rs": 1,
|
||||
"crates/jmap/src/registry/mapping/task.rs": 1,
|
||||
"crates/jmap/src/registry/set.rs": 1,
|
||||
"crates/services/src/task_manager/alarm.rs": 1,
|
||||
"crates/services/src/task_manager/imip.rs": 1,
|
||||
"crates/services/src/task_manager/index.rs": 1,
|
||||
"crates/services/src/task_manager/maintenance.rs": 1,
|
||||
"crates/services/src/task_manager/scheduler.rs": 1,
|
||||
"crates/store/src/lib.rs": 1
|
||||
},
|
||||
"edition_checks": {},
|
||||
"schema": {
|
||||
"objects": [
|
||||
"x:AiModel",
|
||||
"x:Alert",
|
||||
"x:ArchivedItem",
|
||||
"x:MaskedEmail",
|
||||
"x:MetricsStore",
|
||||
"x:SpamLlm",
|
||||
"x:Tenant",
|
||||
"x:Trace",
|
||||
"x:TracingStore"
|
||||
],
|
||||
"fields": [
|
||||
"x:AcmeProvider.memberTenantId",
|
||||
"x:ArfExternalReport.memberTenantId",
|
||||
"x:Authentication.defaultTenantRoleIds",
|
||||
"x:CalendarAlarm.template",
|
||||
"x:CalendarScheduling.emailTemplate",
|
||||
"x:CalendarScheduling.httpRsvpTemplate",
|
||||
"x:DataRetention.archiveDeletedAccountsFor",
|
||||
"x:DataRetention.archiveDeletedItemsFor",
|
||||
"x:DataRetention.holdMetricsFor",
|
||||
"x:DataRetention.holdTracesFor",
|
||||
"x:DataRetention.metricsCollectionInterval",
|
||||
"x:Dkim1Signature.memberTenantId",
|
||||
"x:Dkim2Signature.memberTenantId",
|
||||
"x:DmarcExternalReport.memberTenantId",
|
||||
"x:Domain.allowScimProvisioning",
|
||||
"x:Domain.directoryId",
|
||||
"x:Domain.logo",
|
||||
"x:Domain.memberTenantId",
|
||||
"x:Email.maxMaskedAddresses",
|
||||
"x:Enterprise.logoUrl",
|
||||
"x:GroupAccount.externalId",
|
||||
"x:LdapDirectory.memberTenantId",
|
||||
"x:MySqlStore.readReplicas",
|
||||
"x:OidcDirectory.memberTenantId",
|
||||
"x:PostgreSqlStore.readReplicas",
|
||||
"x:Search.indexTelemetry",
|
||||
"x:Search.indexTracingFields",
|
||||
"x:SqlDirectory.memberTenantId",
|
||||
"x:TlsExternalReport.memberTenantId",
|
||||
"x:UserAccount.externalId"
|
||||
]
|
||||
},
|
||||
"third_party": {
|
||||
"crates/common/src/network/acme/directory.rs": [
|
||||
{
|
||||
"line": 7,
|
||||
"text": "Adapted from rustls-acme (https://github.com/FlorianUekermann/rustls-acme), licensed under MIT/Apache-2.0."
|
||||
}
|
||||
],
|
||||
"crates/common/src/network/acme/jose.rs": [
|
||||
{
|
||||
"line": 7,
|
||||
"text": "Adapted from rustls-acme (https://github.com/FlorianUekermann/rustls-acme), licensed under MIT/Apache-2.0."
|
||||
}
|
||||
],
|
||||
"crates/common/src/network/acme/order.rs": [
|
||||
{
|
||||
"line": 7,
|
||||
"text": "Adapted from rustls-acme (https://github.com/FlorianUekermann/rustls-acme), licensed under MIT/Apache-2.0."
|
||||
}
|
||||
],
|
||||
"crates/common/src/scripts/functions/text.rs": [
|
||||
{
|
||||
"line": 239,
|
||||
"text": "MIT licensed."
|
||||
},
|
||||
{
|
||||
"line": 241,
|
||||
"text": "Copyright (c) 2016 Titus Wormer <[email protected]>"
|
||||
}
|
||||
],
|
||||
"crates/common/src/telemetry/tracers/journald.rs": [
|
||||
{
|
||||
"line": 70,
|
||||
"text": "SPDX-FileCopyrightText: 2018 Benjamin Saunders <[email protected]>"
|
||||
},
|
||||
{
|
||||
"line": 71,
|
||||
"text": "SPDX-License-Identifier: MIT"
|
||||
}
|
||||
],
|
||||
"crates/imap-proto/src/utf7.rs": [
|
||||
{
|
||||
"line": 7,
|
||||
"text": "Ported from https://github.com/jstedfast/MailKit/blob/master/MailKit/Net/Imap/ImapEncoding.cs"
|
||||
}
|
||||
],
|
||||
"crates/jmap/src/registry/mapping/log.rs": [
|
||||
{
|
||||
"line": 341,
|
||||
"text": "SPDX-FileCopyrightText: 2017 Michael Coyne <[email protected]>"
|
||||
},
|
||||
{
|
||||
"line": 343,
|
||||
"text": "SPDX-License-Identifier: MIT"
|
||||
},
|
||||
{
|
||||
"line": 346,
|
||||
"text": "Adapted from https://github.com/mjc-gh/rev_lines/blob/main/src/lib.rs"
|
||||
}
|
||||
],
|
||||
"crates/jmap-proto/src/types/date.rs": [
|
||||
{
|
||||
"line": 121,
|
||||
"text": "Ported from http://howardhinnant.github.io/date_algorithms.html#civil_from_days"
|
||||
},
|
||||
{
|
||||
"line": 158,
|
||||
"text": "Ported from https://github.com/protocolbuffers/upb/blob/22182e6e/upb/json_decode.c#L982-L992"
|
||||
}
|
||||
],
|
||||
"crates/nlp/src/tokenizers/japanese.rs": [
|
||||
{
|
||||
"line": 73,
|
||||
"text": "Ported from https://github.com/woxtu/rust-tinysegmenter, MIT license"
|
||||
}
|
||||
],
|
||||
"crates/nlp/src/tokenizers/types.rs": [
|
||||
{
|
||||
"line": 738,
|
||||
"text": "Credits: test suite from linkify crate"
|
||||
}
|
||||
],
|
||||
"crates/registry/src/types/datetime.rs": [
|
||||
{
|
||||
"line": 150,
|
||||
"text": "Ported from http://howardhinnant.github.io/date_algorithms.html#civil_from_days"
|
||||
},
|
||||
{
|
||||
"line": 188,
|
||||
"text": "Ported from https://github.com/protocolbuffers/upb/blob/22182e6e/upb/json_decode.c#L982-L992"
|
||||
}
|
||||
],
|
||||
"crates/store/src/backend/postgres/tls.rs": [
|
||||
{
|
||||
"line": 7,
|
||||
"text": "Credits: https://github.com/jbg/tokio-postgres-rustls"
|
||||
}
|
||||
],
|
||||
"crates/types/src/id.rs": [
|
||||
{
|
||||
"line": 69,
|
||||
"text": "From https://github.com/archer884/crockford by J/A <[email protected]>"
|
||||
},
|
||||
{
|
||||
"line": 70,
|
||||
"text": "License: MIT/Apache 2.0"
|
||||
}
|
||||
],
|
||||
"crates/utils/src/glob.rs": [
|
||||
{
|
||||
"line": 107,
|
||||
"text": "Credits: Algorithm ported from https://research.swtch.com/glob"
|
||||
}
|
||||
]
|
||||
},
|
||||
"third_party_unlisted": [],
|
||||
"renames": {
|
||||
"\"URL to download spam filter rules from\" \u2192 \"URL to download spam filter rules from. Empty uses the rules bundled with the server.\"": {
|
||||
"resources/schema/schema.json.gz": 1
|
||||
},
|
||||
"\"spamFilterRulesUrl\":\"https://github.com/stalwartlabs/spam-filter/releases/latest/download/spam-filter-rules.json.gz\", \u2192 ": {
|
||||
"resources/schema/schema.json.gz": 1
|
||||
},
|
||||
"\"stalwart\" \u2192 \"inbuxa\"": {
|
||||
"resources/schema/schema.json.gz": 15
|
||||
},
|
||||
"\"stalwart\".to_string() \u2192 \"inbuxa\".to_string()": {
|
||||
"crates/jmap/src/registry/mapping/bootstrap.rs": 1,
|
||||
"crates/registry/src/schema/structs_impl.rs": 12
|
||||
},
|
||||
"STALWART_SPAM_ \u2192 INBUXA_SPAM_": {
|
||||
"crates/common/src/manager/mod.rs": 2
|
||||
},
|
||||
"spam_filter_rules_url: Some(\"https://github.com/stalwartlabs/spam-filter/releases/latest/download/spam-filter-rules.json.gz\".to_string()), \u2192 spam_filter_rules_url: None,": {
|
||||
"crates/registry/src/schema/structs_impl.rs": 1
|
||||
},
|
||||
"stalwart-webui \u2192 inbuxa-webui": {
|
||||
"crates/common/src/manager/application.rs": 3
|
||||
},
|
||||
"urn:stalwart: \u2192 urn:inbuxa:": {
|
||||
"crates/dav/src/common/lock.rs": 1,
|
||||
"crates/dav/src/common/uri.rs": 5,
|
||||
"tests/src/webdav/lock.rs": 2
|
||||
},
|
||||
"urn:stalwart:jmap \u2192 urn:inbuxa:jmap:registry": {
|
||||
"crates/jmap-proto/src/request/capability.rs": 3,
|
||||
"tests/resources/scripts/stress_test_prepare.py": 1,
|
||||
"tests/src/jmap/principal/get.rs": 2,
|
||||
"tests/src/utils/jmap.rs": 1
|
||||
},
|
||||
"vnd.stalwart \u2192 vnd.inbuxa": {
|
||||
"resources/schema/schema.json.gz": 2
|
||||
},
|
||||
"vnd.stalwart. \u2192 vnd.inbuxa.": {
|
||||
"crates/registry/src/schema/enums_impl.rs": 4,
|
||||
"tests/resources/jmap/sieve/test_mailbox.sieve": 1,
|
||||
"tests/resources/smtp/sieve/awl.sieve": 1,
|
||||
"tests/resources/smtp/sieve/awl_include.sieve": 1,
|
||||
"tests/resources/smtp/sieve/stage_mail.sieve": 1,
|
||||
"tests/resources/smtp/sieve/stage_rcpt.sieve": 1
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"errors": [
|
||||
{
|
||||
"file": "tests/src/directory/issuer.rs",
|
||||
"line": 8,
|
||||
"message": "unresolved import `crate::directory::oidc`"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/directory/issuer.rs",
|
||||
"line": 67,
|
||||
"message": "the size for values of type `str` cannot be known at compilation time"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/directory/issuer.rs",
|
||||
"line": 74,
|
||||
"message": "the size for values of type `str` cannot be known at compilation time"
|
||||
}
|
||||
],
|
||||
"expected": [
|
||||
{
|
||||
"file": "tests/src/directory/mod.rs",
|
||||
"line": 19,
|
||||
"message": "cannot find module or crate `oidc` in this scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/smtp/inbound/antispam.rs",
|
||||
"line": 17,
|
||||
"message": "cannot find `enterprise` in `common`"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/smtp/inbound/antispam.rs",
|
||||
"line": 49,
|
||||
"message": "unresolved import `spam_filter::analysis::llm`"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/smtp/inbound/antispam.rs",
|
||||
"line": 661,
|
||||
"message": "no method named `spam_filter_analyze_llm` found for reference `&common::Server` in the current scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/system/mod.rs",
|
||||
"line": 63,
|
||||
"message": "cannot find module or crate `tenant` in this scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/system/mod.rs",
|
||||
"line": 70,
|
||||
"message": "cannot find module or crate `archiving` in this scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/alerts.rs",
|
||||
"line": 89,
|
||||
"message": "no method named `process_alerts` found for struct `common::Server` in the current scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/metrics.rs",
|
||||
"line": 8,
|
||||
"message": "unresolved import `common::telemetry::metrics::store`"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/metrics.rs",
|
||||
"line": 33,
|
||||
"message": "no method named `insert_test_metrics` found for struct `common::Server` in the current scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/metrics.rs",
|
||||
"line": 190,
|
||||
"message": "no method named `purge_metrics` found for reference `&store::Store` in the current scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/tracing.rs",
|
||||
"line": 8,
|
||||
"message": "unresolved import `common::telemetry::tracers::store`"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/tracing.rs",
|
||||
"line": 35,
|
||||
"message": "no method named `purge_spans` found for reference `&store::Store` in the current scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/tracing.rs",
|
||||
"line": 89,
|
||||
"message": "no method named `purge_spans` found for reference `&store::Store` in the current scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/tracing.rs",
|
||||
"line": 152,
|
||||
"message": "no method named `purge_spans` found for reference `&store::Store` in the current scope"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/webhooks.rs",
|
||||
"line": 11,
|
||||
"message": "unresolved import `common::telemetry::tracers::store`"
|
||||
},
|
||||
{
|
||||
"file": "tests/src/telemetry/webhooks.rs",
|
||||
"line": 123,
|
||||
"message": "no method named `purge_spans` found for reference `&store::Store` in the current scope"
|
||||
}
|
||||
],
|
||||
"unused": [
|
||||
{
|
||||
"file": "crates/common/src/cache/invalidate.rs",
|
||||
"line": 20,
|
||||
"message": "unused imports: `registry::RegistryQuery` and `roaring::RoaringBitmap`"
|
||||
},
|
||||
{
|
||||
"file": "crates/common/src/cache/principals.rs",
|
||||
"line": 31,
|
||||
"message": "unused import: `MaskedEmail`"
|
||||
},
|
||||
{
|
||||
"file": "crates/common/src/cache/principals.rs",
|
||||
"line": 41,
|
||||
"message": "unused import: `now`"
|
||||
},
|
||||
{
|
||||
"file": "crates/common/src/network/mta.rs",
|
||||
"line": 27,
|
||||
"message": "unused import: `structs::MaskedEmail`"
|
||||
},
|
||||
{
|
||||
"file": "crates/common/src/network/mta.rs",
|
||||
"line": 36,
|
||||
"message": "unused import: `now`"
|
||||
},
|
||||
{
|
||||
"file": "crates/common/src/network/mta.rs",
|
||||
"line": 39,
|
||||
"message": "unused import: `types::id::Id`"
|
||||
},
|
||||
{
|
||||
"file": "crates/common/src/scripts/plugins/llm_prompt.rs",
|
||||
"line": 7,
|
||||
"message": "unused import: `compiler::Number`"
|
||||
},
|
||||
{
|
||||
"file": "crates/common/src/scripts/plugins/llm_prompt.rs",
|
||||
"line": 8,
|
||||
"message": "unused import: `std::time::Instant`"
|
||||
},
|
||||
{
|
||||
"file": "crates/common/src/scripts/plugins/llm_prompt.rs",
|
||||
"line": 9,
|
||||
"message": "unused imports: `AiEvent` and `SecurityEvent`"
|
||||
},
|
||||
{
|
||||
"file": "crates/jmap/src/registry/mapping/principal.rs",
|
||||
"line": 24,
|
||||
"message": "unused imports: `RegistryObjectCounter` and `RegistryQuery`"
|
||||
},
|
||||
{
|
||||
"file": "crates/jmap/src/registry/mapping/queued_message.rs",
|
||||
"line": 25,
|
||||
"message": "unused import: `ObjectType`"
|
||||
},
|
||||
{
|
||||
"file": "crates/jmap/src/registry/mapping/queued_message.rs",
|
||||
"line": 43,
|
||||
"message": "unused import: `RegistryQuery`"
|
||||
},
|
||||
{
|
||||
"file": "crates/services/src/task_manager/index.rs",
|
||||
"line": 14,
|
||||
"message": "unused imports: `ObjectType` and `Property`"
|
||||
},
|
||||
{
|
||||
"file": "crates/services/src/task_manager/index.rs",
|
||||
"line": 32,
|
||||
"message": "unused import: `blob_hash::BlobHash`"
|
||||
}
|
||||
],
|
||||
"known_clean": []
|
||||
},
|
||||
"ossify_log": "$ ossify.py crates\nProcessing Rust files in: ../inbuxa-import-work/strip-v0.16.24/tree/crates\n\nFound 958 Rust files\n\n\nSummary:\n- 50 files were completely removed\n- 2 crate roots were emptied\n- 118 proprietary snippets were removed from 50 files\n\n$ ossify.py tests\nProcessing Rust files in: ../inbuxa-import-work/strip-v0.16.24/tree/tests\n\nFound 212 Rust files\n\n\nSummary:\n- 11 files were completely removed\n- 0 crate roots were emptied\n- 0 proprietary snippets were removed from 0 files\n"
|
||||
}
|
||||
@@ -0,0 +1,274 @@
|
||||
# Strip report: upstream v0.16.24 (af37a2349817)
|
||||
|
||||
- Enterprise-only files removed or emptied: **63**
|
||||
- Enterprise-only snippets removed: **118** in 50 files
|
||||
- Cargo edits turning `enterprise` off: **25**
|
||||
- Dangling module declarations removed: **5**
|
||||
- Verification: **3 problems**
|
||||
- Left for the rebuilt features to replace: 19 `enterprise` feature gates in 18 files; 0 `is_enterprise_edition()` checks in 0 files
|
||||
- Third-party code: 14 files, **0** not in THIRD-PARTY.md
|
||||
- Renamed identifiers: 62 in 18 files
|
||||
- Build check: **3 errors**, 16 expected errors in 7 rebuilt-feature tests, 14 imports left unused
|
||||
- Upstream schema flags 9 objects and 30 fields as Enterprise
|
||||
|
||||
## Removed files
|
||||
|
||||
- `crates/common/src/enterprise/alerts.rs`
|
||||
- `crates/common/src/enterprise/config.rs`
|
||||
- `crates/common/src/enterprise/license.rs`
|
||||
- `crates/common/src/enterprise/llm.rs`
|
||||
- `crates/common/src/enterprise/masked.rs`
|
||||
- `crates/common/src/enterprise/mod.rs`
|
||||
- `crates/common/src/telemetry/metrics/store.rs`
|
||||
- `crates/common/src/telemetry/metrics/test_data.rs`
|
||||
- `crates/common/src/telemetry/tracers/store.rs`
|
||||
- `crates/http/src/api/telemetry.rs`
|
||||
- `crates/jmap/src/registry/mapping/archived_item.rs`
|
||||
- `crates/jmap/src/registry/mapping/masked_email.rs`
|
||||
- `crates/jmap/src/registry/mapping/telemetry.rs`
|
||||
- `crates/scim-proto/src/attributes.rs`
|
||||
- `crates/scim-proto/src/etag.rs`
|
||||
- `crates/scim-proto/src/filter.rs`
|
||||
- `crates/scim-proto/src/json.rs`
|
||||
- `crates/scim-proto/src/lib.rs`
|
||||
- `crates/scim-proto/src/message/bulk.rs`
|
||||
- `crates/scim-proto/src/message/error.rs`
|
||||
- `crates/scim-proto/src/message/list.rs`
|
||||
- `crates/scim-proto/src/message/mod.rs`
|
||||
- `crates/scim-proto/src/message/patch.rs`
|
||||
- `crates/scim-proto/src/message/search.rs`
|
||||
- `crates/scim-proto/src/path.rs`
|
||||
- `crates/scim-proto/src/schema/group.rs`
|
||||
- `crates/scim-proto/src/schema/mod.rs`
|
||||
- `crates/scim-proto/src/schema/spc.rs`
|
||||
- `crates/scim-proto/src/schema/user.rs`
|
||||
- `crates/scim/src/auth.rs`
|
||||
- `crates/scim/src/bulk.rs`
|
||||
- `crates/scim/src/context.rs`
|
||||
- `crates/scim/src/discovery.rs`
|
||||
- `crates/scim/src/error.rs`
|
||||
- `crates/scim/src/groups/get.rs`
|
||||
- `crates/scim/src/groups/mod.rs`
|
||||
- `crates/scim/src/groups/patch.rs`
|
||||
- `crates/scim/src/groups/set.rs`
|
||||
- `crates/scim/src/lib.rs`
|
||||
- `crates/scim/src/query/cursor.rs`
|
||||
- `crates/scim/src/query/mod.rs`
|
||||
- `crates/scim/src/request.rs`
|
||||
- `crates/scim/src/users/get.rs`
|
||||
- `crates/scim/src/users/mod.rs`
|
||||
- `crates/scim/src/users/patch.rs`
|
||||
- `crates/scim/src/users/set.rs`
|
||||
- `crates/spam-filter/src/analysis/llm.rs`
|
||||
- `crates/store/src/backend/composite/mod.rs`
|
||||
- `crates/store/src/backend/composite/read_replica.rs`
|
||||
- `crates/store/src/backend/composite/sharded_blob.rs`
|
||||
- `crates/store/src/backend/composite/sharded_lookup.rs`
|
||||
- `crates/trc/src/serializers/binary.rs`
|
||||
- `tests/src/directory/oidc.rs`
|
||||
- `tests/src/scim/auth.rs`
|
||||
- `tests/src/scim/bulk.rs`
|
||||
- `tests/src/scim/discovery.rs`
|
||||
- `tests/src/scim/groups.rs`
|
||||
- `tests/src/scim/limits.rs`
|
||||
- `tests/src/scim/mod.rs`
|
||||
- `tests/src/scim/query.rs`
|
||||
- `tests/src/scim/users.rs`
|
||||
- `tests/src/system/archiving.rs`
|
||||
- `tests/src/system/tenant.rs`
|
||||
|
||||
## Removed snippets
|
||||
|
||||
- `crates/common/src/auth/authentication.rs`: 3
|
||||
- `crates/common/src/auth/mod.rs`: 2
|
||||
- `crates/common/src/auth/permissions.rs`: 1
|
||||
- `crates/common/src/cache/directory.rs`: 6
|
||||
- `crates/common/src/cache/invalidate.rs`: 1
|
||||
- `crates/common/src/cache/principals.rs`: 2
|
||||
- `crates/common/src/cache/reload.rs`: 1
|
||||
- `crates/common/src/config/mod.rs`: 2
|
||||
- `crates/common/src/config/telemetry.rs`: 4
|
||||
- `crates/common/src/lib.rs`: 2
|
||||
- `crates/common/src/manager/boot.rs`: 1
|
||||
- `crates/common/src/network/mta.rs`: 1
|
||||
- `crates/common/src/scripts/plugins/llm_prompt.rs`: 1
|
||||
- `crates/common/src/storage/quota.rs`: 2
|
||||
- `crates/common/src/telemetry/metrics/mod.rs`: 1
|
||||
- `crates/common/src/telemetry/metrics/prometheus.rs`: 1
|
||||
- `crates/common/src/telemetry/mod.rs`: 1
|
||||
- `crates/common/src/telemetry/tracers/mod.rs`: 1
|
||||
- `crates/http/src/api/mod.rs`: 4
|
||||
- `crates/http/src/auth/permissions.rs`: 1
|
||||
- `crates/http/src/request.rs`: 4
|
||||
- `crates/jmap/src/registry/get.rs`: 1
|
||||
- `crates/jmap/src/registry/mapping/mod.rs`: 1
|
||||
- `crates/jmap/src/registry/mapping/principal.rs`: 3
|
||||
- `crates/jmap/src/registry/mapping/queued_message.rs`: 1
|
||||
- `crates/jmap/src/registry/mapping/task.rs`: 1
|
||||
- `crates/jmap/src/registry/mod.rs`: 1
|
||||
- `crates/jmap/src/registry/query.rs`: 1
|
||||
- `crates/jmap/src/registry/set.rs`: 2
|
||||
- `crates/main/src/main.rs`: 1
|
||||
- `crates/services/src/task_manager/alarm.rs`: 1
|
||||
- `crates/services/src/task_manager/imip.rs`: 1
|
||||
- `crates/services/src/task_manager/index.rs`: 2
|
||||
- `crates/services/src/task_manager/maintenance.rs`: 3
|
||||
- `crates/services/src/task_manager/scheduler.rs`: 8
|
||||
- `crates/spam-filter/src/analysis/mod.rs`: 1
|
||||
- `crates/spam-filter/src/analysis/score.rs`: 2
|
||||
- `crates/store/src/backend/mod.rs`: 1
|
||||
- `crates/store/src/backend/mysql/main.rs`: 1
|
||||
- `crates/store/src/backend/postgres/main.rs`: 1
|
||||
- `crates/store/src/build/blob.rs`: 2
|
||||
- `crates/store/src/build/lookup.rs`: 1
|
||||
- `crates/store/src/build/memory.rs`: 2
|
||||
- `crates/store/src/dispatch/blob.rs`: 6
|
||||
- `crates/store/src/dispatch/lookup.rs`: 10
|
||||
- `crates/store/src/dispatch/mod.rs`: 1
|
||||
- `crates/store/src/dispatch/search.rs`: 6
|
||||
- `crates/store/src/dispatch/store.rs`: 8
|
||||
- `crates/store/src/lib.rs`: 6
|
||||
- `crates/trc/src/serializers/mod.rs`: 1
|
||||
|
||||
## Dangling module declarations removed
|
||||
|
||||
- `crates/common/src/telemetry/metrics/mod.rs:12`: `mod test_data` (#[cfg(any(feature = "dev_mode", feature = "test_mode"))] / pub mod test_data;)
|
||||
- `tests/src/directory/mod.rs:11`: `mod oidc` (pub mod oidc;)
|
||||
- `tests/src/lib.rs:27`: `mod scim` (#[cfg(test)] / pub mod scim;)
|
||||
- `tests/src/system/mod.rs:8`: `mod archiving` (pub mod archiving;)
|
||||
- `tests/src/system/mod.rs:19`: `mod tenant` (pub mod tenant;)
|
||||
|
||||
## Cargo edits
|
||||
|
||||
- `crates/main/Cargo.toml:50`: `default = ["rocks", "enterprise"]` → `default = ["rocks"]`
|
||||
- `tests/Cargo.toml:22`: `store = { path = "../crates/store", features = ["test_mode", "enterprise"] }` → `store = { path = "../crates/store", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:24`: `directory = { path = "../crates/directory", features = ["test_mode", "enterprise"] }` → `directory = { path = "../crates/directory", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:25`: `coordinator = { path = "../crates/coordinator", features = ["test_mode", "enterprise"] }` → `coordinator = { path = "../crates/coordinator", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:26`: `jmap = { path = "../crates/jmap", features = ["test_mode", "enterprise"] }` → `jmap = { path = "../crates/jmap", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:35`: `http = { path = "../crates/http", features = ["test_mode", "enterprise"] }` → `http = { path = "../crates/http", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:37`: `scim = { path = "../crates/scim", features = ["test_mode", "enterprise"] }` → `scim = { path = "../crates/scim", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:39`: `services = { path = "../crates/services", features = ["test_mode", "enterprise"] }` → `services = { path = "../crates/services", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:41`: `smtp = { path = "../crates/smtp", features = ["test_mode", "enterprise"] }` → `smtp = { path = "../crates/smtp", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:42`: `common = { path = "../crates/common", features = ["test_mode", "enterprise"] }` → `common = { path = "../crates/common", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:44`: `email = { path = "../crates/email", features = ["test_mode", "enterprise"] }` → `email = { path = "../crates/email", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:45`: `spam-filter = { path = "../crates/spam-filter", features = ["test_mode", "enterprise"] }` → `spam-filter = { path = "../crates/spam-filter", features = ["test_mode"] }`
|
||||
- `tests/Cargo.toml:46`: `trc = { path = "../crates/trc", features = ["enterprise"] }` → `trc = { path = "../crates/trc", features = [] }`
|
||||
- `tests/Cargo.toml:47`: `managesieve = { path = "../crates/managesieve", features = ["test_mode", "enterprise"] }` → `managesieve = { path = "../crates/managesieve", features = ["test_mode"] }`
|
||||
- `.github/workflows/ci.yml:341`: `cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats enterprise"` → `cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats"`
|
||||
- `.github/workflows/ci.yml:379`: `# cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features "foundationdb s3 redis nats enterprise"` → `# cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features "foundationdb s3 redis nats"`
|
||||
- `.github/workflows/ci.yml:386`: `cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats enterprise"` → `cargo build --release --target ${{matrix.target}} -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats"`
|
||||
- `.github/workflows/ci.yml:442`: `cargo build --release -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats enterprise"` → `cargo build --release -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats"`
|
||||
- `Dockerfile:22`: `RUN RUSTFLAGS="$(cat /flags.txt)" cargo chef cook --target "$(cat /target.txt)" --release --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats enterprise" --recipe-path /recipe.json` → `RUN RUSTFLAGS="$(cat /flags.txt)" cargo chef cook --target "$(cat /target.txt)" --release --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats" --recipe-path /recipe.json`
|
||||
- `Dockerfile:24`: `RUN RUSTFLAGS="$(cat /flags.txt)" cargo build --target "$(cat /target.txt)" --release -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats enterprise"` → `RUN RUSTFLAGS="$(cat /flags.txt)" cargo build --target "$(cat /target.txt)" --release -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats"`
|
||||
- `Dockerfile.build:111`: `RUSTFLAGS="-L /usr/lib" cargo chef cook --recipe-path recipe.json --zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features "foundationdb s3 redis nats enterprise"; \` → `RUSTFLAGS="-L /usr/lib" cargo chef cook --recipe-path recipe.json --zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features "foundationdb s3 redis nats"; \`
|
||||
- `Dockerfile.build:119`: `cargo chef cook --recipe-path recipe.json --zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats enterprise"` → `cargo chef cook --recipe-path recipe.json --zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats"`
|
||||
- `Dockerfile.build:132`: `RUSTFLAGS="-L /usr/lib" cargo zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features "foundationdb s3 redis nats enterprise" && \` → `RUSTFLAGS="-L /usr/lib" cargo zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features "foundationdb s3 redis nats" && \`
|
||||
- `Dockerfile.build:142`: `cargo zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats enterprise" && \` → `cargo zigbuild --release --target ${TARGET} -p stalwart --no-default-features --features "sqlite postgres mysql rocks s3 redis azure nats" && \`
|
||||
- `Dockerfile.fdb:56`: `RUN cargo build -p stalwart --no-default-features --features "foundationdb s3 redis azure nats enterprise" --release` → `RUN cargo build -p stalwart --no-default-features --features "foundationdb s3 redis azure nats" --release`
|
||||
|
||||
## Flagged Enterprise in upstream's schema
|
||||
|
||||
**Objects:** `x:AiModel`, `x:Alert`, `x:ArchivedItem`, `x:MaskedEmail`, `x:MetricsStore`, `x:SpamLlm`, `x:Tenant`, `x:Trace`, `x:TracingStore`
|
||||
|
||||
**Fields:** `x:AcmeProvider.memberTenantId`, `x:ArfExternalReport.memberTenantId`, `x:Authentication.defaultTenantRoleIds`, `x:CalendarAlarm.template`, `x:CalendarScheduling.emailTemplate`, `x:CalendarScheduling.httpRsvpTemplate`, `x:DataRetention.archiveDeletedAccountsFor`, `x:DataRetention.archiveDeletedItemsFor`, `x:DataRetention.holdMetricsFor`, `x:DataRetention.holdTracesFor`, `x:DataRetention.metricsCollectionInterval`, `x:Dkim1Signature.memberTenantId`, `x:Dkim2Signature.memberTenantId`, `x:DmarcExternalReport.memberTenantId`, `x:Domain.allowScimProvisioning`, `x:Domain.directoryId`, `x:Domain.logo`, `x:Domain.memberTenantId`, `x:Email.maxMaskedAddresses`, `x:Enterprise.logoUrl`, `x:GroupAccount.externalId`, `x:LdapDirectory.memberTenantId`, `x:MySqlStore.readReplicas`, `x:OidcDirectory.memberTenantId`, `x:PostgreSqlStore.readReplicas`, `x:Search.indexTelemetry`, `x:Search.indexTracingFields`, `x:SqlDirectory.memberTenantId`, `x:TlsExternalReport.memberTenantId`, `x:UserAccount.externalId`
|
||||
|
||||
## Third-party code
|
||||
|
||||
Comments in the stripped tree that name another copyright holder, another license, or a source the code came from. Files marked **new** aren't in THIRD-PARTY.md yet.
|
||||
|
||||
- `crates/common/src/network/acme/directory.rs`
|
||||
- 7: Adapted from rustls-acme (https://github.com/FlorianUekermann/rustls-acme), licensed under MIT/Apache-2.0.
|
||||
- `crates/common/src/network/acme/jose.rs`
|
||||
- 7: Adapted from rustls-acme (https://github.com/FlorianUekermann/rustls-acme), licensed under MIT/Apache-2.0.
|
||||
- `crates/common/src/network/acme/order.rs`
|
||||
- 7: Adapted from rustls-acme (https://github.com/FlorianUekermann/rustls-acme), licensed under MIT/Apache-2.0.
|
||||
- `crates/common/src/scripts/functions/text.rs`
|
||||
- 239: MIT licensed.
|
||||
- 241: Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
|
||||
- `crates/common/src/telemetry/tracers/journald.rs`
|
||||
- 70: SPDX-FileCopyrightText: 2018 Benjamin Saunders <ben.e.saunders@gmail.com>
|
||||
- 71: SPDX-License-Identifier: MIT
|
||||
- `crates/imap-proto/src/utf7.rs`
|
||||
- 7: Ported from https://github.com/jstedfast/MailKit/blob/master/MailKit/Net/Imap/ImapEncoding.cs
|
||||
- `crates/jmap/src/registry/mapping/log.rs`
|
||||
- 341: SPDX-FileCopyrightText: 2017 Michael Coyne <mjc@hey.com>
|
||||
- 343: SPDX-License-Identifier: MIT
|
||||
- 346: Adapted from https://github.com/mjc-gh/rev_lines/blob/main/src/lib.rs
|
||||
- `crates/jmap-proto/src/types/date.rs`
|
||||
- 121: Ported from http://howardhinnant.github.io/date_algorithms.html#civil_from_days
|
||||
- 158: Ported from https://github.com/protocolbuffers/upb/blob/22182e6e/upb/json_decode.c#L982-L992
|
||||
- `crates/nlp/src/tokenizers/japanese.rs`
|
||||
- 73: Ported from https://github.com/woxtu/rust-tinysegmenter, MIT license
|
||||
- `crates/nlp/src/tokenizers/types.rs`
|
||||
- 738: Credits: test suite from linkify crate
|
||||
- `crates/registry/src/types/datetime.rs`
|
||||
- 150: Ported from http://howardhinnant.github.io/date_algorithms.html#civil_from_days
|
||||
- 188: Ported from https://github.com/protocolbuffers/upb/blob/22182e6e/upb/json_decode.c#L982-L992
|
||||
- `crates/store/src/backend/postgres/tls.rs`
|
||||
- 7: Credits: https://github.com/jbg/tokio-postgres-rustls
|
||||
- `crates/types/src/id.rs`
|
||||
- 69: From https://github.com/archer884/crockford by J/A <archer884@gmail.com>
|
||||
- 70: License: MIT/Apache 2.0
|
||||
- `crates/utils/src/glob.rs`
|
||||
- 107: Credits: Algorithm ported from https://research.swtch.com/glob
|
||||
|
||||
## Renamed identifiers
|
||||
|
||||
- `"URL to download spam filter rules from" → "URL to download spam filter rules from. Empty uses the rules bundled with the server."`: `resources/schema/schema.json.gz` (1)
|
||||
- `"spamFilterRulesUrl":"https://github.com/stalwartlabs/spam-filter/releases/latest/download/spam-filter-rules.json.gz", → `: `resources/schema/schema.json.gz` (1)
|
||||
- `"stalwart" → "inbuxa"`: `resources/schema/schema.json.gz` (15)
|
||||
- `"stalwart".to_string() → "inbuxa".to_string()`: `crates/jmap/src/registry/mapping/bootstrap.rs` (1), `crates/registry/src/schema/structs_impl.rs` (12)
|
||||
- `STALWART_SPAM_ → INBUXA_SPAM_`: `crates/common/src/manager/mod.rs` (2)
|
||||
- `spam_filter_rules_url: Some("https://github.com/stalwartlabs/spam-filter/releases/latest/download/spam-filter-rules.json.gz".to_string()), → spam_filter_rules_url: None,`: `crates/registry/src/schema/structs_impl.rs` (1)
|
||||
- `stalwart-webui → inbuxa-webui`: `crates/common/src/manager/application.rs` (3)
|
||||
- `urn:stalwart: → urn:inbuxa:`: `crates/dav/src/common/lock.rs` (1), `crates/dav/src/common/uri.rs` (5), `tests/src/webdav/lock.rs` (2)
|
||||
- `urn:stalwart:jmap → urn:inbuxa:jmap:registry`: `crates/jmap-proto/src/request/capability.rs` (3), `tests/resources/scripts/stress_test_prepare.py` (1), `tests/src/jmap/principal/get.rs` (2), `tests/src/utils/jmap.rs` (1)
|
||||
- `vnd.stalwart → vnd.inbuxa`: `resources/schema/schema.json.gz` (2)
|
||||
- `vnd.stalwart. → vnd.inbuxa.`: `crates/registry/src/schema/enums_impl.rs` (4), `tests/resources/jmap/sieve/test_mailbox.sieve` (1), `tests/resources/smtp/sieve/awl.sieve` (1), `tests/resources/smtp/sieve/awl_include.sieve` (1), `tests/resources/smtp/sieve/stage_mail.sieve` (1), `tests/resources/smtp/sieve/stage_rcpt.sieve` (1)
|
||||
|
||||
## Build check
|
||||
|
||||
Errors mean shared code calls something the strip removed: usually a dual-licensed file that only serves an Enterprise feature. Drop or rework it in the merge into `main`, never on `upstream`.
|
||||
|
||||
- error `tests/src/directory/issuer.rs:8`: unresolved import `crate::directory::oidc`
|
||||
- error `tests/src/directory/issuer.rs:67`: the size for values of type `str` cannot be known at compilation time
|
||||
- error `tests/src/directory/issuer.rs:74`: the size for values of type `str` cannot be known at compilation time
|
||||
- unused `crates/common/src/cache/invalidate.rs:20`: unused imports: `registry::RegistryQuery` and `roaring::RoaringBitmap`
|
||||
- unused `crates/common/src/cache/principals.rs:31`: unused import: `MaskedEmail`
|
||||
- unused `crates/common/src/cache/principals.rs:41`: unused import: `now`
|
||||
- unused `crates/common/src/network/mta.rs:27`: unused import: `structs::MaskedEmail`
|
||||
- unused `crates/common/src/network/mta.rs:36`: unused import: `now`
|
||||
- unused `crates/common/src/network/mta.rs:39`: unused import: `types::id::Id`
|
||||
- unused `crates/common/src/scripts/plugins/llm_prompt.rs:7`: unused import: `compiler::Number`
|
||||
- unused `crates/common/src/scripts/plugins/llm_prompt.rs:8`: unused import: `std::time::Instant`
|
||||
- unused `crates/common/src/scripts/plugins/llm_prompt.rs:9`: unused imports: `AiEvent` and `SecurityEvent`
|
||||
- unused `crates/jmap/src/registry/mapping/principal.rs:24`: unused imports: `RegistryObjectCounter` and `RegistryQuery`
|
||||
- unused `crates/jmap/src/registry/mapping/queued_message.rs:25`: unused import: `ObjectType`
|
||||
- unused `crates/jmap/src/registry/mapping/queued_message.rs:43`: unused import: `RegistryQuery`
|
||||
- unused `crates/services/src/task_manager/index.rs:14`: unused imports: `ObjectType` and `Property`
|
||||
- unused `crates/services/src/task_manager/index.rs:32`: unused import: `blob_hash::BlobHash`
|
||||
|
||||
Expected: upstream's tests of features the fork rebuilt on `main` (tools/fork/build-check-known.txt).
|
||||
|
||||
- `tests/src/directory/mod.rs:19`: cannot find module or crate `oidc` in this scope
|
||||
- `tests/src/smtp/inbound/antispam.rs:17`: cannot find `enterprise` in `common`
|
||||
- `tests/src/smtp/inbound/antispam.rs:49`: unresolved import `spam_filter::analysis::llm`
|
||||
- `tests/src/smtp/inbound/antispam.rs:661`: no method named `spam_filter_analyze_llm` found for reference `&common::Server` in the current scope
|
||||
- `tests/src/system/mod.rs:63`: cannot find module or crate `tenant` in this scope
|
||||
- `tests/src/system/mod.rs:70`: cannot find module or crate `archiving` in this scope
|
||||
- `tests/src/telemetry/alerts.rs:89`: no method named `process_alerts` found for struct `common::Server` in the current scope
|
||||
- `tests/src/telemetry/metrics.rs:8`: unresolved import `common::telemetry::metrics::store`
|
||||
- `tests/src/telemetry/metrics.rs:33`: no method named `insert_test_metrics` found for struct `common::Server` in the current scope
|
||||
- `tests/src/telemetry/metrics.rs:190`: no method named `purge_metrics` found for reference `&store::Store` in the current scope
|
||||
- `tests/src/telemetry/tracing.rs:8`: unresolved import `common::telemetry::tracers::store`
|
||||
- `tests/src/telemetry/tracing.rs:35`: no method named `purge_spans` found for reference `&store::Store` in the current scope
|
||||
- `tests/src/telemetry/tracing.rs:89`: no method named `purge_spans` found for reference `&store::Store` in the current scope
|
||||
- `tests/src/telemetry/tracing.rs:152`: no method named `purge_spans` found for reference `&store::Store` in the current scope
|
||||
- `tests/src/telemetry/webhooks.rs:11`: unresolved import `common::telemetry::tracers::store`
|
||||
- `tests/src/telemetry/webhooks.rs:123`: no method named `purge_spans` found for reference `&store::Store` in the current scope
|
||||
|
||||
## Problems
|
||||
|
||||
- tests/src/directory/issuer.rs:8: does not compile: unresolved import `crate::directory::oidc`
|
||||
- tests/src/directory/issuer.rs:67: does not compile: the size for values of type `str` cannot be known at compilation time
|
||||
- tests/src/directory/issuer.rs:74: does not compile: the size for values of type `str` cannot be known at compilation time
|
||||
Reference in New Issue
Block a user