added NeonBackup bot
[NeonServV5.git] / src / modules / global.mod / cmd_global_register.c
index 1f4690af578e84c59637a7034a4fad740ab204a1..81e018014b26bb4cdaef743a4cfd1bb52df7cdc4 100644 (file)
@@ -114,7 +114,7 @@ CMD_BIND(global_cmd_register) {
         struct UserNode *cuser = getUserByNick(argv[1]);
         if(!cuser) {
             cuser = createTempUser(argv[1]);
-                       if(!cuser) {
+            if(!cuser) {
                 reply(getTextBot(), user, "NS_USER_UNKNOWN", argv[1]);
                 return;
             }
@@ -262,5 +262,52 @@ static void global_cmd_register_async1(struct ClientSocket *client, struct Clien
         reply(textclient, user, "NS_REGISTER_DONE", channel, auth);
     } else
         reply(textclient, user, "NS_REGISTER_DONE_NOAUTH", channel);
+    // NeonBackup SubBlock
+    if(client->botid == NEONSERV_BOTID) {
+        char setting[128];
+        sprintf(setting, "modules.%s.auto_backup_register", get_module_name(module_id));
+        if(get_int_field(setting))
+            module_global_cmd_register_neonbackup(channel);
+    }
     logEvent(event);
 }
+
+void global_cmd_register_neonbackup(char *channel) {
+    MYSQL_RES *res;
+    MYSQL_ROW row, row2;
+    printf_mysql_query("SELECT `botid` FROM `bot_channels` LEFT JOIN `bots` ON `bot_channels`.`botid` = `bots`.`id` LEFT JOIN `channels` ON `bot_channels`.`chanid` = `channels`.`channel_id` WHERE `channel_name` = '%s' AND botclass = '%d'", escape_string(channel), NEONBACKUP_BOTID);
+    res = mysql_use();
+    if ((row = mysql_fetch_row(res)) != NULL)
+        return;
+    int chanid;
+    printf_mysql_query("SELECT `channel_id` FROM `channels` WHERE `channel_name` = '%s'", escape_string(channel));
+    res = mysql_use();
+    if ((row = mysql_fetch_row(res)) != NULL) {
+        chanid = atoi(row[0]);
+    } else
+        return;
+    printf_mysql_query("SELECT `id`, `max_channels`, `defaulttrigger`, `nick` FROM `bots` WHERE `botclass` = '%d' AND `active` = '1' ORDER BY `register_priority` DESC", NEONBACKUP_BOTID);
+    res = mysql_use();
+    int botid = 0;
+    while ((row = mysql_fetch_row(res)) != NULL) {
+        //check channel count
+        printf_mysql_query("SELECT COUNT(*) FROM `bot_channels` WHERE `botid` = '%s'", row[0]);
+        row2 = mysql_fetch_row(mysql_use());
+        if(atoi(row2[0]) < atoi(row[1])) {
+            botid = atoi(row[0]);
+            break;
+        }
+    }
+    if(!botid)
+        return;
+    struct ClientSocket *bot;
+    for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) {
+        if(bot->clientid == botid)
+            break;
+    }
+    if(bot) {
+        putsock(bot, "JOIN %s", channel);
+    }
+    printf_mysql_query("INSERT INTO `bot_channels` (`botid`, `chanid`, `trigger`) VALUES ('%d', '%d', NULL)", botid, chanid);
+}
+