mod.rs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* This file is part of DarkFi (https://dark.fi)
  2. *
  3. * Copyright (C) 2020-2024 Dyne.org foundation
  4. *
  5. * This program is free software: you can redistribute it and/or modify
  6. * it under the terms of the GNU Affero General Public License as
  7. * published by the Free Software Foundation, either version 3 of the
  8. * License, or (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU Affero General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU Affero General Public License
  16. * along with this program. If not, see <https://www.gnu.org/licenses/>.
  17. */
  18. use std::{collections::HashSet, sync::Arc};
  19. use crypto_box::ChaChaBox;
  20. use darkfi_serial::{async_trait, SerialDecodable, SerialEncodable};
  21. /// IRC client state
  22. pub(crate) mod client;
  23. /// IRC server implementation
  24. pub(crate) mod server;
  25. /// IRC command handler
  26. pub(crate) mod command;
  27. /// IRC numerics and server replies
  28. pub(crate) mod rpl;
  29. /// Hardcoded server name
  30. const SERVER_NAME: &str = "irc.dark.fi";
  31. /// IRC PRIVMSG
  32. #[derive(Clone, Debug, SerialEncodable, SerialDecodable)]
  33. pub struct Privmsg {
  34. pub channel: String,
  35. pub nick: String,
  36. pub msg: String,
  37. }
  38. /// IRC channel definition
  39. #[derive(Clone)]
  40. pub struct IrcChannel {
  41. pub topic: String,
  42. pub nicks: HashSet<String>,
  43. pub saltbox: Option<Arc<ChaChaBox>>,
  44. }
  45. /// IRC contact definition
  46. #[derive(Clone)]
  47. pub struct IrcContact {
  48. pub saltbox: Option<Arc<ChaChaBox>>,
  49. }