gauthd
 
Loading...
Searching...
No Matches
GMysqlClient Class Reference

Основной класс для работы с MySQL базой данных More...

#include <gmysqlclient.hpp>

Collaboration diagram for GMysqlClient:

Public Member Functions

void Init (const char *ip, const int port, const char *user, const char *passwd, const char *db, const int h)
 Инициализация параметров подключения
 
void AlexPatch (const bool lkmod, const bool log, const char *shell)
 Дополнительные настройки
 
bool Connect ()
 Установить соединение с БД
 
void Disconnect ()
 Разорвать соединение с БД
 
bool IsActive ()
 Проверить активность соединения
 
char GetAid ()
 Получить ID приложения
 
char GetZoneid ()
 Получить ID зоны
 
bool MysqlQuery (char *ptr, size_t len)
 Выполнить SQL запрос
 
bool DeleteErrorRow (int status, int uid, char *creatime)
 Удаление ошибочных записей из таблицы usecashnow.
 
bool MatrixPasswd (int &uid, char *login, char *passwd, int ipaddr)
 Проверка учетных данных пользователя.
 
bool ClearOnlineRecord (char zoneid, char aid)
 Очистка онлайн-записей для указанной зоны и аккаунта
 
bool OnlineRecord (int uid, char aid, char &zoneid, int &zonelocalid, int &overwrite)
 Запись информации о входе пользователя в онлайн
 
bool OnfflineRecord (int uid, char aid, char &zoneid, int &zonelocalid, int &overwrite)
 Запись информации о выходе пользователя из онлайн
 
bool UserCreatime (int uid, int &timestamp)
 Получение времени создания пользователя в UNIX-формате
 
bool UserGMPrivilege (int uid, char zoneid, bool &IsGM)
 Получение времени создания пользователя в UNIX-формате
 
bool QueryGMPrivilege (int uid, char zoneid, unsigned char *gm_auth, int &count)
 Получение списка GM-привилегий пользователя
 
bool GetUseCashNow (int status, int &count)
 Получение записей usecashnow по статусу
 
bool SetUseCashNow (int status, int sn, int userid, char *creatime)
 Обновление статуса записи в usecashnow.
 
bool DelUseCashNow (int status, int uid, int sn)
 Удаление записи из usecashnow.
 
bool AddCashLog (int uid, int zoneid, int sn, int aid, int point, int cash, int status, char *creatime)
 Добавление записи в лог операций с наличностью
 
bool AlexAddLogin (int uid, int action)
 Логирование действия входа/выхода (специальный функционал)
 
bool AlexShell (int uid)
 Выполнение shell-команды при выходе пользователя
 
int GetUser (int userid)
 Найти пользователя по ID.
 
int DelUser (int userid)
 Удалить пользователя из онлайн-списка
 
int AddUser (int userid, int zoneid, char *login, int ipaddr)
 Добавить пользователя в онлайн-список
 
ONLINE_USER * GetUserData (int userid)
 Получить данные пользователя
 
int ClearCash ()
 
int GetCashSize ()
 
void DelCashUser (int idx)
 
void AddCashUser (int userid, int zoneid, int sn, int point, int cash, char *creatime)
 
int GetCashUser (int userid)
 
void GetAllCashUser (int idx, int &userid, int &zoneid)
 
char * GetCashCreaTime (int idx)
 
int GetCashCash (int idx)
 
int GetCashPoint (int idx)
 
void ClearAntibrutUser ()
 
int SizeAntibrutUser ()
 
int GetAntibrutUser (int ip)
 
int DelAntibrutUser (int ip)
 
int AddAntibrutUser (int ip)
 
int ATOI (const char *ptr)
 
void Auth0xMD5 (char *out, char *in)
 
void AuthBase64 (char *passwd, char *auth)
 
bool AuthPasswd (char *passwd, char *auth)
 Преобразование аутентификационных данных
 
bool ValidLogin (char *login, int size)
 Проверка валидности логина
 
void AddrToStr (unsigned int ip, char *address)
 Преобразование IP адреса в строку
 

Static Public Member Functions

static GMysqlClientGetInstance ()
 Получить экземпляр класса (Singleton)
 

Static Public Attributes

static GMysqlClientinstance = NULL
 Единственный экземпляр класса
 

Detailed Description

Основной класс для работы с MySQL базой данных

Warning
Реализован как Singleton. Использовать через GetInstance()

Definition at line 26 of file gmysqlclient.hpp.

Member Function Documentation

◆ AddAntibrutUser()

int GMysqlClient::AddAntibrutUser ( int ip)
inline

Definition at line 374 of file gmysqlclient.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCashLog()

bool GMysqlClient::AddCashLog ( int uid,
int zoneid,
int sn,
int aid,
int point,
int cash,
int status,
char * creatime )

Добавление записи в лог операций с наличностью

Parameters
[in]uidИдентификатор пользователя
[in]zoneidИдентификатор зоны
[in]snСерийный номер операции
[in]aidИдентификатор аккаунта
[in]pointКоличество баллов
[in]cashСумма денег
[in]statusСтатус операции
[in]creatimeВремя создания записи
Returns
true - запись успешна, false - ошибка выполнения
Note
Использует REPLACE INTO для обновления существующих записей

Definition at line 451 of file gmysqlclient.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCashUser()

void GMysqlClient::AddCashUser ( int userid,
int zoneid,
int sn,
int point,
int cash,
char * creatime )
inline

Definition at line 278 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ AddrToStr()

void GMysqlClient::AddrToStr ( unsigned int ip,
char * address )
inline

Преобразование IP адреса в строку

Parameters
ipАдрес в сетевом порядке байт
addressБуфер для результата (минимум 16 байт)

Definition at line 467 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ AddUser()

int GMysqlClient::AddUser ( int userid,
int zoneid,
char * login,
int ipaddr )
inline

Добавить пользователя в онлайн-список

Parameters
useridID пользователя
zoneidID зоны
loginЛогин
ipaddrIP адрес
Returns
Индекс добавленного пользователя

Definition at line 229 of file gmysqlclient.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AlexAddLogin()

bool GMysqlClient::AlexAddLogin ( int uid,
int action )

Логирование действия входа/выхода (специальный функционал)

Parameters
[in]uidИдентификатор пользователя
[in]actionТип действия (1 - вход, 0 - выход)
Returns
true - запись успешна, false - отключен функционал или ошибка
Note
Требует активации lkmod и loginlog через AlexPatch

Definition at line 467 of file gmysqlclient.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AlexPatch()

void GMysqlClient::AlexPatch ( const bool lkmod,
const bool log,
const char * shell )

Дополнительные настройки

Активация специального режима работы (патч Алекса).

Parameters
lkmodРежим блокировки
logФлаг логирования
shellКоманда для выполнения при выходе
[in]lkmodФлаг активации модификации
[in]logФлаг логирования входа
[in]shellШаблон команды для выполнения при выходе
Warning
Команда выполняется через system(), необходима валидация входных данных!

Definition at line 77 of file gmysqlclient.cpp.

Here is the caller graph for this function:

◆ AlexShell()

bool GMysqlClient::AlexShell ( int uid)

Выполнение shell-команды при выходе пользователя

Parameters
[in]uidИдентификатор пользователя
Returns
true - команда выполнена, false - функционал отключен
Warning
Выполняет произвольные команды из logoutshell! Риск SQL-инъекций!
Note
Формат команды: printf-шаблон с одним параметром (uid)

Definition at line 489 of file gmysqlclient.cpp.

Here is the caller graph for this function:

◆ ATOI()

int GMysqlClient::ATOI ( const char * ptr)
inline

Definition at line 388 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ Auth0xMD5()

void GMysqlClient::Auth0xMD5 ( char * out,
char * in )
inline

Definition at line 395 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ AuthBase64()

void GMysqlClient::AuthBase64 ( char * passwd,
char * auth )
inline

Definition at line 406 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ AuthPasswd()

bool GMysqlClient::AuthPasswd ( char * passwd,
char * auth )
inline

Преобразование аутентификационных данных

Parameters
passwdВыходной буфер для пароля (16 байт)
authВходные аутентификационные данные
Returns
true если преобразование успешно
Note
Поддерживаемые типы хешей: 1 - бинарный формат 2 - 0xMD5 (hex строка с префиксом 0x) 3 - base64

Definition at line 425 of file gmysqlclient.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ClearAntibrutUser()

void GMysqlClient::ClearAntibrutUser ( )
inline

Definition at line 338 of file gmysqlclient.hpp.

◆ ClearCash()

int GMysqlClient::ClearCash ( )
inline

Definition at line 252 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ ClearOnlineRecord()

bool GMysqlClient::ClearOnlineRecord ( char zoneid,
char aid )

Очистка онлайн-записей для указанной зоны и аккаунта

Parameters
[in]zoneidИдентификатор зоны
[in]aidИдентификатор аккаунта
Returns
true - операция успешна, false - ошибка выполнения
Note
Устанавливает mysql_state = 2 перед выполнением операции
Warning
Требует предварительной установки соединения с БД

Definition at line 197 of file gmysqlclient.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Connect()

bool GMysqlClient::Connect ( )

Установить соединение с БД

Установка соединения с базой данных.

Returns
true - подключение успешно, false - ошибка подключения
Note
Выводит сообщение о статусе подключения в консоль.

Definition at line 92 of file gmysqlclient.cpp.

Here is the caller graph for this function:

◆ DelAntibrutUser()

int GMysqlClient::DelAntibrutUser ( int ip)
inline

Definition at line 364 of file gmysqlclient.hpp.

Here is the call graph for this function:

◆ DelCashUser()

void GMysqlClient::DelCashUser ( int idx)
inline

Definition at line 268 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ DeleteErrorRow()

bool GMysqlClient::DeleteErrorRow ( int status,
int uid,
char * creatime )

Удаление ошибочных записей из таблицы usecashnow.

Parameters
[in]statusСтатус записи для удаления
[in]uidИдентификатор пользователя
[in]creatimeВремя создания записи
Returns
true - удаление успешно, false - ошибка выполнения
Warning
Не выполняет проверку формата параметра creatime

Definition at line 362 of file gmysqlclient.cpp.

Here is the call graph for this function:

◆ DelUseCashNow()

bool GMysqlClient::DelUseCashNow ( int status,
int uid,
int sn )

Удаление записи из usecashnow.

Parameters
[in]statusСтатус записи
[in]uidИдентификатор пользователя
[in]snСерийный номер операции
Returns
true - удаление успешно, false - ошибка выполнения

Definition at line 429 of file gmysqlclient.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DelUser()

int GMysqlClient::DelUser ( int userid)
inline

Удалить пользователя из онлайн-списка

Parameters
useridID пользователя
Returns
Индекс удаленного элемента или -1

Definition at line 211 of file gmysqlclient.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Disconnect()

void GMysqlClient::Disconnect ( )

Разорвать соединение с БД

Разрыв соединения с базой данных.

Note
Автоматически вызывается при разрушении объекта.

Definition at line 119 of file gmysqlclient.cpp.

◆ GetAid()

char GMysqlClient::GetAid ( )
inline

Получить ID приложения

Definition at line 164 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ GetAllCashUser()

void GMysqlClient::GetAllCashUser ( int idx,
int & userid,
int & zoneid )
inline

Definition at line 296 of file gmysqlclient.hpp.

◆ GetAntibrutUser()

int GMysqlClient::GetAntibrutUser ( int ip)
inline

Definition at line 354 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ GetCashCash()

int GMysqlClient::GetCashCash ( int idx)
inline

Definition at line 317 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ GetCashCreaTime()

char * GMysqlClient::GetCashCreaTime ( int idx)
inline

Definition at line 307 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ GetCashPoint()

int GMysqlClient::GetCashPoint ( int idx)
inline

Definition at line 327 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ GetCashSize()

int GMysqlClient::GetCashSize ( )
inline

Definition at line 259 of file gmysqlclient.hpp.

◆ GetCashUser()

int GMysqlClient::GetCashUser ( int userid)
inline

Definition at line 286 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ GetInstance()

static GMysqlClient * GMysqlClient::GetInstance ( )
inlinestatic

Получить экземпляр класса (Singleton)

Returns
Указатель на единственный экземпляр GMysqlClient

Definition at line 481 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ GetUseCashNow()

bool GMysqlClient::GetUseCashNow ( int status,
int & count )

Получение записей usecashnow по статусу

Parameters
[in]statusСтатус для фильтрации
[out]countКоличество найденных записей
Returns
true - запрос выполнен, false - ошибка выполнения
Note
Очищает кэш перед заполнением новых данных

Definition at line 378 of file gmysqlclient.cpp.

Here is the call graph for this function:

◆ GetUser()

int GMysqlClient::GetUser ( int userid)
inline

Найти пользователя по ID.

Parameters
useridID пользователя
Returns
Индекс в векторе или -1 если не найден

Definition at line 196 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ GetUserData()

ONLINE_USER * GMysqlClient::GetUserData ( int userid)
inline

Получить данные пользователя

Parameters
useridID пользователя
Returns
Указатель на структуру ONLINE_USER или NULL

Definition at line 243 of file gmysqlclient.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetZoneid()

char GMysqlClient::GetZoneid ( )
inline

Получить ID зоны

Definition at line 165 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ Init()

void GMysqlClient::Init ( const char * ip,
const int port,
const char * user,
const char * passwd,
const char * db,
const int h )

Инициализация параметров подключения

Инициализация параметров подключения к базе данных.

Parameters
ipIP адрес сервера БД
portПорт сервера БД
userИмя пользователя
passwdПароль
dbИмя базы данных
hТип хеширования (1-binary, 2-0xMD5, 3-base64)
[in]ipIP-адрес сервера MySQL (макс. 19 символов)
[in]portПорт сервера MySQL
[in]userИмя пользователя БД (макс. 127 символов)
[in]passwdПароль пользователя БД (макс. 127 символов)
[in]dbНазвание базы данных (макс. 127 символов)
[in]hХэш-идентификатор (дополнительный параметр)
Note
Инициализирует мьютексы и резервирует память для контейнеров.

Definition at line 30 of file gmysqlclient.cpp.

Here is the caller graph for this function:

◆ IsActive()

bool GMysqlClient::IsActive ( )
inline

Проверить активность соединения

Definition at line 163 of file gmysqlclient.hpp.

Here is the caller graph for this function:

◆ MatrixPasswd()

bool GMysqlClient::MatrixPasswd ( int & uid,
char * login,
char * passwd,
int ipaddr )

Проверка учетных данных пользователя.

Parameters
[out]uidИдентификатор пользователя (при успешной проверке)
[in]loginЛогин пользователя
[in]passwdПароль пользователя (открытый текст)
[in]ipaddrIP-адрес клиента (сетевой порядок)
Returns
true - аутентификация успешна, false - ошибка

Использует хранимую процедуру acquireuserpasswd.

Definition at line 163 of file gmysqlclient.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MysqlQuery()

bool GMysqlClient::MysqlQuery ( char * ptr,
size_t len )

Выполнить SQL запрос

Выполнение SQL-запроса.

Parameters
ptrТекст запроса
lenДлина запроса
Returns
true если запрос выполнен успешно
Parameters
[in]ptrУказатель на буфер с запросом
[in]lenДлина запроса (макс. 1024 байта)
Returns
true - запрос выполнен успешно, false - ошибка выполнения
Warning
Не использовать для запросов длиной более 1024 байт!

Definition at line 136 of file gmysqlclient.cpp.

Here is the caller graph for this function:

◆ OnfflineRecord()

bool GMysqlClient::OnfflineRecord ( int uid,
char aid,
char & zoneid,
int & zonelocalid,
int & overwrite )

Запись информации о выходе пользователя из онлайн

Parameters
[in]uidИдентификатор пользователя
[in]aidИдентификатор аккаунта
[in,out]zoneidИдентификатор зоны (входное и выходное значение)
[in,out]zonelocalidЛокальный ID в зоне (входное и выходное значение)
[out]overwriteФлаг перезаписи (0 - нет перезаписи, 1 - перезапись)
Returns
true - операция успешна, false - ошибка выполнения
Note
Автоматически удаляет пользователя из внутреннего хранилища
Warning
Блокирует мьютекс на время работы с результатами запроса

Definition at line 254 of file gmysqlclient.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnlineRecord()

bool GMysqlClient::OnlineRecord ( int uid,
char aid,
char & zoneid,
int & zonelocalid,
int & overwrite )

Запись информации о входе пользователя в онлайн

Parameters
[in]uidИдентификатор пользователя
[in]aidИдентификатор аккаунта
[in,out]zoneidИдентификатор зоны (входное и выходное значение)
[in,out]zonelocalidЛокальный ID в зоне (входное и выходное значение)
[out]overwriteФлаг перезаписи (0 - нет перезаписи, 1 - перезапись)
Returns
true - операция успешна, false - ошибка выполнения

Использует хранимые процедуры и временные переменные MySQL

Warning
Требует обработки результатов через mysql_store_result

Definition at line 219 of file gmysqlclient.cpp.

Here is the call graph for this function:

◆ QueryGMPrivilege()

bool GMysqlClient::QueryGMPrivilege ( int uid,
char zoneid,
unsigned char * gm_auth,
int & count )

Получение списка GM-привилегий пользователя

Parameters
[in]uidИдентификатор пользователя
[in]zoneidИдентификатор зоны
[out]gm_authМассив для хранения привилегий
[out]countКоличество найденных привилегий
Returns
true - запрос выполнен, false - ошибка выполнения
Warning
Не контролирует размер выходного массива gm_auth

Definition at line 336 of file gmysqlclient.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetUseCashNow()

bool GMysqlClient::SetUseCashNow ( int status,
int sn,
int uid,
char * creatime )

Обновление статуса записи в usecashnow.

Parameters
[in]statusНовый статус записи
[in]snСерийный номер операции
[in]uidИдентификатор пользователя
[in]creatimeВремя создания записи
Returns
true - обновление успешно, false - ошибка выполнения
Note
Выполняет проверку существования записи перед обновлением

Definition at line 405 of file gmysqlclient.cpp.

Here is the call graph for this function:

◆ SizeAntibrutUser()

int GMysqlClient::SizeAntibrutUser ( )
inline

Definition at line 345 of file gmysqlclient.hpp.

◆ UserCreatime()

bool GMysqlClient::UserCreatime ( int uid,
int & timestamp )

Получение времени создания пользователя в UNIX-формате

Parameters
[in]uidИдентификатор пользователя
[out]timestampВремя создания пользователя
Returns
true - данные получены, false - ошибка запроса
Note
Использует функцию MySQL UNIX_TIMESTAMP()

Definition at line 286 of file gmysqlclient.cpp.

Here is the call graph for this function:

◆ UserGMPrivilege()

bool GMysqlClient::UserGMPrivilege ( int uid,
char zoneid,
bool & IsGM )

Получение времени создания пользователя в UNIX-формате

Parameters
[in]uidИдентификатор пользователя
[out]timestampВремя создания пользователя
Returns
true - данные получены, false - ошибка запроса
Note
Использует функцию MySQL UNIX_TIMESTAMP()

Definition at line 311 of file gmysqlclient.cpp.

Here is the call graph for this function:

◆ ValidLogin()

bool GMysqlClient::ValidLogin ( char * login,
int size )
inline

Проверка валидности логина

Parameters
loginЛогин для проверки
sizeДлина логина
Returns
true если логин содержит только буквы и цифры

Definition at line 450 of file gmysqlclient.hpp.

Here is the caller graph for this function:

Member Data Documentation

◆ instance

GMysqlClient * GMysqlClient::instance = NULL
static

Единственный экземпляр класса

Статический указатель на единственный экземпляр класса (Singleton)

Definition at line 487 of file gmysqlclient.hpp.


The documentation for this class was generated from the following files: