aozhiwei 32e388fda7 1
2022-05-26 10:17:07 +08:00

104 lines
3.1 KiB
C++

#include "precompile.h"
#include <a8/udplog.h>
#include <a8/timer.h>
#include <a8/openssl.h>
#include "typeconvert.h"
#include "app.h"
#include "jsondatamgr.h"
#include "GCListener.h"
#include "metamgr.h"
#include "textmgr.h"
#include "framework/cpp/utils.h"
#include "framework/cpp/channel.h"
void TextMgr::Init()
{
}
void TextMgr::UnInit()
{
}
void TextMgr::__DirtyWordCheck(f8::JsonHttpRequest* request)
{
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
std::string text = request->request.At("text")->AsXValue();
if (MetaMgr::Instance()->HasDirtyWord(text)) {
request->resp_xobj->SetVal("errcode", 1);
request->resp_xobj->SetVal("errmsg", "has forbid word");
}
}
void TextMgr::__DirtyWordReplace(f8::JsonHttpRequest* request)
{
std::string text = request->request.At("text")->AsXValue();
std::string new_text = MetaMgr::Instance()->ReplaceDirtyWord(text, '*');
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
request->resp_xobj->SetVal("new_text", new_text);
}
void TextMgr::__RandName(f8::JsonHttpRequest* request)
{
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
std::string name = MetaMgr::Instance()->RandName();
int try_count = 0;
while (try_count < 10) {
name = MetaMgr::Instance()->RandName();
if (!MetaMgr::Instance()->HasDirtyWord(name)) {
break;
}
++try_count;
}
if (try_count >= 10) {
request->resp_xobj->SetVal("errcode", 1);
request->resp_xobj->SetVal("errmsg", "has forbid word,please try again");
} else {
std::string sign = Sign(name);
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
request->resp_xobj->SetVal("name", name);
request->resp_xobj->SetVal("name_sign", sign);
}
}
void TextMgr::__IsValidName(f8::JsonHttpRequest* request)
{
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
std::string name = request->request.At("name")->AsXValue();
if (MetaMgr::Instance()->HasDirtyWord(name)) {
request->resp_xobj->SetVal("errcode", 1);
request->resp_xobj->SetVal("errmsg", "has forbid word");
} else {
std::string sign = Sign(name);
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
request->resp_xobj->SetVal("name", name);
request->resp_xobj->SetVal("name_sign", sign);
}
}
std::string TextMgr::Sign(const std::string& name)
{
int rnd = rand();
std::string sign = a8::openssl::md5(name +
a8::XValue(App::Instance()->nowtime).GetString() +
a8::XValue(rnd).GetString() +
"sllpqzirwnm5q0kj8qvoxlqhxc3nhn7a");
sign = a8::Format("%s_%s_%s",
{
a8::XValue(App::Instance()->nowtime).GetString(),
a8::XValue(rnd).GetString(),
sign
});
return sign;
}