1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
// 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;
}
|