wrote logEvent function
authorpk910 <philipp@zoelle1.de>
Thu, 22 Sep 2011 09:53:00 +0000 (11:53 +0200)
committerpk910 <philipp@zoelle1.de>
Thu, 22 Sep 2011 16:11:38 +0000 (18:11 +0200)
DATABASE.txt
EventLogger.c

index a7039af484caa0bd5453e858bb78399d6e111d4d..62e38fabeea3f2bf060b16cb37ce20e342a97af8 100644 (file)
@@ -58,4 +58,8 @@ CREATE TABLE IF NOT EXISTS `language` (
   PRIMARY KEY (`id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=latin1;
 
-ALTER TABLE `bot_channels` ADD `suspended` TINYINT( 1 ) NOT NULL;
\ No newline at end of file
+ALTER TABLE `bot_channels` ADD `suspended` TINYINT( 1 ) NOT NULL;
+
+ALTER TABLE `users` ADD UNIQUE (`user_user`);
+
+ALTER TABLE `noinvite` ADD INDEX ( `cid`, `uid` );
\ No newline at end of file
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) {