Conditionally remove the lan block
This commit is contained in:
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user