| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- package xray
 
- import (
 
- 	"bytes"
 
- 	"github.com/mhsanaei/3x-ui/v2/util/json_util"
 
- )
 
- // Config represents the complete Xray configuration structure.
 
- // It contains all sections of an Xray config file including inbounds, outbounds, routing, etc.
 
- type Config struct {
 
- 	LogConfig        json_util.RawMessage `json:"log"`
 
- 	RouterConfig     json_util.RawMessage `json:"routing"`
 
- 	DNSConfig        json_util.RawMessage `json:"dns"`
 
- 	InboundConfigs   []InboundConfig      `json:"inbounds"`
 
- 	OutboundConfigs  json_util.RawMessage `json:"outbounds"`
 
- 	Transport        json_util.RawMessage `json:"transport"`
 
- 	Policy           json_util.RawMessage `json:"policy"`
 
- 	API              json_util.RawMessage `json:"api"`
 
- 	Stats            json_util.RawMessage `json:"stats"`
 
- 	Reverse          json_util.RawMessage `json:"reverse"`
 
- 	FakeDNS          json_util.RawMessage `json:"fakedns"`
 
- 	Observatory      json_util.RawMessage `json:"observatory"`
 
- 	BurstObservatory json_util.RawMessage `json:"burstObservatory"`
 
- 	Metrics          json_util.RawMessage `json:"metrics"`
 
- }
 
- // Equals compares two Config instances for deep equality.
 
- func (c *Config) Equals(other *Config) bool {
 
- 	if len(c.InboundConfigs) != len(other.InboundConfigs) {
 
- 		return false
 
- 	}
 
- 	for i, inbound := range c.InboundConfigs {
 
- 		if !inbound.Equals(&other.InboundConfigs[i]) {
 
- 			return false
 
- 		}
 
- 	}
 
- 	if !bytes.Equal(c.LogConfig, other.LogConfig) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.RouterConfig, other.RouterConfig) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.DNSConfig, other.DNSConfig) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.OutboundConfigs, other.OutboundConfigs) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.Transport, other.Transport) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.Policy, other.Policy) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.API, other.API) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.Stats, other.Stats) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.Reverse, other.Reverse) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.FakeDNS, other.FakeDNS) {
 
- 		return false
 
- 	}
 
- 	if !bytes.Equal(c.Metrics, other.Metrics) {
 
- 		return false
 
- 	}
 
- 	return true
 
- }
 
 
  |