2 ctrlproxy: A modular IRC proxy
3 (c) 2002-2005 Jelmer Vernooij <jelmer@nl.linux.org>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #ifndef __INTERNALS_H__
21 #define __INTERNALS_H__
23 #define CTRLPROXY_CORE_BUILD
32 #include <sys/socket.h>
33 #include <sys/types.h>
37 #include <sys/types.h>
43 #include "ctrlproxy.h"
46 #define DEFAULT_RECONNECT_INTERVAL 60
47 #define MAXHOSTNAMELEN 4096
50 void fini_networks(struct global *);
51 void kill_pending_clients(const char *reason);
52 void network_set_iochannel(struct network *s, GIOChannel *ioc);
55 void free_channels(struct network *s);
56 void network_nick_set_data(struct network_nick *n, const char *nick, const char *username, const char *host);
57 void log_network_state(enum log_level l, const struct network_state *st, const char *fmt, ...);
60 gboolean init_plugins(const char *dir);
63 char **get_motd_lines(struct client *);
66 void server_disconnected_hook_execute(struct network *);
67 void server_connected_hook_execute(struct network *);
68 gboolean new_client_hook_execute(struct client *c);
69 void lose_client_hook_execute(struct client *c);
70 gboolean run_client_filter(struct client *c, const struct line *l, enum data_direction dir);
71 gboolean run_server_filter(struct network *s, const struct line *l, enum data_direction dir);
72 gboolean run_log_filter(struct network *s, const struct line *l, enum data_direction dir);
73 gboolean run_replication_filter(struct network *s, const struct line *l, enum data_direction dir);
76 gboolean init_log(const char *file);
77 void log_network_line(const struct network *n, const struct line *l, gboolean incoming);
78 void log_client_line(const struct client *c, const struct line *l, gboolean incoming);
81 void redirect_record(const struct network *n, const struct client *c, const struct line *l);
82 void redirect_response(struct network *n, struct line *l);
83 void redirect_clear(const struct network *n);
86 gboolean client_try_cache(struct client *c, struct line *l);
89 void init_linestack(struct ctrlproxy_config *);
92 void network_update_config(struct network_state *ns, struct network_config *nc);
93 void channel_update_config(struct channel_state *ns, struct channel_config *nc);
94 void global_update_config(struct global *my_global);
97 void client_replicate(struct client *);
98 char *mode2string(char modes[255]);
99 void string2mode(char *modes, char ar[255]);
102 void free_global(struct global *);
103 void config_load_notify(struct global *global);
104 void config_save_notify(struct global *global, const char *);
105 struct global *new_global(const char *config_dir);
108 void init_nickserv(void);
109 gboolean nickserv_load(struct global *global);
110 gboolean nickserv_save(struct global *global, const char *dir);
111 void nickserv_identify_me(struct network *network, char *nick);
114 void init_admin(void);
115 gboolean admin_process_command(struct client *c, struct line *l, int cmdoffset);
116 void admin_log(enum log_level level, const struct network *n, const struct client *c, const char *data);
119 gboolean create_configuration(const char *config_dir);
122 gboolean start_unix_socket(struct global *);
123 gboolean stop_unix_socket(struct global *);
125 #endif /* __INTERNALS_H__ */