104 lines
3.1 KiB
C++
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;
|
|
}
|