aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorMarin Ivanov <[email protected]>2019-03-24 22:21:08 +0200
committerMarin Ivanov <[email protected]>2019-03-24 22:21:08 +0200
commitc9585c36afe0c502c91e5ad527af1c71a80feb0a (patch)
tree3a8adf46ced72bea7410ed377c116af4330f6883 /main.go
parent6ab1613157a6a5d3eabf9d2fe2adf4699d29a5ba (diff)
Add Makefile and configurable delay
Diffstat (limited to 'main.go')
-rw-r--r--main.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/main.go b/main.go
index 8de0a5c..ac4a25a 100644
--- a/main.go
+++ b/main.go
@@ -13,9 +13,11 @@ import (
func main() {
var protocol string
var bindAddr string
+ var delayParam string
var port int
- flag.StringVarP(&protocol, "proto", "P", "ssh", "protocol to trap")
+ flag.StringVarP(&protocol, "proto", "P", "ssh", "protocol to tarpit")
+ flag.StringVarP(&delayParam, "delay", "d", "10s", "delay between the tarpit keep-alive data packets")
flag.StringVarP(&bindAddr, "bind-address", "b", "", "address to bind the socket to")
flag.IntVarP(&port, "port", "p", 22, "TCP port")
flag.Parse()
@@ -25,14 +27,20 @@ func main() {
fmt.Fprintln(os.Stderr, "Error: protocol handler;", err.Error())
os.Exit(1)
}
+ delay, err := time.ParseDuration(delayParam)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, "Error: parse delay;", err.Error())
+ os.Exit(1)
+ }
- rand.Seed(time.Now().UnixNano())
bind := fmt.Sprintf("%s:%d", bindAddr, port)
ln, err := net.Listen("tcp", bind)
if err != nil {
fmt.Fprintln(os.Stderr, "Error: server listen;", err.Error())
os.Exit(1)
}
+
+ rand.Seed(time.Now().UnixNano())
fmt.Fprintf(os.Stderr, "** Server listening on %s\n", bind)
for {
conn, err := ln.Accept()
@@ -40,6 +48,6 @@ func main() {
// handle error
continue
}
- go connHandler(handler, conn)
+ go connHandler(handler, conn, delay)
}
}