ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/alerters/IRC__Alerter.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/client/alerters/IRC__Alerter.java (file contents):
Revision 1.10 by ajm, Sun Mar 4 04:43:29 2001 UTC vs.
Revision 1.15 by ajm, Mon Mar 5 12:45:51 2001 UTC

# Line 10 | Line 10 | import uk.ac.ukc.iscream.componentmanager.*;
10   import java.io.*;
11   import java.net.*;
12   import java.util.*;
13 + import java.text.*;
14  
15   /**
16   * This Alert sends an IRC message.
# Line 48 | Line 49 | public class IRC__Alerter implements PluginAlerter {
49          // connect to the IRC server
50          _ircbot = new IRCBot();
51          _ircbot.start();
52 +        _startTime = System.currentTimeMillis();
53          
54          _logger.write(toString(), Logger.SYSINIT, "IRC Alerter started");
55      }
# Line 61 | Line 63 | public class IRC__Alerter implements PluginAlerter {
63              String levelName = cp.getProperty(_name, "Alerter.IRC.level");
64              int level = StringUtils.getStringPos(levelName, Alert.alertLevels);
65              // only send if it's equal (or above) our level
66 <            if(alert.getLevel() >= level) {
66 >            if(((alert.getLevel() == 0) && (alert.getLastLevel() >= level)) || (alert.getLevel() >= level)) {
67                  String alertType = Alert.alertLevels[alert.getLevel()];
68                  String thresholdType = Alert.thresholdLevels[alert.getThreshold()];
69                  // sort out the message
# Line 78 | Line 80 | public class IRC__Alerter implements PluginAlerter {
80                  _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level");
81                  _ircbot.sendMsg(message);
82                  _lastAlert = message;
83 +                _lastAlertTime = System.currentTimeMillis();
84 +                _alertCount ++;
85              }
86          }
87      }
# Line 139 | Line 143 | public class IRC__Alerter implements PluginAlerter {
143      private String _lastAlert = "no alerts have been sent";
144      
145      /**
146 +     * The time of the last alert
147 +     */
148 +    private long _lastAlertTime = -1;
149 +    
150 +    /**
151 +     * Number of alerts sent
152 +     */
153 +    private long _alertCount = 0;
154 +    
155 +    /**
156 +     * Time of IRCBot startup
157 +     */
158 +    private long _startTime;
159 +    
160 +    /**
161       * This is the friendly identifier of the
162       * component this class is running in.
163       * eg, a Filter may be called "filter1",
# Line 236 | Line 255 | public class IRC__Alerter implements PluginAlerter {
255           */
256          public void sendMsg(String msg) {
257              _socketOut.println("PRIVMSG "+_channel+" :"+msg);
258 +            // wait a second before returning...
259 +            // this ensures messages can't be sent too fast
260 +            try {Thread.sleep(1000);} catch (InterruptedException e) {}
261          }
262          
263          /**
# Line 246 | Line 268 | public class IRC__Alerter implements PluginAlerter {
268           */
269          public void sendPrivMsg(String user, String msg) {
270              _socketOut.println("PRIVMSG "+user+" :"+msg);
271 +            // wait a second before returning...
272 +            // this ensures messages can't be sent too fast
273 +            try {Thread.sleep(1000);} catch (InterruptedException e) {}
274          }
275          
276          /**
# Line 256 | Line 281 | public class IRC__Alerter implements PluginAlerter {
281          public void sendAction(String msg) {
282              char esc = 001;
283              sendMsg(esc+"ACTION "+msg+esc);
284 +            // wait a second before returning...
285 +            // this ensures messages can't be sent too fast
286 +            try {Thread.sleep(1000);} catch (InterruptedException e) {}
287          }
288          
289          /**
# Line 265 | Line 293 | public class IRC__Alerter implements PluginAlerter {
293           */
294          public void sendNotice(String msg) {
295              _socketOut.println("NOTICE "+_channel+" :"+msg);
296 +            // wait a second before returning...
297 +            // this ensures messages can't be sent too fast
298 +            try {Thread.sleep(1000);} catch (InterruptedException e) {}
299          }
300          
301          /**
# Line 369 | Line 400 | public class IRC__Alerter implements PluginAlerter {
400                  _socketOut.println("PONG" + line.substring(4));
401              }
402              // see if it's for us
403 <            else if(getMsg(line).startsWith(_nickname)) {
403 >            else if(getMsg(line).startsWith(_nickname+",")
404 >                    || getMsg(line).startsWith(_nickname+":")
405 >                    || getMsg(line).startsWith(_nickname+" ")) {
406                  // we have a message for us
407                  String message = getMsg(line).substring(_nickname.length());
408                  if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.stopCommand"))!=-1) {
# Line 380 | Line 413 | public class IRC__Alerter implements PluginAlerter {
413                      _active = true;
414                      sendMsg(getMsgSender(line)+", alerts have been activated");
415                  }
416 +                // this needs to go here if it contains the same words as the lastAlertCommand
417 +                else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.timeSinceLastAlertCommand"))!=-1) {
418 +                    if(_lastAlertTime != -1) {
419 +                        long uptime = (System.currentTimeMillis() - _lastAlertTime) / 1000;
420 +                        String uptimeText = DateUtils.formatTime(uptime, "%DAYS% days, %HOURS% hours, %MINS% mins, and %SECS% secs");
421 +                        sendMsg(getMsgSender(line)+", I last sent an alert "+uptimeText+ " ago");
422 +                    }
423 +                    else {
424 +                        sendMsg(getMsgSender(line)+", I've never sent an alert!");
425 +                    }
426 +                }
427                  else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.lastAlertCommand"))!=-1) {
428 <                    sendMsg(getMsgSender(line)+", last alert was: "+_lastAlert);
428 >                    if(_lastAlertTime != -1) {
429 >                        String date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.UK).format(new Date(_lastAlertTime));
430 >                        sendMsg(getMsgSender(line)+", last alert was at "+date+"; "+_lastAlert);
431 >                    }
432 >                    else {
433 >                        sendMsg(getMsgSender(line)+", I've never sent an alert!");
434 >                    }
435 >                    
436                  }
437                  else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.joinCommand"))!=-1) {
438                      String joinCmd = cp.getProperty(_name, "Alerter.IRC.joinCommand");
# Line 396 | Line 447 | public class IRC__Alerter implements PluginAlerter {
447                      _socketOut.println("JOIN "+newChan);
448                      _channel = newChan;
449                  }
450 +                else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.nickChangeCommand"))!=-1) {
451 +                    String nickChangeCmd = cp.getProperty(_name, "Alerter.IRC.nickChangeCommand");
452 +                    String newNick = message.substring(message.indexOf(nickChangeCmd) + nickChangeCmd.length() + 1);
453 +                    int endOfNick = newNick.indexOf(" ");
454 +                    if(endOfNick == -1) {
455 +                        endOfNick = newNick.length();
456 +                    }
457 +                    newNick = newNick.substring(0, endOfNick);
458 +                    sendMsg(getMsgSender(line)+", okay, changing my nickname to "+newNick);
459 +                    _socketOut.println("NICK "+newNick);
460 +                    _nickname = newNick;
461 +                }
462 +                else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.versionCommand"))!=-1) {
463 +                    sendMsg(getMsgSender(line)+", I am version "+REVISION.substring(11, REVISION.length() -2)+" of the i-scream alerting bot");
464 +                }
465                  else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.helpCommand"))!=-1) {
466 <                    sendPrivMsg(getMsgSender(line), "I am the i-scream alerting bot revision "+REVISION.substring(11, REVISION.length() -2));
466 >                    sendPrivMsg(getMsgSender(line), "Hello, I am the i-scream alerting bot version "+REVISION.substring(11, REVISION.length() -2));
467                      sendPrivMsg(getMsgSender(line), "I understand the following commands;");
468                      sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.stopCommand"));
469                      sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.startCommand"));
470                      sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.lastAlertCommand"));
471 +                    sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.joinCommand"));
472 +                    sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.nickChangeCommand"));
473 +                    sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.statCommand"));
474 +                    sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.uptimeCommand"));
475 +                    sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.timeSinceLastAlertCommand"));
476 +                    sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.helpCommand"));
477 +                }
478 +                else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.statCommand"))!=-1) {
479 +                    sendMsg(getMsgSender(line)+", I have sent a total of "+_alertCount+" alerts!");
480 +                }
481 +                else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.uptimeCommand"))!=-1) {
482 +                    long uptime = (System.currentTimeMillis() - _startTime) / 1000;
483 +                    String uptimeText = DateUtils.formatTime(uptime, "%DAYS% days, %HOURS% hours, %MINS% mins, and %SECS% secs");
484 +                    sendMsg(getMsgSender(line)+", I have been running for "+uptimeText);
485                  }
486                  else if(message.indexOf("do a jibble dance")!=-1) {
487                      // little joke :)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines