use MMDB_Server::*;
pub use ClientMain::serverconnection;
pub mod ClientMain {
use std::io::*;
use std::string;
use super::*;
pub struct serverconnection {
addr: String,
pwd: String,
cpwd: String,
}
impl serverconnection {
fn new(addr: String, pwd: String) -> serverconnection {
serverconnection{addr,pwd: pwd.clone(),cpwd: "MMDB/0.1.0/CLIENT PASSWORD -KEEP-ALIVE- /PASSWORD CRYPTED:".to_string() + &crypt(pwd.clone().to_string(),"MMDB/0.1.0/DEFAULT PASSWORD CRYPTER -O4UHRWO3IT4UY4WOTIUEHRILEUDSD- /DEFAULT/".to_string()),}
}
fn insert(self, key: String, value: String) {
let mut stream = std::net::TcpStream::connect(self.addr).unwrap();
let mut writer = std::io::BufWriter::new(&stream);
let mut reader = std::io::BufReader::new(&stream);
writer.write_all(crypt("MMDB/0.1.0/CLIENT CONNECT -KEEP-ALIVE- /ASK FOR CONNECT".to_string().clone(),self.cpwd.clone()).as_bytes());
writer.flush();
let mut BUF = String::new();
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER ACCEPT -KEEP-ALIVE- /ACCEPT CONNECT -HEADER- /ASK FOR PASSWORD" {
eprintln!("Failed to connect!");
std::process::exit(-1);
}
writer.write_all(crypt(self.cpwd.clone(),self.cpwd.clone()).as_bytes());
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER ACCEPT -KEEP-ALIVE- /ACCEPT VERIFY -HEADER- /" {
eprintln!("Wrong password!");
std::process::exit(-1);
}
writer.write_all(crypt(("MMDB/0.1.0/CLIENT/SET -KEEP-ALIVE- /SET KV PAIR..KV PAIR:".to_string().clone() + &key.clone() + &value.clone()).to_string().clone(),self.cpwd.clone()).as_bytes());
writer.flush();
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER ACCEPT -KEEP-ALIVE- /ANSWER FOR ASKING SET KV PAIRS..OK" {
eprintln!("Insert failed!");
std::process::exit(-1);
}
writer.write_all(crypt("MMDB/0.1.0/CLIENT DISCONNECT -KEEP-ALIVE- /DISCONNECT".to_string().clone(),self.cpwd.clone()).as_bytes());
writer.flush();
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER DISCONNECT -DISCONNECT- /DISCONNECT" {
eprintln!("Unkown error!");
std::process::exit(-1);
}
}
fn get(self,key:String) -> String{
let mut stream = std::net::TcpStream::connect(self.addr).unwrap();
let mut writer = std::io::BufWriter::new(&stream);
let mut reader = std::io::BufReader::new(&stream);
writer.write_all(crypt("MMDB/0.1.0/CLIENT CONNECT -KEEP-ALIVE- /ASK FOR CONNECT".to_string().clone(),self.cpwd.clone()).as_bytes());
writer.flush();
let mut BUF = String::new();
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER ACCEPT -KEEP-ALIVE- /ACCEPT CONNECT -HEADER- /ASK FOR PASSWORD" {
eprintln!("Failed to connect!");
std::process::exit(-1);
}
writer.write_all(crypt(self.cpwd.clone(),self.cpwd.clone()).as_bytes());
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER ACCEPT -KEEP-ALIVE- /ACCEPT VERIFY -HEADER- /" {
eprintln!("Wrong password!");
std::process::exit(-1);
}
writer.write_all(crypt(("MMDB/0.1.0/CLIENT GET -KEEP-ALIVE- /ASK FOR VAL..KEY:".to_string().clone() + key.clone().as_str()),self.cpwd.clone()).as_bytes());
writer.flush();
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
let mut split = BUF.split(':');
split.next();
let mut BUF_ = String::new();
reader.read_to_string(&mut BUF_);
BUF_ = decrypt(BUF_,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER DISCONNECT -DISCONNECT- /DISCONNECT" {
eprintln!("Unkown error!");
std::process::exit(-1);
}
split.next().unwrap().to_string().clone()
}
fn save(self){
let mut stream = std::net::TcpStream::connect(self.addr).unwrap();
let mut writer = std::io::BufWriter::new(&stream);
let mut reader = std::io::BufReader::new(&stream);
writer.write_all(crypt("MMDB/0.1.0/CLIENT CONNECT -KEEP-ALIVE- /ASK FOR CONNECT".to_string().clone(),self.cpwd.clone()).as_bytes());
writer.flush();
let mut BUF = String::new();
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER ACCEPT -KEEP-ALIVE- /ACCEPT CONNECT -HEADER- /ASK FOR PASSWORD" {
eprintln!("Failed to connect!");
std::process::exit(-1);
}
writer.write_all(crypt(self.cpwd.clone(),self.cpwd.clone()).as_bytes());
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER ACCEPT -KEEP-ALIVE- /ACCEPT VERIFY -HEADER- /" {
eprintln!("Wrong password!");
std::process::exit(-1);
}
writer.write_all(crypt("MMDB/0.1.0/CLIENT -KEEP-ALIVE- /SAVE".to_string().clone(),self.cpwd.clone()).as_bytes());
writer.flush();
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER ACCEPT -KEEP-ALIVE- /ANSWER FOR SAVING BATABASES..OK" {
eprintln!("Failed to save!");
std::process::exit(-1);
}
writer.write_all(crypt("MMDB/0.1.0/CLIENT DISCONNECT -KEEP-ALIVE- /DISCONNECT".to_string().clone(),self.cpwd.clone()).as_bytes());
writer.flush();
reader.read_to_string(&mut BUF);
BUF = decrypt(BUF,self.cpwd.clone());
if BUF != "MMDB/0.1.0/SERVER DISCONNECT -DISCONNECT- /DISCONNECT" {
eprintln!("Unkown error!");
std::process::exit(-1);
}
}
}
}