1 | /* |
1 | /* |
2 | * Copyright © 2005 William Pitcock, et al. |
2 | * Copyright © 2005 William Pitcock, et al. |
3 | * Rights to this code are as documented in doc/pod/license.pod. |
3 | * Rights to this code are as documented in doc/pod/license.pod. |
4 | * |
4 | * |
5 | * Data structures related to services psuedo-clients. |
5 | * Data structures related to services psuedo-clients. |
6 | * |
6 | * |
7 | * $Id: services.h,v 1.3 2007/07/21 15:01:26 pippijn Exp $ |
7 | * $Id: services.h,v 1.4 2007/08/28 17:08:07 pippijn Exp $ |
8 | */ |
8 | */ |
9 | |
9 | |
10 | #ifndef SERVICES_H |
10 | #ifndef SERVICES_H |
11 | #define SERVICES_H |
11 | #define SERVICES_H |
12 | |
12 | |
13 | /* core services */ |
13 | #include <map> |
|
|
14 | #include <stdexcept> |
|
|
15 | |
|
|
16 | // service base class |
14 | struct chansvs_t |
17 | struct svs_t |
15 | { |
18 | { |
16 | char *nick; /* the IRC client's nickname */ |
19 | char *nick; /* the IRC client's nickname */ |
17 | char *user; /* the IRC client's username */ |
20 | char *user; /* the IRC client's username */ |
18 | char *host; /* the IRC client's hostname */ |
21 | char *host; /* the IRC client's hostname */ |
19 | char *real; /* the IRC client's realname */ |
22 | char *real; /* the IRC client's realname */ |
20 | char *disp; /* the IRC client's dispname */ |
23 | char *disp; /* the IRC client's dispname */ |
21 | |
24 | |
|
|
25 | service_t *me; /* our service struct */ |
|
|
26 | }; |
|
|
27 | |
|
|
28 | /* core services */ |
|
|
29 | struct chansvs_t : svs_t |
|
|
30 | { |
22 | bool fantasy; /* enable fantasy commands */ |
31 | bool fantasy; /* enable fantasy commands */ |
23 | |
32 | |
24 | unsigned int ca_vop; /* xop access levels */ |
33 | unsigned int ca_vop; /* xop access levels */ |
25 | unsigned int ca_hop; |
34 | unsigned int ca_hop; |
26 | unsigned int ca_aop; |
35 | unsigned int ca_aop; |
… | |
… | |
28 | |
37 | |
29 | char *trigger; /* trigger, e.g. !, ` or . */ |
38 | char *trigger; /* trigger, e.g. !, ` or . */ |
30 | |
39 | |
31 | bool changets; /* use TS to better deop people */ |
40 | bool changets; /* use TS to better deop people */ |
32 | |
41 | |
33 | service_t *me; /* our user_t struct */ |
|
|
34 | |
|
|
35 | time_t expiry; /* expiry time */ |
42 | time_t expiry; /* expiry time */ |
36 | |
43 | |
37 | unsigned int maxchanacs; /* max entries in chanacs list */ |
44 | unsigned maxchanacs; /* max entries in chanacs list */ |
|
|
45 | unsigned maxfounders; /* max founders per channel */ |
38 | }; |
46 | }; |
39 | |
47 | |
40 | struct globsvs_t |
48 | struct globsvs_t : svs_t |
41 | { |
49 | { |
42 | char *nick; |
|
|
43 | char *user; |
|
|
44 | char *host; |
|
|
45 | char *real; |
|
|
46 | char *disp; /* the IRC client's dispname */ |
|
|
47 | |
|
|
48 | service_t *me; |
|
|
49 | }; |
50 | }; |
50 | |
51 | |
51 | struct opersvs_t |
52 | struct opersvs_t : svs_t |
52 | { |
53 | { |
53 | char *nick; |
|
|
54 | char *user; |
|
|
55 | char *host; |
|
|
56 | char *real; |
|
|
57 | char *disp; /* the IRC client's dispname */ |
|
|
58 | |
|
|
59 | service_t *me; |
|
|
60 | }; |
54 | }; |
61 | |
55 | |
62 | struct memosvs_t |
56 | struct memosvs_t : svs_t |
63 | { |
57 | { |
64 | char *nick; |
|
|
65 | char *user; |
|
|
66 | char *host; |
|
|
67 | char *real; |
|
|
68 | char *disp; |
|
|
69 | |
|
|
70 | service_t *me; |
|
|
71 | }; |
58 | }; |
72 | |
59 | |
|
|
60 | struct gamesvs_t : svs_t |
|
|
61 | { |
|
|
62 | }; |
|
|
63 | |
|
|
64 | |
73 | /* authentication services */ |
65 | /* authentication services */ |
74 | struct nicksvs_t |
66 | struct nicksvs_t : svs_t |
75 | { |
67 | { |
76 | bool spam; |
68 | bool spam; |
77 | bool no_nick_ownership; |
69 | bool no_nick_ownership; |
78 | |
70 | |
79 | char *nick; |
|
|
80 | char *user; |
|
|
81 | char *host; |
|
|
82 | char *real; |
|
|
83 | char *disp; /* the IRC client's dispname */ |
|
|
84 | |
|
|
85 | service_t *me; |
|
|
86 | |
|
|
87 | time_t expiry; /* expiry time */ |
71 | time_t expiry; /* expiry time */ |
88 | }; |
72 | }; |
89 | |
73 | |
90 | struct saslsvs_t |
74 | struct saslsvs_t : svs_t |
91 | { |
75 | { |
92 | char *nick; |
|
|
93 | char *user; |
|
|
94 | char *host; |
|
|
95 | char *real; |
|
|
96 | char *disp; /* the IRC client's dispname */ |
|
|
97 | |
|
|
98 | service_t *me; |
|
|
99 | }; |
|
|
100 | |
|
|
101 | struct gamesvs_t |
|
|
102 | { |
|
|
103 | char *nick; |
|
|
104 | char *user; |
|
|
105 | char *host; |
|
|
106 | char *real; |
|
|
107 | char *disp; /* the IRC client's dispname */ |
|
|
108 | |
|
|
109 | service_t *me; |
|
|
110 | }; |
76 | }; |
111 | |
77 | |
112 | /* help us keep consistent messages */ |
78 | /* help us keep consistent messages */ |
113 | #define STR_INSUFFICIENT_PARAMS _("Insufficient parameters for \2%s\2.") |
79 | #define STR_INSUFFICIENT_PARAMS _("Insufficient parameters for \2%s\2.") |
114 | #define STR_INVALID_PARAMS _("Invalid parameters for \2%s\2.") |
80 | #define STR_INVALID_PARAMS _("Invalid parameters for \2%s\2.") |
115 | |
81 | |
116 | /* atheme.c */ |
82 | /* global.C */ |
117 | E chansvs_t chansvs; |
83 | E chansvs_t chansvs; |
118 | E globsvs_t globsvs; |
84 | E globsvs_t globsvs; |
119 | E opersvs_t opersvs; |
85 | E opersvs_t opersvs; |
120 | E memosvs_t memosvs; |
86 | E memosvs_t memosvs; |
|
|
87 | E gamesvs_t gamesvs; |
121 | E nicksvs_t nicksvs; |
88 | E nicksvs_t nicksvs; |
122 | E saslsvs_t saslsvs; |
89 | E saslsvs_t saslsvs; |
123 | E gamesvs_t gamesvs; |
|
|
124 | |
90 | |
125 | /* servtree.c */ |
91 | /* servtree.c */ |
126 | E service_t *fcmd_agent; |
92 | E service_t *fcmd_agent; |
127 | |
93 | |
128 | /* services.c */ |
94 | /* services.c */ |
|
|
95 | typedef std::pair<char const * const, service_t *> service_pair; |
|
|
96 | typedef std::map<char const * const, service_t *, str_lt> service_map; |
|
|
97 | E service_map services; |
|
|
98 | |
129 | E int authservice_loaded; |
99 | E unsigned authservice_loaded; |
130 | E int use_myuser_access; |
100 | E int use_myuser_access; |
131 | E int use_svsignore; |
101 | E int use_svsignore; |
132 | |
102 | |
133 | E int ban (user_t *source, channel_t *chan, user_t *target); |
103 | E int ban (user_t *source, channel_t *chan, user_t *target); |
134 | E int remove_banlike (user_t *source, channel_t *chan, int type, user_t *target); |
104 | E int remove_banlike (user_t *source, channel_t *chan, int type, user_t *target); |
135 | E int remove_ban_exceptions (user_t *source, channel_t *chan, user_t *target); |
105 | E int remove_ban_exceptions (user_t *source, channel_t *chan, user_t *target); |
136 | E void join (char *chan, char *nick); |
106 | E void join (char const * const chan, char const * const nick); |
137 | E void joinall (char *name); |
107 | E void joinall (char *name); |
138 | E void part (char *chan, char *nick); |
108 | E void part (char *chan, char *nick); |
139 | E void partall (char *name); |
109 | E void partall (char *name); |
140 | E void verbose (mychan_t *mychan, char *fmt, ...); |
110 | E void verbose (mychan_t *mychan, char const * const fmt, ...); |
141 | E void snoop (char *fmt, ...); |
111 | E void snoop (char const * const fmt, ...); |
142 | E void notice (char *from, char *to, char const *message, ...); |
112 | E void notice (char const * const from, char const * const to, char const * const message, ...); |
|
|
113 | E void notice (char const * const from, char const * const to, char const * const message, va_list va); |
143 | E void command_fail (sourceinfo_t *si, faultcode_t code, const char *fmt, ...); |
114 | E void command_fail (sourceinfo_t *si, faultcode_t code, char const * const fmt, ...); |
144 | E void command_success_nodata (sourceinfo_t *si, const char *fmt, ...); |
115 | E void command_success_nodata (sourceinfo_t *si, char const * const fmt, ...); |
145 | E void command_success_string (sourceinfo_t *si, const char *result, const char *fmt, ...); |
116 | E void command_success_string (sourceinfo_t *si, char const * const result, char const * const fmt, ...); |
146 | E void command_success_table (sourceinfo_t *si, table_t * table); |
117 | E void command_success_table (sourceinfo_t *si, table_t * table); |
147 | E const char *get_source_name (sourceinfo_t *si); |
118 | E char const * const get_source_name (sourceinfo_t *si); |
148 | E const char *get_source_mask (sourceinfo_t *si); |
119 | E char const * const get_source_mask (sourceinfo_t *si); |
149 | E const char *get_oper_name (sourceinfo_t *si); |
120 | E char const * const get_oper_name (sourceinfo_t *si); |
150 | E void wallops (char *, ...); |
121 | E void wallops (char const * const , ...); |
151 | E void verbose_wallops (char *, ...); |
122 | E void verbose_wallops (char const * const, ...); |
152 | |
123 | |
153 | /* ptasks.c */ |
124 | /* ptasks.c */ |
154 | E void handle_topic (channel_t *, char *, time_t, char *); |
125 | E void handle_topic (channel_t *c, char const * const setter, time_t ts, char const * const topic); |
155 | E int floodcheck (user_t *, user_t *); |
126 | E int floodcheck (user_t *u, user_t *t); |
156 | |
127 | |
157 | /* ctcp-common.c */ |
128 | /* ctcp-common.c */ |
158 | E void common_ctcp_init (void); |
129 | E void common_ctcp_init (void); |
159 | E unsigned int handle_ctcp_common (sourceinfo_t *si, char *, char *); |
130 | E unsigned int handle_ctcp_common (sourceinfo_t *si, char *, char *); |
160 | |
131 | |