Eight conflicted files resolved, plus the lock file and the schema:
- crates/services/src/task_manager/spam_classifier.rs: upstream's rules
update now replaces existing rules, DNSBL servers, lookups and file
extensions, keeping only whether each is on. Taken, with one difference:
an object an admin edited is kept as it is. Every object an update writes
is fingerprinted (content without `enable`, SHA-256, stored under
SUBSPACE_INBUXA "Sf"), and only one that still matches is replaced.
Scores are never replaced, as upstream has it. The AU-1.10 summary record
now names what was added, replaced and kept, and the bundled rules are
marked applied only when the update fully succeeded, so a failure runs
again on the next start. The marker becomes "3.0.2+2", which runs the
update once on upgrade to fingerprint every rule still as bundled.
- crates/common/src/network/autoconfig/autodiscover.rs: upstream's rewrite
(implicit TLS first, labeled SSL), with the per-protocol switches (LP-7,
LP-14a) passed in as a filter.
- crates/store/src/backend/mysql/{search,write}.rs: upstream's chunked
deletes (no unbounded first DELETE, stop on a short chunk, halve the
chunk on the new chunk-too-large errors) inside the fork's query timeout.
- crates/smtp/src/lib.rs: the fork's queue spawn kept. It already fixed the
stall upstream fixes here (a node without outboundMta stops accepting
mail at about 1024 queued messages), and follows role changes live.
- crates/jmap/src/registry/mapping/bootstrap.rs: the log path stays
/var/log/inbuxa/; upstream's PowerDNS mapping taken.
- crates/main/Cargo.toml: the AGPL-only license kept, version 0.16.24.
- tests/src/jmap/principal/get.rs: the fork's capabilities kept.
- resources/schema/schema.json.gz: merged as JSON; upstream relabeled the
vendor Sieve extensions "(Stalwart)", kept as "(vnd.inbuxa)".
- Cargo.lock: upstream's, with the fork's crates added by Cargo.
Also:
- tests/src/smtp/inbound/spam_rules_kept.rs: an edited rule survives an
update, an unedited one is updated, rules from before fingerprints are
handled, and the audit summary says so. Upstream's own spam_rules test
passes unchanged.
- tests/src/smtp/reporting/reschedule.rs moves to port 19058; upstream's
new spam_rules test took 19057.
- tools/fork/renames.py renames the "(Stalwart)" labels and the default
log path, so neither conflicts again.
- tools/fork/notice-check.py compares against the newest snapshot in the
checked-out history instead of the upstream branch head, so moving the
branch no longer fails other open pull requests.
- tests/src/directory/issuer.rs (since v0.16.23) stays out, and is on the
build check's known list: it tests issuer-based directory routing, which
the fork doesn't have (DIR-2).
- Strip report: docs/fork/strip-reports/v0.16.24.{md,json}.
725 lines
28 KiB
JSON
725 lines
28 KiB
JSON
{
|
|
"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"
|
|
}
|