+++ /dev/null
-package nncp
-
-import (
- "encoding/base32"
- "strings"
-)
-
-func ToBase32(data []byte) string {
- return strings.TrimRight(base32.StdEncoding.EncodeToString(data), "=")
-}
-
-func FromBase32(data string) ([]byte, error) {
- padSize := len(data) % 8
- if padSize != 0 {
- padSize = 8 - padSize
- pad := make([]byte, 0, padSize)
- for i := 0; i < padSize; i++ {
- pad = append(pad, '=')
- }
- data += string(pad)
- }
- return base32.StdEncoding.DecodeString(data)
-}
return nil, err
}
- exchPub, err := FromBase32(cfg.ExchPub)
+ exchPub, err := Base32Codec.DecodeString(cfg.ExchPub)
if err != nil {
return nil, err
}
return nil, errors.New("Invalid exchPub size")
}
- signPub, err := FromBase32(cfg.SignPub)
+ signPub, err := Base32Codec.DecodeString(cfg.SignPub)
if err != nil {
return nil, err
}
var noisePub []byte
if cfg.NoisePub != nil {
- noisePub, err = FromBase32(*cfg.NoisePub)
+ noisePub, err = Base32Codec.DecodeString(*cfg.NoisePub)
if err != nil {
return nil, err
}
return nil, err
}
- exchPub, err := FromBase32(cfg.ExchPub)
+ exchPub, err := Base32Codec.DecodeString(cfg.ExchPub)
if err != nil {
return nil, err
}
return nil, errors.New("Invalid exchPub size")
}
- exchPrv, err := FromBase32(cfg.ExchPrv)
+ exchPrv, err := Base32Codec.DecodeString(cfg.ExchPrv)
if err != nil {
return nil, err
}
return nil, errors.New("Invalid exchPrv size")
}
- signPub, err := FromBase32(cfg.SignPub)
+ signPub, err := Base32Codec.DecodeString(cfg.SignPub)
if err != nil {
return nil, err
}
return nil, errors.New("Invalid signPub size")
}
- signPrv, err := FromBase32(cfg.SignPrv)
+ signPrv, err := Base32Codec.DecodeString(cfg.SignPrv)
if err != nil {
return nil, err
}
return nil, errors.New("Invalid signPrv size")
}
- noisePub, err := FromBase32(cfg.NoisePub)
+ noisePub, err := Base32Codec.DecodeString(cfg.NoisePub)
if err != nil {
return nil, err
}
return nil, errors.New("Invalid noisePub size")
}
- noisePrv, err := FromBase32(cfg.NoisePrv)
+ noisePrv, err := Base32Codec.DecodeString(cfg.NoisePrv)
if err != nil {
return nil, err
}
sds := SDS{
"xx": string(xx),
"node": nodeId,
- "pkt": ToBase32(job.HshValue[:]),
+ "pkt": Base32Codec.EncodeToString(job.HshValue[:]),
"fullsize": job.Size,
}
gut, err := Check(job.Fd, job.HshValue[:], sds, ctx.ShowPrgrs)
if _, err = nncp.CopyProgressed(
tarWr, job.Fd, "Tx",
nncp.SdsAdd(sds, nncp.SDS{
- "pkt": nncp.ToBase32(job.HshValue[:]),
+ "pkt": nncp.Base32Codec.EncodeToString(job.HshValue[:]),
"fullsize": job.Size,
}),
ctx.ShowPrgrs,
continue
}
pktName = filepath.Base(entry.Name)
- if _, err = nncp.FromBase32(pktName); err != nil {
+ if _, err = nncp.Base32Codec.DecodeString(pktName); err != nil {
ctx.LogD("nncp-bundle", nncp.SdsAdd(sds, nncp.SDS{"err": "bad packet name"}), "")
continue
}
continue
}
}
- nodeId32 := nncp.ToBase32(pktEnc.Recipient[:])
+ nodeId32 := nncp.Base32Codec.EncodeToString(pktEnc.Recipient[:])
sds["xx"] = string(nncp.TTx)
sds["node"] = nodeId32
sds["pkt"] = pktName
); err != nil {
log.Fatalln("Error during copying:", err)
}
- if nncp.ToBase32(hsh.Sum(nil)) == pktName {
+ if nncp.Base32Codec.EncodeToString(hsh.Sum(nil)) == pktName {
ctx.LogI("nncp-bundle", sds, "removed")
if !*dryRun {
os.Remove(dstPath)
continue
}
}
- sds["node"] = nncp.ToBase32(pktEnc.Recipient[:])
+ sds["node"] = nncp.Base32Codec.EncodeToString(pktEnc.Recipient[:])
sds["pkt"] = pktName
sds["fullsize"] = entry.Size
selfPath = filepath.Join(ctx.Spool, ctx.SelfId.String(), string(nncp.TRx))
if _, err = nncp.CopyProgressed(hsh, tarR, "check", sds, ctx.ShowPrgrs); err != nil {
log.Fatalln("Error during copying:", err)
}
- if nncp.ToBase32(hsh.Sum(nil)) != pktName {
+ if nncp.Base32Codec.EncodeToString(hsh.Sum(nil)) != pktName {
ctx.LogE("nncp-bundle", sds, errors.New("bad checksum"), "")
continue
}
if err = tmp.W.Flush(); err != nil {
log.Fatalln("Error during flusing:", err)
}
- if nncp.ToBase32(tmp.Hsh.Sum(nil)) == pktName {
+ if nncp.Base32Codec.EncodeToString(tmp.Hsh.Sum(nil)) == pktName {
if err = tmp.Commit(selfPath); err != nil {
log.Fatalln("Error during commiting:", err)
}
splitted = strings.Split(*onlyPktsRaw, ",")
onlyPkts = make(map[[32]byte]bool, len(splitted))
for _, pktIdRaw := range splitted {
- pktId, err := nncp.FromBase32(pktIdRaw)
+ pktId, err := nncp.Base32Codec.DecodeString(pktIdRaw)
if err != nil {
log.Fatalln("Invalid packet specified: ", err)
}
for _, node := range ctx.Neigh {
var noisePub *string
if node.NoisePub != nil {
- np := nncp.ToBase32(node.NoisePub[:])
+ np := nncp.Base32Codec.EncodeToString(node.NoisePub[:])
noisePub = &np
}
cfg.Neigh[node.Name] = nncp.NodeJSON{
Id: node.Id.String(),
- ExchPub: nncp.ToBase32(node.ExchPub[:]),
- SignPub: nncp.ToBase32(node.SignPub[:]),
+ ExchPub: nncp.Base32Codec.EncodeToString(node.ExchPub[:]),
+ SignPub: nncp.Base32Codec.EncodeToString(node.SignPub[:]),
NoisePub: noisePub,
}
}
nncp.DefaultSpoolPath,
nncp.DefaultLogPath,
nodeOur.Id.String(),
- nncp.ToBase32(nodeOur.ExchPub[:]),
- nncp.ToBase32(nodeOur.ExchPrv[:]),
- nncp.ToBase32(nodeOur.SignPub[:]),
- nncp.ToBase32(nodeOur.SignPrv[:]),
- nncp.ToBase32(nodeOur.NoisePrv[:]),
- nncp.ToBase32(nodeOur.NoisePub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.ExchPub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.ExchPrv[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.SignPub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.SignPrv[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.NoisePrv[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.NoisePub[:]),
nodeOur.Id.String(),
- nncp.ToBase32(nodeOur.ExchPub[:]),
- nncp.ToBase32(nodeOur.SignPub[:]),
- nncp.ToBase32(nodeOur.NoisePub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.ExchPub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.SignPub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.NoisePub[:]),
nncp.DefaultSendmailPath,
)
} else {
nncp.DefaultSpoolPath,
nncp.DefaultLogPath,
nodeOur.Id.String(),
- nncp.ToBase32(nodeOur.ExchPub[:]),
- nncp.ToBase32(nodeOur.ExchPrv[:]),
- nncp.ToBase32(nodeOur.SignPub[:]),
- nncp.ToBase32(nodeOur.SignPrv[:]),
- nncp.ToBase32(nodeOur.NoisePrv[:]),
- nncp.ToBase32(nodeOur.NoisePub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.ExchPub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.ExchPrv[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.SignPub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.SignPrv[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.NoisePrv[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.NoisePub[:]),
nodeOur.Id.String(),
- nncp.ToBase32(nodeOur.ExchPub[:]),
- nncp.ToBase32(nodeOur.SignPub[:]),
- nncp.ToBase32(nodeOur.NoisePub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.ExchPub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.SignPub[:]),
+ nncp.Base32Codec.EncodeToString(nodeOur.NoisePub[:]),
nncp.DefaultSendmailPath,
nncp.DefaultSendmailPath,
)
-1,
))
case nncp.PktTypeTrns:
- path = nncp.ToBase32(pkt.Path[:pkt.PathLen])
+ path = nncp.Base32Codec.EncodeToString(pkt.Path[:pkt.PathLen])
default:
path = string(pkt.Path[:pkt.PathLen])
}
fmt.Printf(
"\t%s %s %s (nice: %s)\n",
string(xx),
- nncp.ToBase32(job.HshValue[:]),
+ nncp.Base32Codec.EncodeToString(job.HshValue[:]),
humanize.IBytes(uint64(job.Size)),
nncp.NicenessFmt(job.PktEnc.Nice),
)
return
}
for _, fi := range fis {
- hshValue, err := FromBase32(fi.Name())
+ hshValue, err := Base32Codec.DecodeString(fi.Name())
if err != nil {
continue
}
package nncp
import (
+ "encoding/base32"
"runtime"
)
var (
Version string = "UNKNOWN"
+
+ Base32Codec *base32.Encoding = base32.StdEncoding.WithPadding(base32.NoPadding)
)
func VersionGet() string {
type NodeId [blake2b.Size256]byte
func (id NodeId) String() string {
- return ToBase32(id[:])
+ return Base32Codec.EncodeToString(id[:])
}
type Node struct {
}
func NodeIdFromString(raw string) (*NodeId, error) {
- decoded, err := FromBase32(raw)
+ decoded, err := Base32Codec.DecodeString(raw)
if err != nil {
return nil, err
}
payloads = append(payloads, MarshalSP(SPTypeInfo, info))
ctx.LogD("sp-info-our", SDS{
"node": nodeId,
- "name": ToBase32(info.Hash[:]),
+ "name": Base32Codec.EncodeToString(info.Hash[:]),
"size": info.Size,
}, "")
}
}
}
if node == nil {
- peerId := ToBase32(state.hs.PeerStatic())
+ peerId := Base32Codec.EncodeToString(state.hs.PeerStatic())
state.Ctx.LogE("sp-start", SDS{"peer": peerId}, errors.New("unknown"), "")
return errors.New("Unknown peer: " + peerId)
}
}
sdsp := SdsAdd(sds, SDS{
"xx": string(TTx),
- "pkt": ToBase32(freq.Hash[:]),
+ "pkt": Base32Codec.EncodeToString(freq.Hash[:]),
"size": int64(freq.Offset),
})
state.Ctx.LogD("sp-file", sdsp, "queueing")
state.Ctx.Spool,
state.Node.Id.String(),
string(TTx),
- ToBase32(freq.Hash[:]),
+ Base32Codec.EncodeToString(freq.Hash[:]),
))
if err != nil {
state.Ctx.LogE("sp-file", sdsp, err, "")
return nil, err
}
sdsp = SdsAdd(sds, SDS{
- "pkt": ToBase32(info.Hash[:]),
+ "pkt": Base32Codec.EncodeToString(info.Hash[:]),
"size": int64(info.Size),
"nice": int(info.Nice),
})
state.Ctx.Spool,
state.Node.Id.String(),
string(TRx),
- ToBase32(info.Hash[:]),
+ Base32Codec.EncodeToString(info.Hash[:]),
)
if _, err = os.Stat(pktPath); err == nil {
state.Ctx.LogI("sp-info", sdsp, "already done")
return nil, err
}
sdsp["xx"] = string(TRx)
- sdsp["pkt"] = ToBase32(file.Hash[:])
+ sdsp["pkt"] = Base32Codec.EncodeToString(file.Hash[:])
sdsp["size"] = len(file.Payload)
dirToSync := filepath.Join(
state.Ctx.Spool,
state.Node.Id.String(),
string(TRx),
)
- filePath := filepath.Join(dirToSync, ToBase32(file.Hash[:]))
+ filePath := filepath.Join(dirToSync, Base32Codec.EncodeToString(file.Hash[:]))
state.Ctx.LogD("sp-file", sdsp, "opening part")
fd, err := os.OpenFile(
filePath+PartSuffix,
state.Ctx.LogE("sp-process", SdsAdd(sds, SDS{"type": "done"}), err, "")
return nil, err
}
- sdsp["pkt"] = ToBase32(done.Hash[:])
+ sdsp["pkt"] = Base32Codec.EncodeToString(done.Hash[:])
state.Ctx.LogD("sp-done", sdsp, "removing")
err := os.Remove(filepath.Join(
state.Ctx.Spool,
state.Node.Id.String(),
string(TTx),
- ToBase32(done.Hash[:]),
+ Base32Codec.EncodeToString(done.Hash[:]),
))
sdsp["xx"] = string(TTx)
if err == nil {
state.Ctx.LogE("sp-process", sdsp, err, "")
return nil, err
}
- sdsp["pkt"] = ToBase32(freq.Hash[:])
+ sdsp["pkt"] = Base32Codec.EncodeToString(freq.Hash[:])
sdsp["offset"] = freq.Offset
state.Ctx.LogD("sp-process", sdsp, "queueing")
nice, exists := state.infosOurSeen[*freq.Hash]
return err
}
tmp.Fd.Close()
- checksum := ToBase32(tmp.Hsh.Sum(nil))
+ checksum := Base32Codec.EncodeToString(tmp.Hsh.Sum(nil))
tmp.ctx.LogD("tmp", SDS{"src": tmp.Fd.Name(), "dst": checksum}, "commit")
if err = os.Rename(tmp.Fd.Name(), filepath.Join(dir, checksum)); err != nil {
return err
incomingPath := filepath.Join(spool, "incoming")
for _, fileData := range files {
checksum := blake2b.Sum256(fileData)
- fileName := ToBase32(checksum[:])
+ fileName := Base32Codec.EncodeToString(checksum[:])
src := filepath.Join(spool, fileName)
if err := ioutil.WriteFile(src, fileData, os.FileMode(0600)); err != nil {
panic(err)
}
for _, fileData := range files {
checksum := blake2b.Sum256(fileData)
- fileName := ToBase32(checksum[:])
+ fileName := Base32Codec.EncodeToString(checksum[:])
data, err := ioutil.ReadFile(filepath.Join(incomingPath, fileName))
if err != nil {
panic(err)
}
checksum := blake2b.Sum256(dst.Bytes())
if err := ioutil.WriteFile(
- filepath.Join(rxPath, ToBase32(checksum[:])),
+ filepath.Join(rxPath, Base32Codec.EncodeToString(checksum[:])),
dst.Bytes(),
os.FileMode(0600),
); err != nil {