mirror of
https://github.com/MeexReay/bRAC.git
synced 2025-07-05 07:52:59 +03:00
fix: fix auth messages reading sent from something else than clRAC
This commit is contained in:
parent
a0d65b3d81
commit
35a36e3011
@ -6,9 +6,7 @@ use std::{
|
|||||||
|
|
||||||
use crate::connect_rac;
|
use crate::connect_rac;
|
||||||
|
|
||||||
use super::proto::{
|
use super::proto::{connect, read_messages, register_user, send_message, send_message_auth};
|
||||||
connect, read_messages, register_user, send_message, send_message_auth,
|
|
||||||
};
|
|
||||||
|
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
@ -37,7 +35,9 @@ lazy_static! {
|
|||||||
pub static ref DATE_REGEX: Regex = Regex::new(r"\[(.*?)\] (.*)").unwrap();
|
pub static ref DATE_REGEX: Regex = Regex::new(r"\[(.*?)\] (.*)").unwrap();
|
||||||
pub static ref IP_REGEX: Regex = Regex::new(r"\{(.*?)\} (.*)").unwrap();
|
pub static ref IP_REGEX: Regex = Regex::new(r"\{(.*?)\} (.*)").unwrap();
|
||||||
|
|
||||||
pub static ref COLORED_USERNAMES: Vec<(Regex, String)> = vec![
|
pub static ref DEFAULT_USER_AGENT: Regex = Regex::new(r"<(.*?)> (.*)").unwrap();
|
||||||
|
|
||||||
|
pub static ref USER_AGENTS: Vec<(Regex, String)> = vec![
|
||||||
(Regex::new(r"\u{B9AC}\u{3E70}<(.*?)> (.*)").unwrap(), "#70fa7a".to_string()), // bRAC
|
(Regex::new(r"\u{B9AC}\u{3E70}<(.*?)> (.*)").unwrap(), "#70fa7a".to_string()), // bRAC
|
||||||
(Regex::new(r"\u{2550}\u{2550}\u{2550}<(.*?)> (.*)").unwrap(), "#fa7070".to_string()), // CRAB
|
(Regex::new(r"\u{2550}\u{2550}\u{2550}<(.*?)> (.*)").unwrap(), "#fa7070".to_string()), // CRAB
|
||||||
(Regex::new(r"\u{00B0}\u{0298}<(.*?)> (.*)").unwrap(), "#da70fa".to_string()), // Mefidroniy
|
(Regex::new(r"\u{00B0}\u{0298}<(.*?)> (.*)").unwrap(), "#da70fa".to_string()), // Mefidroniy
|
||||||
@ -286,17 +286,23 @@ pub fn parse_message(
|
|||||||
(None, message)
|
(None, message)
|
||||||
};
|
};
|
||||||
|
|
||||||
let (message, nick) = match find_username_color(&message) {
|
let (message, nick) = if let Some((nick, message, color)) = DEFAULT_USER_AGENT
|
||||||
Some((name, content, color)) => (content, Some((name, color))),
|
.captures(&message)
|
||||||
None => (message, None),
|
.and_then(|o| parse_user_agent(&o[2].to_string()))
|
||||||
|
{
|
||||||
|
(message, Some((nick, color)))
|
||||||
|
} else if let Some((nick, message, color)) = parse_user_agent(&message) {
|
||||||
|
(message, Some((nick, color)))
|
||||||
|
} else {
|
||||||
|
(message, None)
|
||||||
};
|
};
|
||||||
|
|
||||||
Some((date, ip, message, nick))
|
Some((date, ip, message, nick))
|
||||||
}
|
}
|
||||||
|
|
||||||
// message -> (nick, content, color)
|
// message -> (nick, content, color)
|
||||||
pub fn find_username_color(message: &str) -> Option<(String, String, String)> {
|
pub fn parse_user_agent(message: &str) -> Option<(String, String, String)> {
|
||||||
for (re, color) in COLORED_USERNAMES.iter() {
|
for (re, color) in USER_AGENTS.iter() {
|
||||||
if let Some(captures) = re.captures(message) {
|
if let Some(captures) = re.captures(message) {
|
||||||
return Some((
|
return Some((
|
||||||
captures[1].to_string(),
|
captures[1].to_string(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user