From 6dd926817d0fc77fdeeb5aea0c5ad156d5007c4e Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 21 Jul 2015 17:39:50 +0200 Subject: Split more --- flood.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 flood.go (limited to 'flood.go') 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") + } + } +} -- cgit v1.2.3