]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cypherpunks.ru/nncp/cfg.go
Store logs in spool directory for convenience by default
[nncp.git] / src / cypherpunks.ru / nncp / cfg.go
index 10dd46b917a430174b17ac3bb8801d705917bd4f..c05a6a7c90424999c139f474d8a789f8456d4d04 100644 (file)
@@ -35,6 +35,8 @@ const (
 var (
        DefaultCfgPath      string = "/usr/local/etc/nncp.yaml"
        DefaultSendmailPath string = "/usr/sbin/sendmail"
+       DefaultSpoolPath    string = "/var/spool/nncp"
+       DefaultLogPath      string = "/var/spool/nncp/log"
 )
 
 type NodeYAML struct {
@@ -50,7 +52,8 @@ type NodeYAML struct {
 
        Addrs map[string]string `addrs,omitempty`
 
-       OnlineDeadline *int `onlinedeadline,omitempty`
+       OnlineDeadline *uint `onlinedeadline,omitempty`
+       MaxOnlineTime  *uint `maxonlinetime,omitempty`
 }
 
 type CallYAML struct {
@@ -58,7 +61,8 @@ type CallYAML struct {
        Nice           *int    `nice,omitempty`
        Xx             *string `xx,omitempty`
        Addr           *string `addr,omitempty`
-       OnlineDeadline *int    `onlinedeadline,omitempty`
+       OnlineDeadline *uint   `onlinedeadline,omitempty`
+       MaxOnlineTime  *uint   `maxonlinetime,omitempty`
 }
 
 type NodeOurYAML struct {
@@ -141,13 +145,17 @@ func NewNode(name string, yml NodeYAML) (*Node, error) {
                freq = &fr
        }
 
-       defOnlineDeadline := int(DefaultDeadline)
+       defOnlineDeadline := uint(DefaultDeadline)
        if yml.OnlineDeadline != nil {
                if *yml.OnlineDeadline <= 0 {
                        return nil, errors.New("OnlineDeadline must be at least 1 second")
                }
                defOnlineDeadline = *yml.OnlineDeadline
        }
+       var defMaxOnlineTime uint
+       if yml.MaxOnlineTime != nil {
+               defMaxOnlineTime = *yml.MaxOnlineTime
+       }
 
        var calls []*Call
        for _, callYml := range yml.Calls {
@@ -183,17 +191,22 @@ func NewNode(name string, yml NodeYAML) (*Node, error) {
                }
                onlineDeadline := defOnlineDeadline
                if callYml.OnlineDeadline != nil {
-                       if *yml.OnlineDeadline <= 0 {
+                       if *callYml.OnlineDeadline == 0 {
                                return nil, errors.New("OnlineDeadline must be at least 1 second")
                        }
                        onlineDeadline = *callYml.OnlineDeadline
                }
+               var maxOnlineTime uint
+               if callYml.MaxOnlineTime != nil {
+                       maxOnlineTime = *callYml.MaxOnlineTime
+               }
                calls = append(calls, &Call{
                        Cron:           expr,
                        Nice:           nice,
                        Xx:             &xx,
                        Addr:           addr,
                        OnlineDeadline: onlineDeadline,
+                       MaxOnlineTime:  maxOnlineTime,
                })
        }
 
@@ -208,6 +221,7 @@ func NewNode(name string, yml NodeYAML) (*Node, error) {
                Calls:          calls,
                Addrs:          yml.Addrs,
                OnlineDeadline: defOnlineDeadline,
+               MaxOnlineTime:  defMaxOnlineTime,
        }
        copy(node.ExchPub[:], exchPub)
        if len(noisePub) > 0 {