… | |
… | |
3 | * Copyright © 2005-2006 Atheme Development Group |
3 | * Copyright © 2005-2006 Atheme Development Group |
4 | * Rights to this code are as documented in doc/pod/license.pod. |
4 | * Rights to this code are as documented in doc/pod/license.pod. |
5 | * |
5 | * |
6 | * Misc tools |
6 | * Misc tools |
7 | * |
7 | * |
8 | * $Id: tools.h,v 1.7 2007/08/30 19:56:20 pippijn Exp $ |
8 | * $Id: tools.h,v 1.8 2007/09/09 20:05:51 pippijn Exp $ |
9 | */ |
9 | */ |
10 | |
10 | |
11 | #ifndef _TOOLS_H |
11 | #ifndef _TOOLS_H |
12 | #define _TOOLS_H |
12 | #define _TOOLS_H |
13 | |
13 | |
14 | #include <object.h> |
14 | #include <object.h> |
15 | #include <dlink.h> |
|
|
16 | |
15 | |
17 | /** |
16 | /** |
18 | * Warns operators and console users that an error occurred |
17 | * Warns operators and console users that an error occurred |
19 | */ |
18 | */ |
20 | #define warn(msg) \ |
19 | #define warn(msg) \ |
… | |
… | |
88 | EMAIL_SETEMAIL = 3, /* change email address (verification code) */ |
87 | EMAIL_SETEMAIL = 3, /* change email address (verification code) */ |
89 | EMAIL_MEMO = 4, /* emailed memos (memo text) */ |
88 | EMAIL_MEMO = 4, /* emailed memos (memo text) */ |
90 | EMAIL_SETPASS = 5 /* send a password change key (verification code) */ |
89 | EMAIL_SETPASS = 5 /* send a password change key (verification code) */ |
91 | }; |
90 | }; |
92 | |
91 | |
93 | /* logstreams API --nenolod */ |
|
|
94 | struct logfile_t; |
|
|
95 | |
|
|
96 | typedef void (*log_write_func_t) (logfile_t *lf, char const * const buf); |
|
|
97 | |
|
|
98 | /* logger.c */ |
|
|
99 | struct logfile_t : zero_initialised |
|
|
100 | { |
|
|
101 | object_t parent; |
|
|
102 | node_t node; |
|
|
103 | |
|
|
104 | void *log_file; /* opaque: can either be mychan_t or FILE --nenolod */ |
|
|
105 | char *log_path; |
|
|
106 | unsigned int log_mask; |
|
|
107 | |
|
|
108 | log_write_func_t write_func; |
|
|
109 | }; |
|
|
110 | |
|
|
111 | E char *log_path; /* contains path to default log. */ |
|
|
112 | E int log_force; |
|
|
113 | |
|
|
114 | E logfile_t *logfile_new (char const * const log_path_, unsigned int log_mask); |
|
|
115 | E void logfile_write (logfile_t *lf, char const * const buf); |
|
|
116 | E void logfile_register (logfile_t *lf); |
|
|
117 | E void logfile_unregister (logfile_t *lf); |
|
|
118 | |
|
|
119 | enum loglevel |
|
|
120 | { |
|
|
121 | /* general */ |
|
|
122 | LG_NONE = 1 << 0, /* don't log */ |
|
|
123 | LG_INFO = 1 << 1, /* log general info */ |
|
|
124 | LG_ERROR = 1 << 2, /* log real important stuff */ |
|
|
125 | LG_IOERROR = 1 << 3, /* log I/O errors. */ |
|
|
126 | LG_DEBUG = 1 << 4, /* log debugging stuff */ |
|
|
127 | /* commands */ |
|
|
128 | LG_CMD_ADMIN = 1 << 5, /* oper-only commands */ |
|
|
129 | LG_CMD_REGISTER = 1 << 6, /* register/drop */ |
|
|
130 | LG_CMD_SET = 1 << 7, /* change properties of static data */ |
|
|
131 | LG_CMD_DO = 1 << 8, /* change properties of dynamic data */ |
|
|
132 | LG_CMD_LOGIN = 1 << 9, /* login/logout */ |
|
|
133 | LG_CMD_GET = 1 << 10, /* query information */ |
|
|
134 | /* other */ |
|
|
135 | LG_NETWORK = 1 << 11, /* netsplit/netjoin */ |
|
|
136 | LG_WALLOPS = 1 << 12, /* NOTYET wallops from opers/other servers */ |
|
|
137 | LG_RAWDATA = 1 << 13, /* all data sent/received */ |
|
|
138 | LG_REGISTER = 1 << 14, /* all registration related messages */ |
|
|
139 | LG_WARN1 = 1 << 15, /* NOTYET messages formerly walloped */ |
|
|
140 | LG_WARN2 = 1 << 16, /* NOTYET messages formerly snooped */ |
|
|
141 | |
|
|
142 | LG_CMD_ALL = LG_CMD_ADMIN | LG_CMD_REGISTER | LG_CMD_SET | LG_CMD_DO | LG_CMD_LOGIN | LG_CMD_GET, |
|
|
143 | LG_ALL = 1 << 31 - 1,/* XXX cannot use bit 31 as it would then be unequal to TOKEN_UNMATCHED */ |
|
|
144 | |
|
|
145 | /* aliases for use with logcommand() */ |
|
|
146 | CMDLOG_ADMIN = LG_CMD_ADMIN, |
|
|
147 | CMDLOG_REGISTER = LG_CMD_REGISTER | LG_REGISTER, |
|
|
148 | CMDLOG_SET = LG_CMD_SET, |
|
|
149 | CMDLOG_DO = LG_CMD_DO, |
|
|
150 | CMDLOG_LOGIN = LG_CMD_LOGIN, |
|
|
151 | CMDLOG_GET = LG_CMD_GET |
|
|
152 | }; |
|
|
153 | |
|
|
154 | E void log_open (void); |
|
|
155 | E void log_shutdown (void); |
|
|
156 | E bool log_debug_enabled (void); |
|
|
157 | E void log_master_set_mask (unsigned int mask); |
|
|
158 | E void slog (unsigned int level, char const * const fmt, ...); |
|
|
159 | E void logcommand (sourceinfo_t *si, int level, char const * const fmt, ...); |
|
|
160 | E void logcommand_user (service_t *svs, user_t *source, int level, char const * const fmt, ...); |
|
|
161 | E void logcommand_external (service_t *svs, char const * const type, connection_t *source, char const * const sourcedesc, myuser_t *login, int level, char const * const fmt, ...); |
|
|
162 | |
|
|
163 | /* function.c */ |
92 | /* function.c */ |
164 | /* misc string stuff */ |
93 | /* misc string stuff */ |
165 | E char *gen_pw (int sz); |
94 | E char *gen_pw (int sz); |
166 | E void tb2sp (char *line); |
95 | E void tb2sp (char *line); |
167 | E char *replace (char *s, int size, char const * const oldstr, char const * const newstr); |
96 | E char *replace (char *s, int size, char const * const oldstr, char const * const newstr); |
168 | E char *itoa (int num); |
97 | |
|
|
98 | /* reverse of atoi() */ |
|
|
99 | template<typename T> |
|
|
100 | static inline char * |
|
|
101 | itoa (T num) |
|
|
102 | { |
|
|
103 | static char ret[32]; |
|
|
104 | itoa (num, ret); |
|
|
105 | return ret; |
|
|
106 | } |
|
|
107 | |
169 | E int validemail (char *email); |
108 | E int validemail (char *email); |
170 | E bool validhostmask (char *host); |
109 | E bool validhostmask (char *host); |
171 | E char const *sbytes (float x); |
110 | E char const *sbytes (float x); |
172 | E float bytes (float x); |
111 | E float bytes (float x); |
173 | |
112 | |