jkhsjdhjs

IRC SASL Auth

Sep 19th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.08 KB | None | 0 0
  1. extern crate irc;
  2. extern crate base64;
  3.  
  4. use irc::client::prelude::*;
  5. use irc::proto::command::Command::*;
  6. use irc::proto::CapSubCommand::*;
  7. use base64::encode;
  8.  
  9. fn main() {
  10.     let server = IrcServer::new("config.toml").unwrap();
  11.     let auth_str = format!("{}\u{0000}{}\u{0000}{}", server.config().nickname().to_owned(), server.config().username().to_owned(), server.config().nick_password().to_owned());
  12.     println!("{}", auth_str);
  13.     server.send_cap_ls(NegotiationVersion::V302).unwrap();
  14.     server.send(NICK(server.config().nickname().to_owned())).unwrap();
  15.     server.send(USER(server.config().username().to_owned(), "0".to_owned(), server.config().real_name().to_owned())).unwrap();
  16.     server.send_cap_req(&[Capability::Sasl]).unwrap();
  17.     server.send_sasl_plain().unwrap();
  18.     server.for_each_incoming(|msg| {
  19.         println!("{}", msg.to_string().trim());
  20.         if msg.to_string().trim() == "AUTHENTICATE +" {
  21.             server.send_sasl(&encode(&auth_str[..])).unwrap();
  22.             server.send(CAP(None, END, None, None)).unwrap();
  23.         }
  24.     }).unwrap()
  25. }
Advertisement
Add Comment
Please, Sign In to add comment