-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathrebar-dhcp.go
50 lines (41 loc) · 1.17 KB
/
rebar-dhcp.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
package main
import (
"flag"
"log"
"gopkg.in/gcfg.v1"
)
type Config struct {
Network struct {
Port int
Username string
Password string
}
}
var ignore_anonymus bool
var config_path, key_pem, cert_pem, data_dir string
var server_ip string
func init() {
flag.StringVar(&config_path, "config_path", "/etc/rebar-dhcp.conf", "Path to config file")
flag.StringVar(&key_pem, "key_pem", "/etc/dhcp-https-key.pem", "Path to key file")
flag.StringVar(&cert_pem, "cert_pem", "/etc/dhcp-https-cert.pem", "Path to cert file")
flag.StringVar(&data_dir, "data_dir", "/var/cache/rebar-dhcp", "Path to store data")
flag.StringVar(&server_ip, "server_ip", "", "Server IP to return in packets (e.g. 10.10.10.1/24)")
flag.BoolVar(&ignore_anonymus, "ignore_anonymus", false, "Ignore unknown MAC addresses")
}
func main() {
flag.Parse()
var cfg Config
cerr := gcfg.ReadFileInto(&cfg, config_path)
if cerr != nil {
log.Fatal(cerr)
}
fs, err := NewFileStore(data_dir + "/database.json")
if err != nil {
log.Fatal(err)
}
fe := NewFrontend(cert_pem, key_pem, cfg, fs)
if err := StartDhcpHandlers(fe.DhcpInfo, server_ip); err != nil {
log.Fatal(err)
}
fe.RunServer(true)
}