diff --git a/README.md b/README.md index 0fa12f9..380260b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1 @@ -# Remote Code Execution Program - -I implemented this for my remote server. - -Sometimes ssh can't be possible because of NAT. That's why I add a public remote server as a relay. \ No newline at end of file +# rust-remote \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 80c029d..e1966eb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -53,12 +53,16 @@ impl Config { #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Payload { + pub sudo: bool, + pub user: String, pub args: String, } impl Payload { fn print(&self) { println!("-------"); + println!("sudo = {}", self.sudo); + println!("user = {}", self.user); println!("args = {}", self.args); } } diff --git a/src/server.rs b/src/server.rs index f337089..0bd6cda 100644 --- a/src/server.rs +++ b/src/server.rs @@ -94,8 +94,31 @@ async fn establish_connection( async fn payload_from_input(debug: bool) -> Option { println!("-------"); + println!("User"); + // let user = match get_input(debug) { + // Some(input) => input, + // None => return None, + // }; + let user = "tahinli".to_string(); println!("Command"); - get_input(debug).map(|args| Payload { args }) + match get_input(debug) { + Some(input) => { + let mut sudo = false; + let args = match input.split_once(' ') { + Some(input_splitted) => { + if input_splitted.0 == "sudo" { + sudo = true; + input_splitted.1.to_string() + } else { + input + } + } + None => input, + }; + Some(Payload { sudo, user, args }) + } + None => None, + } } fn get_input(debug: bool) -> Option {