56 lines
2.1 KiB
Rust
56 lines
2.1 KiB
Rust
use std::net::{TcpListener, TcpStream};
|
|
use std::io::prelude::*;
|
|
mod client;
|
|
mod conf;
|
|
mod protocol;
|
|
|
|
fn main() {
|
|
let listener = TcpListener::bind("127.0.0.1:25567").unwrap();
|
|
let mut buf: [u8; 256] = [1; 256];
|
|
let servers = conf::Servers::new();
|
|
|
|
for stream in listener.incoming() {
|
|
//stream.unwrap().write(buf);
|
|
match stream {
|
|
Ok(mut stream) => {
|
|
/*println!("Go!");
|
|
stream.write("test succes/n".as_bytes());
|
|
stream.read(&mut buf);
|
|
stream.flush();*/
|
|
println!("Go!");
|
|
let leng = stream.read(&mut buf).unwrap();
|
|
let mut hs = protocol::HandShake::new(&mut buf[.. leng]);
|
|
if hs.get_raw()[0] < 200 {
|
|
let mut sstream;
|
|
|
|
if hs.get_raw()[6]==49 {
|
|
//buf[(buf[0]-1) as usize] -= 2;
|
|
println!("p0:{}",hs.get_port());
|
|
hs.replace_port(servers.get_server(&hs.getHostName()).unwrap().1);
|
|
println!("p1:{}",hs.get_port());
|
|
sstream = TcpStream::connect("127.0.0.1:25565").unwrap();
|
|
} else {
|
|
println!("p0:{}",hs.get_port());
|
|
match servers.get_server(&hs.getHostName()) {
|
|
Some(s) => hs.replace_port(s.1),
|
|
None => hs.replace_port(25565),
|
|
}
|
|
println!("p1:{}",hs.get_port());
|
|
sstream = TcpStream::connect("127.0.0.1:25566").unwrap();
|
|
}
|
|
//let mut sstream = TcpStream::connect("127.0.0.1:25565").unwrap();
|
|
sstream.write(hs.get_raw());
|
|
let c1 = client::Client::new(stream,sstream, hs);
|
|
c1.to_string();
|
|
c1.start_proxy();
|
|
}
|
|
//c1.start_proxy().0.join();
|
|
//c1.start_proxy().1.join();
|
|
},
|
|
|
|
Err(_e) => println!("{}",_e),
|
|
}
|
|
}
|
|
}
|
|
|