Addr *string `json:"addr,omitempty"`
OnlineDeadline *uint `json:"onlinedeadline,omitempty"`
MaxOnlineTime *uint `json:"maxonlinetime,omitempty"`
+ WhenTxExists *bool `json:"when-tx-exists,omitempty"`
+ NoCK *bool `json:"nock"`
+ MCDIgnore *bool `json:"mcd-ignore"`
+
+ AutoToss *bool `json:"autotoss,omitempty"`
+ AutoTossDoSeen *bool `json:"autotoss-doseen,omitempty"`
+ AutoTossNoFile *bool `json:"autotoss-nofile,omitempty"`
+ AutoTossNoFreq *bool `json:"autotoss-nofreq,omitempty"`
+ AutoTossNoExec *bool `json:"autotoss-noexec,omitempty"`
+ AutoTossNoTrns *bool `json:"autotoss-notrns,omitempty"`
}
type NodeOurJSON struct {
Umask string `json:"umask,omitempty"`
OmitPrgrs bool `json:"noprogress,omitempty"`
+ NoHdr bool `json:"nohdr,omitempty"`
Notify *NotifyJSON `json:"notify,omitempty"`
Self *NodeOurJSON `json:"self"`
Neigh map[string]NodeJSON `json:"neigh"`
+
+ MCDRxIfis []string `json:"mcd-listen"`
+ MCDTxIfis map[string]int `json:"mcd-send"`
}
func NewNode(name string, cfg NodeJSON) (*Node, error) {
onlineDeadline = time.Duration(*callCfg.OnlineDeadline) * time.Second
}
- var maxOnlineTime time.Duration
- if callCfg.MaxOnlineTime != nil {
- maxOnlineTime = time.Duration(*callCfg.MaxOnlineTime) * time.Second
- }
-
- calls = append(calls, &Call{
+ call := Call{
Cron: expr,
Nice: nice,
Xx: xx,
TxRate: txRate,
Addr: addr,
OnlineDeadline: onlineDeadline,
- MaxOnlineTime: maxOnlineTime,
- })
+ }
+
+ if callCfg.MaxOnlineTime != nil {
+ call.MaxOnlineTime = time.Duration(*callCfg.MaxOnlineTime) * time.Second
+ }
+ if callCfg.WhenTxExists != nil {
+ call.WhenTxExists = *callCfg.WhenTxExists
+ }
+ if callCfg.NoCK != nil {
+ call.NoCK = *callCfg.NoCK
+ }
+ if callCfg.MCDIgnore != nil {
+ call.MCDIgnore = *callCfg.MCDIgnore
+ }
+ if callCfg.AutoToss != nil {
+ call.AutoToss = *callCfg.AutoToss
+ }
+ if callCfg.AutoTossDoSeen != nil {
+ call.AutoTossDoSeen = *callCfg.AutoTossDoSeen
+ }
+ if callCfg.AutoTossNoFile != nil {
+ call.AutoTossNoFile = *callCfg.AutoTossNoFile
+ }
+ if callCfg.AutoTossNoFreq != nil {
+ call.AutoTossNoFreq = *callCfg.AutoTossNoFreq
+ }
+ if callCfg.AutoTossNoExec != nil {
+ call.AutoTossNoExec = *callCfg.AutoTossNoExec
+ }
+ if callCfg.AutoTossNoTrns != nil {
+ call.AutoTossNoTrns = *callCfg.AutoTossNoTrns
+ }
+
+ calls = append(calls, &call)
}
node := Node{
func CfgParse(data []byte) (*Ctx, error) {
var err error
- if bytes.Compare(data[:8], MagicNNCPBv3[:]) == 0 {
+ if bytes.Compare(data[:8], MagicNNCPBv3.B[:]) == 0 {
os.Stderr.WriteString("Passphrase:") // #nosec G104
password, err := term.ReadPassword(0)
if err != nil {
if err != nil {
return nil, err
}
+ } else if bytes.Compare(data[:8], MagicNNCPBv2.B[:]) == 0 {
+ log.Fatalln(MagicNNCPBv2.TooOld())
+ } else if bytes.Compare(data[:8], MagicNNCPBv1.B[:]) == 0 {
+ log.Fatalln(MagicNNCPBv1.TooOld())
}
var cfgGeneral map[string]interface{}
if err = hjson.Unmarshal(data, &cfgGeneral); err != nil {
if cfgJSON.OmitPrgrs {
showPrgrs = false
}
+ hdrUsage := true
+ if cfgJSON.NoHdr {
+ hdrUsage = false
+ }
ctx := Ctx{
Spool: spoolPath,
LogPath: logPath,
UmaskForce: umaskForce,
ShowPrgrs: showPrgrs,
+ HdrUsage: hdrUsage,
Self: self,
Neigh: make(map[NodeId]*Node, len(cfgJSON.Neigh)),
Alias: make(map[string]*NodeId),
+ MCDRxIfis: cfgJSON.MCDRxIfis,
+ MCDTxIfis: cfgJSON.MCDTxIfis,
}
if cfgJSON.Notify != nil {
if cfgJSON.Notify.File != nil {