/
server.go
71 lines (58 loc) · 1.54 KB
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package core
import (
"reflect"
log "github.com/sirupsen/logrus"
model "github.com/nettica-com/nettica-admin/model"
"github.com/nettica-com/nettica-admin/mongo"
util "github.com/nettica-com/nettica-admin/util"
)
// ReadServer object, create default one
func ReadServer() ([]*model.Server, error) {
servers, err := mongo.ReadAllServers()
if err != nil {
return nil, err
}
return servers, nil
}
// ReadServer2
func ReadServer2(id string) (*model.Server, error) {
server, err := mongo.Deserialize(id, "serviceGroup", "servers", reflect.TypeOf(model.Server{}))
if err != nil {
return nil, err
}
return server.(*model.Server), nil
}
// UpdateServer keep private values from existing one
func UpdateServer(server *model.Server) (*model.Server, error) {
_, err := mongo.Deserialize(server.Id, "id", "servers", reflect.TypeOf(model.Server{}))
if err != nil {
return nil, err
}
err = mongo.Serialize(server.Id, "id", "servers", server)
if err != nil {
return nil, err
}
return server, nil
}
// GetAllReservedIps the list of all reserved IPs, client and server
func GetAllReservedIps() ([]string, error) {
clients, err := ReadVPNs()
if err != nil {
return nil, err
}
reserverIps := make([]string, 0)
for _, client := range clients {
for _, cidr := range client.Current.Address {
ip, err := util.GetIpFromCidr(cidr)
if err != nil {
log.WithFields(log.Fields{
"err": err,
"cidr": cidr,
}).Error("failed to ip from cidr")
} else {
reserverIps = append(reserverIps, ip)
}
}
}
return reserverIps, nil
}