Commit 3aab7b07 authored by Pavel Vainerman's avatar Pavel Vainerman

(LogDB): добавил функцию экранирования кавычек перед записью в БД

parent badf49e2
......@@ -265,7 +265,7 @@ void LogDB::addLog( LogDB::Log* log, const string& txt )
<< tm.tv_sec << "','" // timestamp
<< tm.tv_nsec << "','" // usec
<< log->name << "','"
<< txt << "');";
<< qEscapeString(txt) << "');";
qbuf.emplace(q.str());
}
......@@ -964,6 +964,21 @@ string LogDB::qDate( const string& p, const char sep )
return p.substr(0, 4) + "-" + p.substr(4, 2) + "-" + p.substr(6, 2);
}
// -----------------------------------------------------------------------------
std::string LogDB::qEscapeString( const string& txt )
{
ostringstream ret;
for( const auto& c : txt )
{
ret << c;
if( c == '\'' || c == '"' )
ret << c;
}
return ret.str();
}
// -----------------------------------------------------------------------------
void LogDB::onWebSocketSession(Poco::Net::HTTPServerRequest& req, Poco::Net::HTTPServerResponse& resp)
{
using Poco::Net::WebSocket;
......
......@@ -66,12 +66,13 @@ namespace uniset
и каждый лог будет генерировать не более 2-5 мегабайт записей. Поэтому sqlite должно хватить.
\section sec_LogDB_Conf Конфигурирование LogDB
\code
<LogDB name="LogDB" ...>
<logserver name="" ip=".." port=".." cmd=".." description=".."/>
<logserver name="" ip=".." port=".." cmd=".." description=".."/>
<logserver name="" ip=".." port=".." cmd=".."/>
</LogDB>
\endcode
\section sec_LogDB_DB LogDB Работа с БД
Для оптимизации, запись в БД сделана не по каждому сообщению, а через промежуточнй буффер.
......@@ -87,7 +88,7 @@ namespace uniset
--prefix-httpserver-host и --prefix-httpserver-port.
Запросы обрабатываются по пути: api/version/logdb/...
\code
/help - Получение списка доступных команд
/list - список доступных логов
/logs?logname&..parameters.. - получение логов 'logname'
......@@ -100,7 +101,7 @@ namespace uniset
По умолчанию: минут
/count?logname - Получить текущее количество записей
\endcode
\section sec_LogDB_WEBSOCK LogDB Поддержка web socket
......@@ -195,6 +196,9 @@ namespace uniset
// преобразование в дату 'YYYY-MM-DD' из строки 'YYYYMMDD' или 'YYYY/MM/DD'
static std::string qDate(const std::string& p , const char sep = '-');
// экранирование кавычек (удваивание для sqlite)
static std::string qEscapeString( const std::string& s );
std::shared_ptr<LogWebSocket> newWebSocket(Poco::Net::HTTPServerRequest* req, Poco::Net::HTTPServerResponse* resp, const std::string& logname );
void delWebSocket( std::shared_ptr<LogWebSocket>& ws );
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment