/* * xbot: Just another IRC bot * * Written by Aaron Blakely **/ #ifndef IRC_H #define IRC_H #define VERSION "0.1.0" #include #include "util.h" #include "db.h" #define OUTBUF_SIZE 1200000 #define INBUF_SIZE 1200000 #include #include #ifdef _WIN32 #include #else #include #endif struct irc_conn { #ifdef _WIN32 SOCKET srv_fd; #else FILE *srv_fd; #endif int ssl_fd; SSL *ssl; SSL_CTX *ctx; char nick[50]; char user[50]; char admin[256]; char host[256]; char port[5]; char real_name[512]; #ifdef _WIN32 BOOL use_ssl; BOOL verify_ssl; #else bool use_ssl; bool verify_ssl; bool sslmod_loaded; void (*sslmod_connect)(); int (*sslmod_read)(); int (*sslmod_write)(); void (*sslmod_cleanup)(); #endif char db_file[256]; char log_file[256]; struct db_table *db; // I/O Buffers char *out; char *in; }; typedef struct handler event_handler; void irc_connect(struct irc_conn *bot); void irc_auth(struct irc_conn *bot); void set_ssl_connect(struct irc_conn *bot, void *func); void set_ssl_read(struct irc_conn *bot, void *func); void set_ssl_write(struct irc_conn *bot, void *func); MY_API void irc_notice(struct irc_conn *bot, char *to, char *fmt, ...); MY_API void irc_privmsg(struct irc_conn *bot, char *to, char *fmt, ...); MY_API void irc_raw(struct irc_conn *bot, char *fmt, ...); MY_API void irc_join(struct irc_conn *bot, char *channel); MY_API void irc_part(struct irc_conn *bot, char *channel, char *reason); MY_API void irc_ban(struct irc_conn *bot, char *channel, char *nick); MY_API void irc_kick(struct irc_conn *bot, char *channel, char *user, char *reason); MY_API void irc_mode(struct irc_conn *bot, char *channel, char *mode); MY_API void irc_ctcp(struct irc_conn *bot, char *to, char *fmt, ...); void irc_parse_raw(struct irc_conn *bot, char *raw); #ifdef _WIN32 MY_API BOOL check_hostmask_match(char *mask, char *host); #else MY_API bool check_hostmask_match(char *mask, char *host); #endif #endif