aboutsummaryrefslogtreecommitdiffstats
path: root/irc.h
diff options
context:
space:
mode:
Diffstat (limited to 'irc.h')
-rw-r--r--irc.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/irc.h b/irc.h
new file mode 100644
index 00000000..6f319f35
--- /dev/null
+++ b/irc.h
@@ -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