12 Nisan 2025, 18:51
|
#6 |
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
| Cevap: kanalın sadece giriş/çıkış loglarını tutmak istiyorum
Istersen modul olarak yapalim.
--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 18:51 -->-> Daha önceki mesaj 18:42 -- Kod: Kodu kopyalamak için üzerine çift tıklayın! #include "config.h"
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "msg.h"
#include "proto.h"
#include "numeric.h"
#include "modules.h"
#include <time.h>
ModuleHeader MOD_HEADER(m_chanlog_joinpart) = {
"m_chanlog_joinpart",
"$Id$",
"Sadece JOIN/PART loglar, günlük dosyaya yazar",
"Coderlab",
"3.2-b8-1",
NULL
};
// Dosya yolu oluşturur: logs/kanal/gun-ay-yil.log
const char *log_dosyasi_yolu() {
static char path[256];
time_t now = time(NULL);
struct tm *tm_info = localtime(&now);
snprintf(path, sizeof(path), "logs/kanal/%02d-%02d-%04d.log",
tm_info->tm_mday, tm_info->tm_mon + 1, tm_info->tm_year + 1900);
return path;
}
// Log yaz
void log_yaz(const char *format, ...) {
const char *filename = log_dosyasi_yolu();
FILE *fp = fopen(filename, "a");
if (!fp) {
mkdir("logs/kanal", 0755); // klasör yoksa oluştur
fp = fopen(filename, "a");
if (!fp) return;
}
va_list args;
va_start(args, format);
vfprintf(fp, format, args);
va_end(args);
fprintf(fp, "\n");
fclose(fp);
}
// JOIN log
int log_join(aClient *cptr, aClient *sptr, aChannel *chptr) {
if (MyClient(sptr)) {
log_yaz("[JOIN] %s joined %s", sptr->name, chptr->chname);
}
return 0;
}
// PART log
int log_part(aClient *cptr, aClient *sptr, aChannel *chptr, const char *comment) {
if (MyClient(sptr)) {
log_yaz("[PART] %s left %s (%s)", sptr->name, chptr->chname, comment ? comment : "");
}
return 0;
}
MOD_INIT(m_chanlog_joinpart) {
add_JoinHook(log_join);
add_PartHook(log_part);
return MOD_SUCCESS;
} |
| |