mod.rs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. /// Services implementations
  28. pub(crate) mod services;
  29. pub(crate) use services::nickserv::NickServ;
  30. /// IRC numerics and server replies
  31. pub(crate) mod rpl;
  32. /// Hardcoded server name
  33. const SERVER_NAME: &str = "irc.dark.fi";
  34. /// IRC PRIVMSG
  35. #[derive(Clone, Debug, SerialEncodable, SerialDecodable)]
  36. pub struct Privmsg {
  37. pub channel: String,
  38. pub nick: String,
  39. pub msg: String,
  40. }
  41. /// IRC channel definition
  42. #[derive(Clone)]
  43. pub struct IrcChannel {
  44. pub topic: String,
  45. pub nicks: HashSet<String>,
  46. pub saltbox: Option<Arc<ChaChaBox>>,
  47. }
  48. /// IRC contact definition
  49. #[derive(Clone)]
  50. pub struct IrcContact {
  51. pub saltbox: Option<Arc<ChaChaBox>>,
  52. }