package api import ( "encoding/json" "regexp" "github.com/xtls/xray-core/infra/conf" ) const ( UserNotModified = "users not modified" NodeNotModified = "node not modified" RuleNotModified = "rules not modified" ) // Config API config type Config struct { APIHost string `mapstructure:"ApiHost"` NodeID int `mapstructure:"NodeID"` Key string `mapstructure:"ApiKey"` NodeType string `mapstructure:"NodeType"` EnableVless bool `mapstructure:"EnableVless"` VlessFlow string `mapstructure:"VlessFlow"` Timeout int `mapstructure:"Timeout"` SpeedLimit float64 `mapstructure:"SpeedLimit"` DeviceLimit int `mapstructure:"DeviceLimit"` RuleListPath string `mapstructure:"RuleListPath"` DisableCustomConfig bool `mapstructure:"DisableCustomConfig"` } // NodeStatus Node status type NodeStatus struct { CPU float64 Mem float64 Disk float64 Uptime uint64 } type NodeInfo struct { NodeType string // Must be V2ray, Trojan, and Shadowsocks NodeID int Port uint32 SpeedLimit uint64 // Bps AlterID uint16 TransportProtocol string FakeType string Host string Path string EnableTLS bool EnableVless bool VlessFlow string CypherMethod string ServerKey string ServiceName string Header json.RawMessage NameServerConfig []*conf.NameServerConfig EnableREALITY bool REALITYConfig *REALITYConfig } type UserInfo struct { UID int Email string UUID string Passwd string Port uint32 AlterID uint16 Method string SpeedLimit uint64 // Bps DeviceLimit int } type OnlineUser struct { UID int IP string } type UserTraffic struct { UID int Email string Upload int64 Download int64 } type ClientInfo struct { APIHost string NodeID int Key string NodeType string } type DetectRule struct { ID int Pattern *regexp.Regexp } type DetectResult struct { UID int RuleID int } type REALITYConfig struct { Dest string ProxyProtocolVer uint64 ServerNames []string PrivateKey string MinClientVer string MaxClientVer string MaxTimeDiff uint64 ShortIds []string }