Last active
February 4, 2018 16:22
-
-
Save deg4uss3r/c8c7c90ba8b62963bb1a3bfd8c1c01c4 to your computer and use it in GitHub Desktop.
nc_quicli
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[package] | |
name = "nc_quicli" | |
version = "0.2.0" | |
authors = ["deg4uss3r <[email protected]>"] | |
[dependencies] | |
quicli = "0.1" | |
structopt = "0.1" | |
#[macro_use] extern crate quicli; | |
use std::io::BufReader; | |
use std::io::BufRead; | |
use std::net::{SocketAddrV4, Ipv4Addr, TcpListener}; | |
use quicli::prelude::*; | |
//creating CLI struct for inputs | |
#[derive(Debug, StructOpt)] | |
struct Cli { | |
//IP address to bind on; default localhost (IPv4) | |
#[structopt(long = "IP", short = "i", default_value = "127.0.0.1")] | |
ip_address: Ipv4Addr, | |
//port number to bind on; default random port call | |
#[structopt(long = "port", short = "p", default_value = "0")] | |
port: u16, | |
/// Pass many times for more log output | |
#[structopt(long = "verbose", short = "v")] verbosity: u64, | |
} | |
main!(|args: Cli, log_level: verbosity| { | |
let socket = SocketAddrV4::new(args.ip_address, args.port); | |
let listener = TcpListener::bind(socket)?; | |
let port = listener.local_addr()?; | |
println!("Listening on {}, access this port to end the program", port); | |
let (tcp_stream, addr) = listener.accept()?; | |
println!("Connection received! {:?} is sending data.", addr); | |
let tcp_reader = BufReader::new(tcp_stream); | |
for line in tcp_reader.lines() { | |
match line { | |
Ok(x) => { | |
if x == "\\exit" { | |
println!("Received disconnect from {}", addr); | |
std::process::exit(1); | |
} | |
else { | |
println!("{}: {}", addr, x) | |
} | |
}, | |
Err(e) => println!("Error reading from socket: {}", e) | |
} | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment