29 #include "accountingrequest"
41 return (MD5Hash(MD5HASH).Digest(OctetsStream()<<stamp<<userid<<(
unsigned int)attributes.size()<<
GAuthServer::GetInstance()->shared_key) == authenticator;
50 bool SendResponse(Manager::Session::ID sid)
76 void GenerateFee(AccntParam& attribute)
81 switch (attribute.type)
84 aum->
accntmap[userid]=attribute.value;
86 DEBUG_PRINT(
"\tgauthd::start accounting user %d,time=%d.\n",userid,attribute.value);
91 unsigned int elapse=attribute.value - aum->
accntmap[userid];
92 DEBUG_PRINT(
"\tgauthd::stop accounting user %d. He plays %d hours %d min %d second\n",userid,elapse / 3600,(elapse % 3600) / 60,elapse % 60);
97 case _ACCOUNT_ELAPSE_TIME:
100 unsigned int elapse=attribute.value - aum->
accntmap[userid];
101 DEBUG_PRINT(
"\tgauthd::continue accounting user %d. He plays %d hours %d min %d second\n",userid,elapse / 3600,(elapse % 3600) / 60,elapse % 60);
105 DEBUG_PRINT(
"\tgauthd::warning:: _ACCOUNT_ELAPSE_TIME cannot find start. Fee leaks.\n");
106 aum->
accntmap[userid]=attribute.value;
109 case _ACCOUNT_IN_OCTETS:
111 case _ACCOUNT_OUT_OCTETS:
113 case _ACCOUNT_IN_PACKETS:
115 case _ACCOUNT_OUT_PACKETS:
131 void Process(Manager *manager, Manager::Session::ID sid)
133 if (!VerifyAuth())
return;
134 for (
size_t i=0;i<attributes.size();GenerateFee(attributes[i]),i++);
135 if (need_response && Write2DB()) SendResponse(sid);