ctx *nncp.Ctx,
conn nncp.ConnDeadlined,
nice uint8,
+ noCK bool,
nodeIdC chan *nncp.NodeId,
) {
state := nncp.SPState{
Ctx: ctx,
Nice: nice,
+ NoCK: noCK,
}
if err := state.StartR(conn); err == nil {
- ctx.LogI("call-start", nncp.SDS{"node": state.Node.Id}, "connected")
+ ctx.LogI("call-start", nncp.LEs{{K: "Node", V: state.Node.Id}}, "connected")
nodeIdC <- state.Node.Id
state.Wait()
- ctx.LogI("call-finish", nncp.SDS{
- "node": state.Node.Id,
- "duration": int64(state.Duration.Seconds()),
- "rxbytes": state.RxBytes,
- "txbytes": state.TxBytes,
- "rxspeed": state.RxSpeed,
- "txspeed": state.TxSpeed,
+ ctx.LogI("call-finish", nncp.LEs{
+ {K: "Node", V: state.Node.Id},
+ {K: "Duration", V: int64(state.Duration.Seconds())},
+ {K: "RxBytes", V: state.RxBytes},
+ {K: "TxBytes", V: state.TxBytes},
+ {K: "RxSpeed", V: state.RxSpeed},
+ {K: "TxSpeed", V: state.TxSpeed},
}, "")
} else {
nodeId := "unknown"
nodeIdC <- state.Node.Id
nodeId = state.Node.Id.String()
}
- ctx.LogE("call-start", nncp.SDS{"node": nodeId}, err, "")
+ ctx.LogI("call-start", nncp.LEs{{K: "Node", V: nodeId}}, "connected")
}
close(nodeIdC)
}
bind = flag.String("bind", "[::]:5400", "Address to bind to")
inetd = flag.Bool("inetd", false, "Is it started as inetd service")
maxConn = flag.Int("maxconn", 128, "Maximal number of simultaneous connections")
+ noCK = flag.Bool("nock", false, "Do no checksum checking")
spoolPath = flag.String("spool", "", "Override path to spool")
logPath = flag.String("log", "", "Override path to logfile")
quiet = flag.Bool("quiet", false, "Print only errors")
os.Stderr.Close() // #nosec G104
conn := &InetdConn{os.Stdin, os.Stdout}
nodeIdC := make(chan *nncp.NodeId)
- go performSP(ctx, conn, nice, nodeIdC)
- <-nodeIdC // nodeId
- <-nodeIdC // call completion
+ go performSP(ctx, conn, nice, *noCK, nodeIdC)
+ nodeId := <-nodeIdC
+ var autoTossFinish chan struct{}
+ var autoTossBadCode chan bool
+ if *autoToss && nodeId != nil {
+ autoTossFinish, autoTossBadCode = ctx.AutoToss(
+ nodeId,
+ nice,
+ *autoTossDoSeen,
+ *autoTossNoFile,
+ *autoTossNoFreq,
+ *autoTossNoExec,
+ *autoTossNoTrns,
+ )
+ }
+ <-nodeIdC // call completion
+ if *autoToss {
+ close(autoTossFinish)
+ <-autoTossBadCode
+ }
conn.Close() // #nosec G104
return
}
if err != nil {
log.Fatalln("Can not accept connection:", err)
}
- ctx.LogD("daemon", nncp.SDS{"addr": conn.RemoteAddr()}, "accepted")
+ ctx.LogD("daemon", nncp.LEs{{K: "Addr", V: conn.RemoteAddr()}}, "accepted")
go func(conn net.Conn) {
nodeIdC := make(chan *nncp.NodeId)
- go performSP(ctx, conn, nice, nodeIdC)
+ go performSP(ctx, conn, nice, *noCK, nodeIdC)
nodeId := <-nodeIdC
var autoTossFinish chan struct{}
var autoTossBadCode chan bool