Add new admin panel, failover, dns fallback, providers, limiters. Update XHTTP

This commit is contained in:
Sergei Maklagin
2026-05-11 00:59:35 +03:00
parent 652e0baf57
commit 3bd162ed6f
241 changed files with 36409 additions and 4086 deletions

View File

@@ -2,12 +2,14 @@ package option
import (
"github.com/sagernet/sing/common/byteformats"
"github.com/sagernet/sing/common/json/badoption"
)
type BandwidthLimiterOutboundOptions struct {
Strategy string `json:"strategy"`
Mode string `json:"mode"`
ConnectionType string `json:"connection_type,omitempty"`
Mode string `json:"mode"`
FlowKeys []string `json:"flow_keys,omitempty"`
Speed *byteformats.NetworkBytesCompat `json:"speed"`
Users []BandwidthLimiterUser `json:"users,omitempty"`
Route RouteOptions `json:"route"`
@@ -16,11 +18,26 @@ type BandwidthLimiterOutboundOptions struct {
type BandwidthLimiterUser struct {
Name string `json:"name"`
Strategy string `json:"strategy"`
Mode string `json:"mode"`
ConnectionType string `json:"connection_type,omitempty"`
Mode string `json:"mode"`
Speed *byteformats.NetworkBytesCompat `json:"speed"`
}
type TrafficLimiterOutboundOptions struct {
Strategy string `json:"strategy"`
Mode string `json:"mode"`
Total *byteformats.Bytes `json:"total"`
Users []TrafficLimiterUser `json:"users,omitempty"`
Route RouteOptions `json:"route"`
}
type TrafficLimiterUser struct {
Name string `json:"name"`
Strategy string `json:"strategy"`
Mode string `json:"mode"`
Total *byteformats.Bytes `json:"total"`
}
type ConnectionLimiterOutboundOptions struct {
Strategy string `json:"strategy"`
ConnectionType string `json:"connection_type,omitempty"`
@@ -35,3 +52,20 @@ type ConnectionLimiterUser struct {
ConnectionType string `json:"connection_type,omitempty"`
Count uint32 `json:"count"`
}
type RateLimiterOutboundOptions struct {
Strategy string `json:"strategy"`
ConnectionType string `json:"connection_type,omitempty"`
Count uint32 `json:"count"`
Interval badoption.Duration `json:"interval"`
Users []RateLimiterUser `json:"users,omitempty"`
Route RouteOptions `json:"route"`
}
type RateLimiterUser struct {
Name string `json:"name"`
Strategy string `json:"strategy"`
ConnectionType string `json:"connection_type,omitempty"`
Count uint32 `json:"count"`
Interval badoption.Duration `json:"interval"`
}