|
|
|
@ -504,21 +504,23 @@ func (c *Config) Override(o *Config, fn string) {
|
|
|
|
|
|
|
|
|
|
// update the Outbound in slice if the only one in overide config has same tag
|
|
|
|
|
if len(o.OutboundConfigs) > 0 { |
|
|
|
|
if len(c.OutboundConfigs) > 0 && len(o.OutboundConfigs) == 1 { |
|
|
|
|
if idx := c.findOutboundTag(o.OutboundConfigs[0].Tag); idx > -1 { |
|
|
|
|
c.OutboundConfigs[idx] = o.OutboundConfigs[0] |
|
|
|
|
ctllog.Println("[", fn, "] updated outbound with tag: ", o.OutboundConfigs[0].Tag) |
|
|
|
|
outboundPrepends := []OutboundDetourConfig{} |
|
|
|
|
for i := range o.OutboundConfigs { |
|
|
|
|
if idx := c.findOutboundTag(o.OutboundConfigs[i].Tag); idx > -1 { |
|
|
|
|
c.OutboundConfigs[idx] = o.OutboundConfigs[i] |
|
|
|
|
newError("[", fn, "] updated outbound with tag: ", o.OutboundConfigs[i].Tag).AtInfo().WriteToLog() |
|
|
|
|
} else { |
|
|
|
|
if strings.Contains(strings.ToLower(fn), "tail") { |
|
|
|
|
c.OutboundConfigs = append(c.OutboundConfigs, o.OutboundConfigs[0]) |
|
|
|
|
ctllog.Println("[", fn, "] appended outbound with tag: ", o.OutboundConfigs[0].Tag) |
|
|
|
|
c.OutboundConfigs = append(c.OutboundConfigs, o.OutboundConfigs[i]) |
|
|
|
|
newError("[", fn, "] appended outbound with tag: ", o.OutboundConfigs[i].Tag).AtInfo().WriteToLog() |
|
|
|
|
} else { |
|
|
|
|
c.OutboundConfigs = append(o.OutboundConfigs, c.OutboundConfigs...) |
|
|
|
|
ctllog.Println("[", fn, "] prepended outbound with tag: ", o.OutboundConfigs[0].Tag) |
|
|
|
|
outboundPrepends = append(outboundPrepends, o.OutboundConfigs[i]) |
|
|
|
|
newError("[", fn, "] prepend outbound with tag: ", o.OutboundConfigs[i].Tag).AtInfo().WriteToLog() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
c.OutboundConfigs = o.OutboundConfigs |
|
|
|
|
} |
|
|
|
|
if !strings.Contains(strings.ToLower(fn), "tail") && len(outboundPrepends) > 0 { |
|
|
|
|
c.OutboundConfigs = append(outboundPrepends, c.OutboundConfigs...) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|