X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fnncp%2Fcmd%2Fnncp-bundle%2Fmain.go;h=dcaf9eabb9a7e95c32fc1a20fce6b721b62e517c;hb=dd92823db3d72fb21a4c712a7fb052dce16443dd;hp=3bd9380d5ce10409b818c5f9b483ec3d279fe85e;hpb=18e35e91d703aef90052cf2323e8f45ac5923328;p=nncp.git diff --git a/src/cypherpunks.ru/nncp/cmd/nncp-bundle/main.go b/src/cypherpunks.ru/nncp/cmd/nncp-bundle/main.go index 3bd9380..dcaf9ea 100644 --- a/src/cypherpunks.ru/nncp/cmd/nncp-bundle/main.go +++ b/src/cypherpunks.ru/nncp/cmd/nncp-bundle/main.go @@ -1,11 +1,10 @@ /* NNCP -- Node to Node copy, utilities for store-and-forward data exchange -Copyright (C) 2016-2018 Sergey Matveev +Copyright (C) 2016-2019 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 -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +the Free Software Foundation, version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -// Create/digest stream of NNCP encrypted packets +// Create/digest stream of NNCP encrypted packets. package main import ( @@ -55,7 +54,7 @@ func usage() { func main() { var ( cfgPath = flag.String("cfg", nncp.DefaultCfgPath, "Path to configuration file") - niceRaw = flag.Int("nice", 255, "Minimal required niceness") + niceRaw = flag.String("nice", nncp.NicenessFmt(255), "Minimal required niceness") doRx = flag.Bool("rx", false, "Receive packets") doTx = flag.Bool("tx", false, "Transfer packets") doDelete = flag.Bool("delete", false, "Delete transferred packets") @@ -78,10 +77,10 @@ func main() { fmt.Println(nncp.VersionGet()) return } - if *niceRaw < 1 || *niceRaw > 255 { - log.Fatalln("-nice must be between 1 and 255") + nice, err := nncp.NicenessParse(*niceRaw) + if err != nil { + log.Fatalln(err) } - nice := uint8(*niceRaw) if *doRx && *doTx { log.Fatalln("-rx and -tx can not be set simultaneously") } @@ -120,6 +119,15 @@ func main() { continue } if err = tarWr.WriteHeader(&tar.Header{ + Format: tar.FormatUSTAR, + Name: nncp.NNCPBundlePrefix, + Mode: 0700, + Typeflag: tar.TypeDir, + }); err != nil { + log.Fatalln("Error writing tar header:", err) + } + if err = tarWr.WriteHeader(&tar.Header{ + Format: tar.FormatPAX, Name: strings.Join([]string{ nncp.NNCPBundlePrefix, nodeId.String(), @@ -194,6 +202,21 @@ func main() { } continue } + if entry.Typeflag != tar.TypeDir { + ctx.LogD("nncp-bundle", sds, "Expected NNCP/") + continue + } + entry, err = tarR.Next() + if err != nil { + if err != io.EOF { + ctx.LogD( + "nncp-bundle", + nncp.SdsAdd(sds, nncp.SDS{"err": err}), + "error reading tar", + ) + } + continue + } sds["pkt"] = entry.Name if entry.Size < nncp.PktEncOverhead { ctx.LogD("nncp-bundle", sds, "Too small packet") @@ -212,7 +235,7 @@ func main() { ctx.LogD("nncp-bundle", sds, "Bad packet structure") continue } - if pktEnc.Magic != nncp.MagicNNCPEv3 { + if pktEnc.Magic != nncp.MagicNNCPEv4 { ctx.LogD("nncp-bundle", sds, "Bad packet magic number") continue } @@ -343,7 +366,9 @@ func main() { if err = bufTmp.Flush(); err != nil { log.Fatalln("Error during flushing:", err) } - tmp.Sync() + if err = tmp.Sync(); err != nil { + log.Fatalln("Error during syncing:", err) + } tmp.Close() if err = os.MkdirAll(selfPath, os.FileMode(0700)); err != nil { log.Fatalln("Error during mkdir:", err)