Skip to content

Commit 16e50d3

Browse files
feat: update ipv6disc to v0.6.0 and restructure discovery config
1 parent 701f307 commit 16e50d3

8 files changed

Lines changed: 64 additions & 37 deletions

File tree

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,10 @@ credentials:
153153
# ...
154154

155155
# Optional: Discover hosts reading from network devices (pfSense, OPNsense, Mikrotik, etc.)
156-
discovery_plugins:
157-
- type: mikrotik
158-
params: mikrotik:192.168.88.1:8729,admin,password,true,
156+
discovery:
157+
plugins:
158+
- type: mikrotik
159+
params: mikrotik:90s,192.168.88.1:8729,admin,password,true,
159160
```
160161
161162
---

cmd/ipv6ddns/example.config.yaml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,13 @@ credentials:
108108
region: us-east-1
109109
hosted_zone_id: Z1234567890
110110
ttl: 1h
111-
discovery_plugins:
112-
- params: mikrotik:192.168.88.1:8729,admin,password,true,<optional>a1b2c3d4...
113-
type: mikrotik
114-
- params: freebsd:pfsense.local,admin,,/path/to/id_rsa
115-
type: freebsd
116-
- params: linux:[2001:db8::1]:2222,user,,/path/to/id_rsa
117-
type: linux
111+
discovery:
112+
listen: true
113+
active: true
114+
plugins:
115+
- params: mikrotik:90s,192.168.88.1:8729,admin,password,true,<optional>a1b2c3d4...
116+
type: mikrotik
117+
- params: freebsd:90s,pfsense.local,admin,,/path/to/id_rsa
118+
type: freebsd
119+
- params: linux:90s,[2001:db8::1]:2222,user,,/path/to/id_rsa
120+
type: linux

cmd/ipv6ddns/ipv6ddns.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func main() {
5252
rediscover := lifetime / 3
5353
worker := ipv6ddns.NewWorker(sugar, rediscover, lifetime, config)
5454

55-
for _, pCfg := range config.Plugins {
55+
for _, pCfg := range config.Discovery.Plugins {
5656
p, err := plugins.Create(pCfg.Type, pCfg.Params, lifetime)
5757
if err != nil {
5858
sugar.Fatalf("can't create plugin %s: %s", pCfg.Type, err)

config/config.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ type Config struct {
2121
BaseDir string `json:"-"`
2222
Tasks map[string]Task `json:"tasks"`
2323
Credentials map[string]Credential `json:"credentials"`
24-
Plugins []PluginConfig `json:"discovery_plugins"`
24+
Discovery Discovery `json:"discovery"`
25+
}
26+
27+
type Discovery struct {
28+
Listen bool `json:"listen"`
29+
Active bool `json:"active"`
30+
Plugins []PluginConfig `json:"plugins"`
2531
}
2632

2733
type PluginConfig struct {
@@ -115,14 +121,17 @@ func (c *Config) PrettyPrint(prefix string, hideSensible bool) string {
115121
}
116122
}
117123

118-
if len(c.Plugins) > 0 {
119-
result.WriteString(prefix + " Discovery Plugins:\n")
120-
for _, plugin := range c.Plugins {
121-
result.WriteString(prefix + " Type: " + plugin.Type + "\n")
124+
result.WriteString(prefix + " Discovery:\n")
125+
result.WriteString(prefix + " Listen: " + fmt.Sprintf("%t", c.Discovery.Listen) + "\n")
126+
result.WriteString(prefix + " Active: " + fmt.Sprintf("%t", c.Discovery.Active) + "\n")
127+
if len(c.Discovery.Plugins) > 0 {
128+
result.WriteString(prefix + " Plugins:\n")
129+
for _, plugin := range c.Discovery.Plugins {
130+
result.WriteString(prefix + " Type: " + plugin.Type + "\n")
122131
if !hideSensible {
123-
result.WriteString(prefix + " Params: " + plugin.Params + "\n")
132+
result.WriteString(prefix + " Params: " + plugin.Params + "\n")
124133
} else {
125-
result.WriteString(prefix + " Params: <sensible data hidden>\n")
134+
result.WriteString(prefix + " Params: <sensible data hidden>\n")
126135
}
127136
}
128137
}

config/schema.json

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -99,24 +99,36 @@
9999
"additionalProperties": false
100100
}
101101
},
102-
"discovery_plugins": {
103-
"type": "array",
104-
"items": {
105-
"type": "object",
106-
"properties": {
107-
"type": {
108-
"type": "string"
109-
},
110-
"params": {
111-
"type": "string"
112-
}
102+
"discovery": {
103+
"type": "object",
104+
"properties": {
105+
"listen": {
106+
"type": "boolean"
113107
},
114-
"required": [
115-
"type",
116-
"params"
117-
],
118-
"additionalProperties": false
119-
}
108+
"active": {
109+
"type": "boolean"
110+
},
111+
"plugins": {
112+
"type": "array",
113+
"items": {
114+
"type": "object",
115+
"properties": {
116+
"type": {
117+
"type": "string"
118+
},
119+
"params": {
120+
"type": "string"
121+
}
122+
},
123+
"required": [
124+
"type",
125+
"params"
126+
],
127+
"additionalProperties": false
128+
}
129+
}
130+
},
131+
"additionalProperties": false
120132
}
121133
},
122134
"required": [

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/cloudflare/cloudflare-go v0.116.0
77
github.com/go-routeros/routeros/v3 v3.0.1
88
github.com/google/uuid v1.6.0
9-
github.com/miguelangel-nubla/ipv6disc v0.5.1
9+
github.com/miguelangel-nubla/ipv6disc v0.6.0
1010
github.com/oapi-codegen/oapi-codegen/v2 v2.4.1
1111
github.com/oapi-codegen/runtime v1.1.2
1212
github.com/xeipuuv/gojsonschema v1.2.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ github.com/mdlayher/ndp v1.1.0 h1:QylGKGVtH60sKZUE88+IW5ila1Z/M9/OXhWdsVKuscs=
102102
github.com/mdlayher/ndp v1.1.0/go.mod h1:FmgESgemgjl38vuOIyAHWUUL6vQKA/pQNkvXdWsdQFM=
103103
github.com/miguelangel-nubla/ipv6disc v0.5.1 h1:SFzVM6WxYxWuVKpdobzN4sXyNQgsnaXvnqU7WJplJyQ=
104104
github.com/miguelangel-nubla/ipv6disc v0.5.1/go.mod h1:VMY3R/4vbaJ4vnbpont2nkjWZjoTFC7ovrJ2ga5dt3U=
105+
github.com/miguelangel-nubla/ipv6disc v0.6.0 h1:sxS0Z/ED78+ufiCqkYdlaPJ34ghanQGNIdZpkLJON4A=
106+
github.com/miguelangel-nubla/ipv6disc v0.6.0/go.mod h1:VMY3R/4vbaJ4vnbpont2nkjWZjoTFC7ovrJ2ga5dt3U=
105107
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
106108
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
107109
github.com/nsf/termbox-go v1.1.1 h1:nksUPLCb73Q++DwbYUBEglYBRPZyoXJdrj5L+TkjyZY=

worker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func (w *Worker) PrettyPrint(prefix string, hideSensible bool) string {
123123
func NewWorker(logger *zap.SugaredLogger, rediscover time.Duration, lifetime time.Duration, config config.Config) *Worker {
124124
return &Worker{
125125
State: NewState(),
126-
discWorker: ipv6disc.NewWorker(logger, rediscover, lifetime),
126+
discWorker: ipv6disc.NewWorker(logger, rediscover, lifetime, config.Discovery.Listen, config.Discovery.Active),
127127
logger: logger,
128128
config: config,
129129
}

0 commit comments

Comments
 (0)