diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2005-11-06 19:23:18 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2005-11-06 19:23:18 +0100 |
commit | b7d3cc34f68dab7b8f7d0777711317b334fc2219 (patch) | |
tree | 6aa4d6332c96654fda79fe18993ab0e35d36a52b /irc.h |
Initial repository (0.99 release tree)0.99
Diffstat (limited to 'irc.h')
-rw-r--r-- | irc.h | 147 |
1 files changed, 147 insertions, 0 deletions
@@ -0,0 +1,147 @@ + /********************************************************************\ + * BitlBee -- An IRC to other IM-networks gateway * + * * + * Copyright 2002-2004 Wilmer van der Gaast and others * + \********************************************************************/ + +/* The big hairy IRCd part of the project */ + +/* + This program 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 2 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 with + the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL; + if not, write to the Free Software Foundation, Inc., 59 Temple Place, + Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef _IRC_H +#define _IRC_H + +#define IRC_MAX_LINE 512 +#define IRC_MAX_ARGS 8 + +#define IRC_LOGIN_TIMEOUT 60 +#define IRC_PING_STRING "PinglBee" + +/* #define FLOOD_SEND + * Not yet enabled by default due to some problems. + */ +#define FLOOD_SEND_INTERVAL 30 +#define FLOOD_SEND_BYTES (1024*10) +#define FLOOD_SEND_MAXBUFFER (1024*20) + +#define UMODES "ais" +#define CMODES "nt" +#define CMODE "t" +#define UMODE "s" + +typedef enum +{ + USTATUS_OFFLINE, + USTATUS_AUTHORIZED, + USTATUS_LOGGED_IN, + USTATUS_IDENTIFIED +} irc_status_t; + +typedef struct channel +{ + char *name; +} channel_t; + +typedef struct irc +{ + int fd; + irc_status_t status; + double last_pong; + int pinging; + char *sendbuffer; + char *readbuffer; + int quit; + + int sentbytes; + time_t oldtime; + + char *nick; + char *user; + char *host; + char *realname; + char *password; + + char umode[8]; + + char *myhost; + char *mynick; + + char *channel; + int c_id; + + char is_private; /* Not too nice... */ + char *last_target; + + struct query *queries; + struct account *accounts; + + struct __USER *users; + GHashTable *userhash; + GHashTable *watches; + struct __NICK *nicks; + struct help *help; + struct set *set; + + GIOChannel *io_channel; + gint r_watch_source_id; + gint w_watch_source_id; + gint ping_source_id; +} irc_t; + +#include "user.h" +#include "nick.h" + +extern GSList *irc_connection_list; + +irc_t *irc_new( int fd ); +void irc_free( irc_t *irc ); + +int irc_exec( irc_t *irc, char **cmd ); +int irc_process( irc_t *irc ); +int irc_process_line( irc_t *irc, char *line ); + +void irc_vawrite( irc_t *irc, char *format, va_list params ); +void irc_write( irc_t *irc, char *format, ... ); +void irc_write_all( char *format, ... ); +void irc_reply( irc_t *irc, int code, char *format, ... ); +G_MODULE_EXPORT int irc_usermsg( irc_t *irc, char *format, ... ); +char **irc_tokenize( char *buffer ); + +void irc_login( irc_t *irc ); +void irc_motd( irc_t *irc ); +void irc_names( irc_t *irc, char *channel ); +void irc_topic( irc_t *irc, char *channel ); +void irc_umode_set( irc_t *irc, char *who, char *s ); +void irc_who( irc_t *irc, char *channel ); +void irc_spawn( irc_t *irc, user_t *u ); +void irc_join( irc_t *irc, user_t *u, char *channel ); +void irc_part( irc_t *irc, user_t *u, char *channel ); +void irc_kick( irc_t *irc, user_t *u, char *channel, user_t *kicker ); +void irc_kill( irc_t *irc, user_t *u ); +void irc_invite( irc_t *irc, char *nick, char *channel ); +void irc_whois( irc_t *irc, char *nick ); +int irc_away( irc_t *irc, char *away ); + +int irc_send( irc_t *irc, char *nick, char *s, int flags ); +int irc_privmsg( irc_t *irc, user_t *u, char *type, char *to, char *prefix, char *msg ); +int irc_msgfrom( irc_t *irc, char *nick, char *msg ); +int irc_noticefrom( irc_t *irc, char *nick, char *msg ); + +int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ); + +#endif |