Manos Pitsidianakis
808aa4942d
melib: rename text_processing to text for the whole brevity thing
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
34a2d52e7e
Fix rustdoc::redundant_explicit_links
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
4026e25428
melib/notmuch: add some doc comments
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
ca7d7bb95d
melib/notmuch: use message freeze/thaw for flag changes
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
ebe1b3da7e
melib/notmuch: wrap *mut struct fields in NonNull<_>
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
506ae9f594
melib/error: Add ErrorKind::LinkedLibrary variant
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
b3079715f6
melib/smtp: disable flakey test_smtp()
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
86bbf1ea57
melib/notmuch: refresh NotmuchMailbox counts when setting flags
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
1b0bdd0a9a
melib/notmuch: split queries and mailbox into submodules
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
7412c23870
Bump meli version to 0.8.5-rc.3
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
e19f3e572c
Cargo-sort all Cargo.toml files
...
With:
cargo sort --grouped --order package,bin,lib,dependencies,features,build-dependencies,dev-dependencies,workspace meli
cargo sort --grouped --order package,bin,lib,dependencies,features,build-dependencies,dev-dependencies,workspace melib
cargo sort --grouped --order package,bin,lib,dependencies,features,build-dependencies,dev-dependencies,workspace tools
cargo sort --grouped --order package,bin,lib,dependencies,features,build-dependencies,dev-dependencies,workspace fuzz
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
f900dbea46
Use cargo-derivefmt to sort derives alphabetically
...
Used https://github.com/dcchut/cargo-derivefmt
With command:
cargo install --locked \
--git https://github.com/dcchut/cargo-derivefmt \
--bin cargo-derivefmt \
--rev 2ff93de7fb418180458dd1ba27e5655607c23ab6
Since it's not on crates.io at the moment.
Sample diff:
-#[derive(Debug, Deserialize, Clone, Serialize)]
+#[derive(Clone, Debug, Deserialize, Serialize)]
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
3a70979483
Update minimum rust version from 1.65.0 to 1.68.2
...
Found with `cargo msrv --bisect --min 1.67.0`
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
10 months ago
Manos Pitsidianakis
d16afc7d8d
Bump version to 0.8.5-rc.2
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
63a63253d7
melib/datetime: use type alias for c_char
...
On arm64, it's u8, not i8.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
10c3b0eabe
Bump version to 0.8.5-rc.1
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Andrei Zisu
64898a0583
melib/imap: Make UIDStore constructor pub
...
I honestly forget exactly why this change is needed, so I need to
recheck.
11 months ago
Andrei Zisu
77a8d9e2c2
melib: Make ModSequence publicly accessible
...
This way it can be imported from this namespace in depending code.
11 months ago
Manos Pitsidianakis
23c15261e7
mail/view: abstract envelope view filters away
...
Modularize an envelope view by introducing a stack of "view filters".
Example uses:
- html email can have a view on top of it that is plain text conversion
- selecting and viewing text/* attachments is just appending a new filter at
the stack
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
1c1be7d6c9
melib/address: add display_name(), display_slice(), display_name_slice() methods
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
23507932f9
imap: update cache on set_flags
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
6506fffb94
Rewrite email flag modifications
...
Flag and tag modifications are now somewhat typed better, and the
frontend applies them on its own on success. This means that if you set
an unseen mail as seen but it was already seen in the backend, you will
see the change locally. Previously it would remain unseen.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
f81a1e2338
Bump version to 0.8.4
...
0.8.3 had a misbehaving test.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
ef30228e08
melib/draft: fix failing test
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
bfc78a0803
melib/compose: replace CRLF with LF when editing
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
af241d25cb
melib: bump version to 0.8.3
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
ac2a5dcdd1
melib: add display() method for Address
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
688e39a67e
Fix clippy lints
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
8a21be2177
melib/imap: replace splice with truncate
...
splice() was calling memmove, it is a really inefficient way of
truncating a string.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
11 months ago
Manos Pitsidianakis
f702dc220c
Fix new clippy lints.
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Andrei Zisu
e95c275d68
Remove duplicate end sequence
...
Signed-off-by: Andrei Zisu <matzipan@gmail.com>
1 year ago
Andrei Zisu
3105a0373b
Add quit command
...
Signed-off-by: Andrei Zisu <matzipan@gmail.com>
1 year ago
Andrei Zisu
7aec5b8e78
Fix SMTP example doc
...
Signed-off-by: Andrei Zisu <matzipan@gmail.com>
1 year ago
Manos Pitsidianakis
e88957ae6e
melib/backends: add extra_submission_headers field in MailBackendCapabilities struct
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
3d85ca2edf
Bump version to 0.8.2
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
7888d8b2a5
melib/utils/xdg: fix doc test compilation
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
7eed82783a
Bump version to 0.8.1
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
fe0a96f085
melib: update to 2021 edition
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
9b9c38f769
mellib/imap: don't flood user with sqlite3 errors if db is corrupted
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
c43aeb0eb1
melib/email/parser: fix invalid address parse on folded values
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
6476985ce6
Add Cross.toml for aarch64-unknown-linux-gnu builds
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
a615b4701b
dependencies: embed xdg-utils crate
...
No reason to have it out of the tree.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
85af524458
email/parser.rs: fix invalid mailto() results when body field exists
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
2dc2940586
melib/build.rs: add feature to use cache instead of downloading unicode data
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
49a38a23bf
jmap: fix invalid Type link references
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
b4f2f33576
remove deflate feature; make it a hard dependency
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
a337e2269e
contacts: refactor module structure
...
To prepare for more functionality, refactor contacts module.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Damian Poddebniak
5459a84f3d
chore: Update to imap-codec 1.0.0 (w/o `-beta`)
1 year ago
Manos Pitsidianakis
59513b2670
melib/jmap: implement Backend::submit(), server-side submission
...
Well this was more complex that it should have been. And not very
optimized because we're not using pipelining in the submit() path:
1. first upload email bytes as a Blob object. This requires a standalone
API post call at a specific url so it cannot be changed with followup
calls to reference the blob's id.
2. Create an EmailObject in the drafts folder.
3. Create an EmailSubmission object referencing the email id of prevous
call. Unfortunately I cannot get the Result Reference to work in
stalwart jmap, so for now this is too a separate transaction.
Caveat emptor: Errors might not be returned to the user.
Closes #277 .
https://git.meli.delivery/meli/meli/issues/277
https://git.meli.delivery/meli/meli/pulls/279
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
38bc1369cc
melib/jmap: add an Identity type.
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
5d8f07c805
melib/jmap: rename some objects better
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
b95f778335
melib/jmap: move JmapSession to its own module
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
29fd8522e6
melib/jmap: implement Backend::create_mailbox()
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
31982931f5
melib/jmap: use Argument<OBJ> (value or resultreference) where appropriate
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
d9467d5fcd
melib/jmap: save all core capabilities to session store
...
We will need this in the future when we're going to support extra
extensions like Blob and also now to support server submission.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
11432ba2c3
melib/jmap: make `null` fields into Option<_>s
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
4f9b97736a
melib/jmap: Rename EmailImport to EmailImportObject
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
6ebdc7f9ae
melib/jmap: add Id<_>::empty() contructor
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
37a787e6bb
melib/jmap: use IndexMap instead of HashMap
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
c875dda496
melib/jmap: add last_method_response field to Connection
...
For book keeping.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
f7a4741bf1
melib/jmap: add jmap-trace feature
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
8551e1ba0b
clippy: fix new 1.72 default clippy lints
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
974b3a5305
Update bitflags, rusqlite dependencies
...
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
946309c6f3
melib: do some small parser refactoring
...
- Use HeaderName in parsers instead of raw byte strings.
- Use byte literal constants where appropriate instead of repeating
&b"___"[..]
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
66c21ab173
melib/email: move StandardHeader to its own module
...
Extract StandardHeader code to its own module to reduce name.rs
line-count size.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
3963103d55
contacts: prevent duplicate contact creation
...
When adding contacts from an envelope view, its hash/id/key was a random
Uuidv4, so it was always possible to add a contact again and again with
no limits. Now, the id is calculated from the hash of the email address
and display name, preventing duplicate additions.
Note that the hash algorithm is not supposed to be stable across
versions, meaning that in the future the same contact might have a
different hash. This means a more sophisticated method for
detecting/disallowing dupes must eventually be introduced.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
a1e7006186
melib: move Sort{Order,Field} to utils mod
...
We want to use SortOrder enum for non-thread purposes in the next
commit, so move it out of the thread module.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
b3858de2f4
melib/error: impl From<io::ErrorKind> for ErrorKind
...
We inspect errors in the frontend to check for network errors. If the
network error comes from std::io, this would get converted to an Error
with description "timed out", kind OSError, and source the actual
networking error.
This commit converts network std::io::ErrorKinds into appropriate
native ErrorKinds.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
1 year ago
Manos Pitsidianakis
dc2b00442b
melib: run rustfmt and cargo-sort
1 year ago
Manos Pitsidianakis
da8e810448
melib/connections: remove leftover debug prints
1 year ago
Damian Poddebniak
4f6081b663
chore: Update to `imap-codec 1.0.0-beta`.
1 year ago
Manos Pitsidianakis
df638cceec
melib/connections: remove stale failing doc code example
...
This leftover doc test/example was failing to compile, so remove it.
1 year ago
Manos Pitsidianakis
97d3686815
melib/connections: use Happy Eyeballs algorithm Ꙭ
...
This commit adds a Happy Eyeballs [1] implementation taken from the
happy-eyeballs crate, which is in public domain.
While the function lookup_ip[0] iterates through the addresses returned by
A and AAAA records from a DNS lookup, it returns the first one which
always is an IPv4 address, unless there only is an AAAA record.
RFC6555 [1] recommends an algorithm for choosing the fastest address to
connect to, called "Happy Eyeballs". Ꙭ
[0]: melib/src/utils/connections.rs:497
[1]: https://www.rfc-editor.org/rfc/rfc6555
Fixes #268
1 year ago
Manos Pitsidianakis
5c2b04719b
Normalize std::fmt::* imports
1 year ago
Manos Pitsidianakis
7c7f6e1923
melib/thread: don't increase Thread length for duplicates
...
If an envelope that was already in the Threads object was inserted,
the only modification would be to erroneously increase the Thread len by
one.
1 year ago
Manos Pitsidianakis
84081f4ed7
melib/nntp: minor style fix
1 year ago
Manos Pitsidianakis
bf543855dc
melib/email: add PartialEq<str> for MessageID
1 year ago
Manos Pitsidianakis
448e0635e0
melib/nntp: log error when command length exceeds 512 octets
...
According to RFC 3977:
> Command lines MUST NOT exceed 512 octets, which includes the
> terminating CRLF pair
This commit adds a log::error entry when any sent command exceeds that
limit and recommends the user to report this as a bug.
1 year ago
Manos Pitsidianakis
4e654d2d02
melib/nntp: limit LIST ACTIVE command length to 512 octets
...
According to RFC 3977:
> Command lines MUST NOT exceed 512 octets, which includes the
> terminating CRLF pair
Sending a `LIST ACTIVE` command with lots of newgroups and passing the
512 byte limit is therefore invalid. This commit splits the mailboxes in
chunks and sends a separate command for each maximal chunk that has
a valid length.
Fixes #269 .
Reported-by: r3k2
1 year ago
Manos Pitsidianakis
40d4ecefa0
melib/nntp: accept invalid (non-ascii) address comment text
...
NNTP servers may return addresses that are not RFC 5322 compliant. An
address with a comment with non-ascii characters will make the parser loop indefinitely.
Fixes #269 .
1 year ago
Manos Pitsidianakis
8cb2a515e1
melib/smtp: use localhost in lieu of 127.0.0.1 for CI
1 year ago
Manos Pitsidianakis
ae25ffba43
melib/smtp: don't do plain EHLO before starting Tls connection
1 year ago
Manos Pitsidianakis
1e084c1d85
melib: move backends out of the backends module
...
No reason to have such a deep module tree.
1 year ago
Manos Pitsidianakis
9216e7bc65
melib/connections: add opt id string for tracing
1 year ago
Manos Pitsidianakis
8ecdb6df31
melib/imap: add imap-trace feature
1 year ago
Manos Pitsidianakis
b65934facc
melib/nntp: add nntp-trace feature
1 year ago
Manos Pitsidianakis
89c90f224a
melib: add `nntp` feature
1 year ago
Manos Pitsidianakis
7db930cabd
melib: rename `jmap_backend` feature to `jmap`
1 year ago
Manos Pitsidianakis
e9f09a153c
melib: rename `mbox_backend` feature to `mbox`
1 year ago
Manos Pitsidianakis
fe7dcc508e
melib: rename `notmuch_backend` feature to `notmuch`
1 year ago
Manos Pitsidianakis
fe027fa300
melib: rename `maildir_backend` feature to `maildir`
1 year ago
Manos Pitsidianakis
129f10911b
melib: rename `imap_backend` feature to `imap`
1 year ago
Manos Pitsidianakis
4874e30f3c
melib: add smtp-trace feature
...
If it's enabled, every read/write in an SMTP transaction will be logged
on TRACE level.
1 year ago
Manos Pitsidianakis
073d43b9b8
melib/test: move data files to data subdir
1 year ago
Manos Pitsidianakis
8e698cabcf
Fix unreachable-pub and disjoint-capture lint errors
1 year ago
Manos Pitsidianakis
bb7e119ade
Add gitea CI workflows
1 year ago
Manos Pitsidianakis
29b43e2c88
melib/datetime: replace mktime with timegm
1 year ago
Manos Pitsidianakis
6280bc75e5
melib/jmap: fix blob download URL formatting
1 year ago
Manos Pitsidianakis
48a10f7241
melib: remove unused BackendOp::fetch_flags() method
1 year ago
Manos Pitsidianakis
0219dc8707
melib/jmap: respect max_objects_in_get when fetching email
...
Fixes #144
1 year ago