// 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 #include // 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_ip") == 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_id") == 0 ) safestrncpy(log_db_username, value, sizeof(log_db_username)); else if( strcmpi(key, "log_db_pw") == 0 ) safestrncpy(log_db_password, value, sizeof(log_db_password)); else if( strcmpi(key, "log_db_db") == 0 ) safestrncpy(log_db_database, value, sizeof(log_db_database)); else if( strcmpi(key, "loginlog_db") == 0 ) safestrncpy(loginlog_table, value, sizeof(loginlog_table)); else return false; return true; }