This commit is contained in:
2022-08-07 17:39:15 +02:00
commit e5a83229f1
9 changed files with 3370 additions and 0 deletions

7
server/Cargo.toml Normal file
View File

@@ -0,0 +1,7 @@
[package]
name = "daggmask-server"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

45
server/src/main.rs Normal file
View File

@@ -0,0 +1,45 @@
use std::net::UdpSocket;
fn main() -> std::io::Result<()> {
// replace xxxx with your desired port
// replace S.S.S.S with your server address
let socket = UdpSocket::bind("S.S.S.S:xxxx")?;
let mut peers: Vec<String> = vec![];
loop {
let mut buf = [0; 1024];
let (_, src) = socket.recv_from(&mut buf)?;
let stringified_buff = String::from_utf8(buf.to_vec()).unwrap();
let stringified_buff = stringified_buff.trim_matches(char::from(0));
println!("[NEW MESSAGE]{:?} => {:?}", src, stringified_buff);
if stringified_buff != "register" {
continue;
}
if !peers.contains(&format!("{}", src)) {
peers.push(format!("{}", src));
}
for p in &peers {
let filtered_peers = filter_peers(&peers, p);
if !filtered_peers.is_empty() {
socket.send_to(filtered_peers.join(",").as_bytes(), p)?;
}
}
}
}
fn filter_peers(peers: &Vec<String>, filter: &String) -> Vec<String> {
let mut new_peers: Vec<String> = vec![];
for p in peers {
if p != filter {
new_peers.push(String::from(p));
}
}
new_peers
}