Classify decrypted plaintext before append_message so loc/prf/inv/rcp/png and unknown xxx[space] prefixes never land in the message log.
39 lines
811 B
Rust
39 lines
811 B
Rust
//! Classify decrypted application plaintext before it hits the message log.
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
pub enum Kind {
|
|
Chat,
|
|
Loc,
|
|
Profile,
|
|
Invoice,
|
|
Receipt,
|
|
Ping,
|
|
Drop,
|
|
}
|
|
|
|
pub fn classify(pt: &[u8]) -> Kind {
|
|
if pt.starts_with(b"loc ") {
|
|
return Kind::Loc;
|
|
}
|
|
if pt.starts_with(b"prf ") {
|
|
return Kind::Profile;
|
|
}
|
|
if pt.starts_with(b"inv ") {
|
|
return Kind::Invoice;
|
|
}
|
|
if pt.starts_with(b"rcp ") {
|
|
return Kind::Receipt;
|
|
}
|
|
if pt.starts_with(b"png ") {
|
|
return Kind::Ping;
|
|
}
|
|
if pt.len() >= 4
|
|
&& pt[0].is_ascii_lowercase()
|
|
&& pt[1].is_ascii_lowercase()
|
|
&& pt[2].is_ascii_lowercase()
|
|
&& pt[3] == b' '
|
|
{
|
|
return Kind::Drop;
|
|
}
|
|
Kind::Chat
|
|
}
|