#include "fwadminproc.h" #include fwadminproc::fwadminproc() { mpfwdb = new fwdb(); } fwadminproc::~fwadminproc() { delete mpfwdb; } iv::queryrpcReply fwadminproc::ProcReq(const iv::queryrpcReq * req) { iv::queryrpcReply xreply; switch (req->ntype()) { case iv::CommonRPCType::LOGIN: xreply = ProcLogin(req); break; case iv::CommonRPCType::USERADMIN: xreply = ProcAdminUser(req); break; default: break; } return xreply; } iv::queryrpcReply fwadminproc::ProcLogin(const iv::queryrpcReq *req) { iv::queryrpcReply xreply; iv::fw::loginreq xloginreq; iv::fw::loginreply xloginreply; if(xloginreq.ParseFromArray(req->data().data(),req->ndatasize())) { std::string strerrorcode = "username or password error."; int nauth = mpfwdb->CheckAuth(xloginreq.username(),xloginreq.password(),strerrorcode); xloginreply.set_nauth(nauth); if(nauth == 0) { xloginreply.set_errstr(strerrorcode); } } else { xloginreply.set_nauth(0); xloginreply.set_errstr("Parse Request Fail."); } xreply.set_ntype(iv::CommonRPCType::LOGIN); int ndatasize = xloginreply.ByteSize(); std::shared_ptr pstr_ptr = std::shared_ptr(new char[ndatasize]); if(xloginreply.SerializeToArray(pstr_ptr.get(),ndatasize)) { xreply.set_ndatasize(ndatasize); xreply.set_data(pstr_ptr.get(),ndatasize); } else { std::cout<<"fwadminproc::ProcLogin "<data().data(),req->ndatasize())) { std::string strerrorcode = "username or password error."; switch (xadminreq.admintype()) { case iv::fw::ADMINREQ_TYPE::ADDUSER: { int nauth = mpfwdb->AddUser(xadminreq.username(),xadminreq.password(),strerrorcode); xadminreply.set_nresult(nauth); if(nauth == 0) { xadminreply.set_errstr(strerrorcode); } } break; case iv::fw::ADMINREQ_TYPE::QUERYUSER: break; default: break; } } else { xadminreply.set_nresult(0); xadminreply.set_errstr("Parse Request Fail."); } xreply.set_ntype(iv::CommonRPCType::USERADMIN); int ndatasize = xadminreply.ByteSize(); std::shared_ptr pstr_ptr = std::shared_ptr(new char[ndatasize]); if(xadminreply.SerializeToArray(pstr_ptr.get(),ndatasize)) { xreply.set_ndatasize(ndatasize); xreply.set_data(pstr_ptr.get(),ndatasize); } else { std::cout<<"fwadminproc::xadminreply Serialxze fail "<