/*
NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2023 Sergey Matveev <stargrave@stargrave.org>
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
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.")
payloadType = "exec uncompressed"
case nncp.PktTypeArea:
payloadType = "area"
+ case nncp.PktTypeACK:
+ payloadType = "acknowledgement"
}
var path string
switch pkt.Type {
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])
}
"Packet type: plain\nPayload type: %s\nNiceness: %s (%d)\nPath: %s\n",
payloadType, nncp.NicenessFmt(pkt.Nice), pkt.Nice, path,
)
- return
}
func doEncrypted(
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
}