DHCP Unterstützung implementiert
All checks were successful
release-tag / release-image (push) Successful in 1m53s

This commit is contained in:
2025-05-09 10:06:40 +02:00
parent f8196ea26a
commit 7ec9cd4919

24
main.go
View File

@@ -47,6 +47,8 @@ var (
rangeLimit int
singleTemplate *template.Template
rangeTemplate *template.Template
dhcpServer string
dhcpScope string
)
// ---------------------------------------------------------------------------
@@ -57,7 +59,7 @@ type singleData struct {
HaveResult bool
}
type addrPair struct{ IPv4, IPv6 string }
type addrPair struct{ Name, IPv4, IPv6 string }
type rangeData struct {
Start, End string
@@ -129,6 +131,16 @@ func handleRange(w http.ResponseWriter, r *http.Request) {
d.HaveResult = true
d.Rows = rows
}
for a, b := range rows {
fmt.Println(a, b)
octets := strings.Split(b.IPv4, ".")
if len(octets) != 4 {
fmt.Println("Ungültige IP-Adresse!")
return
}
N := "PC" + octets[2] + octets[3]
d.Rows = append(d.Rows, addrPair{IPv4: b.IPv4, IPv6: b.IPv6, Name: N})
}
renderRange(w, d)
default:
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
@@ -214,6 +226,9 @@ func initConfigAndTemplates() {
pageIP = defaultIP
}
dhcpScope = os.Getenv("DHCP_SERVER")
dhcpServer = os.Getenv("DHCP_SCOPE")
// Range limit ---------------------------------
if limStr := os.Getenv("RANGE_LIMIT"); limStr != "" {
if v, err := strconv.Atoi(limStr); err == nil && v > 0 {
@@ -227,7 +242,7 @@ func initConfigAndTemplates() {
// Templates -----------------------------------
singleHTML := fmt.Sprintf(singlePageHTML, pageIP, ulaPrefix)
rangeHTML := fmt.Sprintf(rangePageHTML, ulaPrefix)
rangeHTML := fmt.Sprintf(rangePageHTML, dhcpServer, dhcpScope)
singleTemplate = template.Must(template.New("single").Parse(singleHTML))
rangeTemplate = template.Must(template.New("range").Parse(rangeHTML))
}
@@ -307,10 +322,9 @@ var rangePageHTML = `<!DOCTYPE html>
</form>
{{if .HaveResult}}
<table>
<tr><th>IPv4</th><th>IPv6</th></tr>
{{range .Rows}}<tr><td>{{.IPv4}}</td><td>{{.IPv6}}</td></tr>{{end}}
<tr><th>IPv4</th><th>IPv6</th><th>DHCP-IPv4</th><th>DHCP-IPv6</th></tr>
{{range .Rows}}<tr><td>{{.IPv4}}</td><td>{{.IPv6}}</td><td>netsh DHCP Server %s Scope %s Add reservedip {{.IPv4}} "{{.Name}}.stadt-hilden.de" "" "DHCP"</td><td>---</td></tr>{{end}}
</table>
{{end}}
{{if .Error}}<p style="color:#b00">Fehler: {{.Error}}</p>{{end}}
<p style="margin-top:1rem">Aktives Präfix: <code>%s</code> (/96)</p>
</body></html>`