/** * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2015 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * Base Author: shennetsind @ http://herc.ws */ #ifndef MAP_IRC_BOT_H #define MAP_IRC_BOT_H #include "common/hercules.h" #define IRC_NICK_LENGTH 40 #define IRC_IDENT_LENGTH 40 #define IRC_HOST_LENGTH 63 #define IRC_FUNC_LENGTH 30 #define IRC_MESSAGE_LENGTH 500 struct channel_data; struct irc_func { char name[IRC_FUNC_LENGTH]; void (*func)(int, char*, char*, char*, char*); }; struct message_flood { char message[IRC_MESSAGE_LENGTH]; struct message_flood *next; }; struct irc_bot_interface { int fd; bool isIn, isOn; int64 last_try; unsigned char fails; uint32 ip; unsigned short port; /* messages flood protection */ bool flood_protection_enabled; int flood_protection_rate; int flood_protection_burst; int64 last_message_tick; int messages_burst_count; int queue_tid; struct message_flood *message_current; struct message_flood *message_last; /* */ struct channel_data *channel; /* */ struct { struct irc_func **list; unsigned int size; } funcs; /* */ void (*init) (bool minimal); void (*final) (void); /* */ int (*parse) (int fd); void (*parse_sub) (int fd, char *str); void (*parse_source) (char *source, char *nick, char *ident, char *host); /* */ struct irc_func* (*func_search) (char* function_name); /* */ int (*connect_timer) (int tid, int64 tick, int id, intptr_t data); int (*identify_timer) (int tid, int64 tick, int id, intptr_t data); int (*join_timer) (int tid, int64 tick, int id, intptr_t data); /* */ int (*queue_timer) (int tid, int64 tick, int id, intptr_t data); void (*queue) (char *str); void (*send)(char *str, bool force); void (*relay) (const char *name, const char *msg); /* */ void (*pong) (int fd, char *cmd, char *source, char *target, char *msg); void (*privmsg) (int fd, char *cmd, char *source, char *target, char *msg); void (*userjoin) (int fd, char *cmd, char *source, char *target, char *msg); void (*userleave) (int fd, char *cmd, char *source, char *target, char *msg); void (*usernick) (int fd, char *cmd, char *source, char *target, char *msg); }; #ifdef HERCULES_CORE void ircbot_defaults(void); #endif // HERCULES_CORE HPShared struct irc_bot_interface *ircbot; #endif /* MAP_IRC_BOT_H */