
Removed the unused login and txt->sql options in inter_athena.conf. Renamed config option log_db to log_db_db in inter_athena.conf. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13005 54d463be-8e91-2dee-dedb-b68131a5f0ec
93 lines
2.4 KiB
C
93 lines
2.4 KiB
C
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
|
|
// For more information, see LICENCE in the main folder
|
|
|
|
#include "../common/cbasetypes.h"
|
|
#include "../common/mmo.h"
|
|
#include "../common/socket.h"
|
|
#include "../common/sql.h"
|
|
#include "../common/strlib.h"
|
|
#include <string.h>
|
|
#include <stdlib.h> // exit
|
|
|
|
char log_db_hostname[32] = "127.0.0.1";
|
|
uint16 log_db_port = 3306;
|
|
char log_db_username[32] = "ragnarok";
|
|
char log_db_password[32] = "ragnarok";
|
|
char log_db_database[32] = "log";
|
|
char loginlog_table[256] = "loginlog";
|
|
|
|
Sql* sql_handle;
|
|
bool enabled = false;
|
|
|
|
|
|
/*=============================================
|
|
* Records an event in the login log
|
|
*---------------------------------------------*/
|
|
void login_log(uint32 ip, const char* username, int rcode, const char* message)
|
|
{
|
|
char esc_username[NAME_LENGTH*2+1];
|
|
char esc_message[255*2+1];
|
|
int retcode;
|
|
|
|
if( !enabled )
|
|
return;
|
|
|
|
Sql_EscapeStringLen(sql_handle, esc_username, username, strnlen(username, NAME_LENGTH));
|
|
Sql_EscapeStringLen(sql_handle, esc_message, message, strnlen(message, 255));
|
|
|
|
retcode = Sql_Query(sql_handle,
|
|
"INSERT INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%s', '%s', '%d', '%s')",
|
|
loginlog_table, ip2str(ip,NULL), esc_username, rcode, message);
|
|
|
|
if( retcode != SQL_SUCCESS )
|
|
Sql_ShowDebug(sql_handle);
|
|
}
|
|
|
|
bool loginlog_init(void)
|
|
{
|
|
sql_handle = Sql_Malloc();
|
|
|
|
if( SQL_ERROR == Sql_Connect(sql_handle, log_db_username, log_db_password, log_db_hostname, log_db_port, log_db_database) )
|
|
{
|
|
Sql_ShowDebug(sql_handle);
|
|
Sql_Free(sql_handle);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
enabled = true;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool loginlog_final(void)
|
|
{
|
|
Sql_Free(sql_handle);
|
|
sql_handle = NULL;
|
|
return true;
|
|
}
|
|
|
|
bool loginlog_config_read(const char* key, const char* value)
|
|
{
|
|
if( strcmpi(key, "log_db_hostname") == 0 )
|
|
safestrncpy(log_db_hostname, value, sizeof(log_db_hostname));
|
|
else
|
|
if( strcmpi(key, "log_db_port") == 0 )
|
|
log_db_port = (uint16)strtoul(value, NULL, 10);
|
|
else
|
|
if( strcmpi(key, "log_db_username") == 0 )
|
|
safestrncpy(log_db_username, value, sizeof(log_db_username));
|
|
else
|
|
if( strcmpi(key, "log_db_password") == 0 )
|
|
safestrncpy(log_db_password, value, sizeof(log_db_password));
|
|
else
|
|
if( strcmpi(key, "log_db_database") == 0 )
|
|
safestrncpy(log_db_database, value, sizeof(log_db_database));
|
|
else
|
|
if( strcmpi(key, "loginlog_table") == 0 )
|
|
safestrncpy(loginlog_table, value, sizeof(loginlog_table));
|
|
else
|
|
return false;
|
|
|
|
return true;
|
|
}
|