|
1 | 1 | // SPDX-License-Identifier: Apache-2.0 |
2 | 2 | // Copyright 2021 VMware, Inc. |
3 | 3 |
|
4 | | - |
5 | 4 | package main |
6 | 5 |
|
7 | 6 | import ( |
8 | 7 | "os" |
9 | 8 | "os/signal" |
| 9 | + "runtime" |
10 | 10 | "strings" |
11 | 11 | "syscall" |
12 | 12 |
|
13 | | - "github.com/network-event-broker/pkg/conf" |
14 | 13 | "github.com/network-event-broker/listeners" |
| 14 | + "github.com/network-event-broker/pkg/conf" |
15 | 15 | "github.com/network-event-broker/pkg/network" |
| 16 | + "github.com/network-event-broker/pkg/system" |
16 | 17 | log "github.com/sirupsen/logrus" |
17 | 18 | ) |
18 | 19 |
|
19 | | -func main() { |
20 | | - c, err := conf.Parse() |
21 | | - if err != nil { |
22 | | - log.Warnf("Failed to parse configuration: %v", err) |
23 | | - } |
24 | | - |
| 20 | +func run(c *conf.Config) { |
25 | 21 | n := network.New() |
26 | 22 | if n == nil { |
27 | 23 | log.Fatalln("Failed to create network. Aborting ...") |
28 | 24 | os.Exit(1) |
29 | 25 | } |
30 | 26 |
|
31 | | - err = network.AcquireLinks(n) |
| 27 | + err := network.AcquireLinks(n) |
32 | 28 | if err != nil { |
33 | 29 | log.Fatalf("Failed to acquire link information. Unable to continue: %v", err) |
34 | 30 | os.Exit(1) |
@@ -57,3 +53,45 @@ func main() { |
57 | 53 |
|
58 | 54 | <-finished |
59 | 55 | } |
| 56 | + |
| 57 | +func main() { |
| 58 | + c, err := conf.Parse() |
| 59 | + if err != nil { |
| 60 | + log.Warnf("Failed to parse configuration: %v", err) |
| 61 | + } |
| 62 | + |
| 63 | + log.Infof("network-broker: v%s (built %s)", conf.Version, runtime.Version()) |
| 64 | + |
| 65 | + cred, err := system.GetUserCredentials("") |
| 66 | + if err != nil { |
| 67 | + log.Warningf("Failed to get current user credentials: %+v", err) |
| 68 | + os.Exit(1) |
| 69 | + } else { |
| 70 | + if cred.Uid == 0 { |
| 71 | + u, err := system.GetUserCredentials("network-broker") |
| 72 | + if err != nil { |
| 73 | + log.Errorf("Failed to get user 'network-broker' credentials: %+v", err) |
| 74 | + os.Exit(1) |
| 75 | + } else { |
| 76 | + if err := system.EnableKeepCapability(); err != nil { |
| 77 | + log.Warningf("Failed to enable keep capabilities: %+v", err) |
| 78 | + } |
| 79 | + |
| 80 | + if err := system.SwitchUser(u); err != nil { |
| 81 | + log.Warningf("Failed to switch user: %+v", err) |
| 82 | + } |
| 83 | + |
| 84 | + if err := system.DisableKeepCapability(); err != nil { |
| 85 | + log.Warningf("Failed to disable keep capabilities: %+v", err) |
| 86 | + } |
| 87 | + |
| 88 | + err := system.ApplyCapability(u) |
| 89 | + if err != nil { |
| 90 | + log.Warningf("Failed to apply capabilities: +%v", err) |
| 91 | + } |
| 92 | + } |
| 93 | + } |
| 94 | + } |
| 95 | + |
| 96 | + run(c) |
| 97 | +} |
0 commit comments