ClienteTFG/session_manager.cpp
2020-06-25 13:34:50 +02:00

96 lines
2.3 KiB
C++

#include "session_manager.h"
#include "read_uses.h"
#include "iostream"
session_manager::session_manager(conexion* con)
{
this->con=con;
}
bool session_manager::loggin(std::string username, std::string passwd){
this->con->write_string(username);
this->con->write_string(passwd);
std::string result;
this->con->read_string(result,4);
return result=="pass";
}
bool session_manager::admin(){
std::string result;
this->con->read_string(result,5);
std::string env;
if(this->con->get_conf()->get_param("env", env)){
this->con->write_string(env);
std::cout << env << std::endl;
}else{
this->con->write_string("no");
}
return result=="admin";
}
int session_manager::install_command(std::string package){
this->con->write_string("exec");
read_uses uses(package);
this->con->write_string(package);
if(uses.exist_file()){
this->con->write_string("y");
this->con->write_string(*uses.get_uses());
}else{
this->con->write_string("n");
}
std::string buffer;
this->con->read_string(buffer,2);
return (buffer=="ok")?1:-1;
}
int session_manager::remove_command(std::string package){
this->con->write_string("remv");
this->con->write_string(package);
std::string buffer;
this->con->read_string(buffer,2);
return atoi(buffer.data());
}
std::list<std::string> session_manager::get_packages_info(){
std::list<std::string> ret;
std::string read;
this->con->write_string("info");
while(true){
this->con->read_string(read,256);
if(read=="end:info"){
break;
}
ret.push_back(read);
}
return ret;
}
std::list<std::string> session_manager::get_users_info(){
std::list<std::string> ret;
std::string read;
this->con->write_string("uinf");
while(true){
this->con->read_string(read,256);
if(read=="end:info"){
break;
}
ret.push_back(read);
}
return ret;
}
void session_manager::create_user(std::string username, std::string password, bool admin){
this->con->write_string("cusr");
this->con->write_string(username);
this->con->write_string(password);
this->con->write_string(admin?"t":"f");
}
void session_manager::remove_user(std::string username){
this->con->write_string("rusr");
this->con->write_string(username);
}