]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/node.go
Raise copyright years
[nncp.git] / src / node.go
index 051d0561ea714ceb22b88908089e1eb5e9537ad3..10577b17289cbee491496b2c7653459fc5c8e9d7 100644 (file)
@@ -1,6 +1,6 @@
 /*
 NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2020 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2022 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
@@ -20,7 +20,9 @@ package nncp
 import (
        "crypto/rand"
        "errors"
+       "fmt"
        "sync"
+       "time"
 
        "github.com/flynn/noise"
        "golang.org/x/crypto/blake2b"
@@ -28,10 +30,12 @@ import (
        "golang.org/x/crypto/nacl/box"
 )
 
+const DummyB32Id = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+
 type NodeId [blake2b.Size256]byte
 
 func (id NodeId) String() string {
-       return ToBase32(id[:])
+       return Base32Codec.EncodeToString(id[:])
 }
 
 type Node struct {
@@ -50,8 +54,8 @@ type Node struct {
        Addrs          map[string]string
        RxRate         int
        TxRate         int
-       OnlineDeadline uint
-       MaxOnlineTime  uint
+       OnlineDeadline time.Duration
+       MaxOnlineTime  time.Duration
        Calls          []*Call
 
        Busy bool
@@ -111,15 +115,23 @@ func (nodeOur *NodeOur) Their() *Node {
 }
 
 func NodeIdFromString(raw string) (*NodeId, error) {
-       decoded, err := FromBase32(raw)
+       decoded, err := Base32Codec.DecodeString(raw)
        if err != nil {
-               return nil, err
+               return nil, fmt.Errorf("Can not parse node: %s: %s", raw, err)
        }
        if len(decoded) != blake2b.Size256 {
                return nil, errors.New("Invalid node id size")
        }
-       buf := new([blake2b.Size256]byte)
-       copy(buf[:], decoded)
-       nodeId := NodeId(*buf)
-       return &nodeId, nil
+       nodeId := new(NodeId)
+       copy(nodeId[:], decoded)
+       return nodeId, nil
+}
+
+func (ctx *Ctx) NodeName(id *NodeId) string {
+       idS := id.String()
+       node, err := ctx.FindNode(idS)
+       if err == nil {
+               return node.Name
+       }
+       return idS
 }