X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcmd%2Fnncp-pkt%2Fmain.go;h=afc638c792a2f411a89288bafacdb2caa0b7eb1f;hb=7c507e7ddba9fe5557df06c860fe9fa6197ba2e1;hp=3cd59ecb8c6813e430e9becb1dcd3add024b90f8;hpb=ab7c7eca0e53661f0ba904c2a6ba752990bea367;p=nncp.git diff --git a/src/cmd/nncp-pkt/main.go b/src/cmd/nncp-pkt/main.go index 3cd59ec..afc638c 100644 --- a/src/cmd/nncp-pkt/main.go +++ b/src/cmd/nncp-pkt/main.go @@ -1,6 +1,6 @@ /* NNCP -- Node to Node copy, utilities for store-and-forward data exchange -Copyright (C) 2016-2021 Sergey Matveev +Copyright (C) 2016-2023 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,12 +29,11 @@ import ( xdr "github.com/davecgh/go-xdr/xdr2" "github.com/klauspost/compress/zstd" - "go.cypherpunks.ru/nncp/v7" + "go.cypherpunks.ru/nncp/v8" ) func usage() { - fmt.Fprintf(os.Stderr, nncp.UsageHeader()) - fmt.Fprintf(os.Stderr, "nncp-pkt -- parse raw packet\n\n") + fmt.Fprint(os.Stderr, "nncp-pkt -- parse raw packet\n\n") fmt.Fprintf(os.Stderr, "Usage: %s [options]\nOptions:\n", os.Args[0]) flag.PrintDefaults() fmt.Fprintln(os.Stderr, "Packet is read from stdin.") @@ -74,6 +73,8 @@ func doPlain(ctx *nncp.Ctx, pkt nncp.Pkt, dump, decompress bool) { payloadType = "exec uncompressed" case nncp.PktTypeArea: payloadType = "area" + case nncp.PktTypeACK: + payloadType = "acknowledgement" } var path string switch pkt.Type { @@ -84,7 +85,7 @@ func doPlain(ctx *nncp.Ctx, pkt nncp.Pkt, dump, decompress bool) { case nncp.PktTypeTrns: path = nncp.Base32Codec.EncodeToString(pkt.Path[:pkt.PathLen]) node, err := ctx.FindNode(path) - if err != nil { + if err == nil { path = fmt.Sprintf("%s (%s)", path, node.Name) } case nncp.PktTypeArea: @@ -92,6 +93,8 @@ func doPlain(ctx *nncp.Ctx, pkt nncp.Pkt, dump, decompress bool) { if areaId, err := nncp.AreaIdFromString(path); err == nil { path = fmt.Sprintf("%s (%s)", path, ctx.AreaName(areaId)) } + case nncp.PktTypeACK: + path = nncp.Base32Codec.EncodeToString(pkt.Path[:pkt.PathLen]) default: path = string(pkt.Path[:pkt.PathLen]) } @@ -99,7 +102,6 @@ func doPlain(ctx *nncp.Ctx, pkt nncp.Pkt, dump, decompress bool) { "Packet type: plain\nPayload type: %s\nNiceness: %s (%d)\nPath: %s\n", payloadType, nncp.NicenessFmt(pkt.Nice), pkt.Nice, path, ) - return } func doEncrypted( @@ -119,7 +121,9 @@ func doEncrypted( recipientNode := ctx.Neigh[*pktEnc.Recipient] if recipientNode == nil { area = ctx.AreaId2Area[nncp.AreaId(*pktEnc.Recipient)] - recipientName = "area " + area.Name + if area != nil { + recipientName = "area " + area.Name + } } else { recipientName = recipientNode.Name } @@ -217,6 +221,8 @@ func main() { case nncp.MagicNNCPEv4.B: log.Fatalln(nncp.MagicNNCPEv4.TooOld()) case nncp.MagicNNCPEv5.B: + log.Fatalln(nncp.MagicNNCPEv5.TooOld()) + case nncp.MagicNNCPEv6.B: doEncrypted(ctx, pktEnc, *dump, beginning[:nncp.PktEncOverhead]) return }