]> Cypherpunks.ru repositories - govpn.git/blob - src/cypherpunks.ru/govpn/conf.go
Upgrade Client
[govpn.git] / src / cypherpunks.ru / govpn / conf.go
1 /*
2 GoVPN -- simple secure free software virtual private network daemon
3 Copyright (C) 2014-2016 Sergey Matveev <stargrave@stargrave.org>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 package govpn
20
21 import (
22         "time"
23
24         "github.com/Sirupsen/logrus"
25         "github.com/agl/ed25519"
26 )
27
28 // PeerConf is configuration of a single GoVPN Peer (client)
29 type PeerConf struct {
30         ID       *PeerID
31         Name     string
32         Iface    string
33         MTU      int
34         PreUp    TunnelPreUpAction
35         Up       TunnelAction
36         Down     TunnelAction
37         Timeout  time.Duration
38         Noise    bool
39         CPR      int
40         Encless  bool
41         TimeSync int
42
43         // This is passphrase verifier, client side only
44         Verifier *Verifier
45         // This field exists only on client's side
46         DSAPriv *[ed25519.PrivateKeySize]byte
47 }
48
49 // LogFields return a logrus compatible logging context
50 func (pc *PeerConf) LogFields(rootPrefix string) logrus.Fields {
51         p := rootPrefix + "peerconf_"
52         output := logrus.Fields{
53                 p + "peer_name": pc.Name,
54                 p + "mtu":       pc.MTU,
55                 p + "noise":     pc.Noise,
56                 p + "pcr":       pc.CPR,
57                 p + "encless":   pc.Encless,
58                 p + "timesync":  pc.TimeSync,
59                 p + "timeout":   pc.Timeout.String(),
60                 p + "pre_up":    pc.PreUp != nil,
61                 p + "up":        pc.Up != nil,
62                 p + "down":      pc.Down != nil,
63         }
64         if pc.ID != nil {
65                 output[p+"id"] = pc.ID.String()
66         }
67         return output
68 }