This commit is contained in:
2025-08-15 20:15:49 +02:00
parent fa985a69c5
commit 918898558a
4 changed files with 25 additions and 18 deletions
+3 -5
View File
@@ -1,15 +1,13 @@
use std::io::{Read, Write}; use std::io::{Read, Write};
use rustls::Stream;
pub mod server; pub mod server;
pub mod tls; pub mod tls;
pub fn request(gateway: &str, addr: &str) -> String { pub fn request(gateway: &str, addr: &str) -> String {
// Send a request to the gateway and provide the IP address and request
let (mut conn, mut tcp) = tls::mask_tls(gateway).unwrap(); let (mut conn, mut tcp) = tls::mask_tls(gateway).unwrap();
let mut tls = Stream::new(&mut conn, &mut tcp); let mut tls = rustls::Stream::new(&mut conn, &mut tcp);
tls.write_all(format!("ROUTE {addr}").as_bytes()).unwrap(); tls.write_all(format!("ROUTE {addr}\nGET / HTTP/1.1").as_bytes())
.unwrap();
let mut resp = Vec::new(); let mut resp = Vec::new();
tls.read_to_end(&mut resp).unwrap(); tls.read_to_end(&mut resp).unwrap();
String::from_utf8_lossy(&resp).to_string() String::from_utf8_lossy(&resp).to_string()
+10 -3
View File
@@ -1,7 +1,14 @@
fn main() { fn main() {
ghostnet_rs::server::run().unwrap(); ghostnet_rs::server::run();
// println!( // println!(
// "Result: {}", // "{}",
// ghostnet_rs::request("0.0.0.0:3000", "github.com") // ghostnet_rs::request("ghostnet-rs.onrender.com:443", "https://wikipedia.org")
// ); // );
// println!(
// "{}",
// reqwest::blocking::get("https://ghostnet-rs.onrender.com/")
// .unwrap()
// .text()
// .unwrap()
// )
} }
+7 -8
View File
@@ -6,7 +6,7 @@ use reqwest::Version;
use reqwest::blocking::Client; use reqwest::blocking::Client;
use reqwest::header::{HeaderMap, HeaderName, HeaderValue}; use reqwest::header::{HeaderMap, HeaderName, HeaderValue};
pub fn run() -> reqwest::Result<()> { pub fn run() {
let listener = TcpListener::bind(format!( let listener = TcpListener::bind(format!(
"0.0.0.0:{}", "0.0.0.0:{}",
std::env::var("PORT").unwrap_or_else(|_| "3000".into()) std::env::var("PORT").unwrap_or_else(|_| "3000".into())
@@ -29,12 +29,12 @@ pub fn run() -> reqwest::Result<()> {
.1; .1;
let http = buf_str.split_once("\n").unwrap().1; let http = buf_str.split_once("\n").unwrap().1;
stream stream
.write_all(send_request(addr, http)?.as_bytes()) .write_all(send_request(addr, http).as_bytes())
.unwrap(); .unwrap();
stream.flush().unwrap(); stream.flush().unwrap();
} else { } else {
stream stream
.write_all(send_request("https://wikipedia.org", "GET / HTTP/1.1")?.as_bytes()) .write_all(send_request("https://wikipedia.org", "GET / HTTP/1.1").as_bytes())
.unwrap(); .unwrap();
stream.flush().unwrap(); stream.flush().unwrap();
} }
@@ -42,7 +42,7 @@ pub fn run() -> reqwest::Result<()> {
} }
} }
fn send_request(url: &str, request: &str) -> reqwest::Result<String> { fn send_request(url: &str, request: &str) -> String {
let client = Client::new(); let client = Client::new();
let mut lines = request.lines(); let mut lines = request.lines();
@@ -61,7 +61,6 @@ fn send_request(url: &str, request: &str) -> reqwest::Result<String> {
HeaderName::from_str(key.trim()).unwrap(), HeaderName::from_str(key.trim()).unwrap(),
HeaderValue::from_str(value.trim()).unwrap(), HeaderValue::from_str(value.trim()).unwrap(),
)); ));
// headers.insert(, );
} }
} }
@@ -76,7 +75,7 @@ fn send_request(url: &str, request: &str) -> reqwest::Result<String> {
} }
.headers(HeaderMap::from_iter(headers.into_iter())); .headers(HeaderMap::from_iter(headers.into_iter()));
let resp = builder.send()?; let resp = builder.send().unwrap();
let mut http_string = String::new(); let mut http_string = String::new();
@@ -100,8 +99,8 @@ fn send_request(url: &str, request: &str) -> reqwest::Result<String> {
http_string.push_str("\r\n"); http_string.push_str("\r\n");
let body = resp.text()?; let body = resp.text().unwrap();
http_string.push_str(&body); http_string.push_str(&body);
Ok(http_string) http_string
} }
+5 -2
View File
@@ -18,7 +18,10 @@ pub fn mask_tls<'a>(
.with_no_client_auth(); .with_no_client_auth();
let arc_cfg = Arc::new(config); let arc_cfg = Arc::new(config);
let conn = ClientConnection::new(arc_cfg, addr.to_owned().try_into()?)?; let conn = ClientConnection::new(
let tcp = TcpStream::connect(addr.to_owned() + ":443")?; arc_cfg,
addr.split_once(":").unwrap().0.to_string().try_into()?,
)?;
let tcp = TcpStream::connect(addr)?;
Ok((conn, tcp)) Ok((conn, tcp))
} }