79 lines
1.5 KiB
C
79 lines
1.5 KiB
C
/*
|
|
LICENSE: WTFPL
|
|
Simple library for working with ipv4 irc servers
|
|
Dont support:
|
|
ddc
|
|
ipv6
|
|
motd
|
|
*/
|
|
|
|
#ifndef _IRCC_H
|
|
#define _IRCC_H
|
|
|
|
#define IRCC_MSG_MAX 512
|
|
#define IRCC_PING_TIMEOUT 600
|
|
|
|
#ifdef ENABLE_SSL
|
|
#include <openssl/ssl.h>
|
|
#endif
|
|
|
|
enum {
|
|
IRCC_NICK = 1,
|
|
IRCC_PRIVMSG,
|
|
IRCC_JOIN,
|
|
IRCC_PART,
|
|
IRCC_PING,
|
|
IRCC_TOPIC,
|
|
IRCC_MODE,
|
|
|
|
IRCC_CONNECTED,
|
|
IRCC_DISCONNECTED,
|
|
IRCC_ERROR,
|
|
IRCC_SUCCESS
|
|
};
|
|
|
|
enum {
|
|
IRCC_SSL_INIT = 1,
|
|
IRCC_SSL_METHOD,
|
|
IRCC_SSL_SESSION
|
|
};
|
|
|
|
static const char *IRCC_errno[] = {
|
|
"",
|
|
"Could not initialize the SSL library",
|
|
"Unable to create a new SSL context struct",
|
|
"Could not build a SSL session"
|
|
};
|
|
|
|
typedef struct {
|
|
int irc_socket;
|
|
|
|
char irc_raw[IRCC_MSG_MAX + 1];
|
|
char *irc_msg;
|
|
char *irc_channel;
|
|
char *irc_nick;
|
|
|
|
#ifdef ENABLE_SSL
|
|
int irc_usingssl;
|
|
|
|
SSL_METHOD *irc_sslmethod;
|
|
SSL_CTX *irc_sslctx;
|
|
SSL *irc_ssl;
|
|
#endif
|
|
} IRCC_client;
|
|
|
|
int IRCC_connect(IRCC_client *irc, const char *ip, const unsigned int port);
|
|
int IRCC_recv(IRCC_client *irc);
|
|
int IRCC_parse(IRCC_client *irc);
|
|
int IRCC_join(IRCC_client *irc, const char *channel, const char *key);
|
|
int IRCC_send(IRCC_client *irc, const char *msg, const char *channel);
|
|
int IRCC_register(IRCC_client *irc, const char *nickname);
|
|
int IRCC_initssl(IRCC_client *irc, int *ircc_errno);
|
|
void IRCC_close(IRCC_client *irc);
|
|
|
|
//u - mean universal. Functions uses internal fields in structure
|
|
int IRCC_usend(IRCC_client *irc, off_t bytes);
|
|
int IRCC_urecv(IRCC_client *irc);
|
|
|
|
#endif
|