Handler: Make handler configurable

This commit is contained in:
Carl Johnson 2016-12-11 18:18:38 -05:00
parent 6a94b58990
commit b5b634b579
2 changed files with 25 additions and 21 deletions

View File

@ -7,22 +7,25 @@ import (
"sync" "sync"
) )
var DefaultHoneypot = NewHoneypot(DefaultMarkovMap, 100*1<<10)
func NewHoneypot(mm MarkovMap, buffsize int) http.HandlerFunc {
var pool sync.Pool var pool sync.Pool
func getBuffer() []byte { getBuffer := func() []byte {
x := pool.Get() x := pool.Get()
if buf, ok := x.([]byte); ok { if buf, ok := x.([]byte); ok {
return buf return buf
} else { } else {
return make([]byte, 100*1<<10) return make([]byte, buffsize)
} }
} }
func putBuffer(buf []byte) { putBuffer := func(buf []byte) {
pool.Put(buf) pool.Put(buf)
} }
func Honeypot(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
log.Printf("Started writing: %v", r.URL) log.Printf("Started writing: %v", r.URL)
buf := getBuffer() buf := getBuffer()
defer putBuffer(buf) defer putBuffer(buf)
@ -30,3 +33,4 @@ func Honeypot(w http.ResponseWriter, r *http.Request) {
n, err := io.CopyBuffer(w, DefaultMarkovMap, buf) n, err := io.CopyBuffer(w, DefaultMarkovMap, buf)
log.Printf("Wrote: %d (%v)", n, err) log.Printf("Wrote: %d (%v)", n, err)
} }
}

View File

@ -37,7 +37,7 @@ func main() {
path = "/" path = "/"
} }
http.HandleFunc(path, heff.Honeypot) http.HandleFunc(path, heff.DefaultHoneypot)
log.Fatal(http.ListenAndServe(addr, nil)) log.Fatal(http.ListenAndServe(addr, nil))