Conditionally remove the lan block

This commit is contained in:
Sparky
2025-11-08 17:21:11 +00:00
parent 6ee9472b7f
commit 5b5f13ebe7

View File

@@ -31,6 +31,7 @@ type Config struct {
// Template for generating Caddy configuration
const caddyTemplate = `{{- range $service := .Services -}}
{{ join $service.Domains " " }} {
{{- if $service.IPRange }}
@lan {
remote_ip {{ $service.IPRange }}
}
@@ -40,6 +41,11 @@ const caddyTemplate = `{{- range $service := .Services -}}
handle {
respond "Njet Molotoff" 403
}
{{- else }}
handle {
reverse_proxy {{ $service.Backend }}
}
{{- end }}
}
{{ end }}`
@@ -111,15 +117,12 @@ func loadConfig(filename string) (*Config, error) {
}
func validateConfig(config *Config) error {
// Validate IP ranges are defined
for filename, fileConfig := range config.Files {
for i, service := range fileConfig.Services {
if service.IPRange == "" {
return fmt.Errorf("service %d in file %s has no IP range specified", i+1, filename)
}
if _, exists := config.IPRanges[service.IPRange]; !exists {
return fmt.Errorf("IP range '%s' not defined for service %d in file %s", service.IPRange, i+1, filename)
if service.IPRange != "" {
if _, exists := config.IPRanges[service.IPRange]; !exists {
return fmt.Errorf("IP range '%s' not defined for service %d in file %s", service.IPRange, i+1, filename)
}
}
if len(service.Domains) == 0 {
@@ -249,10 +252,15 @@ func generateCaddyContent(fileConfig FileConfig, ipRanges map[string]string) (st
logger.Trace("Resolving service %d: domains=%v, backend=%s, ip_range=%s",
i, service.Domains, service.Backend, service.IPRange)
resolvedIPRange := ""
if service.IPRange != "" {
resolvedIPRange = ipRanges[service.IPRange]
}
templateData.Services[i] = ServiceConfig{
Domains: service.Domains,
Backend: service.Backend,
IPRange: ipRanges[service.IPRange],
IPRange: resolvedIPRange,
}
}