changed Makefile; build all commands as an own file
[NeonServV5.git] / EventLogger.c
index 6980dab6d736ec95252668bcc84e2fa0d9cc0151..d0b61bde6f42999711b72103204dd6a3ac713ab1 100644 (file)
@@ -1,5 +1,10 @@
 
 #include "EventLogger.h"
+#include "modcmd.h"
+#include "mysqlConn.h"
+#include "UserNode.h"
+#include "ChanNode.h"
+#include "DBHelper.h"
 
 static struct Event *first_event = NULL, *last_event = NULL;
 
@@ -35,7 +40,29 @@ struct Event *createEvent(struct ClientSocket *client, struct UserNode *user, st
 }
 
 void logEvent(struct Event *event) {
-    //log!
+    char fullcmd[MAXLEN];
+    sprintf(fullcmd, "%s %s", event->command, event->arguments);
+    if((event->flags & CMDFLAG_LOG) && event->chan) {
+        char *auth = ((event->user->flags & USERFLAG_ISAUTHED) ? event->user->auth : "*");
+        loadChannelSettings(event->chan);
+        if((event->chan->flags & CHANFLAG_CHAN_REGISTERED))
+            printf_mysql_query("INSERT INTO `events` (`cid`, `nick`, `auth`, `time`, `command`) VALUES ('%d', '%s', '%s', UNIX_TIMESTAMP(), '%s')", event->chan->channel_id, escape_string(event->user->nick), auth, escape_string(fullcmd));
+    }
+    if((event->flags & CMDFLAG_OPLOG)) {
+        MYSQL_RES *res;
+        MYSQL_ROW row;
+        int userid;
+        char *auth = ((event->user->flags & USERFLAG_ISAUTHED) ? event->user->auth : "*");
+        printf_mysql_query("SELECT `user_id` FROM `users` WHERE `user_user` = '%s'", escape_string(auth));
+        res = mysql_use();
+        if ((row = mysql_fetch_row(res)) == NULL) 
+            userid = 0;
+        else
+            userid = atoi(row[0]);
+        loadChannelSettings(event->chan);
+        if((event->chan->flags & CHANFLAG_CHAN_REGISTERED))
+            printf_mysql_query("INSERT INTO `godlog` (`godlog_cid`, `godlog_uid`, `godlog_time`, `godlog_cmd`) VALUES ('%d', '%d', UNIX_TIMESTAMP(), '%s')", event->chan->channel_id, userid, escape_string(fullcmd));
+    }
 }
 
 static void destroyEvent(struct Event *event) {