Просмотр исходного кода

bin/ircd: minor changes for DM messages

ghassmo 4 лет назад
Родитель
Сommit
231e9dbfab
1 измененных файлов с 18 добавлено и 21 удалено
  1. 18 21
      bin/ircd/src/server.rs

+ 18 - 21
bin/ircd/src/server.rs

@@ -174,7 +174,7 @@ impl IrcServerConnection {
                     return Err(Error::MalformedPacket)
                 }
 
-                let message = &line[substr_idx + 1..];
+                let mut message = line[substr_idx + 1..].to_string();
                 info!("(Plain) PRIVMSG {} :{}", target, message);
 
                 if target.starts_with("#") {
@@ -188,24 +188,18 @@ impl IrcServerConnection {
                         return Ok(())
                     }
 
-                    let message = if let Some(salt_box) = &channel_info.salt_box {
-                        let encrypted = encrypt_message(salt_box, message);
+                    message = if let Some(salt_box) = &channel_info.salt_box {
+                        let encrypted = encrypt_message(salt_box, &message);
                         info!("(Encrypted) PRIVMSG {} :{}", target, encrypted);
                         encrypted
                     } else {
                         message.to_string()
                     };
-
-                    self.on_receive_privmsg(&message, target).await?;
-                } else {
-                    let channels = self.configured_chans.clone();
-                    for chan in channels.values() {
-                        if chan.joined && chan.names.contains(&target.to_string()) {
-                            self.on_receive_privmsg(&message, target).await?;
-                        }
-                    }
                 }
+
+                self.on_receive_privmsg(&message, target).await?;
             }
+            "CAP" => {}
             "QUIT" => {
                 // Close the connection
                 return Err(Error::NetworkServiceStopped)
@@ -228,10 +222,12 @@ impl IrcServerConnection {
 
             // Send dm messages in buffer
             for msg in self.privmsgs_buffer.lock().await.to_vec() {
-                if msg.target == self.nickname {
+                if msg.target == self.nickname || msg.nickname == self.nickname {
                     self.senders.notify_by_id(msg, self.subscriber_id).await;
                 }
             }
+
+            // send names command
         }
 
         Ok(())
@@ -245,13 +241,6 @@ impl IrcServerConnection {
 
     async fn on_receive_names(&mut self, chan: &str) -> Result<()> {
         if self.configured_chans.contains_key(chan) {
-            let end_of_names = format!(
-                ":DarkFi {:03} {} {} :End of NAMES list\r\n",
-                RPL_ENDOFNAMES, self.nickname, chan
-            );
-
-            self.reply(&end_of_names).await?;
-
             let chan_info = self.configured_chans.get(chan).unwrap();
 
             if chan_info.names.is_empty() {
@@ -267,6 +256,13 @@ impl IrcServerConnection {
             );
 
             self.reply(&names_reply).await?;
+
+            let end_of_names = format!(
+                ":DarkFi {:03} {} {} :End of NAMES list\r\n",
+                RPL_ENDOFNAMES, self.nickname, chan
+            );
+
+            self.reply(&end_of_names).await?;
         }
 
         Ok(())
@@ -356,9 +352,10 @@ impl IrcServerConnection {
             }
 
             self.reply(&msg.to_irc_msg()).await?;
+            return Ok(())
         }
 
-        if self.is_nick_init && self.nickname == msg.target {
+        if self.is_nick_init && (self.nickname == msg.target || self.nickname == msg.nickname) {
             self.reply(&msg.to_irc_msg()).await?;
         }