X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcmd%2Fnncp-file%2Fmain.go;h=6870aec808c818b7c1dfb9aedcf94a2a3fc81e67;hb=ab7c7eca0e53661f0ba904c2a6ba752990bea367;hp=1e1c176a8901a9a3b21f316609f9435142b87a7c;hpb=1c773d7a2acd7fef4b7b1567b59e1601a79d55fe;p=nncp.git diff --git a/src/cmd/nncp-file/main.go b/src/cmd/nncp-file/main.go index 1e1c176..6870aec 100644 --- a/src/cmd/nncp-file/main.go +++ b/src/cmd/nncp-file/main.go @@ -25,13 +25,15 @@ import ( "os" "strings" - "go.cypherpunks.ru/nncp/v5" + "go.cypherpunks.ru/nncp/v7" ) func usage() { fmt.Fprintf(os.Stderr, nncp.UsageHeader()) fmt.Fprintf(os.Stderr, "nncp-file -- send file\n\n") - fmt.Fprintf(os.Stderr, "Usage: %s [options] SRC NODE:[DST]\nOptions:\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "Usage: %s [options] SRC NODE:[DST]\n", os.Args[0]) + fmt.Fprintf(os.Stderr, " %s [options] SRC %s:AREA:[DST]\nOptions:\n", + os.Args[0], nncp.AreaDir) flag.PrintDefaults() fmt.Fprint(os.Stderr, ` If SRC equals to -, then read data from stdin to temporary file. @@ -57,6 +59,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 { @@ -92,14 +95,30 @@ func main() { log.Fatalln("Config lacks private keys") } - splitted := strings.SplitN(flag.Arg(1), ":", 2) - if len(splitted) != 2 { + splitted := strings.Split(flag.Arg(1), ":") + if len(splitted) < 2 { usage() os.Exit(1) } - node, err := ctx.FindNode(splitted[0]) - if err != nil { - log.Fatalln("Invalid NODE specified:", err) + var areaId *nncp.AreaId + var node *nncp.Node + if splitted[0] == nncp.AreaDir { + if len(splitted) < 3 { + usage() + os.Exit(1) + } + areaId = ctx.AreaName2Id[splitted[1]] + if areaId == nil { + log.Fatalln("Unknown area specified") + } + node = ctx.Neigh[*ctx.SelfId] + splitted = splitted[2:] + } else { + node, err = ctx.FindNode(splitted[0]) + if err != nil { + log.Fatalln("Invalid NODE specified:", err) + } + splitted = splitted[1:] } nncp.ViaOverride(*viaOverride, ctx, node) @@ -126,10 +145,11 @@ func main() { node, nice, flag.Arg(0), - splitted[1], + strings.Join(splitted, ":"), chunkSize, minSize, nncp.MaxFileSize, + areaId, ); err != nil { log.Fatalln(err) }