X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fnncp%2Fcmd%2Fnncp-toss%2Fmain.go;h=6bd204d83ceb523377d8fb922bd99e96c2bf5527;hb=dd92823db3d72fb21a4c712a7fb052dce16443dd;hp=11066956a3fcbbc6b9495158fa4d6a2cb41ac059;hpb=5b401cc06b0a9a29f0201c20ead311fb2bff7446;p=nncp.git diff --git a/src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go b/src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go index 1106695..6bd204d 100644 --- a/src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go +++ b/src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go @@ -1,11 +1,10 @@ /* NNCP -- Node to Node copy, utilities for store-and-forward data exchange -Copyright (C) 2016-2017 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,13 +15,12 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -// Process inbound NNCP packets +// Process inbound NNCP packets. package main import ( "flag" "fmt" - "io/ioutil" "log" "os" "time" @@ -32,22 +30,29 @@ import ( func usage() { fmt.Fprintf(os.Stderr, nncp.UsageHeader()) - fmt.Fprintln(os.Stderr, "nncp-toss -- process inbound packets\n") + fmt.Fprintf(os.Stderr, "nncp-toss -- process inbound packets\n\n") fmt.Fprintf(os.Stderr, "Usage: %s [options]\nOptions:\n", os.Args[0]) flag.PrintDefaults() } func main() { var ( - cfgPath = flag.String("cfg", nncp.DefaultCfgPath, "Path to configuration file") - nodeRaw = flag.String("node", "", "Process only that node") - niceRaw = flag.Int("nice", 255, "Minimal required niceness") - dryRun = flag.Bool("dryrun", false, "Do not actually write any tossed data") - cycle = flag.Uint("cycle", 0, "Repeat tossing after N seconds in infinite loop") - quiet = flag.Bool("quiet", false, "Print only errors") - debug = flag.Bool("debug", false, "Print debug messages") - version = flag.Bool("version", false, "Print version information") - warranty = flag.Bool("warranty", false, "Print warranty information") + cfgPath = flag.String("cfg", nncp.DefaultCfgPath, "Path to configuration file") + nodeRaw = flag.String("node", "", "Process only that node") + niceRaw = flag.String("nice", nncp.NicenessFmt(255), "Minimal required niceness") + dryRun = flag.Bool("dryrun", false, "Do not actually write any tossed data") + doSeen = flag.Bool("seen", false, "Create .seen files") + cycle = flag.Uint("cycle", 0, "Repeat tossing after N seconds in infinite loop") + noFile = flag.Bool("nofile", false, "Do not process packets with type: file") + noFreq = flag.Bool("nofreq", false, "Do not process packets with type: freq") + noExec = flag.Bool("noexec", false, "Do not process packets with type: exec") + noTrns = flag.Bool("notrns", false, "Do not process packets with type: transitional") + spoolPath = flag.String("spool", "", "Override path to spool") + logPath = flag.String("log", "", "Override path to logfile") + quiet = flag.Bool("quiet", false, "Print only errors") + debug = flag.Bool("debug", false, "Print debug messages") + version = flag.Bool("version", false, "Print version information") + warranty = flag.Bool("warranty", false, "Print warranty information") ) flag.Usage = usage flag.Parse() @@ -59,21 +64,18 @@ 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) - cfgRaw, err := ioutil.ReadFile(nncp.CfgPathFromEnv(cfgPath)) + ctx, err := nncp.CtxFromCmdline(*cfgPath, *spoolPath, *logPath, *quiet, *debug) if err != nil { - log.Fatalln("Can not read config:", err) + log.Fatalln("Error during initialization:", err) } - ctx, err := nncp.CfgParse(cfgRaw) - if err != nil { - log.Fatalln("Can not parse config:", err) + if ctx.Self == nil { + log.Fatalln("Config lacks private keys") } - ctx.Quiet = *quiet - ctx.Debug = *debug var nodeOnly *nncp.Node if *nodeRaw != "" { @@ -89,7 +91,16 @@ Cycle: if nodeOnly != nil && nodeId != *nodeOnly.Id { continue } - isBad = ctx.Toss(node.Id, nice, *dryRun) + isBad = ctx.Toss( + node.Id, + nice, + *dryRun, + *doSeen, + *noFile, + *noFreq, + *noExec, + *noTrns, + ) } if *cycle > 0 { time.Sleep(time.Duration(*cycle) * time.Second)