Skip to content

Commit b12cc34

Browse files
authored
Allow registrar services to run in isolation (#151)
* allow separate registrars to be run in isolation using cli flag * small cleanup so we don't have to parse unused key
1 parent 762d2b0 commit b12cc34

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

cmd/registration-server/main.go

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,11 @@ func loadConfig(configPath string) (*config, error) {
134134

135135
func main() {
136136
var configPath string
137+
var apiOnly, dnsOnly bool
137138

138139
flag.StringVar(&configPath, "config", "", "configuration file path")
140+
flag.BoolVar(&apiOnly, "api-only", false, "run only the API registrar")
141+
flag.BoolVar(&dnsOnly, "dns-only", false, "run only the DNS registrar")
139142
flag.Parse()
140143

141144
if configPath == "" {
@@ -189,22 +192,32 @@ func main() {
189192
log.Fatal(err)
190193
}
191194

192-
dnsPrivKey, err := readKey(conf.DNSPrivkeyPath)
193-
if err != nil {
194-
log.Fatal(err)
195-
}
195+
regServers := []regServer{}
196+
var dnsRegServer *dnsregserver.DNSRegServer
197+
var apiRegServer *apiregserver.APIRegServer
196198

197-
dnsRegServer, err := dnsregserver.NewDNSRegServer(conf.Domain, conf.DNSListenAddr, dnsPrivKey, processor, conf.latestClientConf.GetGeneration(), log.WithField("registrar", "DNS"), metrics)
198-
if err != nil {
199-
log.Fatal(err)
200-
}
199+
if !apiOnly {
200+
dnsPrivKey, err := readKey(conf.DNSPrivkeyPath)
201+
if err != nil {
202+
log.Fatal(err)
203+
}
201204

202-
apiRegServer, err := apiregserver.NewAPIRegServer(conf.APIPort, processor, conf.latestClientConf, log.WithField("registrar", "API"), logClientIP, metrics)
203-
if err != nil {
204-
log.Fatal(err)
205+
dnsRegServer, err = dnsregserver.NewDNSRegServer(conf.Domain, conf.DNSListenAddr, dnsPrivKey, processor, conf.latestClientConf.GetGeneration(), log.WithField("registrar", "DNS"), metrics)
206+
if err != nil {
207+
log.Fatal(err)
208+
}
209+
210+
regServers = append(regServers, dnsRegServer)
205211
}
206212

207-
regServers := []regServer{dnsRegServer, apiRegServer}
213+
if !dnsOnly {
214+
apiRegServer, err = apiregserver.NewAPIRegServer(conf.APIPort, processor, conf.latestClientConf, log.WithField("registrar", "API"), logClientIP, metrics)
215+
if err != nil {
216+
log.Fatal(err)
217+
}
218+
219+
regServers = append(regServers, apiRegServer)
220+
}
208221

209222
signalChan := make(chan os.Signal, 1)
210223

@@ -227,8 +240,13 @@ func main() {
227240
if err != nil {
228241
log.Errorf("failed to reload phantom subnets - aborting reload: %v", err)
229242
}
230-
apiRegServer.NewClientConf(conf.latestClientConf)
231-
dnsRegServer.UpdateLatestCCGen(conf.latestClientConf.GetGeneration())
243+
if !dnsOnly && apiRegServer != nil {
244+
apiRegServer.NewClientConf(conf.latestClientConf)
245+
}
246+
247+
if !apiOnly && dnsRegServer != nil {
248+
dnsRegServer.UpdateLatestCCGen(conf.latestClientConf.GetGeneration())
249+
}
232250
}
233251
}
234252
}

pkg/dnsregserver/dnsregserver.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dnsregserver
33
import (
44
"encoding/hex"
55
"errors"
6+
"fmt"
67
"sync/atomic"
78

89
"github.com/refraction-networking/conjure/pkg/metrics"
@@ -37,7 +38,7 @@ func NewDNSRegServer(domain string, udpAddr string, privkey []byte, regprocessor
3738

3839
respder, err := responder.NewDnsResponder(domain, udpAddr, privkey)
3940
if err != nil {
40-
return nil, errors.New("failed to create DNS responder")
41+
return nil, fmt.Errorf("failed to create DNS responder: %v", err)
4142
}
4243

4344
return &DNSRegServer{
File renamed without changes.

0 commit comments

Comments
 (0)