forked from gema-arta/cjdns_munin
/
main.go
62 lines (54 loc) · 1.27 KB
/
main.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
// Copyright © 2013 Emery Hemingway
package main
import (
"fmt"
"github.com/inhies/go-cjdns/admin"
"os"
"strconv"
"strings"
)
var modes = make(map[string]func(bool))
func main() {
cmd := os.Args[0]
i := strings.IndexRune(cmd, os.PathSeparator)
for i != -1 {
cmd = cmd[i+1:]
i = strings.IndexRune(cmd, os.PathSeparator)
}
f, ok := modes[cmd]
if !ok {
fmt.Fprintf(os.Stderr, "Unknown command %q.\nRename or link this binary as one of the following:\n", cmd)
for k, _ := range modes {
fmt.Println("\t", k)
}
os.Exit(1)
}
config := false
for _, arg := range os.Args[1:] {
if arg == "config" {
config = true
} else {
fmt.Fprintln(os.Stderr, "unhandled argument", os.Args[1])
os.Exit(1)
}
}
f(config)
}
func ConnectToCjdns() *admin.Conn {
port, _ := strconv.ParseUint(os.Getenv("cjdns_port"), 10, 16)
cjdnsConf := &admin.CjdnsAdminConfig{
Addr: os.Getenv("cjdns_addr"),
Port: int(port),
Password: os.Getenv("cjdns_password"),
}
if cjdnsConf.Addr == "" || cjdnsConf.Port == 0 || cjdnsConf.Password == "" {
fmt.Fprintln(os.Stderr, "failed to read CJDNS admin port configuration from environment")
os.Exit(1)
}
admin, err := admin.Connect(cjdnsConf)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
return admin
}