Skip to content

Commit 31c563a

Browse files
committed
agnhost/netexec: logging cleanup and print more verbose errors
There's currently no way to know whether an error is for SCTP or UDP, for example: Jul 24 09:55:54.469: INFO: netserver-0[e2e-nettest-3476].container[webserver].log 2020/07/24 09:53:52 Started UDP server 2020/07/24 09:53:52 Error occurred. error:protocol not supported In this case the "Error occurred. error:protocol not supported" is actually for the SCTP socket. Make that more apparent.
1 parent 1ed2cf1 commit 31c563a

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

test/images/agnhost/netexec/netexec.go

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -491,9 +491,9 @@ func hostNameHandler(w http.ResponseWriter, r *http.Request) {
491491
// udp server supports the hostName, echo and clientIP commands.
492492
func startUDPServer(udpPort int) {
493493
serverAddress, err := net.ResolveUDPAddr("udp", fmt.Sprintf(":%d", udpPort))
494-
assertNoError(err)
494+
assertNoError(err, fmt.Sprintf("failed to resolve UDP address for port %d", sctpPort))
495495
serverConn, err := net.ListenUDP("udp", serverAddress)
496-
assertNoError(err)
496+
assertNoError(err, fmt.Sprintf("failed to create listener for UDP address %v", serverAddress))
497497
defer serverConn.Close()
498498
buf := make([]byte, 2048)
499499

@@ -506,37 +506,37 @@ func startUDPServer(udpPort int) {
506506
}()
507507
for {
508508
n, clientAddress, err := serverConn.ReadFromUDP(buf)
509-
assertNoError(err)
509+
assertNoError(err, fmt.Sprintf("failed accepting UDP connections"))
510510
receivedText := strings.ToLower(strings.TrimSpace(string(buf[0:n])))
511511
if receivedText == "hostname" {
512512
log.Println("Sending udp hostName response")
513513
_, err = serverConn.WriteToUDP([]byte(getHostName()), clientAddress)
514-
assertNoError(err)
514+
assertNoError(err, fmt.Sprintf("failed to write hostname to UDP client %s", clientAddress))
515515
} else if strings.HasPrefix(receivedText, "echo ") {
516516
parts := strings.SplitN(receivedText, " ", 2)
517517
resp := ""
518518
if len(parts) == 2 {
519519
resp = parts[1]
520520
}
521-
log.Printf("Echoing %v\n", resp)
521+
log.Printf("Echoing %v to UDP client %s\n", resp, clientAddress)
522522
_, err = serverConn.WriteToUDP([]byte(resp), clientAddress)
523-
assertNoError(err)
523+
assertNoError(err, fmt.Sprintf("failed to echo to UDP client %s", clientAddress))
524524
} else if receivedText == "clientip" {
525-
log.Printf("Sending back clientip to %s", clientAddress.String())
525+
log.Printf("Sending clientip back to UDP client %s\n", clientAddress)
526526
_, err = serverConn.WriteToUDP([]byte(clientAddress.String()), clientAddress)
527-
assertNoError(err)
527+
assertNoError(err, fmt.Sprintf("failed to write clientip to UDP client %s", clientAddress))
528528
} else if len(receivedText) > 0 {
529-
log.Printf("Unknown udp command received: %v\n", receivedText)
529+
log.Printf("Unknown UDP command received from %s: %v\n", clientAddress, receivedText)
530530
}
531531
}
532532
}
533533

534534
// sctp server supports the hostName, echo and clientIP commands.
535535
func startSCTPServer(sctpPort int) {
536536
serverAddress, err := sctp.ResolveSCTPAddr("sctp", fmt.Sprintf(":%d", sctpPort))
537-
assertNoError(err)
537+
assertNoError(err, fmt.Sprintf("failed to resolve SCTP address for port %d", sctpPort))
538538
listener, err := sctp.ListenSCTP("sctp", serverAddress)
539-
assertNoError(err)
539+
assertNoError(err, fmt.Sprintf("failed to create listener for SCTP address %v", serverAddress))
540540
defer listener.Close()
541541
buf := make([]byte, 1024)
542542

@@ -549,43 +549,43 @@ func startSCTPServer(sctpPort int) {
549549
}()
550550
for {
551551
conn, err := listener.AcceptSCTP()
552-
assertNoError(err)
552+
assertNoError(err, fmt.Sprintf("failed accepting SCTP connections"))
553+
clientAddress := conn.RemoteAddr().String()
553554
n, err := conn.Read(buf)
554-
assertNoError(err)
555+
assertNoError(err, fmt.Sprintf("failed to read from SCTP client %s", clientAddress))
555556
receivedText := strings.ToLower(strings.TrimSpace(string(buf[0:n])))
556557
if receivedText == "hostname" {
557-
log.Println("Sending sctp hostName response")
558+
log.Println("Sending SCTP hostName response")
558559
_, err = conn.Write([]byte(getHostName()))
559-
assertNoError(err)
560+
assertNoError(err, fmt.Sprintf("failed to write hostname to SCTP client %s", clientAddress))
560561
} else if strings.HasPrefix(receivedText, "echo ") {
561562
parts := strings.SplitN(receivedText, " ", 2)
562563
resp := ""
563564
if len(parts) == 2 {
564565
resp = parts[1]
565566
}
566-
log.Printf("Echoing %v\n", resp)
567+
log.Printf("Echoing %v to SCTP client %s\n", resp, clientAddress)
567568
_, err = conn.Write([]byte(resp))
568-
assertNoError(err)
569+
assertNoError(err, fmt.Sprintf("failed to echo to SCTP client %s", clientAddress))
569570
} else if receivedText == "clientip" {
570-
clientAddress := conn.RemoteAddr()
571-
log.Printf("Sending back clientip to %s", clientAddress.String())
572-
_, err = conn.Write([]byte(clientAddress.String()))
573-
assertNoError(err)
571+
log.Printf("Sending clientip back to SCTP client %s\n", clientAddress)
572+
_, err = conn.Write([]byte(clientAddress))
573+
assertNoError(err, fmt.Sprintf("failed to write clientip to SCTP client %s", clientAddress))
574574
} else if len(receivedText) > 0 {
575-
log.Printf("Unknown sctp command received: %v\n", receivedText)
575+
log.Printf("Unknown SCTP command received from %s: %v\n", clientAddress, receivedText)
576576
}
577577
conn.Close()
578578
}
579579
}
580580

581581
func getHostName() string {
582582
hostName, err := os.Hostname()
583-
assertNoError(err)
583+
assertNoError(err, "failed to get hostname")
584584
return hostName
585585
}
586586

587-
func assertNoError(err error) {
587+
func assertNoError(err error, detail string) {
588588
if err != nil {
589-
log.Fatal("Error occurred. error:", err)
589+
log.Fatalf("Error occurred: %s:%v", detail, err)
590590
}
591591
}

0 commit comments

Comments
 (0)