summaryrefslogtreecommitdiff
path: root/flood.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-07-21 17:39:50 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-07-21 17:39:50 +0200
commit6dd926817d0fc77fdeeb5aea0c5ad156d5007c4e (patch)
treea5d1d33643775901f5e9fd974d5d3f0c993177da /flood.go
parent21d7bc6362f18e4a02380b5d763ead1d78495bbf (diff)
Split more
Diffstat (limited to 'flood.go')
-rw-r--r--flood.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/flood.go b/flood.go
new file mode 100644
index 0000000..8fdcc05
--- /dev/null
+++ b/flood.go
@@ -0,0 +1,30 @@
+package main
+
+import (
+ "log"
+ "sort"
+ "strings"
+
+ irc "github.com/fluffle/goirc/client"
+)
+
+func MedianLength(v []string) int {
+ if len(v) == 0 {
+ return 0
+ }
+ l := make([]int, len(v))
+ for i, s := range v {
+ l[i] = len(s)
+ }
+ sort.Sort(sort.IntSlice(l))
+ return l[len(l)/2]
+}
+
+func DetectFlood(conn *irc.Conn, line *irc.Line) {
+ if f := strings.Fields(line.Text()); len(f) > 4 {
+ if m := MedianLength(f); m < 2 {
+ log.Println("kick", line.Nick)
+ conn.Kick(*room, line.Nick, "flood")
+ }
+ }
+}