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 rustls::Stream;
pub mod server;
pub mod tls;
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 tls = Stream::new(&mut conn, &mut tcp);
tls.write_all(format!("ROUTE {addr}").as_bytes()).unwrap();
let mut tls = rustls::Stream::new(&mut conn, &mut tcp);
tls.write_all(format!("ROUTE {addr}\nGET / HTTP/1.1").as_bytes())
.unwrap();
let mut resp = Vec::new();
tls.read_to_end(&mut resp).unwrap();
String::from_utf8_lossy(&resp).to_string()
+10 -3
View File
@@ -1,7 +1,14 @@
fn main() {
ghostnet_rs::server::run().unwrap();
ghostnet_rs::server::run();
// 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::header::{HeaderMap, HeaderName, HeaderValue};
pub fn run() -> reqwest::Result<()> {
pub fn run() {
let listener = TcpListener::bind(format!(
"0.0.0.0:{}",
std::env::var("PORT").unwrap_or_else(|_| "3000".into())
@@ -29,12 +29,12 @@ pub fn run() -> reqwest::Result<()> {
.1;
let http = buf_str.split_once("\n").unwrap().1;
stream
.write_all(send_request(addr, http)?.as_bytes())
.write_all(send_request(addr, http).as_bytes())
.unwrap();
stream.flush().unwrap();
} else {
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();
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 mut lines = request.lines();
@@ -61,7 +61,6 @@ fn send_request(url: &str, request: &str) -> reqwest::Result<String> {
HeaderName::from_str(key.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()));
let resp = builder.send()?;
let resp = builder.send().unwrap();
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");
let body = resp.text()?;
let body = resp.text().unwrap();
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();
let arc_cfg = Arc::new(config);
let conn = ClientConnection::new(arc_cfg, addr.to_owned().try_into()?)?;
let tcp = TcpStream::connect(addr.to_owned() + ":443")?;
let conn = ClientConnection::new(
arc_cfg,
addr.split_once(":").unwrap().0.to_string().try_into()?,
)?;
let tcp = TcpStream::connect(addr)?;
Ok((conn, tcp))
}