Compare commits
2 commits
daedc5ea06
...
09c2fe80e2
Author | SHA1 | Date | |
---|---|---|---|
09c2fe80e2 | |||
bed9beb1f2 |
2 changed files with 16 additions and 16 deletions
|
@ -41,8 +41,8 @@ pub fn parse_metadata(page: &str) -> Embed {
|
||||||
let title = doc_body.select(&title_selector).next();
|
let title = doc_body.select(&title_selector).next();
|
||||||
let desc = doc_body.select(&description_selector).next();
|
let desc = doc_body.select(&description_selector).next();
|
||||||
// Clean up meta info and store it as a string
|
// Clean up meta info and store it as a string
|
||||||
let mut meta_title = String::from("None");
|
let mut meta_title = String::default();
|
||||||
let mut meta_description = String::from("None");
|
let mut meta_description = String::default();
|
||||||
|
|
||||||
if let Some(title) = title {
|
if let Some(title) = title {
|
||||||
meta_title = title.text().collect();
|
meta_title = title.text().collect();
|
||||||
|
@ -76,8 +76,8 @@ fn get_urls_from_message(message: &str) -> Vec<&str> {
|
||||||
// If we find any urls, push them into the urls vec
|
// If we find any urls, push them into the urls vec
|
||||||
for regex_match in RE.find_iter(message) {
|
for regex_match in RE.find_iter(message) {
|
||||||
// If the url points to localhost, we don't want to embed it, so we ignore it
|
// If the url points to localhost, we don't want to embed it, so we ignore it
|
||||||
if regex_match.as_str().contains("localhost")
|
if regex_match.as_str().to_lowercase().contains("localhost")
|
||||||
|| regex_match.as_str().contains("127.0.0.1")
|
|| regex_match.as_str().to_lowercase().contains("127.0.0.1")
|
||||||
{
|
{
|
||||||
warn!("This is probably a malicious URL, ignoring!");
|
warn!("This is probably a malicious URL, ignoring!");
|
||||||
} else {
|
} else {
|
||||||
|
@ -96,10 +96,18 @@ pub async fn embed_handler(event: OriginalSyncRoomMessageEvent, room: Room, clie
|
||||||
if let Room::Joined(room) = room {
|
if let Room::Joined(room) = room {
|
||||||
let full_reply_event = event.clone().into_full_event(room.room_id().to_owned());
|
let full_reply_event = event.clone().into_full_event(room.room_id().to_owned());
|
||||||
|
|
||||||
|
// If the sender ID matches our client, ignore the message
|
||||||
|
// We don't want to reply to ourselves
|
||||||
|
let client_user_id = client.user_id().unwrap();
|
||||||
|
if event.sender == client_user_id {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Do not make an embed if someone replies to a URL
|
// Do not make an embed if someone replies to a URL
|
||||||
// Unfortunately, this makes it so that if your reply has a URL, it will not embed.
|
// Unfortunately, this makes it so that if your reply has a URL, it will not embed.
|
||||||
|
// TODO: Fix this by scanning replies and only generating embeds for new URLs in future.
|
||||||
if let Some(Relation::Reply { in_reply_to: _ }) = &event.content.relates_to {
|
if let Some(Relation::Reply { in_reply_to: _ }) = &event.content.relates_to {
|
||||||
warn!("Ignoring message, it's a reply to someone else");
|
warn!("Ignoring message, it's a reply to someone else!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,15 +117,7 @@ pub async fn embed_handler(event: OriginalSyncRoomMessageEvent, room: Room, clie
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
// If the sender ID matches our client, ignore the message
|
let urls = get_urls_from_message(&text_content.body);
|
||||||
// We don't want to reply to ourselves
|
|
||||||
let client_user_id = client.user_id().unwrap();
|
|
||||||
if event.sender == client_user_id {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let message = text_content.body.to_lowercase();
|
|
||||||
let urls = get_urls_from_message(&message);
|
|
||||||
|
|
||||||
let reqwest_client = reqwest::Client::builder().user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36").build().unwrap();
|
let reqwest_client = reqwest::Client::builder().user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36").build().unwrap();
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ pub async fn delete_old_encryption_devices(client: &Client, config: &Config) ->
|
||||||
/// The bot will reject invites to spaces and DMs, as well as invites to any rooms it wasn't
|
/// The bot will reject invites to spaces and DMs, as well as invites to any rooms it wasn't
|
||||||
/// configured to explicitly join, while accepting invites to any rooms it was configured to join.
|
/// configured to explicitly join, while accepting invites to any rooms it was configured to join.
|
||||||
pub async fn reject_stale_invites(client: &Client, config: &Config) {
|
pub async fn reject_stale_invites(client: &Client, config: &Config) {
|
||||||
warn!("Rejecting stale invites");
|
warn!("Checking invites");
|
||||||
for room in client.invited_rooms() {
|
for room in client.invited_rooms() {
|
||||||
let room_name = room.name().unwrap_or_default();
|
let room_name = room.name().unwrap_or_default();
|
||||||
if !room.is_space()
|
if !room.is_space()
|
||||||
|
@ -114,7 +114,7 @@ pub async fn reject_stale_invites(client: &Client, config: &Config) {
|
||||||
room.reject_invitation().await.unwrap_or_default();
|
room.reject_invitation().await.unwrap_or_default();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
warn!("Finished rejecting stale invites");
|
warn!("Finished checking old invites");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Run frogbot
|
/// Run frogbot
|
||||||
|
|
Loading…
Reference in a new issue