summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client-native-gui/src/main.rs26
-rw-r--r--client-native-lib/src/crypto.rs4
-rw-r--r--client-native-lib/src/instance.rs12
-rw-r--r--client-native-rift/src/file.rs6
-rw-r--r--client-native-rift/src/main.rs2
-rw-r--r--server/src/assets.rs4
-rw-r--r--server/src/idgen.rs9
-rw-r--r--server/src/logic.rs5
-rw-r--r--server/src/main.rs8
9 files changed, 31 insertions, 45 deletions
diff --git a/client-native-gui/src/main.rs b/client-native-gui/src/main.rs
index 13aa9ae..095fa5e 100644
--- a/client-native-gui/src/main.rs
+++ b/client-native-gui/src/main.rs
@@ -10,6 +10,8 @@ use anyhow::bail;
use async_std::task::block_on;
use chat::Chat;
use clap::Parser;
+use crossbeam_channel::Sender;
+use egui::{ScrollArea, Ui, Visuals};
use libkeks::{
instance::Instance,
peer::Peer,
@@ -24,9 +26,6 @@ use libkeks::{
},
Config, EventHandler,
};
-use crossbeam_channel::Sender;
-use eframe::egui;
-use egui::{ScrollArea, Ui, Visuals};
use log::{debug, error, warn};
use std::{
collections::{HashMap, VecDeque},
@@ -158,7 +157,7 @@ impl eframe::App for App {
impl Inroom {
pub async fn new(config: Config, secret: &str) -> Self {
- let handler = Arc::new(Handler::new());
+ let handler = Arc::new(Handler::default());
let instance = Instance::new(config, handler.clone()).await;
instance.spawn_ping().await;
{
@@ -244,8 +243,8 @@ impl GuiResource {
}
}
-impl Handler {
- pub fn new() -> Self {
+impl Default for Handler {
+ fn default() -> Self {
Self {
k: RwLock::new(None),
peers: Default::default(),
@@ -262,10 +261,7 @@ impl GuiPeer {
}
impl EventHandler for Handler {
- fn peer_join(
- &self,
- peer: std::sync::Arc<libkeks::peer::Peer>,
- ) -> libkeks::DynFut<()> {
+ fn peer_join(&self, peer: std::sync::Arc<libkeks::peer::Peer>) -> libkeks::DynFut<()> {
self.peers.write().unwrap().insert(
peer.id,
Arc::new(RwLock::new(GuiPeer {
@@ -277,10 +273,7 @@ impl EventHandler for Handler {
Box::pin(async move {})
}
- fn peer_leave(
- &self,
- peer: std::sync::Arc<libkeks::peer::Peer>,
- ) -> libkeks::DynFut<()> {
+ fn peer_leave(&self, peer: std::sync::Arc<libkeks::peer::Peer>) -> libkeks::DynFut<()> {
self.peers.write().unwrap().remove(&peer.id);
Box::pin(async move {})
}
@@ -411,6 +404,7 @@ pub fn play(peer: Arc<Peer>, track: Arc<TrackRemote>) {
debug!("mpv open: {uri}");
state.clone()
}
+ #[allow(clippy::boxed_local)]
fn close(state: Box<State>) {
let _ = state.1.send(());
debug!("mpv close");
@@ -488,7 +482,7 @@ async fn track_to_raw(
if !packet.payload.is_empty() {
let raw_payload = cached_packet.depacketize(&packet.payload)?;
// let raw_payload = packet.payload;
- if raw_payload.len() != 0 {
+ if raw_payload.is_empty() {
debug!("writing {} bytes", raw_payload.len());
let mut target = target.write().unwrap();
@@ -508,7 +502,7 @@ async fn track_to_raw(
if !packet.payload.is_empty() {
let raw_payload = cached_packet.depacketize(&packet.payload)?;
// let raw_payload = packet.payload;
- if raw_payload.len() != 0 {
+ if raw_payload.is_empty() {
debug!("writing {} bytes", raw_payload.len());
let mut target = target.write().unwrap();
diff --git a/client-native-lib/src/crypto.rs b/client-native-lib/src/crypto.rs
index ad36e02..2005d8b 100644
--- a/client-native-lib/src/crypto.rs
+++ b/client-native-lib/src/crypto.rs
@@ -12,8 +12,8 @@ use log::info;
pub struct Key(Aes256Gcm);
-const CRYPTO_SALT: &'static str = "keksmeet/cryptosaltAAA==";
-const HASH_SALT: &'static str = "keksmeet/roomhashsaltA==";
+const CRYPTO_SALT: &str = "keksmeet/cryptosaltAAA==";
+const HASH_SALT: &str = "keksmeet/roomhashsaltA==";
impl Key {
pub fn derive(secret: &str) -> Self {
diff --git a/client-native-lib/src/instance.rs b/client-native-lib/src/instance.rs
index 517d979..899e48c 100644
--- a/client-native-lib/src/instance.rs
+++ b/client-native-lib/src/instance.rs
@@ -46,9 +46,9 @@ impl Instance {
pub async fn join(&self, secret: Option<&str>) {
info!("join room {secret:?}");
- *self.key.write().await = secret.map(|secret| crypto::Key::derive(&secret));
+ *self.key.write().await = secret.map(crypto::Key::derive);
self.send_packet(ServerboundPacket::Join {
- hash: secret.map(|secret| hash(secret)),
+ hash: secret.map(hash),
})
.await;
}
@@ -104,11 +104,9 @@ impl Instance {
protocol::ClientboundPacket::ClientLeave { id } => {
if id == self.my_id().await {
// we left
- } else {
- if let Some(peer) = self.peers.write().await.remove(&id) {
- peer.on_leave().await;
- self.event_handler.peer_leave(peer).await;
- }
+ } else if let Some(peer) = self.peers.write().await.remove(&id) {
+ peer.on_leave().await;
+ self.event_handler.peer_leave(peer).await;
}
}
protocol::ClientboundPacket::Message { sender, message } => {
diff --git a/client-native-rift/src/file.rs b/client-native-rift/src/file.rs
index 93dde62..a988595 100644
--- a/client-native-rift/src/file.rs
+++ b/client-native-rift/src/file.rs
@@ -126,11 +126,10 @@ impl RequestHandler for DownloadHandler {
.label
.clone()
.unwrap_or("download".to_owned())
- .replace("/", "_")
+ .replace('/', "_")
.replace("..", "_")
.into()
});
- if path.exists() {}
Box::pin(async move {
let pos = Arc::new(AtomicUsize::new(0));
let writer: Arc<RwLock<Option<Pin<Box<dyn AsyncWrite + Send + Sync>>>>> =
@@ -178,9 +177,8 @@ impl RequestHandler for DownloadHandler {
let writer = writer.clone();
let pos = pos.clone();
Box::pin(async move {
- // TODO
if mesg.is_string {
- let s = String::from_utf8((&mesg.data).to_vec()).unwrap();
+ let s = String::from_utf8(mesg.data.to_vec()).unwrap();
if &s == "end" {
info!("transfer complete")
}
diff --git a/client-native-rift/src/main.rs b/client-native-rift/src/main.rs
index fad4bb7..40b9aab 100644
--- a/client-native-rift/src/main.rs
+++ b/client-native-rift/src/main.rs
@@ -3,7 +3,7 @@
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
-
+#![allow(clippy::type_complexity)]
pub mod file;
pub mod port;
diff --git a/server/src/assets.rs b/server/src/assets.rs
index d4c1ded..4ddb3a5 100644
--- a/server/src/assets.rs
+++ b/server/src/assets.rs
@@ -63,9 +63,7 @@ struct GrassFs;
#[cfg(debug_assertions)]
impl GrassFs {
pub fn map(p: &std::path::Path) -> std::path::PathBuf {
- std::path::PathBuf::try_from("../client-web/style")
- .unwrap()
- .join(p.file_name().unwrap())
+ std::path::PathBuf::from("../client-web/style").join(p.file_name().unwrap())
}
}
#[cfg(debug_assertions)]
diff --git a/server/src/idgen.rs b/server/src/idgen.rs
index 216b682..ac40b93 100644
--- a/server/src/idgen.rs
+++ b/server/src/idgen.rs
@@ -5,17 +5,10 @@
*/
use tokio::sync::RwLock;
+#[derive(Default)]
pub struct IdGenerator {
x: RwLock<u64>,
}
-
-impl Default for IdGenerator {
- fn default() -> Self {
- Self {
- x: Default::default(),
- }
- }
-}
impl IdGenerator {
pub async fn generate(&self) -> u64 {
// TODO: dummy implementation; ideal would be encrypting the counter
diff --git a/server/src/logic.rs b/server/src/logic.rs
index b16e605..b660914 100644
--- a/server/src/logic.rs
+++ b/server/src/logic.rs
@@ -17,6 +17,7 @@ use std::{
use tokio::sync::{mpsc::Sender, RwLock};
use warp::ws::WebSocket;
+#[allow(clippy::redundant_closure)]
static CLIENTS: LazyLock<RwLock<HashMap<Client, Sender<ClientboundPacket>>>> =
LazyLock::new(|| Default::default());
@@ -141,7 +142,7 @@ impl State {
let mut w = self.watches.write().await;
let r = self.rooms.read().await;
- for e in list.to_owned() {
+ for e in list.iter().cloned() {
w.entry(e.to_string()).or_default().insert(client);
if let Some(r) = r.get(&e) {
client
@@ -170,7 +171,7 @@ impl State {
impl Client {
pub async fn send(&self, packet: ClientboundPacket) {
- if let Some(s) = CLIENTS.read().await.get(&self) {
+ if let Some(s) = CLIENTS.read().await.get(self) {
s.send(packet).await.unwrap();
} else {
warn!("invalid recipient {self:?}")
diff --git a/server/src/main.rs b/server/src/main.rs
index 306aa98..56566db 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -4,6 +4,7 @@
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
#![feature(lazy_cell)]
+#![allow(clippy::let_with_type_underscore)]
pub mod assets;
pub mod config;
pub mod idgen;
@@ -137,9 +138,12 @@ async fn run() {
async fn handle_rejection(err: Rejection) -> Result<impl Reply, Infallible> {
let code = if err.is_not_found() {
StatusCode::NOT_FOUND
- } else if let Some(_) = err.find::<warp::filters::body::BodyDeserializeError>() {
+ } else if err
+ .find::<warp::filters::body::BodyDeserializeError>()
+ .is_some()
+ {
StatusCode::BAD_REQUEST
- } else if let Some(_) = err.find::<warp::reject::MethodNotAllowed>() {
+ } else if err.find::<warp::reject::MethodNotAllowed>().is_some() {
StatusCode::METHOD_NOT_ALLOWED
} else {
error!("unhandled rejection: {:?}", err);