123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #include "fwadminproc.h"
- #include <iostream>
- 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<char> pstr_ptr = std::shared_ptr<char>(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 "<<std::endl;
- }
- return xreply;
- }
- iv::queryrpcReply fwadminproc::ProcAdminUser(const iv::queryrpcReq *req)
- {
- iv::queryrpcReply xreply;
- iv::fw::adminreq xadminreq;
- iv::fw::adminreply xadminreply;
- if(xadminreq.ParseFromArray(req->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<char> pstr_ptr = std::shared_ptr<char>(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 "<<std::endl;
- }
- return xreply;
- }
|