First little setup, there's a dentata server that receives block notices, and a landmine server/client that receives socket connects and reports them.

master
Zed A. Shaw 2 days ago
parent cc3944eff2
commit bddc747c8b
  1. 4
      .gitignore
  2. 15
      Makefile
  3. 40
      cmd/dentata/main.go
  4. 50
      cmd/landmine/main.go

4
.gitignore vendored

@ -30,5 +30,5 @@ public
*.mp4
ffmpeg*
renders
vidcrunch
vidcrunch.exe
dentata
landmine

@ -0,0 +1,15 @@
build:
go build ./cmd/dentata
go build ./cmd/landmine
clean:
rm dentata landmine
run_server:
./dentata
run_mine:
./landmine
docs:
pkgsite -open

@ -0,0 +1,40 @@
package main
import (
"fmt"
"net"
"log"
"bufio"
)
func handleConnection(conn net.Conn) {
defer conn.Close()
scan := bufio.NewScanner(conn)
for scan.Scan() {
addr := scan.Text()
fmt.Println("BLOCK: ", addr)
}
}
func listener(addr string) {
server, err := net.Listen("tcp", addr)
if err != nil { panic(err) }
for {
conn, err := server.Accept()
if err != nil {
log.Println("ACCEPT ERROR", err)
} else {
go handleConnection(conn)
}
}
}
func main() {
listener("127.0.0.1:9001")
}

@ -0,0 +1,50 @@
package main
import (
"fmt"
"net"
"log"
"sync"
)
func handleConnection(conn net.Conn) {
defer conn.Close()
addr := conn.RemoteAddr()
fmt.Println("Connect from", addr.Network(), addr.String())
// send explosion notice to dentata
report, err := net.Dial("tcp","127.0.0.1:9001")
if err != nil { panic(err) }
defer report.Close()
report.Write([]byte(addr.String()))
}
func listener(addr string) {
server, err := net.Listen("tcp", addr)
if err != nil { panic(err) }
for {
conn, err := server.Accept()
if err != nil {
log.Println("ACCEPT ERROR", err)
} else {
go handleConnection(conn)
}
}
}
func main() {
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Go(func () {
listener(fmt.Sprintf("0.0.0.0:%d", 8000 + i))
})
}
wg.Wait()
}
Loading…
Cancel
Save