Updates, now working again.

This commit is contained in:
Aaron Blakely 2016-02-21 22:40:41 -06:00
parent e7f3aba195
commit f96b0e7695
4 changed files with 41 additions and 8 deletions

View File

@ -13,8 +13,6 @@ struct irc_conn
{ {
FILE *srv_fd; FILE *srv_fd;
char nick[32]; char nick[32];
char *admin; char *admin;
char host[256]; char host[256];
@ -34,4 +32,4 @@ void irc_privmsg(struct irc_conn *bot, char *to, char *fmt, ...);
void irc_raw(struct irc_conn *bot, char *fmt, ...); void irc_raw(struct irc_conn *bot, char *fmt, ...);
void irc_parse_raw(struct irc_conn *bot, char *raw); void irc_parse_raw(struct irc_conn *bot, char *raw);
#endif #endif

View File

@ -59,8 +59,9 @@ void irc_connect(struct irc_conn *bot)
void irc_auth(struct irc_conn *bot) void irc_auth(struct irc_conn *bot)
{ {
irc_raw(bot, "NICK %s", bot->nick); irc_raw(bot, "NICK %s", bot->nick);
irc_raw(bot, "USER %s localhost %s :xbot (v0.1) - developed by @Dark_Aaron", bot->nick, bot->host); irc_raw(bot, "USER %s \" %s :xbot (v0.1) - developed by @Dark_Aaron", bot->nick, bot->host);
fflush(bot->srv_fd); fflush(bot->srv_fd);
setbuf(bot->srv_fd, NULL);
} }
void irc_notice(struct irc_conn *bot, char *to, char *fmt, ...) void irc_notice(struct irc_conn *bot, char *to, char *fmt, ...)
@ -163,4 +164,4 @@ void irc_parse_raw(struct irc_conn *bot, char *raw)
strlcpy(bot->nick, text, sizeof bot->nick); strlcpy(bot->nick, text, sizeof bot->nick);
} }
} }
} }

View File

@ -8,15 +8,22 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <sys/select.h> #include <sys/select.h>
#include <time.h>
#include <errno.h>
#include "config.h" #include "config.h"
#include "irc.h" #include "irc.h"
#include "util.h" #include "util.h"
#include "events.h" #include "events.h"
static time_t trespond;
int main() int main()
{ {
int n;
fd_set rd; fd_set rd;
struct irc_conn bot; struct irc_conn bot;
struct timeval tv;
init_events(); init_events();
@ -31,8 +38,34 @@ int main()
for (;;) for (;;)
{ {
FD_ZERO(&rd); FD_ZERO(&rd);
FD_SET(0, &rd);
FD_SET(fileno(bot.srv_fd), &rd); FD_SET(fileno(bot.srv_fd), &rd);
tv.tv_sec = 120;
tv.tv_usec = 0;
n = select(fileno(bot.srv_fd) + 1, &rd, 0, 0, &tv);
if (n < 0)
{
if (errno == EINTR)
continue;
eprint("xbot: error on select()\n");
return 0;
}
else if (n == 0)
{
if (time(NULL) - trespond >= 300)
{
eprint("xbot shutting down: parse timeout\n");
return -1;
}
irc_raw(&bot, "PING %s", bot.host);
continue;
}
if (FD_ISSET(fileno(bot.srv_fd), &rd)) if (FD_ISSET(fileno(bot.srv_fd), &rd))
{ {
if (fgets(bot.in, sizeof bot.in, bot.srv_fd) == NULL) if (fgets(bot.in, sizeof bot.in, bot.srv_fd) == NULL)
@ -42,8 +75,9 @@ int main()
} }
irc_parse_raw(&bot, bot.in); irc_parse_raw(&bot, bot.in);
trespond = time(NULL);
} }
} }
return 0; return 0;
} }

View File

@ -10,7 +10,7 @@ bot:
server: server:
{ {
host = "irc.alphachat.net"; host = "irc-nb.bbsn.ca";
port = "6667"; port = "6667";
}; };
@ -20,5 +20,5 @@ mods:
blacklist = (); blacklist = ();
# config option for mods/autojoin.so # config option for mods/autojoin.so
mod_autojoin = ("#ircbots"); mod_autojoin = ("#drones");
}; };