Refit source files to have a public xs-apiv1 lib package.
[src/xds/xds-server.git] / lib / xdsconfig / builderconfig.go
1 package xdsconfig
2
3 import (
4         "errors"
5         "net"
6
7         "github.com/iotbzh/xds-server/lib/xsapiv1"
8 )
9
10 // NewBuilderConfig creates a new BuilderConfig instance
11 func NewBuilderConfig(stID string) (xsapiv1.BuilderConfig, error) {
12         // Do we really need it ? may be not accessible from client side
13         ip, err := getLocalIP()
14         if err != nil {
15                 return xsapiv1.BuilderConfig{}, err
16         }
17
18         b := xsapiv1.BuilderConfig{
19                 IP:          ip, // TODO currently not used
20                 Port:        "", // TODO currently not used
21                 SyncThingID: stID,
22         }
23         return b, nil
24 }
25
26 /*** Private ***/
27
28 func getLocalIP() (string, error) {
29         addrs, err := net.InterfaceAddrs()
30         if err != nil {
31                 return "", err
32         }
33         for _, address := range addrs {
34                 // check the address type and if it is not a loopback the display it
35                 if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
36                         if ipnet.IP.To4() != nil {
37                                 return ipnet.IP.String(), nil
38                         }
39                 }
40         }
41         return "", errors.New("Cannot determined local IP")
42 }