Conditionally remove the lan block
This commit is contained in:
@@ -31,6 +31,7 @@ type Config struct {
|
|||||||
// Template for generating Caddy configuration
|
// Template for generating Caddy configuration
|
||||||
const caddyTemplate = `{{- range $service := .Services -}}
|
const caddyTemplate = `{{- range $service := .Services -}}
|
||||||
{{ join $service.Domains " " }} {
|
{{ join $service.Domains " " }} {
|
||||||
|
{{- if $service.IPRange }}
|
||||||
@lan {
|
@lan {
|
||||||
remote_ip {{ $service.IPRange }}
|
remote_ip {{ $service.IPRange }}
|
||||||
}
|
}
|
||||||
@@ -40,6 +41,11 @@ const caddyTemplate = `{{- range $service := .Services -}}
|
|||||||
handle {
|
handle {
|
||||||
respond "Njet Molotoff" 403
|
respond "Njet Molotoff" 403
|
||||||
}
|
}
|
||||||
|
{{- else }}
|
||||||
|
handle {
|
||||||
|
reverse_proxy {{ $service.Backend }}
|
||||||
|
}
|
||||||
|
{{- end }}
|
||||||
}
|
}
|
||||||
{{ end }}`
|
{{ end }}`
|
||||||
|
|
||||||
@@ -111,15 +117,12 @@ func loadConfig(filename string) (*Config, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func validateConfig(config *Config) error {
|
func validateConfig(config *Config) error {
|
||||||
// Validate IP ranges are defined
|
|
||||||
for filename, fileConfig := range config.Files {
|
for filename, fileConfig := range config.Files {
|
||||||
for i, service := range fileConfig.Services {
|
for i, service := range fileConfig.Services {
|
||||||
if service.IPRange == "" {
|
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 _, 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 {
|
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",
|
logger.Trace("Resolving service %d: domains=%v, backend=%s, ip_range=%s",
|
||||||
i, service.Domains, service.Backend, service.IPRange)
|
i, service.Domains, service.Backend, service.IPRange)
|
||||||
|
|
||||||
|
resolvedIPRange := ""
|
||||||
|
if service.IPRange != "" {
|
||||||
|
resolvedIPRange = ipRanges[service.IPRange]
|
||||||
|
}
|
||||||
|
|
||||||
templateData.Services[i] = ServiceConfig{
|
templateData.Services[i] = ServiceConfig{
|
||||||
Domains: service.Domains,
|
Domains: service.Domains,
|
||||||
Backend: service.Backend,
|
Backend: service.Backend,
|
||||||
IPRange: ipRanges[service.IPRange],
|
IPRange: resolvedIPRange,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user