Alerts are now sent on their own thread (one thread for all alerts).

OSLevelBlocking sends alerts.  The priority is number of blocked ips / 10.
This commit is contained in:
CodeForFame 2011-06-21 22:26:18 -05:00
parent 5540cc3083
commit 40b78d9254
2 changed files with 24 additions and 18 deletions

View File

@ -10,12 +10,15 @@ import javax.mail.Session
import javax.mail.internet.MimeMessage import javax.mail.internet.MimeMessage
import javax.mail.Message import javax.mail.Message
import javax.mail.internet.InternetAddress import javax.mail.internet.InternetAddress
import java.util.concurrent.Executors
/** /**
* This is for out-of-game alerts. * This is for out-of-game alerts.
*/ */
object AlertHandler extends Application { object AlertHandler extends Application {
private val executor = Executors.newSingleThreadExecutor()
private var users: List[User] = Nil private var users: List[User] = Nil
load load
@ -26,21 +29,21 @@ object AlertHandler extends Application {
} }
private def sendAlert(msg: String, recip: User, priority: Int) { private def sendAlert(msg: String, recip: User, priority: Int) {
executor.execute(new Runnable() {
override def run() {
val meds = recip.data.filter(p => p._1 <= priority) val meds = recip.data.filter(p => p._1 <= priority)
for (m <- meds) { for (m <- meds) {
Medium.send(m._2, msg) Medium.send(m._2, msg)
} }
} }
})
}
def sendAlert(msg: String, priority: Int) { def sendAlert(msg: String, priority: Int) {
for (u <- users) for (u <- users)
sendAlert(msg, u, priority) sendAlert(msg, u, priority)
} }
def reload {
load
}
def load { def load {
val config = XML.loadFile("alert-config.xml") val config = XML.loadFile("alert-config.xml")
val users1 = (config \\ "user") val users1 = (config \\ "user")

View File

@ -5,8 +5,9 @@ import java.util.concurrent.CopyOnWriteArrayList
import org.moparscape.msc.gs.Server import org.moparscape.msc.gs.Server
import org.moparscape.msc.gs.core.DelayedEventHandler import org.moparscape.msc.gs.core.DelayedEventHandler
import org.moparscape.msc.gs.event.DelayedEvent import org.moparscape.msc.gs.event.DelayedEvent
import org.moparscape.msc.gs.util.Logger; import org.moparscape.msc.gs.util.Logger
import org.moparscape.msc.config.Config import org.moparscape.msc.config.Config
import org.moparscape.msc.gs.alert.AlertHandler
object OSLevelBlocking { object OSLevelBlocking {
@ -27,12 +28,14 @@ object OSLevelBlocking {
case e: Exception => { case e: Exception => {
Logger.error(e) Logger.error(e)
Logger.println("Failed to unblock " + ip) Logger.println("Failed to unblock " + ip)
AlertHandler.sendAlert("Failed to unblock " + ip, 1);
} }
} }
} }
}) })
Runtime.getRuntime.exec(Config.BLOCK_COMMAND.replaceAll("${ip}", ip)); Runtime.getRuntime.exec(Config.BLOCK_COMMAND.replaceAll("${ip}", ip));
blocked.add(ip) blocked.add(ip)
AlertHandler.sendAlert("Blocked " + ip, blocked.size / 10);
Logger.println("Blocked " + ip) Logger.println("Blocked " + ip)
} }
} }