aboutsummaryrefslogtreecommitdiff
path: root/src/hooks/mod.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2021-05-15 13:58:01 +0200
committerMax Audron <audron@cocaine.farm>2021-05-15 13:58:01 +0200
commitd0bff910b0b038ee85bc285bef7a63870a3474ab (patch)
treeb840d0b932c080fa5d5053b6bf66a91f94a80481 /src/hooks/mod.rs
init
Diffstat (limited to 'src/hooks/mod.rs')
-rw-r--r--src/hooks/mod.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/hooks/mod.rs b/src/hooks/mod.rs
new file mode 100644
index 0000000..ba4a98d
--- /dev/null
+++ b/src/hooks/mod.rs
@@ -0,0 +1,39 @@
+use anyhow::Result;
+use irc::client::prelude::*;
+
+pub mod sed;
+pub mod shifty_eyes;
+
+pub use sed::*;
+pub use shifty_eyes::shifty_eyes;
+
+pub fn sasl(bot: &crate::Bot, msg: Message) -> Result<()> {
+ match msg.command {
+ Command::AUTHENTICATE(text) => {
+ use sasl::client::mechanisms::Plain;
+ use sasl::client::Mechanism;
+ use sasl::common::Credentials;
+
+ if text == "+" {
+ let creds = Credentials::default()
+ .with_username(bot.config.clone().user.username)
+ .with_password(bot.config.clone().user.password);
+
+ let mut mechanism = Plain::from_credentials(creds).unwrap();
+
+ let initial_data = mechanism.initial();
+
+ bot.irc_client.send_sasl(base64::encode(initial_data))?;
+ bot.irc_client.send(Command::CAP(
+ None,
+ irc_proto::command::CapSubCommand::END,
+ None,
+ None,
+ ))?;
+ }
+ }
+ _ => (),
+ }
+
+ Ok(())
+}