Compare commits
No commits in common. "6dad6f1e5f9697d8bdcf44d4c233aaecc754a7c7" and "43b69c2489a83aed73af1caf6fee35eafe804893" have entirely different histories.
6dad6f1e5f
...
43b69c2489
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,4 +10,3 @@ Cargo.lock
|
|||||||
# These are backup files generated by rustfmt
|
# These are backup files generated by rustfmt
|
||||||
**/*.rs.bk
|
**/*.rs.bk
|
||||||
|
|
||||||
grrs
|
|
@ -1,7 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "sclient"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["lastlink"]
|
|
||||||
edition = "2018"
|
|
||||||
|
|
||||||
[dependencies]
|
|
11
README.md
11
README.md
@ -1,14 +1,3 @@
|
|||||||
# sclient.rust
|
# sclient.rust
|
||||||
|
|
||||||
compare https://git.rootprojects.org/root/sclient.go/src/branch/master
|
compare https://git.rootprojects.org/root/sclient.go/src/branch/master
|
||||||
|
|
||||||
## getting started
|
|
||||||
|
|
||||||
* run directly
|
|
||||||
* `cargo run -- -servername example -k example.com 3000`
|
|
||||||
* `cargo run test`
|
|
||||||
* `cargo run -- --help`
|
|
||||||
* build
|
|
||||||
* `cargo build`
|
|
||||||
* `target/debug/sclient --help` run from build
|
|
||||||
* `.\target\debug\sclient.exe --help` windows cmd
|
|
||||||
|
70
src/main.rs
70
src/main.rs
@ -1,71 +1,3 @@
|
|||||||
use std::env;
|
|
||||||
|
|
||||||
fn help() {
|
|
||||||
println!(
|
|
||||||
"Usage: sclient [--servername <string>] [-k | --insecure] [ssh|rsync] <remote> <port>
|
|
||||||
ex: sclient whatever.com 3000
|
|
||||||
(whatever.com:443 localhost:3000)
|
|
||||||
ex: sclient whatever.com:4080 0.0.0.0:3000"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let args: Vec<String> = env::args().collect();
|
println!("Hello, world!");
|
||||||
|
|
||||||
if args
|
|
||||||
.iter()
|
|
||||||
.any(|element| element == "-h" || element == "--help")
|
|
||||||
{
|
|
||||||
help();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut flags = Flags::default();
|
|
||||||
|
|
||||||
// try!()
|
|
||||||
if args
|
|
||||||
.iter()
|
|
||||||
.any(|element| element == "-k" || element == "--insecure")
|
|
||||||
{
|
|
||||||
flags.insecure = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
let serverNameArg = args
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
.find(|(index, element)| *element == "-servername");
|
|
||||||
|
|
||||||
if let Some((index, _)) = serverNameArg {
|
|
||||||
flags.servername = args[index + 1].clone();
|
|
||||||
}
|
|
||||||
|
|
||||||
// get port
|
|
||||||
let maybe_port = args[args.len() - 1].parse::<i32>();
|
|
||||||
if maybe_port.is_ok() {
|
|
||||||
// pull out of maybe option error
|
|
||||||
flags.port = maybe_port.unwrap();
|
|
||||||
} else {
|
|
||||||
help();
|
|
||||||
print!("<port> needs to be an integer");
|
|
||||||
}
|
|
||||||
// get remote
|
|
||||||
flags.remote = args[args.len() - 2].clone();
|
|
||||||
|
|
||||||
if args[args.len() - 3] == "ssh" || args[args.len() - 3] == "rsync" {
|
|
||||||
flags.custom = args[args.len() - 3].clone();
|
|
||||||
}
|
|
||||||
|
|
||||||
dbg!(flags);
|
|
||||||
// tls port forward functionality
|
|
||||||
// https://github.com/izderadicka/ptunnel-rust
|
|
||||||
// https://github.com/ctz/rustls
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Default, Debug)]
|
|
||||||
struct Flags {
|
|
||||||
insecure: bool,
|
|
||||||
servername: String,
|
|
||||||
remote: String,
|
|
||||||
custom: String,
|
|
||||||
port: i32,
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user