update: both the downstream POCs work, with the bogus downstream.
parent
0cb24695d0
commit
8d62b29319
|
@ -1662,6 +1662,7 @@ version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64 0.12.3",
|
"base64 0.12.3",
|
||||||
|
"clap",
|
||||||
"futures",
|
"futures",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"rmp-serde",
|
"rmp-serde",
|
||||||
|
|
|
@ -9,6 +9,7 @@ edition = "2018"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.34"
|
anyhow = "1.0.34"
|
||||||
base64 = "0.12.3"
|
base64 = "0.12.3"
|
||||||
|
clap = "2.33.3"
|
||||||
futures = "0.3.7"
|
futures = "0.3.7"
|
||||||
reqwest = { version = "0.10.8", features = ["stream"] }
|
reqwest = { version = "0.10.8", features = ["stream"] }
|
||||||
rmp-serde = "0.14.4"
|
rmp-serde = "0.14.4"
|
||||||
|
|
|
@ -1,16 +1,43 @@
|
||||||
|
use clap::{App, SubCommand};
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use tokio::{
|
use tokio::{
|
||||||
io::AsyncWriteExt,
|
io::AsyncWriteExt,
|
||||||
net::TcpStream,
|
net::{
|
||||||
|
TcpStream,
|
||||||
|
TcpListener,
|
||||||
|
},
|
||||||
stream::StreamExt,
|
stream::StreamExt,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main () -> anyhow::Result <()> {
|
async fn main () -> anyhow::Result <()> {
|
||||||
|
let matches = App::new ("ptth_forwarding")
|
||||||
|
.author ("Trish")
|
||||||
|
.about ("Terminator for PTTH port forwarding")
|
||||||
|
.subcommand (
|
||||||
|
SubCommand::with_name ("server")
|
||||||
|
.about ("Run this on the host with the TCP server")
|
||||||
|
)
|
||||||
|
.subcommand (
|
||||||
|
SubCommand::with_name ("client")
|
||||||
|
.about ("Run this on the host with the TCP client")
|
||||||
|
)
|
||||||
|
.get_matches ();
|
||||||
|
|
||||||
let client = Client::builder ()
|
let client = Client::builder ()
|
||||||
.build ()?;
|
.build ()?;
|
||||||
|
|
||||||
let mut tcp_stream = TcpStream::connect ("127.0.0.1:4010").await?;
|
let mut tcp_stream = if let Some (matches) = matches.subcommand_matches ("server") {
|
||||||
|
TcpStream::connect ("127.0.0.1:4010").await?
|
||||||
|
}
|
||||||
|
else if let Some (matches) = matches.subcommand_matches ("client") {
|
||||||
|
let mut listener = TcpListener::bind ("127.0.0.1:4020").await?;
|
||||||
|
let (stream, _addr) = listener.accept ().await?;
|
||||||
|
stream
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
panic! ("Must use server or client subcommand.");
|
||||||
|
};
|
||||||
|
|
||||||
let resp = client.get ("http://127.0.0.1:4003/").send ().await?;
|
let resp = client.get ("http://127.0.0.1:4003/").send ().await?;
|
||||||
let mut downstream = resp.bytes_stream ();
|
let mut downstream = resp.bytes_stream ();
|
||||||
|
|
Loading…
Reference in New Issue