X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcmd%2Fnncp-bundle%2Fmain.go;h=d5603a99b1ab8cc2082cc219f46a3fb065321c14;hb=736537b32863e22660c8c4246c71bb4c320d2086;hp=c808a66657cded797ff0f296b3ee11f7945c9de4;hpb=b6e9ce353036a99c5b98c121fee81632ea47f152;p=nncp.git diff --git a/src/cmd/nncp-bundle/main.go b/src/cmd/nncp-bundle/main.go index c808a66..d5603a9 100644 --- a/src/cmd/nncp-bundle/main.go +++ b/src/cmd/nncp-bundle/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-2022 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 @@ -34,8 +34,7 @@ import ( xdr "github.com/davecgh/go-xdr/xdr2" "github.com/dustin/go-humanize" - "go.cypherpunks.ru/nncp/v6" - "golang.org/x/crypto/blake2b" + "go.cypherpunks.ru/nncp/v8" ) const ( @@ -109,7 +108,7 @@ func main() { for i := 0; i < flag.NArg(); i++ { node, err := ctx.FindNode(flag.Arg(i)) if err != nil { - log.Fatalln("Invalid specified:", err) + log.Fatalln("Invalid node specified:", err) } nodeIds[*node.Id] = struct{}{} } @@ -188,7 +187,7 @@ func main() { if err = os.Remove(job.Path); err != nil { log.Fatalln("Error during deletion:", err) } else if ctx.HdrUsage { - os.Remove(job.Path + nncp.HdrSuffix) + os.Remove(nncp.JobPath2Hdr(job.Path)) } } ctx.LogI( @@ -222,7 +221,7 @@ func main() { if err == io.EOF { break } - bufStdin.Discard(bufStdin.Buffered() - (len(nncp.NNCPBundlePrefix) - 1)) // #nosec G104 + bufStdin.Discard(bufStdin.Buffered() - (len(nncp.NNCPBundlePrefix) - 1)) continue } if _, err = bufStdin.Discard(prefixIdx); err != nil { @@ -307,10 +306,25 @@ func main() { ) continue } - if pktEnc.Magic != nncp.MagicNNCPEv4 { + switch pktEnc.Magic { + case nncp.MagicNNCPEv1.B: + err = nncp.MagicNNCPEv1.TooOld() + case nncp.MagicNNCPEv2.B: + err = nncp.MagicNNCPEv2.TooOld() + case nncp.MagicNNCPEv3.B: + err = nncp.MagicNNCPEv3.TooOld() + case nncp.MagicNNCPEv4.B: + err = nncp.MagicNNCPEv4.TooOld() + case nncp.MagicNNCPEv5.B: + err = nncp.MagicNNCPEv5.TooOld() + case nncp.MagicNNCPEv6.B: + default: + err = errors.New("Bad packet magic number") + } + if err != nil { ctx.LogD( "bundle-rx", - append(les, nncp.LE{K: "Err", V: "Bad packet magic number"}), + append(les, nncp.LE{K: "Err", V: err.Error()}), logMsg, ) continue @@ -346,10 +360,7 @@ func main() { }) continue } - hsh, err := blake2b.New256(nil) - if err != nil { - log.Fatalln("Error during hasher creation:", err) - } + hsh := nncp.MTHNew(entry.Size, 0) if _, err = hsh.Write(pktEncBuf); err != nil { log.Fatalln("Error during writing:", err) } @@ -367,7 +378,7 @@ func main() { if !*dryRun { os.Remove(dstPath) if ctx.HdrUsage { - os.Remove(dstPath + nncp.HdrSuffix) + os.Remove(nncp.JobPath2Hdr(dstPath)) } } } else { @@ -407,7 +418,9 @@ func main() { }) continue } - if _, err = os.Stat(dstPath + nncp.SeenSuffix); err == nil || !os.IsNotExist(err) { + if _, err = os.Stat(filepath.Join( + dstDirPath, nncp.SeenDir, pktName, + )); err == nil || !os.IsNotExist(err) { ctx.LogD("bundle-rx-seen", les, func(les nncp.LEs) string { return logMsg(les) + ": packet already seen" }) @@ -415,10 +428,7 @@ func main() { } if *doCheck { if *dryRun { - hsh, err := blake2b.New256(nil) - if err != nil { - log.Fatalln("Error during hasher creation:", err) - } + hsh := nncp.MTHNew(entry.Size, 0) if _, err = hsh.Write(pktEncBuf); err != nil { log.Fatalln("Error during writing:", err) }