X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcmd%2Fnncp-exec%2Fmain.go;h=7747f3fcf1aa478b96ee3b605c8baa7950892baa;hb=b47dbfe6687569650fa544a4ecf3e4ea388390cb;hp=d0cb537f543375e8dc47e3ded962f4683468c464;hpb=fa24572f1280b56977c6dcf6969a736403d1280e;p=nncp.git diff --git a/src/cmd/nncp-exec/main.go b/src/cmd/nncp-exec/main.go index d0cb537..7747f3f 100644 --- a/src/cmd/nncp-exec/main.go +++ b/src/cmd/nncp-exec/main.go @@ -24,23 +24,28 @@ import ( "fmt" "log" "os" + "strings" - "go.cypherpunks.ru/nncp/v5" + "go.cypherpunks.ru/nncp/v8" ) func usage() { fmt.Fprintf(os.Stderr, nncp.UsageHeader()) fmt.Fprintf(os.Stderr, "nncp-exec -- send execution command\n\n") - fmt.Fprintf(os.Stderr, "Usage: %s [options] NODE HANDLE [ARG0 ARG1 ...]\nOptions:\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "Usage: %s [options] NODE HANDLE [ARG0 ARG1 ...]\n", os.Args[0]) + fmt.Fprintf(os.Stderr, " %s [options] %s:AREA HANDLE [ARG0 ARG1 ...]\nOptions:\n", + os.Args[0], nncp.AreaDir) flag.PrintDefaults() } func main() { var ( + noCompress = flag.Bool("nocompress", false, "Do not compress input data") cfgPath = flag.String("cfg", nncp.DefaultCfgPath, "Path to configuration file") niceRaw = flag.String("nice", nncp.NicenessFmt(nncp.DefaultNiceExec), "Outbound packet niceness") replyNiceRaw = flag.String("replynice", nncp.NicenessFmt(nncp.DefaultNiceFile), "Possible reply packet niceness") minSize = flag.Uint64("minsize", 0, "Minimal required resulting packet size, in KiB") + argMaxSize = flag.Uint64("maxsize", 0, "Maximal allowable resulting packet size, in KiB") viaOverride = flag.String("via", "", "Override Via path to destination node") spoolPath = flag.String("spool", "", "Override path to spool") logPath = flag.String("log", "", "Override path to logfile") @@ -51,6 +56,7 @@ func main() { version = flag.Bool("version", false, "Print version information") warranty = flag.Bool("warranty", false, "Print warranty information") ) + log.SetFlags(log.Lshortfile) flag.Usage = usage flag.Parse() if *warranty { @@ -90,9 +96,24 @@ func main() { log.Fatalln("Config lacks private keys") } - node, err := ctx.FindNode(flag.Arg(0)) - if err != nil { - log.Fatalln("Invalid NODE specified:", err) + var areaId *nncp.AreaId + var node *nncp.Node + if strings.HasPrefix(flag.Arg(0), nncp.AreaDir+":") { + areaId = ctx.AreaName2Id[flag.Arg(0)[len(nncp.AreaDir)+1:]] + if areaId == nil { + log.Fatalln("Unknown area specified") + } + node = ctx.Neigh[*ctx.SelfId] + } else { + node, err = ctx.FindNode(flag.Arg(0)) + if err != nil { + log.Fatalln("Invalid NODE specified:", err) + } + } + + maxSize := int64(nncp.MaxFileSize) + if *argMaxSize > 0 { + maxSize = int64(*argMaxSize) * 1024 } nncp.ViaOverride(*viaOverride, ctx, node) @@ -106,6 +127,9 @@ func main() { flag.Args()[2:], bufio.NewReader(os.Stdin), int64(*minSize)*1024, + maxSize, + *noCompress, + areaId, ); err != nil { log.Fatalln(err) }