Compare commits

...

4 Commits

Author SHA1 Message Date
bbdc35061c chore: Release
All checks were successful
Continuous integration / Check (push) Successful in 38s
Continuous integration / Test Suite (push) Successful in 45s
Continuous integration / Trunk (push) Successful in 37s
Continuous integration / Rustfmt (push) Successful in 39s
Continuous integration / build (push) Successful in 52s
Continuous integration / Disallow unused dependencies (push) Successful in 2m9s
2025-04-23 15:25:34 -07:00
f11f0b4d23 server: migrate all use of log to tracing 2025-04-23 15:25:11 -07:00
c7c47e4a73 chore: Release
All checks were successful
Continuous integration / Check (push) Successful in 38s
Continuous integration / Test Suite (push) Successful in 44s
Continuous integration / Trunk (push) Successful in 38s
Continuous integration / Rustfmt (push) Successful in 39s
Continuous integration / build (push) Successful in 51s
Continuous integration / Disallow unused dependencies (push) Successful in 2m5s
2025-04-23 14:57:39 -07:00
c3835522b2 server: add Letterbox/Bad label to unparsable emails, and consider them processed 2025-04-23 14:57:13 -07:00
8 changed files with 27 additions and 22 deletions

17
Cargo.lock generated
View File

@@ -3034,7 +3034,7 @@ dependencies = [
[[package]]
name = "letterbox-notmuch"
version = "0.17.17"
version = "0.17.19"
dependencies = [
"itertools",
"log",
@@ -3049,7 +3049,7 @@ dependencies = [
[[package]]
name = "letterbox-procmail2notmuch"
version = "0.17.17"
version = "0.17.19"
dependencies = [
"anyhow",
"clap",
@@ -3062,7 +3062,7 @@ dependencies = [
[[package]]
name = "letterbox-server"
version = "0.17.17"
version = "0.17.19"
dependencies = [
"ammonia",
"anyhow",
@@ -3080,10 +3080,9 @@ dependencies = [
"futures 0.3.31",
"headers",
"html-escape",
"letterbox-notmuch 0.17.17",
"letterbox-shared 0.17.17",
"letterbox-notmuch 0.17.19",
"letterbox-shared 0.17.19",
"linkify",
"log",
"lol_html",
"mailparse",
"maplit",
@@ -3121,10 +3120,10 @@ dependencies = [
[[package]]
name = "letterbox-shared"
version = "0.17.17"
version = "0.17.19"
dependencies = [
"build-info",
"letterbox-notmuch 0.17.17",
"letterbox-notmuch 0.17.19",
"regex",
"serde",
"sqlx",
@@ -3134,7 +3133,7 @@ dependencies = [
[[package]]
name = "letterbox-web"
version = "0.17.17"
version = "0.17.19"
dependencies = [
"build-info",
"build-info-build",

View File

@@ -8,7 +8,7 @@ authors = ["Bill Thiede <git@xinu.tv>"]
edition = "2021"
license = "UNLICENSED"
publish = ["xinu"]
version = "0.17.17"
version = "0.17.19"
repository = "https://git.z.xinu.tv/wathiede/letterbox"
[profile.dev]

View File

@@ -27,10 +27,9 @@ css-inline = "0.14.4"
futures = "0.3.31"
headers = "0.4.0"
html-escape = "0.2.13"
letterbox-notmuch = { path = "../notmuch", version = "0.17.17", registry = "xinu" }
letterbox-shared = { path = "../shared", version = "0.17.17", registry = "xinu" }
letterbox-notmuch = { path = "../notmuch", version = "0.17.19", registry = "xinu" }
letterbox-shared = { path = "../shared", version = "0.17.19", registry = "xinu" }
linkify = "0.10.0"
log = "0.4.27"
lol_html = "2.3.0"
mailparse = "0.16.1"
maplit = "1.0.2"

View File

@@ -9,11 +9,10 @@ use async_graphql::{
use cacher::FilesystemCacher;
use futures::stream;
use letterbox_notmuch::Notmuch;
use log::info;
use serde::{Deserialize, Serialize};
use sqlx::postgres::PgPool;
use tokio::join;
use tracing::instrument;
use tracing::{info, instrument};
#[cfg(feature = "tantivy")]
use crate::tantivy::TantivyConnection;

View File

@@ -21,7 +21,6 @@ use cacher::{Cacher, FilesystemCacher};
use css_inline::{CSSInliner, InlineError, InlineOptions};
pub use error::ServerError;
use linkify::{LinkFinder, LinkKind};
use log::{debug, error, info, warn};
use lol_html::{
element, errors::RewritingError, html_content::ContentType, rewrite_str, text,
RewriteStrSettings,
@@ -32,6 +31,7 @@ use reqwest::StatusCode;
use scraper::{Html, Selector};
use sqlx::types::time::PrimitiveDateTime;
use thiserror::Error;
use tracing::{debug, error, info, warn};
use url::Url;
use crate::{

View File

@@ -3,11 +3,10 @@ use std::collections::HashMap;
use cacher::FilesystemCacher;
use futures::{stream::FuturesUnordered, StreamExt};
use letterbox_shared::compute_color;
use log::{error, info};
use maplit::hashmap;
use scraper::Selector;
use sqlx::postgres::PgPool;
use tracing::instrument;
use tracing::{error, info, instrument};
use url::Url;
use crate::{

View File

@@ -5,11 +5,10 @@ use std::{
use letterbox_notmuch::Notmuch;
use letterbox_shared::{compute_color, Rule};
use log::{error, info, warn};
use mailparse::{parse_content_type, parse_mail, MailHeader, MailHeaderMap, ParsedMail};
use memmap::MmapOptions;
use sqlx::{types::Json, PgPool};
use tracing::{info_span, instrument};
use tracing::{error, info, info_span, instrument, warn};
use crate::{
compute_offset_limit,
@@ -992,7 +991,17 @@ pub async fn label_unprocessed(
let file = File::open(&path)?;
info!("parsing {path}");
let mmap = unsafe { MmapOptions::new().map(&file)? };
let m = info_span!("parse_mail", path = path).in_scope(|| parse_mail(&mmap))?;
let m = match info_span!("parse_mail", path = path).in_scope(|| parse_mail(&mmap)) {
Ok(m) => m,
Err(err) => {
error!("Failed to parse {path}: {err}");
let t = "Letterbox/Bad";
nm.tag_add(t, &id)?;
let t = "unprocessed";
nm.tag_remove(t, &id)?;
continue;
}
};
let (matched_rule, add_tags) = find_tags(&rules, &m.headers);
if matched_rule {
if dryrun {

View File

@@ -12,7 +12,7 @@ version.workspace = true
[dependencies]
build-info = "0.0.40"
letterbox-notmuch = { path = "../notmuch", version = "0.17.17", registry = "xinu" }
letterbox-notmuch = { path = "../notmuch", version = "0.17.19", registry = "xinu" }
regex = "1.11.1"
serde = { version = "1.0.219", features = ["derive"] }
sqlx = "0.8.5"