1
2 /* C-OperVision, for ScrollZ. Coded by Zakath. */
3 /* Thanks to Sheik and Flier for assistance. */
4 /*
5 * Comments by Flier:
6 * Implemented caching for OVgetword, fixed for various ircd versions.
7 * There seems to be a problem when you have OperVision turned ON and
8 * either server closes connection or you reconnect yourself. Client
9 * resets window levels and by doing that, messes things up (not just
10 * OperVision, messages go to wrong window too). I have fixed that by
11 * patching calling OperVisionReinit() which reinstates window levels.
12 * I also had to patch my functions that take care of joining channels
13 * to deal with OperVision correctly. Channels were going to wrong wi-
14 * ndow when OperVision was active. I just changed the way I send JOIN
15 * command to server (I'm using ircII function now) and it seems to be
16 * working as expected.
17 * When user chooses to kill OperVision window with ^WK or WINDOW KILL
18 * command, we disable OperVision since they probably wanted that.
19 *
20 * $Id: operv.c,v 1.71 2004-10-19 18:55:50 f Exp $
21 */
22
23 #include "irc.h"
24 #include "ircaux.h"
25 #include "window.h"
26 #include "edit.h"
27 #include "output.h"
28 #include "server.h"
29 #include "screen.h"
30 #include "status.h"
31 #include "myvars.h"
32
33 #if defined(OPERVISION) && defined(WANTANSI)
34
35 extern void PrintUsage _((char *));
36 extern char *TimeStamp _((int));
37
38 /* Variables needed for caching */
39 static int NewNotice; /* 1 if we are parsing new notice, 0 otherwise */
40 static int OldWord; /* holds number for previous word, if NewNotice is 0 */
41 static int OVTS=1; /* 1 if time stamping is enabled */
42 static char *OldPtr; /* holds pointer for previous word, if NewNotice is 0 */
43
CreateMode(tmpbuf,sizeofbuf)44 void CreateMode(tmpbuf,sizeofbuf)
45 char *tmpbuf;
46 int sizeofbuf;
47 {
48 /* we need to send aditional usermodes (+swfuckrn), for ircd 2.9/2.10 only send +w */
49 if (get_server_version(from_server)==Server2_11)
50 strmcpy(tmpbuf,"w",sizeofbuf);
51 else strmcpy(tmpbuf,"swfuckrn",sizeofbuf);
52 }
53
OperVision(command,args,subargs)54 void OperVision(command,args,subargs)
55 char *command;
56 char *args;
57 char *subargs;
58 {
59 int incurwin=0;
60 int sendmodes=1;
61 char *tmp=(char *) 0;
62 char *ovts=(char *) 0;
63 char *nomodes=(char *) 0;
64 char tmpbuf[mybufsize/4+1];
65 unsigned int display;
66
67 tmp=new_next_arg(args,&args);
68 ovts=new_next_arg(args,&args);
69 if (tmp) {
70 if (!my_stricmp("ON",tmp) || !my_stricmp("HERE",tmp)) {
71 if (!my_stricmp("HERE",tmp)) incurwin=1;
72 if (ovts && !my_stricmp("TS",ovts)) OVTS=1;
73 else OVTS=0;
74 if (ovts && !my_stricmp("NOMODES",ovts)) nomodes=ovts;
75 else nomodes=new_next_arg(args,&args);
76 if (nomodes && !my_stricmp("NOMODES",nomodes)) sendmodes=0;
77 if (OperV && !incurwin)
78 say("OperVision is already turned on");
79 else {
80 OperV=1;
81 ServerNotice=1;
82 /* turn on additional user modes */
83 if (sendmodes) {
84 CreateMode(tmpbuf,mybufsize/4);
85 send_to_server("MODE %s :+%s",get_server_nickname(from_server),tmpbuf);
86 }
87 /* made one window command, made it jump back to current window when
88 it's done, all output from /WINDOW command is supressed -Flier */
89 if (incurwin) strcpy(tmpbuf,"NAME OV LEVEL +OPNOTE,SNOTE,WALLOP");
90 else snprintf(tmpbuf,sizeof(tmpbuf),"NEW NAME OV DOUBLE OFF LEVEL OPNOTE,SNOTE,WALLOP REFNUM %d GROW 6",curr_scr_win->refnum);
91 display=window_display;
92 window_display=0;
93 windowcmd(NULL,tmpbuf,NULL);
94 window_display=display;
95 }
96 say("OperVision is now enabled%s, time stamping is %sabled",
97 incurwin?" in current window":"",
98 OVTS?"en":"dis");
99 }
100 else if (!my_stricmp("OFF",tmp)) {
101 if (!OperV) say("OperVision is not currently active");
102 else {
103 OperV=0;
104 nomodes=ovts;
105 if (nomodes && !my_stricmp("NOMODES",nomodes)) sendmodes=0;
106 /* we need to undo aditional usermodes (-swfuckrn) */
107 if (sendmodes) {
108 CreateMode(tmpbuf,mybufsize/4);
109 send_to_server("MODE %s :-%s",get_server_nickname(from_server),tmpbuf);
110 }
111 /* made one window command, all output from /WINDOW command is
112 supressed -Flier */
113 strcpy(tmpbuf,"REFNUM OV KILL");
114 display=window_display;
115 window_display=0;
116 windowcmd(NULL,tmpbuf,NULL);
117 window_display=display;
118 say("OperVision is now disabled");
119 }
120 }
121 else PrintUsage("OV on [nots] [nomodes]/here [ts] [nomodes]/off [nomodes]");
122 }
123 else PrintUsage("OV on [nots] [nomodes]/here [ts] [nomodes]/off [nomodes]");
124 }
125
126 /* Takes (u@h), removes (), colorizes, returns u@h */
127 /* Also works with [u@h] -Flier */
128 /* Also works with n!u@h -Pier */
OVuh(word)129 char *OVuh(word)
130 char *word;
131 {
132 int i;
133 int sht = 1;
134 char *tmpstr;
135 char *tmphost;
136 char tmpbuf1[mybufsize / 4];
137 static char tmpbuf2[mybufsize / 4];
138
139 /* I added sht (number-of-chars-to-short the line) -Pier */
140 /* Remove the ()'s from *word (pointer +1, cat length -1) */
141 tmphost = index(word,'(');
142 /* We need to check for []'s if there are no ()'s since ircd that I run on
143 my box reports client connecting/exiting with [] ????? -Flier */
144 if (!tmphost) tmphost = index(word,'[');
145 /* Hybrid 5.1b26 seems to use n!u@h in /quote HTM notices -Pier */
146 if (!tmphost) {
147 tmphost = index(word, '!');
148 sht = 0;
149 }
150 if (tmphost) tmphost++;
151 else return(word);
152 i = strlen(tmphost);
153 strmcpy(tmpbuf1, tmphost, i - sht + 1);
154 /* tmpbuf1 is the u@h, now colorize it */
155 if ((tmpstr = index(tmpbuf1, '@'))) {
156 *tmpstr = '\0';
157 tmpstr++;
158 snprintf(tmpbuf2, sizeof(tmpbuf2), "%s(%s%s%s%s%s@%s%s%s%s%s)%s",
159 CmdsColors[COLMISC].color2, Colors[COLOFF],
160 CmdsColors[COLSETTING].color4, tmpbuf1, Colors[COLOFF],
161 CmdsColors[COLMISC].color1, Colors[COLOFF],
162 CmdsColors[COLSETTING].color4, tmpstr, Colors[COLOFF],
163 CmdsColors[COLMISC].color2, Colors[COLOFF]);
164 }
165 return(tmpbuf2);
166 }
167
168 /* Returns domain, minus host and top */
169 /* fixed by Flier to work on hostname.domain (like irc.net) */
OVsvdmn(string)170 char *OVsvdmn(string)
171 char *string;
172 {
173 int i, l;
174 char *c;
175 char *d;
176 char tmpstr[mybufsize / 8];
177 static char tmpbuf[mybufsize / 4];
178
179 c = rindex(string, '.');
180 if (!c) return(string);
181 i = strlen(string);
182 l = strlen(c);
183 i -= l; /* Length of top */
184 strmcpy(tmpstr, string, i+1);
185 if (!(d = rindex(tmpstr, '.'))) d = c; /* Extract domain */
186 d++;
187 snprintf(tmpbuf, sizeof(tmpbuf), "%s", d);
188 return(tmpbuf);
189 }
190
191 /* Gets word(s) from string. Similar to $word() in IrcII */
192 /* Added caching -Flier */
OVgetword(a,b,string)193 char *OVgetword(a,b,string)
194 int a;
195 int b;
196 char *string;
197 {
198 int i=1;
199 static char tmpbuf1[mybufsize/2];
200 static char tmpbuf2[mybufsize/2];
201 char *tmpstr=tmpbuf1;
202 char *tmpbuf=tmpbuf1;
203
204 /* Caching works like this:
205 You have to call this function with incrementing a or b, i.e.:
206 OVgetword(0,2,blah); OVgetword(0,4,blah); OVgetword(5,0,blah);
207 This should speed things up and reduce CPU usage.
208 First check if this is new notice, and if it is copy entire string to buffer.
209 Else, copy old pointer and work from there on, using new indexes -Flier */
210 if (NewNotice) strmcpy(tmpbuf1,string,sizeof(tmpbuf1));
211 else {
212 strmcpy(tmpbuf1,OldPtr,sizeof(tmpbuf1));
213 i=OldWord+1;
214 }
215 /* If a=0, find and return word #b */
216 if ((a==0) && (b>0)) {
217 for(;i<=b;i++) tmpstr=next_arg(tmpbuf,&tmpbuf);
218 /* Made it crash proof since my ircd formats some messages differently */
219 if (tmpstr) strmcpy(tmpbuf2,tmpstr,sizeof(tmpbuf2));
220 /* so if there is no word #b we copy empty string -Flier */
221 else *tmpbuf2='\0';
222 /* Store current word number */
223 OldWord=b;
224 /* Store current word pointer */
225 OldPtr=tmpbuf;
226 }
227 /* If a>0 and b=0, return from word #a to end */
228 else if ((a>0) && (b==0)) {
229 for(;i<a;i++) {
230 tmpstr=index(tmpstr,' ');
231 if (tmpstr) tmpstr++;
232 }
233 /* Made it crash proof since my ircd formats some messages differently */
234 if (tmpstr) strmcpy(tmpbuf2,tmpstr,sizeof(tmpbuf2));
235 /* so if there is no word #a we copy empty string -Flier */
236 else *tmpbuf2='\0';
237 /* Store current word number */
238 OldWord=a;
239 /* Store current word pointer */
240 OldPtr=tmpstr;
241 }
242 /* Update caching variables
243 If there was no word #a or #b start from scratch since we're at the end of
244 the string -Flier */
245 if (!OldPtr) NewNotice=1;
246 else NewNotice=0;
247 return(tmpbuf2);
248 }
249
250 /* Gets nick form nick!user@host */
OVgetnick(nuh)251 char *OVgetnick(nuh)
252 char *nuh;
253 {
254 char *tmpstr;
255 static char tmpbuf[mybufsize/4];
256
257 strmcpy(tmpbuf,nuh,sizeof(tmpbuf));
258 if ((tmpstr=index(tmpbuf,'!'))) *tmpstr='\0';
259 return(tmpbuf);
260 }
261
262 /* Remove [] from the string */
OVnobrackets(char * inbuf,char * outbuf,int outsize)263 void OVnobrackets(char *inbuf, char *outbuf, int outsize)
264 {
265 char *start = inbuf;
266
267 if (*start == '[') start++;
268 strmcpy(outbuf, start, outsize);
269 if ((strlen(outbuf) > 0) && (outbuf[strlen(outbuf) - 1] == ']'))
270 outbuf[strlen(outbuf) - 1] = '\0';
271 }
272
OVformat(line,from)273 void OVformat(line,from)
274 char *line;
275 char *from;
276 {
277 char *tmp;
278 char *tmpline;
279 char *curtime;
280 char *origfrom;
281 char *servername;
282 char word1[mybufsize];
283 char word2[mybufsize];
284 char word3[mybufsize];
285 char word4[mybufsize];
286 char word5[mybufsize];
287 char tmpbuf[mybufsize];
288 #ifdef MULTI_SERVER_OV
289 Window *oldwin;
290
291 oldwin=to_window;
292 to_window=get_window_by_name("OV");
293 if (!to_window) to_window=oldwin;
294 #endif
295 /* Set up tmpline to be just the message to parse */
296 if (!strncmp(line,"*** Notice -- ",14)) tmpline=line+14;
297 /* SZNet support */
298 else if (!strncmp(line,"*** Global -- ",14)) tmpline=line+14;
299 else if (!strncmp(line,"***",4)) tmpline=line+4;
300 else {
301 tmpline=index(line,' ');
302 if (!tmpline) tmpline=line;
303 else {
304 tmpline++;
305 if (!strncmp(tmpline,"*** Notice -- ",14)) tmpline+=14;
306 else tmpline=line;
307 }
308 }
309 strmcpy(tmpbuf,tmpline,sizeof(tmpbuf)); /* Default if no match is found */
310 tmpline=tmpbuf;
311 /* If from has '.' in it is is server */
312 origfrom=from;
313 if (from && index(from,'.')) from=(char *) 0;
314 /* We got new notice, needed for caching */
315 NewNotice=1;
316 /* Now we got the message, use strstr() to match it up */
317 /* OVgetword() and OVgetnick() return max mybufsize/2 so we are safe */
318 if (from) goto havefrom;
319 if (!strncmp(tmpline,"Connecting to",12)) {
320 strcpy(word1,OVgetword(0,3,tmpline)); /* Server */
321 #ifdef OGRE
322 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] connecting to %s%s%s",
323 CmdsColors[COLOV].color5,Colors[COLOFF],
324 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
325 #else
326 snprintf(tmpbuf,sizeof(tmpbuf),"Connecting to %s%s%s",CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
327 #endif
328 }
329 else if (!strncmp(tmpline,"Entering high-traffic mode: Forced by",36)) {
330 strcpy(word2,OVgetword(0,6,tmpline)); /* Nick!User@Host */
331 strcpy(word1,OVgetnick(word2)); /* Nick */
332 #ifdef OGRE
333 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] high traffic mode: forced by %s%s%s %s",
334 CmdsColors[COLOV].color5,Colors[COLOFF],
335 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
336 #else
337 snprintf(tmpbuf,sizeof(tmpbuf),"Entering high traffic mode: forced by %s%s%s %s",
338 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
339 #endif
340 }
341 else if (!strncmp(tmpline,"Entering high-traffic mode",25)) {
342 strcpy(word1,OVgetword(0,5,tmpline)); /* High speed */
343 strcpy(word2,OVgetword(0,7,tmpline)); /* Low speed */
344 #ifdef CELECOSM
345 snprintf(tmpbuf,sizeof(tmpbuf),"high-traffic mode: %s%s%s � %s%s%s",
346 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
347 CmdsColors[COLOV].color2,word2,Colors[COLOFF]);
348 #elif defined(OGRE)
349 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] high traffic mode %s%s%s > %s%s%s",
350 CmdsColors[COLOV].color5,Colors[COLOFF],
351 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
352 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
353 #else
354 snprintf(tmpbuf,sizeof(tmpbuf),"Entering high traffic mode: %s%s%s > %s%s%s",
355 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
356 CmdsColors[COLOV].color2,word2,Colors[COLOFF]);
357 #endif
358 }
359 else if (!strncmp(tmpline,"Resuming standard operation: Forced by",37)) {
360 strcpy(word2,OVgetword(0,6,tmpline)); /* Nick!User@Host */
361 strcpy(word1,OVgetnick(word2)); /* Nick */
362 #ifdef OGRE
363 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] standard operation: forced by %s%s%s %s",
364 CmdsColors[COLOV].color5,Colors[COLOFF],
365 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
366 #else
367 snprintf(tmpbuf,sizeof(tmpbuf),"Resuming standard operation: forced by %s%s%s %s",
368 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
369 #endif
370 }
371 else if (!strncmp(tmpline,"Resuming standard operation",26)) {
372 strcpy(word1,OVgetword(0,4,tmpline)); /* Low speed */
373 strcpy(word2,OVgetword(0,6,tmpline)); /* High speed */
374 #ifdef CELECOSM
375 snprintf(tmpbuf,sizeof(tmpbuf),"standard-traffic mode: %s%s%s %s%s%s",
376 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
377 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
378 #elif defined(OGRE)
379 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] standard traffic mode: %s%s%s %s%s%s",
380 CmdsColors[COLOV].color5,Colors[COLOFF],
381 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
382 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
383 #else
384 snprintf(tmpbuf,sizeof(tmpbuf),"Entering standard traffic mode: %s%s%s %s%s%s",
385 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
386 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
387 #endif
388 }
389 else if (!strncmp(tmpline,"Client exiting",14)) {
390 strcpy(word1,OVgetword(0,3,tmpline)); /* Nick */
391 if (strstr(tmpline+14," from ")) {
392 /* ircd 2.9/2.10 */
393 strcpy(word3,OVgetword(0,5,tmpline)); /* user */
394 snprintf(word2,sizeof(word2),"(%s@%s)",word3,
395 OVgetword(0,7,tmpline)); /* host */
396 strcpy(word3,OVgetword(9,0));
397 }
398 else {
399 strcpy(word2,OVgetword(0,4,tmpline)); /* user@host */
400 strcpy(word3,OVgetword(5,0,tmpline)); /* Reason */
401 }
402 #ifdef CELECOSM
403 snprintf(tmpbuf,sizeof(tmpbuf),"clnt/%sexit%s %s%s%s %s",
404 CmdsColors[COLOV].color4,Colors[COLOFF],
405 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
406 #elif defined(OGRE)
407 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sexit%s] %s%s%s %s",
408 CmdsColors[COLOV].color3,Colors[COLOFF],
409 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
410 #else
411 snprintf(tmpbuf,sizeof(tmpbuf),"Client %sexiting%s: %s%s%s %s %s",
412 CmdsColors[COLOV].color4,Colors[COLOFF],
413 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),word3);
414 #endif
415 }
416 else if (!strncmp(tmpline,"Client connecting on port",25)) {
417 strcpy(word1,OVgetword(0,5,tmpline)); /* port */
418 if ((tmp=index(word1,':'))) *tmp='\0';
419 strcpy(word2,OVgetword(0,6,tmpline)); /* Nick */
420 strcpy(word3,OVgetword(0,7,tmpline)); /* user@host */
421 #ifdef CELECOSM
422 snprintf(tmpbuf,sizeof(tmpbuf),"clnt/%sconnect%s [p%s%s%s] %s%s%s %s",
423 CmdsColors[COLOV].color4,Colors[COLOFF],
424 CmdsColors[COLOV].color5,word1,Colors[COLOFF],
425 CmdsColors[COLOV].color1,word2,Colors[COLOFF],OVuh(word3));
426 #elif defined(OGRE)
427 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sconnect%s] [p%s%s%s] %s%s%s %s",
428 CmdsColors[COLOV].color3,Colors[COLOFF],
429 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
430 CmdsColors[COLOV].color1,word2,Colors[COLOFF],OVuh(word3));
431 #else
432 snprintf(tmpbuf,sizeof(tmpbuf),"Client %sconnecting%s on port %s%s%s: %s%s%s %s",
433 CmdsColors[COLOV].color4,Colors[COLOFF],
434 CmdsColors[COLOV].color5,word1,Colors[COLOFF],
435 CmdsColors[COLOV].color1,word2,Colors[COLOFF],OVuh(word3));
436 #endif
437 }
438 else if (!strncmp(tmpline,"Client connecting",17)) {
439 strcpy(word1,OVgetword(0,3,tmpline)); /* Nick */
440 if (strstr(tmpline+17," from ")) {
441 /* ircd 2.9/2.10 */
442 strcpy(word3,OVgetword(0,5,tmpline)); /* user */
443 snprintf(word2,sizeof(word2),"(%s@%s)",word3,
444 OVgetword(0,7,tmpline)); /* host */
445 *word3='\0';
446 *word4='\0';
447 }
448 else {
449 strcpy(word2,OVgetword(0,4,tmpline)); /* user@host */
450 strcpy(word3,OVgetword(0,6,tmpline)); /* conn. class */
451 strcpy(word4,OVgetword(7,0,tmpline)); /* GECOS */
452 }
453 #ifdef CELECOSM
454 snprintf(tmpbuf,sizeof(tmpbuf),"clnt/%sconnect%s %s%s%s %s %s%s%s %s",
455 CmdsColors[COLOV].color4,Colors[COLOFF],
456 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
457 CmdsColors[COLOV].color5,word3,Colors[COLOFF],word4);
458 #elif defined(OGRE)
459 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sconnect%s] %s%s%s %s %s%s%s %s",
460 CmdsColors[COLOV].color3,Colors[COLOFF],
461 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
462 CmdsColors[COLOV].color5,word3,Colors[COLOFF],word4);
463 #else
464 snprintf(tmpbuf,sizeof(tmpbuf),"Client %sconnecting%s: %s%s%s %s %s%s%s %s",
465 CmdsColors[COLOV].color4,Colors[COLOFF],
466 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
467 CmdsColors[COLOV].color5,word3,Colors[COLOFF],word4);
468 #endif
469 }
470 else if (!strncmp(tmpline,"LINKS requested by",18) ||
471 !strncmp(tmpline,"LINKS '",7)) {
472 if (*(tmpline+6)=='\'') {
473 snprintf(word3,sizeof(word3)," %s",OVgetword(0,2,tmpline)); /* filter */
474 strcpy(word1,OVgetword(0,5,tmpline)); /* Nick */
475 strcpy(word2,OVgetword(0,6,tmpline)); /* user@host */
476 }
477 else {
478 strcpy(word1,OVgetword(0,4,tmpline)); /* Nick */
479 strcpy(word2,OVgetword(0,5,tmpline)); /* user@host */
480 *word3='\0';
481 }
482 #ifdef CELECOSM
483 snprintf(tmpbuf,sizeof(tmpbuf),"%slinks%s%s from %s%s%s %s",
484 CmdsColors[COLOV].color4,Colors[COLOFF],word3,
485 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
486 #elif defined(OGRE)
487 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slinks%s]%s from %s%s%s %s",
488 CmdsColors[COLOV].color5,Colors[COLOFF],word3,
489 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
490 #else
491 snprintf(tmpbuf,sizeof(tmpbuf),"%sLinks%s%s request from %s%s%s %s",
492 CmdsColors[COLOV].color4,Colors[COLOFF],word3,
493 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
494 #endif
495 }
496 else if (!strncmp(tmpline,"TRACE requested by",18) ||
497 !strncmp(tmpline,"trace requested by",18)) {
498 strcpy(word1,OVgetword(0,4,tmpline)); /* Nick */
499 strcpy(word2,OVgetword(0,5,tmpline)); /* user@host */
500 #ifdef CELECOSM
501 snprintf(tmpbuf,sizeof(tmpbuf),"%strace%s from %s%s%s %s",
502 CmdsColors[COLOV].color4,Colors[COLOFF],
503 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
504 #elif defined(OGRE)
505 snprintf(tmpbuf,sizeof(tmpbuf),"[ %strace%s] from %s%s%s %s",
506 CmdsColors[COLOV].color5,Colors[COLOFF],
507 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
508 #else
509 snprintf(tmpbuf,sizeof(tmpbuf),"%sTrace%s request from %s%s%s %s",
510 CmdsColors[COLOV].color4,Colors[COLOFF],
511 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
512 #endif
513 }
514 else if (!strncmp(tmpline,"info requested by",17)) {
515 strcpy(word1,OVgetword(0,4,tmpline)); /* Nick */
516 strcpy(word2,OVgetword(0,5,tmpline)); /* user@host */
517 #ifdef CELECOSM
518 snprintf(tmpbuf,sizeof(tmpbuf),"%sinfo%s from %s%s%s %s",
519 CmdsColors[COLOV].color4,Colors[COLOFF],
520 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
521 #elif defined(OGRE)
522 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sinfo%s] from %s%s%s %s",
523 CmdsColors[COLOV].color5,Colors[COLOFF],
524 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
525 #else
526 snprintf(tmpbuf,sizeof(tmpbuf),"%sInfo%s request from %s%s%s %s",
527 CmdsColors[COLOV].color4,Colors[COLOFF],
528 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
529 #endif
530 }
531 else if (!strncmp(tmpline,"Rejecting vlad",14)) {
532 strcpy(word1,OVgetword(0,4,tmpline)); /* Bot nick */
533 strcpy(word2,OVgetword(0,5,tmpline)); /* user@host */
534 #ifdef OGRE
535 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sreject%s] vlad/joh/com bot: %s%s%s %s",
536 CmdsColors[COLOV].color2,Colors[COLOFF],
537 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
538 #else
539 snprintf(tmpbuf,sizeof(tmpbuf),"Rejecting vlad/joh/com bot: %s%s%s %s",
540 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
541 #endif
542 }
543 else if (!strncmp(tmpline,"Rejecting clonebot",17)) {
544 strcpy(word1,OVgetword(0,3,tmpline)); /* Bot nick */
545 strcpy(word2,OVgetword(0,4,tmpline)); /* user@host */
546 #ifdef OGRE
547 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sreject%s] clonebot: %s%s%s %s",
548 CmdsColors[COLOV].color2,Colors[COLOFF],
549 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
550 #else
551 snprintf(tmpbuf,sizeof(tmpbuf),"Rejecting clonebot: %s%s%s %s",
552 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
553 #endif
554 }
555 else if (!strncmp(tmpline,"Identd response differs",22)) {
556 strcpy(word1,OVgetword(0,4,tmpline)); /* Nick */
557 strcpy(word2,OVgetword(0,5,tmpline)); /* Attemtped IRCUSER */
558 #ifdef OGRE
559 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sfault%s] fake identd: %s%s%s %c%s%c",
560 CmdsColors[COLOV].color2,Colors[COLOFF],
561 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
562 bold,word2,bold);
563 #else
564 snprintf(tmpbuf,sizeof(tmpbuf),"Fault identd response for %s%s%s %c%s%c",
565 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
566 bold,word2,bold);
567 #endif
568 }
569 else if (!strncmp(tmpline,"Kill line active for",19)) {
570 strcpy(word1,OVgetword(0,5,tmpline)); /* Banned client */
571 #ifdef CELECOSM
572 snprintf(tmpbuf,sizeof(tmpbuf),"k-line active: %s%s%s",
573 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
574 #elif defined(OGRE)
575 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] active: %s%s%s",
576 CmdsColors[COLOV].color2,Colors[COLOFF],
577 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
578 #else
579 snprintf(tmpbuf,sizeof(tmpbuf),"Active K-Line for %s%s%s",
580 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
581 #endif
582 }
583 else if (!strncmp(tmpline,"K-lined ",8)) {
584 strcpy(word1,OVgetword(0,2,tmpline)); /* Banned client */
585 if (*word1) {
586 tmp=word1+strlen(word1)-1;
587 if (*tmp=='.') *tmp='\0';
588 }
589 strcpy(word2,OVgetword(4,0,tmpline)); /* Banned client */
590 if (*word2) snprintf(word3,sizeof(word3)," (%s)",word2);
591 else *word3='\0';
592 #ifdef CELECOSM
593 snprintf(tmpbuf,sizeof(tmpbuf),"k-line active: %s%s%s%s",
594 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word3);
595 #elif defined(OGRE)
596 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] active: %s%s%s",
597 CmdsColors[COLOV].color2,Colors[COLOFF],
598 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
599 #else
600 snprintf(tmpbuf,sizeof(tmpbuf),"Active K-line for %s%s%s%s",
601 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word3);
602 #endif
603 }
604 else if (!strncmp(tmpline,"KLINE active for",16)) {
605 strcpy(word1,OVgetword(0,4,tmpline)); /* Banned client */
606 strcpy(word2,word1);
607 if ((tmp=index(word1,'['))) *tmp='\0';
608 #ifdef CELECOSM
609 snprintf(tmpbuf,sizeof(tmpbuf),"k-line active: %s%s%s %s",
610 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
611 #elif defined(OGRE)
612 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] active: %s%s%s %s",
613 CmdsColors[COLOV].color2,Colors[COLOFF],
614 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
615 #else
616 snprintf(tmpbuf,sizeof(tmpbuf),"Active K-Line for %s%s%s %s",
617 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
618 #endif
619 }
620 else if (!strncmp(tmpline,"I-line is full for",18)) {
621 strcpy(word1,OVgetword(0,5,tmpline)); /* nick[user@host] */
622 strcpy(word2,word1);
623 /* strip [ from nick */
624 if ((tmp=index(word1,'['))) *tmp='\0';
625 #ifdef CELECOSM
626 snprintf(tmpbuf,sizeof(tmpbuf),"i-line full: %s%s%s %s",
627 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
628 #elif defined(OGRE)
629 snprintf(tmpbuf,sizeof(tmpbuf),"[ %siline%s] full: %s%s%s %s",
630 CmdsColors[COLOV].color2,Colors[COLOFF],
631 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
632 #else
633 snprintf(tmpbuf,sizeof(tmpbuf),"I-Line full for %s%s%s %s",
634 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
635 #endif
636 }
637 else if (!strncmp(tmpline,"Quarantined nick",16)) {
638 strcpy(word1,OVgetword(0,3,tmpline)); /* nick */
639 strcpy(word2,OVgetword(0,6,tmpline)); /* user@host */
640 tmp=word1;
641 /* strip [ from nick */
642 if (*tmp=='[') {
643 if ((tmp=rindex(word1,']'))) *tmp='\0';
644 tmp=word1+1;
645 }
646 #ifdef CELECOSM
647 snprintf(tmpbuf,sizeof(tmpbuf),"quarantined nick: %s%s%s %s",
648 CmdsColors[COLOV].color1,tmp,Colors[COLOFF],OVuh(word2));
649 #elif defined(OGRE)
650 snprintf(tmpbuf,sizeof(tmpbuf),"[ %snick%s] quarantined: %s%s%s %s",
651 CmdsColors[COLOV].color2,Colors[COLOFF],
652 CmdsColors[COLOV].color1,tmp,Colors[COLOFF],OVuh(word2));
653 #else
654 snprintf(tmpbuf,sizeof(tmpbuf),"Quarantined nick %s%s%s %s",
655 CmdsColors[COLOV].color1,tmp,Colors[COLOFF],OVuh(word2));
656 #endif
657 }
658 else if (!my_strnicmp(tmpline,"stats ",6)) {
659 strcpy(word1,OVgetword(0,2,tmpline)); /* Stat type */
660 if (strstr(tmpline+6," from ")) {
661 /* ircd 2.9/2.10 */
662 strcpy(word2,OVgetword(0,4,tmpline)); /* Nick */
663 strcpy(word4,OVgetword(0,6,tmpline)); /* user */
664 snprintf(word3,sizeof(word3),"(%s@%s)",word4,
665 OVgetword(0,8,tmpline)); /* host */
666 *word4='\0';
667 }
668 else {
669 strcpy(word2,OVgetword(0,5,tmpline)); /* Nick */
670 strcpy(word3,OVgetword(0,6,tmpline)); /* user@host */
671 strcpy(word4,OVgetword(0,7,tmpline)); /* Server */
672 }
673 #ifdef CELECOSM
674 snprintf(tmpbuf,sizeof(tmpbuf),"stats %s%s%s from %s%s%s %s %s%s%s",
675 CmdsColors[COLOV].color4,word1,Colors[COLOFF],
676 CmdsColors[COLOV].color1,word2,Colors[COLOFF],OVuh(word3),
677 CmdsColors[COLOV].color3,word4,Colors[COLOFF]);
678 #elif defined(OGRE)
679 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sstats%s] %s%s%s from %s%s%s %s %s%s%s",
680 CmdsColors[COLOV].color5,Colors[COLOFF],
681 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
682 CmdsColors[COLOV].color1,word2,Colors[COLOFF],OVuh(word3),
683 CmdsColors[COLOV].color1,word4,Colors[COLOFF]);
684 #else
685 snprintf(tmpbuf,sizeof(tmpbuf),"Stats %s%s%s request from %s%s%s %s %s%s%s",
686 CmdsColors[COLOV].color4,word1,Colors[COLOFF],
687 CmdsColors[COLOV].color1,word2,Colors[COLOFF],OVuh(word3),
688 CmdsColors[COLOV].color3,word4,Colors[COLOFF]);
689 #endif
690 }
691 else if (!strncmp(tmpline,"Nick change collision",21)) {
692 strcpy(word1,OVgetword(0,5,tmpline));
693 strcpy(word2,OVgetword(0,7,tmpline));
694 strcpy(word3,OVgetword(8,0,tmpline));
695 #ifdef CELECOSM
696 snprintf(tmpbuf,sizeof(tmpbuf),"nick collide: %s%s%s [%s] %s",
697 CmdsColors[COLOV].color2,word1,Colors[COLOFF],word2,word3);
698 #elif defined(OGRE)
699 snprintf(tmpbuf,sizeof(tmpbuf),"[ %scollision%s] %s%s%s [%s] %s",
700 CmdsColors[COLOV].color2,Colors[COLOFF],
701 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2,word3);
702 #else
703 snprintf(tmpbuf,sizeof(tmpbuf),"Nick change collision: [%s%s%s] [%s] %s",
704 CmdsColors[COLOV].color2,word1,Colors[COLOFF],word2,word3);
705 #endif
706 }
707 else if (!strncmp(tmpline,"Nick collision on",17)) {
708 strcpy(word1,OVgetword(4,0,tmpline));
709 #ifdef CELECOSM
710 snprintf(tmpbuf,sizeof(tmpbuf),"nick collide: %s%s%s",
711 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
712 #elif defined(OGRE)
713 snprintf(tmpbuf,sizeof(tmpbuf),"[ %scollision%s] %s%s%s",
714 CmdsColors[COLOV].color2,Colors[COLOFF],
715 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
716 #else
717 snprintf(tmpbuf,sizeof(tmpbuf),"Nick collision: %s%s%s",
718 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
719 #endif
720 }
721 else if (!strncmp(tmpline,"Fake ",5)) {
722 strcpy(word1,OVgetword(0,2,tmpline)); /* Nick/Server */
723 strcpy(word2,OVgetword(0,4,tmpline)); /* channel */
724 strcpy(word3,OVgetword(5,0,tmpline)); /* fake modes */
725 #ifdef CELECOSM
726 snprintf(tmpbuf,sizeof(tmpbuf),"fake mode in %s%s%s: \"%s%s%s\" by %s",
727 CmdsColors[COLOV].color1,word2,Colors[COLOFF],
728 CmdsColors[COLOV].color4,word3,Colors[COLOFF],word1);
729 #elif defined(OGRE)
730 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sfake%s] mode in %s%s%s: \"%s%s%s\" by %s",
731 CmdsColors[COLOV].color5,Colors[COLOFF],
732 CmdsColors[COLOV].color1,word2,Colors[COLOFF],
733 CmdsColors[COLOV].color1,word3,Colors[COLOFF],word1);
734 #else
735 snprintf(tmpbuf,sizeof(tmpbuf),"Fake mode: \"%s%s%s\" in %s%s%s by %s",
736 CmdsColors[COLOV].color4,word3,Colors[COLOFF],
737 CmdsColors[COLOV].color1,word2,Colors[COLOFF],word1);
738 #endif
739 }
740 else if (!strncmp(tmpline,"Too many connect",16)) strcpy(tmpbuf,line);
741 else if (!strncmp(tmpline,"Possible bot",12)) {
742 strcpy(word1,OVgetword(0,3,tmpline)); /* Botnick */
743 strcpy(word2,OVgetword(0,4,tmpline)); /* user@host */
744 #ifdef OGRE
745 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] possible bot: %s%s%s %s",
746 CmdsColors[COLOV].color2,Colors[COLOFF],
747 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
748 #else
749 snprintf(tmpbuf,sizeof(tmpbuf),"Possible Bot: %s%s%s %s",
750 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
751 #endif
752 }
753 else if (!strncmp(tmpline,"Link with",9)) {
754 strcpy(word1,OVgetword(0,3,tmpline)); /* Server */
755 strcpy(word2,OVgetword(4,0,tmpline)); /* Connect info */
756 if ((tmp=index(word2,'('))) {
757 *word2='\0';
758 }
759 #ifdef CELECOSM
760 snprintf(tmpbuf,sizeof(tmpbuf),"link/%sconnect%s %s%s%s%s%s%s",
761 CmdsColors[COLOV].color3,Colors[COLOFF],
762 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
763 *word2?" (":"",*word2?word2:"",*word2?")":"");
764 #elif defined(OGRE)
765 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %sconnect%s %s%s%s%s%s%s",
766 CmdsColors[COLOV].color5,Colors[COLOFF],
767 CmdsColors[COLOV].color6,Colors[COLOFF],
768 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
769 *word2?"(":"",*word2?word2:"",*word2?")":"");
770 #else
771 snprintf(tmpbuf,sizeof(tmpbuf),"Link: connected to %s%s%s%s%s%s",
772 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
773 *word2?" (":"",*word2?word2:"",*word2?")":"");
774 #endif
775 }
776 else if (!strncmp(tmpline,"Write error to",14)) {
777 strcpy(word1,OVgetword(0,4,tmpline)); /* Server */
778 #ifdef CELECOSM
779 snprintf(tmpbuf,sizeof(tmpbuf),"link/%sw.error%s %s%s%s (closing)",
780 CmdsColors[COLOV].color3,Colors[COLOFF],
781 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
782 #elif defined(OGRE)
783 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %sw.error%s %s%s%s (closing)",
784 CmdsColors[COLOV].color5,Colors[COLOFF],
785 CmdsColors[COLOV].color6,Colors[COLOFF],
786 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
787 #else
788 snprintf(tmpbuf,sizeof(tmpbuf),"Link: Write error to %s%s%s - closing.",
789 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
790 #endif
791 }
792 else if (!strncmp(line,"Message",7)) strcpy(tmpbuf,line);
793 else if (!strncmp(tmpline,"Received SQUIT",14)) {
794 strcpy(word1,OVgetword(0,3,tmpline)); /* Server */
795 strcpy(word2,OVgetword(0,5,tmpline)); /* SQUITer */
796 strcpy(word3,OVgetword(6,0,tmpline)); /* Reason */
797 #ifdef CELECOSM
798 snprintf(tmpbuf,sizeof(tmpbuf),"link/%ssquit%s %s%s%s from %s %s",
799 CmdsColors[COLOV].color3,Colors[COLOFF],
800 CmdsColors[COLOV].color2,word1,Colors[COLOFF],word2,word3);
801 #elif defined(OGRE)
802 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %ssquit%s %s%s%s from %s %s",
803 CmdsColors[COLOV].color5,Colors[COLOFF],
804 CmdsColors[COLOV].color6,Colors[COLOFF],
805 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2,word3);
806 #else
807 snprintf(tmpbuf,sizeof(tmpbuf),"Link: %s%s%s recieved %sSQUIT%s from %s %s",
808 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
809 CmdsColors[COLOV].color4,Colors[COLOFF],word2,word3);
810 #endif
811 }
812 else if (!strncmp(tmpline,"Received KILL message for",25)) {
813 strcpy(word1,OVgetword(0,5,tmpline)); /* nick */
814 if (strlen(word1) && word1[strlen(word1)-1]=='.')
815 word1[strlen(word1)-1]='\0';
816 strcpy(word2,OVgetword(0,7,tmpline)); /* killer */
817 /* check for server kill first */
818 if (index(word2,'.')) {
819 strcpy(word3,OVgetword(9,0,tmpline)); /* path */
820 #ifdef OGRE
821 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skill%s] %sserver%s: %s%s%s from %s%s%s (%s)",
822 CmdsColors[COLOV].color2,Colors[COLOFF],
823 CmdsColors[COLOV].color6,Colors[COLOFF],
824 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
825 CmdsColors[COLOV].color5,word2,Colors[COLOFF],word3);
826 #else
827 snprintf(tmpbuf,sizeof(tmpbuf),"Server kill received for %s%s%s from %s%s%s (%s)",
828 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
829 CmdsColors[COLOV].color2,word2,Colors[COLOFF],word3);
830 #endif
831 }
832 else {
833 int foreign=0;
834 char *tmp=word3;
835 char *tmpuh=NULL;
836 char *userhost=word3;
837
838 strcpy(word3,OVgetword(0,9,tmpline)); /* path */
839 strcpy(word4,OVgetword(10,0,tmpline)); /* reason */
840 /* check for foreing kill (more than one !) */
841 while (*tmp && (tmp=index(tmp,'!'))) {
842 foreign++;
843 *tmp++='\0';
844 userhost=tmpuh;
845 tmpuh=tmp;
846 }
847 if (foreign>1) {
848 #ifdef OGRE
849 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skill%s] %sforeign%s: %s%s%s from %s%s%s %s",
850 CmdsColors[COLOV].color2,Colors[COLOFF],
851 CmdsColors[COLOV].color6,Colors[COLOFF],
852 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
853 CmdsColors[COLOV].color1,word2,Colors[COLOFF],word4);
854 #else
855 snprintf(tmpbuf,sizeof(tmpbuf),"Foreign kill received for %s%s%s from %s%s%s %s",
856 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
857 CmdsColors[COLOV].color1,word2,Colors[COLOFF],word4);
858 #endif
859 }
860 else {
861 int locop=strstr(tmpuh?tmpuh:"","(L")?1:0;
862
863 #ifdef OGRE
864 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skill%s] %slocal%s: %s%s%s from %s%s%s%s %s",
865 CmdsColors[COLOV].color2,Colors[COLOFF],
866 CmdsColors[COLOV].color6,Colors[COLOFF],
867 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
868 locop?"local operator ":"",
869 CmdsColors[COLOV].color1,word2,Colors[COLOFF],word4);
870 #else
871 snprintf(tmpbuf,sizeof(tmpbuf),"Local kill received for %s%s%s from %s%s%s%s %s",
872 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
873 locop?"local operator ":"",
874 CmdsColors[COLOV].color1,word2,Colors[COLOFF],word4);
875 #endif
876 }
877 }
878 }
879 else if (!strncmp(tmpline,"Received SERVER",15)) {
880 strcpy(word1,OVgetword(0,3,tmpline)); /* server */
881 strcpy(word2,OVgetword(0,5,tmpline)); /* remote */
882 strcpy(word4,OVgetword(7,0,tmpline)); /* IP & server name */
883 if (*word4) snprintf(word3,sizeof(word3),"(%s",word4);
884 else *word3='\0';
885 #ifdef CELECOSM
886 snprintf(tmpbuf,sizeof(tmpbuf),"link/%sserver%s %s%s%s from %s %s %s",
887 CmdsColors[COLOV].color3,Colors[COLOFF],
888 CmdsColors[COLOV].color2,word1,Colors[COLOFF],word2,word3);
889 #elif defined(OGRE)
890 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %sserver%s %s%s%s from %s %s",
891 CmdsColors[COLOV].color5,Colors[COLOFF],
892 CmdsColors[COLOV].color6,Colors[COLOFF],
893 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2,word3);
894 #else
895 snprintf(tmpbuf,sizeof(tmpbuf),"Link: %s%s%s recieved %sSERVER%s from %s %s",
896 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
897 CmdsColors[COLOV].color4,Colors[COLOFF],word2,word3);
898 #endif
899 }
900 else if (!strncmp(tmpline,"Possible Eggdrop:",17)) {
901 strcpy(word1,OVgetword(0,3,tmpline)); /* BotNick */
902 strcpy(word2,OVgetword(0,4,tmpline)); /* user@host */
903 strcpy(word3,OVgetword(0,5,tmpline)); /* b-line notice */
904 #ifdef OGRE
905 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] possible eggdrop: %s%s%s %s %s",
906 CmdsColors[COLOV].color2,Colors[COLOFF],
907 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),word3);
908 #else
909 snprintf(tmpbuf,sizeof(tmpbuf),"Possible eggdrop: %s%s%s %s %s",
910 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),word3);
911 #endif
912 }
913 else if (!strncmp(tmpline,"Nick change",11)) {
914 if (strstr(tmpline+6," from ")) {
915 /* ircd 2.9/2.10 */
916 strcpy(word1,OVgetword(0,3,tmpline)); /* oldnick */
917 strcpy(word2,OVgetword(0,5,tmpline)); /* newnick */
918 strcpy(word4,OVgetword(0,7,tmpline)); /* user */
919 snprintf(word3,sizeof(word3),"(%s@%s)",word4,
920 OVgetword(0,9,tmpline)); /* host */
921 }
922 else {
923 strcpy(word1,OVgetword(0,4,tmpline)); /* oldnick */
924 strcpy(word2,OVgetword(0,6,tmpline)); /* newnick */
925 strcpy(word3,OVgetword(0,7,tmpline)); /* user@host */
926 }
927 #ifdef OGRE
928 snprintf(tmpbuf,sizeof(tmpbuf),"[ %snick%s] %s%s%s to %s%s%s %s",
929 CmdsColors[COLOV].color1,Colors[COLOFF],
930 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
931 CmdsColors[COLOV].color1,word2,Colors[COLOFF],OVuh(word3));
932 #else
933 snprintf(tmpbuf,sizeof(tmpbuf),"Nick change: %s%s%s to %s%s%s %s",
934 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
935 CmdsColors[COLOV].color1,word2,Colors[COLOFF],OVuh(word3));
936 #endif
937 }
938 else if (!strncmp(tmpline,"added K-Line",12)) {
939 strcpy(word1,OVgetword(0,1,tmpline)); /* Nick */
940 strcpy(word2,OVgetword(5,0,tmpline)); /* K-line */
941 #ifdef OGRE
942 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] added by %s%s%s for %s%s%s",
943 CmdsColors[COLOV].color2,Colors[COLOFF],
944 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
945 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
946 #else
947 snprintf(tmpbuf,sizeof(tmpbuf),"K-Line added by %s%s%s - %s",
948 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2);
949 #endif
950 }
951 else if (!strncmp(tmpline,"Added K-Line [",14)) {
952 }
953 else if (!strncmp(tmpline,"Added temporary ",16) && strstr(tmpline," min. K-Line ")) {
954 strcpy(word1,OVgetword(0,3,tmpline)); /* time */
955 strcpy(word3,OVgetword(6,0,tmpline)); /* K-line */
956 OVnobrackets(word3,word2,sizeof(word2));
957 #ifdef OGRE
958 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] added %s%s%s for %s%s%sm",
959 CmdsColors[COLOV].color2,Colors[COLOFF],
960 CmdsColors[COLOV].color1,word2,Colors[COLOFF],
961 CmdsColors[COLOV].color5,word1,Colors[COLOFF]);
962 #else
963 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%sm K-Line added for %s%s%s",
964 CmdsColors[COLOV].color5,word1,Colors[COLOFF],
965 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
966 #endif
967 }
968 else if (!strncmp(tmpline,"Added temporary ",16) && strstr(tmpline," min. D-Line for ")) {
969 strcpy(word1,OVgetword(0,3,tmpline)); /* time */
970 strcpy(word3,OVgetword(7,0,tmpline)); /* D-line */
971 OVnobrackets(word3,word2,sizeof(word2));
972 #ifdef OGRE
973 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sdline%s] added %s%s%s for %s%s%sm",
974 CmdsColors[COLOV].color2,Colors[COLOFF],
975 CmdsColors[COLOV].color1,word2,Colors[COLOFF],
976 CmdsColors[COLOV].color5,word1,Colors[COLOFF]);
977 #else
978 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%sm D-Line added for %s%s%s",
979 CmdsColors[COLOV].color5,word1,Colors[COLOFF],
980 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
981 #endif
982 }
983 else if (!strncmp(tmpline,"Bogus server name",17)) {
984 strcpy(word1,OVgetword(0,4,tmpline)); /* Bogus name */
985 strcpy(word2,OVgetword(0,6,tmpline)); /* Nick */
986 #ifdef OGRE
987 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %sbogus%s: %s%s%s from %s%s%s",
988 CmdsColors[COLOV].color5,Colors[COLOFF],
989 CmdsColors[COLOV].color6,Colors[COLOFF],
990 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
991 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
992 #else
993 snprintf(tmpbuf,sizeof(tmpbuf),"Bogus server name %s%s%s from %s%s%s",
994 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
995 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
996 #endif
997 }
998 else if (!strncmp(tmpline,"No response from",16)) {
999 strcpy(word1,OVgetword(0,4,tmpline)); /* Server */
1000 #ifdef OGRE
1001 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %serror%s: %s%s%s is not responding",
1002 CmdsColors[COLOV].color5,Colors[COLOFF],
1003 CmdsColors[COLOV].color6,Colors[COLOFF],
1004 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1005 #else
1006 snprintf(tmpbuf,sizeof(tmpbuf),"Link error: %s%s%s is not responding",
1007 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
1008 #endif
1009 }
1010 else if (!strncmp(tmpline,"IP# Mismatch",12)) {
1011 strcpy(word1,OVgetword(0,3,tmpline)); /* Real IP */
1012 strcpy(word2,OVgetword(0,5,tmpline)); /* Mismatched IP */
1013 #ifdef OGRE
1014 snprintf(tmpbuf,sizeof(tmpbuf),"[ %smismatch%s] %s%s%s != %s%s%s",
1015 CmdsColors[COLOV].color4,Colors[COLOFF],
1016 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1017 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
1018 #else
1019 snprintf(tmpbuf,sizeof(tmpbuf),"IP mismatch detected: %s%s%s != %s%s%s",
1020 CmdsColors[COLOV].color2,word1,Colors[COLOFF],
1021 CmdsColors[COLOV].color2,word2,Colors[COLOFF]);
1022 #endif
1023 }
1024 else if (!strncmp(tmpline,"Unauthorized connection from",28)) {
1025 strcpy(word1,OVgetword(0,4,tmpline)); /* Nick!user@host */
1026 #ifdef OGRE
1027 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] unauthorized: %s%s%s",
1028 CmdsColors[COLOV].color2,Colors[COLOFF],
1029 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1030 #else
1031 snprintf(tmpbuf,sizeof(tmpbuf),"Unauthorized connect from %s%s%s",
1032 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1033 #endif
1034 }
1035 else if (!strncmp(tmpline,"Invalid username",16)) {
1036 strcpy(word1,OVgetword(0,3,tmpline)); /* Nick */
1037 strcpy(word2,OVgetword(0,4,tmpline)); /* username */
1038 #ifdef OGRE
1039 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] invalid username: %s%s%s %s",
1040 CmdsColors[COLOV].color2,Colors[COLOFF],
1041 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1042 #else
1043 snprintf(tmpbuf,sizeof(tmpbuf),"Invalid username: %s%s%s %s",
1044 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1045 #endif
1046 }
1047 else if (!strncmp(tmpline,"Cannot accept connect",21)) {
1048 strcpy(word1,OVgetword(0,4,tmpline)); /* Nick? */
1049 strcpy(word2,OVgetword(5,0,tmpline)); /* Stuff? */
1050 #ifdef OGRE
1051 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %sunlinkable%s: %s%s%s [%s]",
1052 CmdsColors[COLOV].color5,Colors[COLOFF],
1053 CmdsColors[COLOV].color6,Colors[COLOFF],
1054 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2);
1055 #else
1056 snprintf(tmpbuf,sizeof(tmpbuf),"Unlinkable connection: %s%s%s [%s]",
1057 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2);
1058 #endif
1059 }
1060 else if (!strncmp(tmpline,"Lost connection to",18)) {
1061 strcpy(word1,OVgetword(4,0,tmpline)); /* Server */
1062 #ifdef OGRE
1063 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %slost connection%s: %s%s%s",
1064 CmdsColors[COLOV].color5,Colors[COLOFF],
1065 CmdsColors[COLOV].color6,Colors[COLOFF],
1066 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1067 #else
1068 snprintf(tmpbuf,sizeof(tmpbuf),"Link: lost connection to %s%s%s",
1069 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
1070 #endif
1071 }
1072 else if (!my_strnicmp(tmpline,"failed oper",11)) {
1073 strcpy(word1,OVgetword(0,6,tmpline)); /* n!u@h for ircd 2.9/2.10 */
1074 if ((tmp=index(word1,'!')) && index(word1,'@')) {
1075 *tmp++='\0';
1076 snprintf(word2,sizeof(word2),"(%s)",tmp);
1077 strcpy(word3,OVgetword(0,3));
1078 }
1079 else {
1080 strcpy(word1,OVgetword(0,5,tmpline)); /* Nick */
1081 strcpy(word2,OVgetword(0,6,tmpline)); /* user@host */
1082 strcpy(word3,OVgetword(0,7,tmpline)); /* OPER nick */
1083 }
1084 #ifdef OGRE
1085 snprintf(tmpbuf,sizeof(tmpbuf),"[ %soper%s] FAILED: %s%s%s %s %s",
1086 CmdsColors[COLOV].color1,Colors[COLOFF],
1087 CmdsColors[COLOV].color4,word1,Colors[COLOFF],OVuh(word2),word3);
1088 #else
1089 snprintf(tmpbuf,sizeof(tmpbuf),"Failed OPER attempt: %s%s%s %s %s",
1090 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),word3);
1091 #endif
1092 }
1093 else if (!strncmp(tmpline,"Global -- Failed OPER attempt",29)) {
1094 strcpy(word1,OVgetword(0,7,tmpline)); /* Nick */
1095 strcpy(word2,OVgetword(0,8,tmpline)); /* user@host */
1096 #ifdef OGRE
1097 snprintf(tmpbuf,sizeof(tmpbuf),"[ %soper%s] FAILED: %s%s%s %s",
1098 CmdsColors[COLOV].color1,Colors[COLOFF],
1099 CmdsColors[COLOV].color4,word1,Colors[COLOFF],OVuh(word2));
1100 #else
1101 snprintf(tmpbuf,sizeof(tmpbuf),"Failed OPER attempt: %s%s%s %s",
1102 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1103 #endif
1104 }
1105 else if (!strncmp(tmpline,"Sending SQUIT ",14) ||
1106 !strncmp(tmpline,"Sending SERVER ",15)) {
1107 strcpy(word1,OVgetword(0,2,tmpline));
1108 strcpy(word2,OVgetword(0,3,tmpline));
1109 strcpy(word3,OVgetword(4,0,tmpline));
1110 #ifdef OGRE
1111 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] sending %s%s%s %s %s",
1112 CmdsColors[COLOV].color5,Colors[COLOFF],
1113 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2,
1114 !strncmp(tmpline,"Sending SQUIT ",14)?word3:"");
1115 #else
1116 snprintf(tmpbuf,sizeof(tmpbuf),"Sending %s%s%s %s %s",
1117 CmdsColors[COLOV].color2,word1,Colors[COLOFF],word2,
1118 !strncmp(tmpline,"Sending SQUIT ",14)?word3:"");
1119 #endif
1120 }
1121 else if (!strncmp(tmpline,"Rejecting connection from ",26)) {
1122 strcpy(word1,OVgetword(0,4,tmpline));
1123 #ifdef OGRE
1124 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sreject%s] connection: %s%s%s",
1125 CmdsColors[COLOV].color2,Colors[COLOFF],
1126 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1127 #else
1128 snprintf(tmpbuf,sizeof(tmpbuf),"Rejecting connection from %s%s%s",
1129 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
1130 #endif
1131 }
1132 else if (!strncmp(tmpline,"Remote CONNECT",14)) {
1133 strcpy(word1,OVgetword(0,3,tmpline)); /* target */
1134 strcpy(word2,OVgetword(0,4,tmpline)); /* port */
1135 strcpy(word3,OVgetword(0,6,tmpline)); /* nick */
1136 #ifdef OGRE
1137 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %sconnect%s %s%s%s %s <- %s from %s%s%s",
1138 CmdsColors[COLOV].color2,Colors[COLOFF],
1139 CmdsColors[COLOV].color6,Colors[COLOFF],
1140 CmdsColors[COLOV].color5,word1,Colors[COLOFF],word2,origfrom,
1141 CmdsColors[COLOV].color2,word3,Colors[COLOFF]);
1142 #else
1143 snprintf(tmpbuf,sizeof(tmpbuf),"Remote connect %s%s%s %s <- %s from %s%s%s",
1144 CmdsColors[COLOV].color5,word1,Colors[COLOFF],word2,origfrom,
1145 CmdsColors[COLOV].color2,word3,Colors[COLOFF]);
1146 #endif
1147 }
1148 else if (!strncmp(tmpline,"TS for ",7)) {
1149 strcpy(word1,OVgetword(0,3,tmpline)); /* channel */
1150 strcpy(word2,OVgetword(0,6,tmpline)); /* TS1 */
1151 strcpy(word3,OVgetword(0,8,tmpline)); /* TS2 */
1152 #ifdef OGRE
1153 snprintf(tmpbuf,sizeof(tmpbuf),"[ %schannel%s] %sTS%s %s%s%s %s -> %s",
1154 CmdsColors[COLOV].color2,Colors[COLOFF],
1155 CmdsColors[COLOV].color6,Colors[COLOFF],
1156 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2,word3);
1157 #else
1158 snprintf(tmpbuf,sizeof(tmpbuf),"%sTS%s for %s%s%s changed %s -> %s",
1159 CmdsColors[COLOV].color1,Colors[COLOFF],
1160 CmdsColors[COLOV].color2,word1,Colors[COLOFF],word2,word3);
1161 #endif
1162 }
1163 else if (!strncmp(tmpline,"Too many user connections for ",30)) {
1164 strcpy(word1,OVgetword(0,6,tmpline)); /* user */
1165 strcpy(word2,word1);
1166 if ((tmp=index(word1,'['))) *tmp='\0';
1167 #ifdef OGRE
1168 snprintf(tmpbuf,sizeof(tmpbuf),"[ %suser%s] too many connections for %s%s%s %s",
1169 CmdsColors[COLOV].color2,Colors[COLOFF],
1170 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1171 #else
1172 snprintf(tmpbuf,sizeof(tmpbuf),"Too many user connections for %s%s%s %s",
1173 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1174 #endif
1175 }
1176 else if (!strncmp(tmpline,"Too many global connections for ",32)) {
1177 strcpy(word1,OVgetword(0,6,tmpline)); /* user */
1178 strcpy(word2,word1);
1179 if ((tmp=index(word1,'['))) *tmp='\0';
1180 #ifdef OGRE
1181 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sglobal%s] too many connections for %s%s%s %s",
1182 CmdsColors[COLOV].color2,Colors[COLOFF],
1183 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1184 #else
1185 snprintf(tmpbuf,sizeof(tmpbuf),"Too many global connections for %s%s%s %s",
1186 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1187 #endif
1188 }
1189 else if (!strncmp(tmpline,"Temporary K-line for ",21)) {
1190 strcpy(word2,OVgetword(0,4,tmpline)); /* user */
1191 OVnobrackets(word2,word1,sizeof(word1));
1192 #ifdef OGRE
1193 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] expired %s%s%s",
1194 CmdsColors[COLOV].color2,Colors[COLOFF],
1195 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1196 #else
1197 snprintf(tmpbuf,sizeof(tmpbuf),"Temporary K-Line for %s%s%s expired",
1198 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1199 #endif
1200 }
1201 else if (!strncmp(tmpline,"KLINE over-ruled for ",21)) {
1202 strcpy(word1,OVgetword(0,4,tmpline));
1203 if ((tmp=index(word1,'['))) {
1204 strcpy(word2,tmp);
1205 *tmp='\0';
1206 }
1207 else *word2='\0';
1208 #ifdef OGRE
1209 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] overruled %s%s%s %s",
1210 CmdsColors[COLOV].color2,Colors[COLOFF],
1211 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1212 #else
1213 snprintf(tmpbuf,sizeof(tmpbuf),"K-Line overruled for %s%s%s %s",
1214 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1215 #endif
1216 }
1217 else if (!strncmp(tmpbuf,"Opermsg from ",13)) {
1218 strcpy(word1,OVgetword(0,3,tmpline)); /* nick */
1219 if (strlen(word1)>0 && word1[strlen(word1)-1]==':')
1220 word1[strlen(word1)-1]='\0';
1221 strcpy(word2,OVgetword(0,4,tmpline));
1222 if (!strcmp(word2,"LOCOPS")) strcpy(word2,"locopermsg");
1223 else strcpy(word2," opermsg");
1224 strcpy(word3,OVgetword(6,0,tmpline)); /* msg */
1225 #ifdef OGRE
1226 snprintf(tmpbuf,sizeof(tmpbuf),"[%s%s%s] %s%s%s: %s",
1227 CmdsColors[COLOV].color5,word2,Colors[COLOFF],
1228 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word3);
1229 #else
1230 snprintf(tmpbuf,sizeof(tmpbuf),"%s from %s%s%s: %s",
1231 word2,CmdsColors[COLOV].color1,word1,Colors[COLOFF],word3);
1232 #endif
1233 }
1234 else if (!strncmp(tmpbuf,"New Max Local Clients: ",23)) {
1235 strcpy(word1,OVgetword(0,5,tmpline)); /* number */
1236 #ifdef OGRE
1237 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclients%s] new max local %s%s%s",
1238 CmdsColors[COLOV].color5,Colors[COLOFF],
1239 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1240 #else
1241 snprintf(tmpbuf,sizeof(tmpbuf),"New max local clients %s%s%s",
1242 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1243 #endif
1244 }
1245 else if (!strncmp(tmpbuf,"XLINE over-ruled for ",21)) {
1246 strcpy(word1,OVgetword(0,4,tmpline)); /* who */
1247 strcpy(word2,word1);
1248 tmp=index(word1,'[');
1249 if (tmp) *tmp='\0';
1250 #ifdef OGRE
1251 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sxline%s] overruled for %s%s%s %s",
1252 CmdsColors[COLOV].color2,Colors[COLOFF],
1253 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1254 #else
1255 snprintf(tmpbuf,sizeof(tmpbuf),"X-Line overruled for %s%s%s %s",
1256 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1257 #endif
1258 }
1259 else if (!strncmp(tmpbuf,"XLINE active for ",17)) {
1260 strcpy(word1,OVgetword(0,4,tmpline)); /* who */
1261 strcpy(word2,word1);
1262 tmp=index(word1,'[');
1263 if (tmp) *tmp='\0';
1264 #ifdef OGRE
1265 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sxline%s] active for %s%s%s %s",
1266 CmdsColors[COLOV].color2,Colors[COLOFF],
1267 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1268 #else
1269 snprintf(tmpbuf,sizeof(tmpbuf),"X-Line active for %s%s%s %s",
1270 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1271 #endif
1272 }
1273 else if (!strncmp(tmpbuf,"admin requested by ",19)) {
1274 strcpy(word1,OVgetword(0,4,tmpline)); /* who */
1275 strcpy(word2,OVgetword(0,5,tmpline)); /* user@host */
1276 strcpy(word3,OVgetword(0,6,tmpline)); /* server */
1277 #ifdef OGRE
1278 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sadmin%s] requested by %s%s%s %s %s",
1279 CmdsColors[COLOV].color2,Colors[COLOFF],
1280 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),word3);
1281 #else
1282 snprintf(tmpbuf,sizeof(tmpbuf),"Admin requested by %s%s%s %s %s",
1283 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),word3);
1284 #endif
1285 }
1286 else if (!strncmp(tmpbuf,"motd requested by ",18)) {
1287 strcpy(word1,OVgetword(0,4,tmpline)); /* who */
1288 strcpy(word2,OVgetword(0,5,tmpline)); /* user@host */
1289 strcpy(word3,OVgetword(0,6,tmpline)); /* server */
1290 #ifdef OGRE
1291 snprintf(tmpbuf,sizeof(tmpbuf),"[ %smotd%s] requested by %s%s%s %s %s",
1292 CmdsColors[COLOV].color2,Colors[COLOFF],
1293 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),word3);
1294 #else
1295 snprintf(tmpbuf,sizeof(tmpbuf),"Motd requested by %s%s%s %s %s",
1296 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),word3);
1297 #endif
1298 }
1299 else if (!strncmp(tmpline,"Unauthorised client connection from ",36)) {
1300 strcpy(word1,OVgetword(0,5,tmpline)); /* nick[user@host] */
1301 tmp=index(word1,'[');
1302 if (tmp) {
1303 strcpy(word2,tmp);
1304 *tmp='\0';
1305 }
1306 else strcpy(word2,word1);
1307 strcpy(word3,OVgetword(0,6,tmpline)); /* [ip] */
1308 strcpy(word4,OVgetword(0,8,tmpline)); /* [server/port] */
1309 if (strlen(word4)>0 && word4[strlen(word4)-1]=='.')
1310 word4[strlen(word4)-1]='\0';
1311 #ifdef OGRE
1312 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] unauthorized: %s%s%s %s %s %s",
1313 CmdsColors[COLOV].color2,Colors[COLOFF],
1314 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1315 word3,word4);
1316 #else
1317 snprintf(tmpbuf,sizeof(tmpbuf),"Unauthorized connect from %s%s%s %s %s %s",
1318 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1319 word3,word4);
1320 #endif
1321 }
1322 else if (!strncmp(tmpline,"K-Line for ",11)) {
1323 strcpy(word1,OVgetword(0,3,tmpline)); /* pattern */
1324 tmp=word1;
1325 if (*tmp=='[') tmp++;
1326 if (strlen(word1)>0 && word1[strlen(word1)-1]==']')
1327 word1[strlen(word1)-1]='\0';
1328 #ifdef OGRE
1329 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] removed %s%s%s",
1330 CmdsColors[COLOV].color2,Colors[COLOFF],
1331 CmdsColors[COLOV].color1,tmp,Colors[COLOFF]);
1332 #else
1333 snprintf(tmpbuf,sizeof(tmpbuf),"K-Line removed for %s%s%s",
1334 CmdsColors[COLOV].color1,tmp,Colors[COLOFF]);
1335 #endif
1336 }
1337 else if (!strncmp(tmpline,"Un-klined ",10)) {
1338 strcpy(word1,OVgetword(0,2,tmpline)); /* pattern */
1339 tmp=word1;
1340 if (*tmp=='[') tmp++;
1341 if (strlen(word1)>0 && word1[strlen(word1)-1]==']')
1342 word1[strlen(word1)-1]='\0';
1343 #ifdef OGRE
1344 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] removed temporary %s%s%s",
1345 CmdsColors[COLOV].color2,Colors[COLOFF],
1346 CmdsColors[COLOV].color1,tmp,Colors[COLOFF]);
1347 #else
1348 snprintf(tmpbuf,sizeof(tmpbuf),"Temporary K-Line removed for %s%s%s",
1349 CmdsColors[COLOV].color1,tmp,Colors[COLOFF]);
1350 #endif
1351 }
1352 else if (strstr(tmpline,"whois on you")) {
1353 strcpy(word1,OVgetword(0,1,tmpline)); /* nick */
1354 strcpy(word2,OVgetword(0,2,tmpline)); /* user@host */
1355 #ifdef OGRE
1356 snprintf(tmpbuf,sizeof(tmpbuf),"[ %swhois%s] on you by %s%s%s %s",
1357 CmdsColors[COLOV].color1,Colors[COLOFF],
1358 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1359 #else
1360 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s %s is doing a %sWhois%s on you.",
1361 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1362 CmdsColors[COLOV].color4,Colors[COLOFF]);
1363 #endif
1364 }
1365 else if (strstr(tmpline,"WHOIS on YOU")) {
1366 strcpy(word1,OVgetword(0,6,tmpline)); /* nick */
1367 strcpy(word2,OVgetword(0,7,tmpline)); /* user@host */
1368 #ifdef OGRE
1369 snprintf(tmpbuf,sizeof(tmpbuf),"[ %swhois%s] on you by %s%s%s %s",
1370 CmdsColors[COLOV].color1,Colors[COLOFF],
1371 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1372 #else
1373 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s %s is doing a %sWhois%s on you.",
1374 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1375 CmdsColors[COLOV].color4,Colors[COLOFF]);
1376 #endif
1377 }
1378 else if (strstr(tmpline,"Flooder") && strstr(tmpline,"target")) {
1379 strcpy(word1,OVgetword(0,2,tmpline)); /* nick */
1380 if (!strcmp(word1,"Flooder")) {
1381 strcpy(word3,OVgetword(0,3,tmpline));
1382 strcpy(word1,word3);
1383 if ((tmp=index(word1,'['))) *tmp='\0';
1384 strcpy(word2,word3);
1385 }
1386 else strcpy(word2,OVgetword(0,3,tmpline)); /* user@host */
1387 strcpy(word3,OVgetword(0,5,tmpline)); /* Server */
1388 strcpy(word4,OVgetword(0,7,tmpline)); /* Channel */
1389 #ifdef CELECOSM
1390 snprintf(tmpbuf,sizeof(tmpbuf),"clnt/%sflood%s %s%s%s -> %s%s%s [%s]",
1391 CmdsColors[COLOV].color4,Colors[COLOFF],
1392 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1393 CmdsColors[COLOV].color2,word4,Colors[COLOFF],word3);
1394 #elif defined(OGRE)
1395 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] flooder: %s%s%s %s -> %s%s%s [%s]",
1396 CmdsColors[COLOV].color2,Colors[COLOFF],
1397 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1398 CmdsColors[COLOV].color1,word4,Colors[COLOFF],word3);
1399 #else
1400 snprintf(tmpbuf,sizeof(tmpbuf),"Flooder %s%s%s %s -> %s%s%s [%s]",
1401 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1402 CmdsColors[COLOV].color2,word4,Colors[COLOFF],word3);
1403 #endif
1404 }
1405 else if (strstr(tmpline,"is now operator") ||
1406 strstr(tmpline,"is now an operator")) {
1407 int opertype;
1408 char *operstr;
1409
1410 strcpy(word1,OVgetword(0,1,tmpline)); /* Nick */
1411 strcpy(word2,OVgetword(0,2,tmpline)); /* user@host */
1412 strcpy(word4,OVgetword(0,5,tmpline));
1413 strcpy(word3,OVgetword(0,6,tmpline)); /* o/O */
1414 tmp=word3;
1415 if (*tmp) tmp++;
1416 if (get_server_version(from_server)==Server2_11) {
1417 opertype=*tmp?(*tmp=='o'?2:1):0;
1418 }
1419 else {
1420 opertype=*tmp?(*tmp=='O'?2:1):0;
1421 if (!strcmp(word4,"an")) opertype=0;
1422 }
1423 operstr=opertype?(opertype==2?"global ":"local "):"";
1424 #ifdef CELECOSM
1425 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s %s is an IRC warrior %s%s%s",
1426 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1427 *operstr?"(":"",operstr,operstr?")":"");
1428 #elif defined(OGRE)
1429 snprintf(tmpbuf,sizeof(tmpbuf),"[ %soper%s] %s%s%s %s is now a%s %soper",
1430 CmdsColors[COLOV].color1,Colors[COLOFF],
1431 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1432 *operstr?"":"n",operstr);
1433 #else
1434 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s %s is now %sIRC Operator.",
1435 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1436 operstr);
1437 #endif
1438 }
1439 else if (strstr(tmpline,"is rehashing Server config")) {
1440 strcpy(word1,OVgetword(0,1,tmpline)); /* Nick */
1441 #ifdef CELECOSM
1442 snprintf(tmpbuf,sizeof(tmpbuf),"config rehash by %s%s%s",
1443 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1444 #elif defined(OGRE)
1445 snprintf(tmpbuf,sizeof(tmpbuf),"[ %srehash%s] by %s%s%s",
1446 CmdsColors[COLOV].color4,Colors[COLOFF],
1447 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1448 #else
1449 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s is rehashing the server config file.",
1450 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1451 #endif
1452 }
1453 else if (strstr(tmpline,"tried to msg")) {
1454 strcpy(word1,OVgetword(0,2,tmpline)); /* nick */
1455 strcpy(word2,OVgetword(0,3,tmpline)); /* user@host */
1456 strcpy(word3,OVgetword(0,7,tmpline)); /* number */
1457 #ifdef OGRE
1458 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] %s%s%s %s tried to message %s%s%s users",
1459 CmdsColors[COLOV].color2,Colors[COLOFF],
1460 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1461 CmdsColors[COLOV].color1,word3,Colors[COLOFF]);
1462 #else
1463 snprintf(tmpbuf,sizeof(tmpbuf),"User %s%s%s %s tried to message %s%s%s users",
1464 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1465 CmdsColors[COLOV].color2,word3,Colors[COLOFF]);
1466 #endif
1467 }
1468 else if ((strstr(tmpline,"Possible")) && (strstr(tmpline,"bot"))) {
1469 strcpy(word1,OVgetword(0,4,tmpline)); /* Bot Nick */
1470 strcpy(word2,OVgetword(0,5,tmpline)); /* User@Host */
1471 #ifdef OGRE
1472 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] possible bot: %s%s%s %s",
1473 CmdsColors[COLOV].color2,Colors[COLOFF],
1474 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1475 #else
1476 snprintf(tmpbuf,sizeof(tmpbuf),"Possible IrcBot: %s%s%s %s",
1477 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1478 #endif
1479 }
1480 else if (strstr(tmpline,"ERROR :from")) {
1481 strcpy(word1,OVgetword(0,3,tmpline)); /* Error Source */
1482 strcpy(word2,OVgetword(0,7,tmpline)); /* ? */
1483 strcpy(word3,OVgetword(8,0,tmpline)); /* Error */
1484 #ifdef OGRE
1485 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %serror%s: %s%s%s - close link %s%s%s %s",
1486 CmdsColors[COLOV].color5,Colors[COLOFF],
1487 CmdsColors[COLOV].color6,Colors[COLOFF],
1488 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1489 CmdsColors[COLOV].color1,word2,Colors[COLOFF],word3);
1490 #else
1491 snprintf(tmpbuf,sizeof(tmpbuf),"Error: %s%s%s - close link %s%s%s %s",
1492 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1493 CmdsColors[COLOV].color2,word2,Colors[COLOFF],word3);
1494 #endif
1495 }
1496 else if (strstr(tmpline,"closed the connection")) {
1497 strcpy(word1,OVgetword(0,2,tmpline)); /* Server */
1498 #ifdef OGRE
1499 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %slink error%s: %s%s%s closed the connection",
1500 CmdsColors[COLOV].color5,Colors[COLOFF],
1501 CmdsColors[COLOV].color6,Colors[COLOFF],
1502 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1503 #else
1504 snprintf(tmpbuf,sizeof(tmpbuf),"Link Error: %s%s%s closed the connection.",
1505 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
1506 #endif
1507 }
1508 else if ((strstr(tmpline,"Connection to")) && (strstr(tmpline,"activated"))) {
1509 strcpy(word1,OVgetword(0,3,tmpline)); /* Server */
1510 #ifdef OGRE
1511 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %sconnecting%s to %s%s%s",
1512 CmdsColors[COLOV].color5,Colors[COLOFF],
1513 CmdsColors[COLOV].color6,Colors[COLOFF],
1514 CmdsColors[COLOV].color1,word1,Colors[COLOFF]);
1515 #else
1516 snprintf(tmpbuf,sizeof(tmpbuf),"Link: Connecting to %s%s%s",
1517 CmdsColors[COLOV].color2,word1,Colors[COLOFF]);
1518 #endif
1519 }
1520 else if (strstr(tmpline,"connect failure:")) {
1521 strcpy(word1,OVgetword(0,3,tmpline)); /* Failed Server */
1522 strcpy(word2,OVgetword(4,0,tmpline)); /* Reason */
1523 #ifdef OGRE
1524 snprintf(tmpbuf,sizeof(tmpbuf),"[ %slink%s] %sfailed connect%s from %s%s%s [%s]",
1525 CmdsColors[COLOV].color5,Colors[COLOFF],
1526 CmdsColors[COLOV].color6,Colors[COLOFF],
1527 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word4);
1528 #else
1529 snprintf(tmpbuf,sizeof(tmpbuf),"Failed connect from %s%s%s [%s]",
1530 CmdsColors[COLOV].color2,word1,Colors[COLOFF],word2);
1531 #endif
1532 }
1533 else if ((tmp=strstr(tmpline," added a ")) && strstr(tmp,"kline")) {
1534 strcpy(word1,OVgetword(0,1,tmpline)); /* Nick */
1535 strcpy(word2,OVgetword(6,0,tmpline)); /* K-line */
1536 #ifdef OGRE
1537 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] added by %s%s%s for %s%s%s",
1538 CmdsColors[COLOV].color2,Colors[COLOFF],
1539 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1540 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
1541 #else
1542 snprintf(tmpbuf,sizeof(tmpbuf),"K-Line added by %s%s%s - %s",
1543 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2);
1544 #endif
1545 }
1546 else if (strstr(tmpline," added K-Line ")) {
1547 strcpy(word1,OVgetword(0,1,tmpline)); /* Nick */
1548 strcpy(word2,OVgetword(5,0,tmpline)); /* K-line */
1549 #ifdef OGRE
1550 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] added by %s%s%s for %s%s%s",
1551 CmdsColors[COLOV].color2,Colors[COLOFF],
1552 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1553 CmdsColors[COLOV].color1,word2,Colors[COLOFF]);
1554 #else
1555 snprintf(tmpbuf,sizeof(tmpbuf),"K-Line added by %s%s%s - %s",
1556 CmdsColors[COLOV].color1,word1,Colors[COLOFF],word2);
1557 #endif
1558 }
1559 else if (strstr(tmpline," added temporary ") && strstr(tmpline," min. K-Line for ")) {
1560 strcpy(word1,OVgetword(0,1,tmpline)); /* who */
1561 strcpy(word2,OVgetword(0,4,tmpline)); /* time */
1562 strcpy(word4,OVgetword(0,8,tmpline)); /* k-line */
1563 OVnobrackets(word4,word3,sizeof(word3));
1564 strcpy(word4,OVgetword(9,0,tmpline)); /* reason */
1565 #ifdef OGRE
1566 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] %s%s%sm added by %s%s%s for %s%s%s: %s%s%s",
1567 CmdsColors[COLOV].color2,Colors[COLOFF],
1568 CmdsColors[COLOV].color5,word2,Colors[COLOFF],
1569 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1570 CmdsColors[COLOV].color1,word3,Colors[COLOFF],
1571 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1572 #else
1573 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%sm K-Line added by %s%s%s for %s%s%s: %s%s%s",
1574 CmdsColors[COLOV].color5,word2,Colors[COLOFF],
1575 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1576 CmdsColors[COLOV].color1,word3,Colors[COLOFF],
1577 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1578 #endif
1579 }
1580 else if (strstr(tmpline," added temporary ") && strstr(tmpline," min. D-Line for ")) {
1581 strcpy(word1,OVgetword(0,1,tmpline)); /* who */
1582 strcpy(word2,OVgetword(0,4,tmpline)); /* time */
1583 strcpy(word4,OVgetword(0,8,tmpline)); /* d-line */
1584 OVnobrackets(word4,word3,sizeof(word3));
1585 strcpy(word4,OVgetword(9,0,tmpline)); /* reason */
1586 #ifdef OGRE
1587 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sdline%s] %s%s%sm added by %s%s%s for %s%s%s: %s%s%s",
1588 CmdsColors[COLOV].color2,Colors[COLOFF],
1589 CmdsColors[COLOV].color5,word2,Colors[COLOFF],
1590 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1591 CmdsColors[COLOV].color1,word3,Colors[COLOFF],
1592 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1593 #else
1594 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%sm D-Line added by %s%s%s for %s%s%s: %s%s%s",
1595 CmdsColors[COLOV].color5,word2,Colors[COLOFF],
1596 CmdsColors[COLOV].color1,word1,Colors[COLOFF],
1597 CmdsColors[COLOV].color1,word3,Colors[COLOFF],
1598 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1599 #endif
1600 }
1601 else if (strstr(tmpline," is requesting gline for ")) {
1602 strcpy(word1,OVgetword(0,1,tmpline)); /* who */
1603 strcpy(word2,OVgetword(0,3,tmpline)); /* server */
1604 strcpy(word4,OVgetword(0,8,tmpline)); /* g-line */
1605 OVnobrackets(word4,word3,sizeof(word3));
1606 strcpy(word5,OVgetword(9,0,tmpline)); /* reason */
1607 OVnobrackets(word5,word4,sizeof(word4));
1608 #ifdef OGRE
1609 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sgline%s] requested by %s%s%s %s%s%s for %s%s%s: %s%s%s",
1610 CmdsColors[COLOV].color2,Colors[COLOFF],
1611 CmdsColors[COLOV].color5,word1,Colors[COLOFF],
1612 CmdsColors[COLOV].color1,word2,Colors[COLOFF],
1613 CmdsColors[COLOV].color1,word3,Colors[COLOFF],
1614 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1615 #else
1616 snprintf(tmpbuf,sizeof(tmpbuf),"G-Line requested by %s%s%s %s%s%s for %s%s%s: %s%s%s",
1617 CmdsColors[COLOV].color5,word1,Colors[COLOFF],
1618 CmdsColors[COLOV].color1,word2,Colors[COLOFF],
1619 CmdsColors[COLOV].color1,word3,Colors[COLOFF],
1620 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1621 #endif
1622 }
1623 else if (strstr(tmpline," has triggered gline for ")) {
1624 strcpy(word1,OVgetword(0,1,tmpline)); /* who */
1625 strcpy(word2,OVgetword(0,3,tmpline)); /* server */
1626 strcpy(word4,OVgetword(0,8,tmpline)); /* g-line */
1627 OVnobrackets(word4,word3,sizeof(word3));
1628 strcpy(word5,OVgetword(9,0,tmpline)); /* reason */
1629 OVnobrackets(word5,word4,sizeof(word4));
1630 #ifdef OGRE
1631 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sgline%s] triggered by %s%s%s %s%s%s for %s%s%s: %s%s%s",
1632 CmdsColors[COLOV].color2,Colors[COLOFF],
1633 CmdsColors[COLOV].color5,word1,Colors[COLOFF],
1634 CmdsColors[COLOV].color1,word2,Colors[COLOFF],
1635 CmdsColors[COLOV].color1,word3,Colors[COLOFF],
1636 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1637 #else
1638 snprintf(tmpbuf,sizeof(tmpbuf),"G-Line requested by %s%s%s %s%s%s for %s%s%s: %s%s%s",
1639 CmdsColors[COLOV].color5,word1,Colors[COLOFF],
1640 CmdsColors[COLOV].color1,word2,Colors[COLOFF],
1641 CmdsColors[COLOV].color1,word3,Colors[COLOFF],
1642 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1643 #endif
1644 }
1645 else if (strstr(tmpline," is rehashing server config file")) {
1646 strcpy(word1,OVgetword(0,1,tmpline)); /* who */
1647 strcpy(word2,word1);
1648 tmp=index(word1,'!');
1649 if (tmp) *tmp++='\0';
1650 tmp=index(word2,'{');
1651 if (tmp) *tmp++='\0';
1652 #ifdef OGRE
1653 snprintf(tmpbuf,sizeof(tmpbuf),"[ %srehash%s] by %s%s%s %s",
1654 CmdsColors[COLOV].color2,Colors[COLOFF],
1655 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1656 #else
1657 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s %s is rehashing the server config file",
1658 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1659 #endif
1660 }
1661 else if (strstr(tmpline," is attempting to join locally juped channel ")) {
1662 strcpy(word1,OVgetword(0,2,tmpline)); /* nick */
1663 strcpy(word2,OVgetword(0,3,tmpline)); /* user@host */
1664 strcpy(word3,OVgetword(0,11,tmpline)); /* user@host */
1665 #ifdef OGRE
1666 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sclient%s] %s%s%s %s attempting to join locally juped channel %s%s%s",
1667 CmdsColors[COLOV].color2,Colors[COLOFF],
1668 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1669 CmdsColors[COLOV].color4,word3,Colors[COLOFF]);
1670 #else
1671 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s %s is attempting to join locally juped channel %s%s%s",
1672 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1673 CmdsColors[COLOV].color4,word3,Colors[COLOFF]);
1674 #endif
1675 }
1676 else if (strstr(tmpline," added X-Line for ")) {
1677 //strcpy(tmpbuf,"markisp!mark@fibonacci.sequence{markalso} added X-Line for [*RiShuBot*] [drones]");
1678 strcpy(word1,OVgetword(0,1,tmpline)); /* nick */
1679 strcpy(word2,word1);
1680 tmp=index(word1,'!');
1681 if (tmp) *tmp++='\0';
1682 tmp=index(word2,'{');
1683 if (tmp) *tmp++='\0';
1684 strcpy(word3,OVgetword(0,5,tmpline)); /* target */
1685 strcpy(word4,OVgetword(0,6,tmpline)); /* reason */
1686 #ifdef OGRE
1687 snprintf(tmpbuf,sizeof(tmpbuf),"[ %sxline%s] added by %s%s%s %s for %s%s%s: %s",
1688 CmdsColors[COLOV].color2,Colors[COLOFF],
1689 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1690 CmdsColors[COLOV].color4,word3,Colors[COLOFF],word4);
1691 #else
1692 snprintf(tmpbuf,sizeof(tmpbuf),"X-Line added by %s%s%s %s for %s%s%s: %s",
1693 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2),
1694 CmdsColors[COLOV].color4,word3,Colors[COLOFF],word4);
1695 #endif
1696 }
1697 else if (strstr(tmpline," already K-Lined by ")) {
1698 char *tmp1=word1;
1699 char *tmp2=word2;
1700
1701 strcpy(word1,OVgetword(0,1,tmpline)); /* who */
1702 if (*tmp1=='[') tmp1++;
1703 if (strlen(word1)>0 && word1[strlen(word1)-1]==']')
1704 word1[strlen(word1)-1]='\0';
1705 strcpy(word2,OVgetword(0,5,tmpline)); /* pattern */
1706 if (*tmp2=='[') tmp2++;
1707 if (strlen(word2)>0 && word1[strlen(word2)-1]==']')
1708 word1[strlen(word2)-1]='\0';
1709 strcpy(word3,OVgetword(7,0,tmpline)); /* reason */
1710 #ifdef OGRE
1711 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] %s%s%s already klined by %s%s%s: %s%s%s",
1712 CmdsColors[COLOV].color2,Colors[COLOFF],
1713 CmdsColors[COLOV].color5,tmp1,Colors[COLOFF],
1714 CmdsColors[COLOV].color5,tmp2,Colors[COLOFF],
1715 CmdsColors[COLOV].color4,word3,Colors[COLOFF]);
1716 #else
1717 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s already klined by %s%s%s: %s%s%s",
1718 CmdsColors[COLOV].color5,tmp1,Colors[COLOFF],
1719 CmdsColors[COLOV].color5,tmp2,Colors[COLOFF],
1720 CmdsColors[COLOV].color4,word4,Colors[COLOFF]);
1721 #endif
1722 }
1723 else if (strstr(tmpline," has removed the K-Line for: ")) {
1724 char *tmp1=word3;
1725
1726 strcpy(word1,OVgetword(0,1,tmpline)); /* who */
1727 strcpy(word2,word1);
1728 tmp=index(word1,'!');
1729 if (tmp) *tmp++='\0';
1730 tmp=index(word2,'{');
1731 if (tmp) *tmp++='\0';
1732 strcpy(word3,OVgetword(0,7,tmpline)); /* pattern */
1733 if (*tmp1=='[') tmp1++;
1734 if (strlen(word3)>0 && word3[strlen(word3)-1]==']')
1735 word3[strlen(word3)-1]='\0';
1736 #ifdef OGRE
1737 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] %s%s%s removed by %s%s%s %s",
1738 CmdsColors[COLOV].color2,Colors[COLOFF],
1739 CmdsColors[COLOV].color4,tmp1,Colors[COLOFF],
1740 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1741 #else
1742 snprintf(tmpbuf,sizeof(tmpbuf),"%s%s%s kline removed by %s%s%s %s",
1743 CmdsColors[COLOV].color4,tmp1,Colors[COLOFF],
1744 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1745 #endif
1746 }
1747 else if (strstr(tmpline," has removed the temporary K-Line for: ")) {
1748 char *tmp1=word3;
1749
1750 strcpy(word1,OVgetword(0,1,tmpline)); /* who */
1751 strcpy(word2,word1);
1752 tmp=index(word1,'!');
1753 if (tmp) *tmp++='\0';
1754 tmp=index(word2,'{');
1755 if (tmp) *tmp++='\0';
1756 strcpy(word3,OVgetword(0,8,tmpline)); /* pattern */
1757 if (*tmp1=='[') tmp1++;
1758 if (strlen(word3)>0 && word3[strlen(word3)-1]==']')
1759 word3[strlen(word3)-1]='\0';
1760 #ifdef OGRE
1761 snprintf(tmpbuf,sizeof(tmpbuf),"[ %skline%s] temporary %s%s%s removed by %s%s%s %s",
1762 CmdsColors[COLOV].color2,Colors[COLOFF],
1763 CmdsColors[COLOV].color4,tmp1,Colors[COLOFF],
1764 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1765 #else
1766 snprintf(tmpbuf,sizeof(tmpbuf),"Temporary %s%s%s kline removed by %s%s%s %s",
1767 CmdsColors[COLOV].color4,tmp1,Colors[COLOFF],
1768 CmdsColors[COLOV].color1,word1,Colors[COLOFF],OVuh(word2));
1769 #endif
1770 }
1771 havefrom:
1772 servername=server_list[from_server].itsname;
1773 if (!servername) servername=server_list[from_server].name;
1774 if (OVTS) curtime=update_clock(0,0,GET_TIME);
1775 else curtime=TimeStamp(2);
1776 if (from) {
1777 tmp=index(tmpline,'-');
1778 if (!tmp) tmp=tmpline;
1779 else if (*(tmp+1)==' ') tmp+=2;
1780 #ifdef OGRE
1781 if (!strncmp(tmpline,"LOCOPS -",8)) strcpy(word2,"locopermsg");
1782 else strcpy(word2," opermsg");
1783 #else
1784 if (!strncmp(tmpline,"LOCOPS -",8)) strcpy(word2,"Locopermsg");
1785 else strcpy(word2,"Opermsg");
1786 #endif
1787 if (OVTS) {
1788 #ifdef OGRE
1789 snprintf(word1,sizeof(word1),"[%s%s%s] %s%s%s: %s",
1790 CmdsColors[COLOV].color5,word2,Colors[COLOFF],
1791 CmdsColors[COLOV].color1,from,Colors[COLOFF],
1792 tmpline);
1793 put_it("[%s%s%s%s%s%s%s] %s",
1794 CmdsColors[COLOV].color1,curtime,Colors[COLOFF],
1795 OVTS?"|":empty_string,
1796 CmdsColors[COLOV].color6,OVsvdmn(servername),Colors[COLOFF],
1797 word1);
1798 #else /* OGRE */
1799 put_it("[%s%s%s%s%s%s%s] %s from %s%s%s: %s",
1800 CmdsColors[COLOV].color1,curtime,Colors[COLOFF],
1801 OVTS?"|":empty_string,
1802 CmdsColors[COLOV].color6,OVsvdmn(servername),Colors[COLOFF],
1803 word2,CmdsColors[COLOV].color1,from,Colors[COLOFF],tmp);
1804 #endif /* OGRE */
1805 }
1806 else {
1807 #ifdef OGRE
1808 snprintf(word1,sizeof(word1),"[%s%s%s] %s%s%s: %s",
1809 CmdsColors[COLOV].color5,word2,Colors[COLOFF],
1810 CmdsColors[COLOV].color1,from,Colors[COLOFF],
1811 tmp);
1812 put_it("%s[%s%s%s] %s",
1813 curtime,
1814 CmdsColors[COLOV].color6,OVsvdmn(servername),Colors[COLOFF],
1815 word1);
1816 #else /* OGRE */
1817 put_it("%s[%s%s%s] %s from %s%s%s: %s",
1818 curtime,
1819 CmdsColors[COLOV].color6,OVsvdmn(servername),Colors[COLOFF],
1820 word2,CmdsColors[COLOV].color1,from,Colors[COLOFF],tmp);
1821 #endif /* OGRE */
1822 }
1823 }
1824 else {
1825 if (OVTS)
1826 put_it("[%s%s%s%s%s%s%s] %s",
1827 CmdsColors[COLOV].color1,curtime,Colors[COLOFF],
1828 OVTS?"|":empty_string,
1829 CmdsColors[COLOV].color6,OVsvdmn(servername),Colors[COLOFF],tmpbuf);
1830 else
1831 put_it("%s[%s%s%s] %s",
1832 curtime,
1833 CmdsColors[COLOV].color6,OVsvdmn(servername),Colors[COLOFF],tmpbuf);
1834 }
1835 #ifdef MULTI_SERVER_OV
1836 to_window=oldwin;
1837 #endif
1838 }
1839
OperVisionReinit(void)1840 void OperVisionReinit(void) {
1841 int ovwinref;
1842 int curwinref;
1843 unsigned int display;
1844 char tmpbuf[mybufsize/4+1];
1845 Window *ovwin;
1846
1847 /* turn on additional user modes */
1848 CreateMode(tmpbuf,mybufsize/4);
1849 send_to_server("MODE %s :+%s",get_server_nickname(from_server),tmpbuf);
1850 curwinref=curr_scr_win->refnum;
1851 ovwin=get_window_by_name("OV");
1852 /* if we can't locate OperV window silently ignore */
1853 if (!ovwin) return;
1854 ovwinref=ovwin->refnum;
1855 snprintf(tmpbuf,sizeof(tmpbuf),"REFNUM %d LEVEL OPNOTE,SNOTE,WALLOP REFNUM %d",
1856 ovwinref,curwinref);
1857 display=window_display;
1858 window_display=0;
1859 windowcmd(NULL,tmpbuf,NULL);
1860 window_display=display;
1861 }
1862 #endif
1863