Files
T
2026-09-22 22:33:56 +03:00

47 lines
1.7 KiB
Go

package config
import (
"encoding/hex"
"strconv"
"strings"
)
// ClientArgs восстанавливает срез CLI-аргументов из Client структуры.
func ClientArgs(c *Client) []string {
if c == nil {
return nil
}
def := Defaults()
var args []string
addIf := func(cond bool, flag string, value ...string) {
if cond {
args = append(args, flag)
args = append(args, value...)
}
}
args = append(args, "-peer", c.Proxy.Peer)
addIf(len(c.VK.Links) > 0, "-links", strings.Join(c.VK.Links, ","))
addIf(c.Provider.Name != def.Provider.Name, "-provider", c.Provider.Name)
addIf(c.Proxy.Listen != def.Proxy.Listen, "-listen", c.Proxy.Listen)
addIf(c.TURN.Host != "", "-turn", c.TURN.Host)
addIf(c.TURN.Port != "", "-port", c.TURN.Port)
addIf(c.TURN.N != def.TURN.N, "-n", strconv.Itoa(c.TURN.N))
addIf(c.VK.StreamsPerCred != def.VK.StreamsPerCred, "-streams-per-cred", strconv.Itoa(c.VK.StreamsPerCred))
addIf(c.TURN.TransportUDP != def.TURN.TransportUDP, "-transport", TransportUDP)
addIf(c.Proxy.Mode != def.Proxy.Mode, "-mode", string(c.Proxy.Mode))
addIf(c.Proxy.Bond, "-bond")
args = append(args, kcpArgs(c.KCP.Profile, def.KCP.Profile)...)
addIf(c.Obf.Enabled(), "-obf-profile", string(c.Obf.Profile))
addIf(c.Obf.Enabled(), "-obf-key", hex.EncodeToString(c.Obf.Key))
addIf(c.Obf.Timing > 0, "-obf-timing", c.Obf.Timing.String())
addIf(c.VK.ManualCaptcha, "-manual-captcha")
addIf(c.VK.Platform != def.VK.Platform, "-platform", string(c.VK.Platform))
addIf(c.DNS.Mode != def.DNS.Mode, "-dns-mode", c.DNS.Mode)
addIf(len(c.DNS.Servers) > 0, "-dns-servers", strings.Join(c.DNS.Servers, ","))
addIf(c.ClientID != "", "-client-id", c.ClientID)
addIf(c.SubURL != "", "-sub", c.SubURL)
addIf(c.Log.Debug, "-debug")
return args
}