xbot/lib/irc.h

119 lines
2.6 KiB
C
Raw Normal View History

2015-03-24 10:12:35 +00:00
/*
* xbot: Just another IRC bot
*
* Written by Aaron Blakely <aaron@ephasic.org>
**/
#ifndef IRC_H
#define IRC_H
2024-03-09 09:38:58 +00:00
#define VERSION "0.1.0"
2015-03-24 10:12:35 +00:00
#include <stdio.h>
2024-03-06 09:45:01 +00:00
#include "util.h"
2024-03-06 02:12:10 +00:00
#include "db.h"
2024-03-13 00:38:52 +00:00
#define OUTBUF_SIZE 1200000
#define INBUF_SIZE 1200000
2024-03-13 11:50:58 +00:00
#ifdef _WIN32
#include <winsock2.h>
#else
#include <stdbool.h>
2024-02-13 07:22:10 +00:00
#endif
2015-03-24 10:12:35 +00:00
struct irc_conn
{
2024-03-14 08:20:38 +00:00
int ssl_fd;
int ssl_fdi;
int srv_fdi;
2024-02-13 07:22:10 +00:00
#ifdef _WIN32
SOCKET srv_fd;
#else
2015-03-24 10:12:35 +00:00
FILE *srv_fd;
2024-03-13 11:50:58 +00:00
#endif
char ssl_module[256];
2024-03-09 09:57:13 +00:00
char nick[50];
char user[50];
2024-03-08 06:38:00 +00:00
char admin[256];
2024-02-13 07:22:10 +00:00
char host[256];
char port[5];
char real_name[512];
2015-03-24 10:12:35 +00:00
2024-03-11 10:22:05 +00:00
#ifdef _WIN32
BOOL use_ssl;
BOOL verify_ssl;
2024-03-14 08:20:38 +00:00
FARPROC sslmod_init;
FARPROC sslmod_connect;
FARPROC sslmod_read;
FARPROC sslmod_write;
FARPROC sslmod_cleanup;
FARPROC sslmod_get_fd;
2024-03-11 10:22:05 +00:00
#else
bool use_ssl;
bool verify_ssl;
2024-03-14 05:44:56 +00:00
bool sslmod_loaded;
2024-03-14 08:20:38 +00:00
void (*sslmod_init)();
2024-03-14 05:44:56 +00:00
void (*sslmod_connect)();
int (*sslmod_read)();
int (*sslmod_write)();
void (*sslmod_cleanup)();
2024-03-14 08:20:38 +00:00
int (*sslmod_get_fd)();
2024-03-14 05:44:56 +00:00
2024-03-11 10:22:05 +00:00
#endif
2024-03-06 02:12:10 +00:00
char db_file[256];
2024-03-09 08:40:06 +00:00
char log_file[256];
2024-03-06 02:12:10 +00:00
struct db_table *db;
2024-02-13 07:22:10 +00:00
// I/O Buffers
2024-02-24 01:57:59 +00:00
char *out;
char *in;
2015-03-24 10:12:35 +00:00
};
2024-02-13 07:22:10 +00:00
typedef struct handler event_handler;
2024-02-16 21:28:11 +00:00
void irc_connect(struct irc_conn *bot);
void irc_auth(struct irc_conn *bot);
2024-03-14 08:20:38 +00:00
MY_API void set_ssl_init(struct irc_conn *bot, void *func);
MY_API void set_ssl_connect(struct irc_conn *bot, void *func);
MY_API void set_ssl_read(struct irc_conn *bot, void *func);
MY_API void set_ssl_write(struct irc_conn *bot, void *func);
MY_API void set_ssl_cleanup(struct irc_conn *bot, void *func);
MY_API void set_ssl_get_fd(struct irc_conn *bot, void *func);
MY_API void ssl_init();
MY_API void ssl_connect();
MY_API int ssl_read(char *buf, int len);
MY_API int ssl_write(char *buf, int len);
MY_API void ssl_cleanup();
MY_API int ssl_get_fd();
2024-02-16 21:28:11 +00:00
2024-02-13 07:22:10 +00:00
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, ...);
2024-02-16 21:28:11 +00:00
MY_API void irc_join(struct irc_conn *bot, char *channel);
MY_API void irc_part(struct irc_conn *bot, char *channel, char *reason);
2024-02-24 01:57:59 +00:00
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);
2024-03-02 08:11:50 +00:00
MY_API void irc_ctcp(struct irc_conn *bot, char *to, char *fmt, ...);
2024-02-16 21:28:11 +00:00
void irc_parse_raw(struct irc_conn *bot, char *raw);
2015-03-24 10:12:35 +00:00
2024-03-08 06:38:00 +00:00
#ifdef _WIN32
MY_API BOOL check_hostmask_match(char *mask, char *host);
#else
MY_API bool check_hostmask_match(char *mask, char *host);
#endif
2016-02-22 04:40:41 +00:00
#endif