@@ -10,26 +10,33 @@ import (
1010)
1111
1212type BasicInfo struct {
13- Version string `json:"version"`
14- StartTime int64 `json:"start_time"`
15- DomainNum int `json:"domain_num"`
16- SubDomainNum int `json:"sub_domain_num"`
17- Domains []settings.Domain `json:"domains"`
18- PublicIP string `json:"public_ip"`
19- IPMode string `json:"ip_mode"`
20- Provider string `json:"provider"`
13+ Version string `json:"version"`
14+ StartTime int64 `json:"start_time"`
15+ DomainNum int `json:"domain_num"`
16+ SubDomainNum int `json:"sub_domain_num"`
17+ Domains []settings.Domain `json:"domains"`
18+ PublicIP string `json:"public_ip"`
19+ IPMode string `json:"ip_mode"`
20+ Provider string `json:"provider"`
21+ IsMultiProvider bool `json:"is_multi_provider"`
22+ Providers []string `json:"providers"`
2123}
2224
2325func (c * Controller ) GetBasicInfo (ctx * fiber.Ctx ) error {
26+ isMultiProvider := c .config .IsMultiProvider ()
27+ providers := c .getProviders ()
28+
2429 return ctx .JSON (BasicInfo {
25- Version : utils .Version ,
26- StartTime : utils .StartTime ,
27- DomainNum : c .getDomains (),
28- SubDomainNum : c .GetSubDomains (),
29- Domains : c .config .Domains ,
30- PublicIP : lib .GetIPHelperInstance (c .config ).GetCurrentIP (),
31- IPMode : strings .ToUpper (c .config .IPType ),
32- Provider : c .config .Provider ,
30+ Version : utils .Version ,
31+ StartTime : utils .StartTime ,
32+ DomainNum : c .getDomains (),
33+ SubDomainNum : c .GetSubDomains (),
34+ Domains : c .config .Domains ,
35+ PublicIP : lib .GetIPHelperInstance (c .config ).GetCurrentIP (),
36+ IPMode : strings .ToUpper (c .config .IPType ),
37+ Provider : c .config .Provider ,
38+ IsMultiProvider : isMultiProvider ,
39+ Providers : providers ,
3340 })
3441}
3542
@@ -47,3 +54,34 @@ func (c *Controller) GetSubDomains() int {
4754
4855 return count
4956}
57+
58+ func (c * Controller ) getProviders () []string {
59+ providersSet := make (map [string ]bool )
60+
61+ // Add global provider if specified (legacy single provider mode)
62+ if c .config .Provider != "" {
63+ providersSet [c .config .Provider ] = true
64+ }
65+
66+ // Add providers from multi-provider configuration
67+ if c .config .Providers != nil {
68+ for providerName := range c .config .Providers {
69+ providersSet [providerName ] = true
70+ }
71+ }
72+
73+ // Add providers from domains (for mixed configuration)
74+ for _ , domain := range c .config .Domains {
75+ if domain .Provider != "" {
76+ providersSet [domain .Provider ] = true
77+ }
78+ }
79+
80+ // Convert set to slice
81+ providers := make ([]string , 0 , len (providersSet ))
82+ for provider := range providersSet {
83+ providers = append (providers , provider )
84+ }
85+
86+ return providers
87+ }
0 commit comments