/*
NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2023 Sergey Matveev <stargrave@stargrave.org>
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
"fmt"
"net"
"os"
+ "strings"
"time"
"github.com/dustin/go-humanize"
"github.com/gorhill/cronexpr"
+ nncpYggdrasil "go.cypherpunks.ru/nncp/v8/yggdrasil"
)
type Call struct {
AutoTossNoExec bool
AutoTossNoTrns bool
AutoTossNoArea bool
+ AutoTossNoACK bool
}
func (ctx *Ctx) CallNode(
if addr == "" {
addr = UCSPITCPClient
}
+ } else if strings.HasPrefix(addr, "yggdrasilc://") {
+ conn, err = nncpYggdrasil.NewConn(ctx.YggdrasilAliases, addr)
} else {
conn, err = net.Dial("tcp", addr)
}
if err != nil {
- ctx.LogD("calling", append(les, LE{"Err", err}), func(les LEs) string {
+ ctx.LogE("calling", les, err, func(les LEs) string {
return fmt.Sprintf("Calling %s (%s)", node.Name, addr)
})
continue
ctx.LogI("call-started", les, func(les LEs) string {
return fmt.Sprintf("Connection to %s (%s)", node.Name, addr)
})
- state.Wait()
+ isGood = state.Wait()
ctx.LogI("call-finished", append(
les,
LE{"Duration", int64(state.Duration.Seconds())},
humanize.IBytes(uint64(state.TxSpeed)),
)
})
- isGood = true
- conn.Close() // #nosec G104
+ conn.Close()
break
} else {
ctx.LogE("call-started", les, err, func(les LEs) string {
return fmt.Sprintf("Connection to %s (%s)", node.Name, addr)
})
- conn.Close() // #nosec G104
+ conn.Close()
}
}
return