package model

type Hysteria struct {
	Type                string   `yaml:"type"`
	Name                string   `yaml:"name"`
	Server              string   `yaml:"server"`
	Port                int      `yaml:"port,omitempty"`
	Ports               string   `yaml:"ports,omitempty"`
	Protocol            string   `yaml:"protocol,omitempty"`
	ObfsProtocol        string   `yaml:"obfs-protocol,omitempty"`
	Up                  string   `yaml:"up"`
	UpSpeed             int      `yaml:"up-speed,omitempty"`
	Down                string   `yaml:"down"`
	DownSpeed           int      `yaml:"down-speed,omitempty"`
	Auth                string   `yaml:"auth,omitempty"`
	AuthStringOLD       string   `yaml:"auth_str,omitempty"`
	AuthString          string   `yaml:"auth-str,omitempty"`
	Obfs                string   `yaml:"obfs,omitempty"`
	SNI                 string   `yaml:"sni,omitempty"`
	SkipCertVerify      bool     `yaml:"skip-cert-verify,omitempty"`
	Fingerprint         string   `yaml:"fingerprint,omitempty"`
	ALPN                []string `yaml:"alpn,omitempty"`
	CustomCA            string   `yaml:"ca,omitempty"`
	CustomCAString      string   `yaml:"ca-str,omitempty"`
	ReceiveWindowConn   int      `yaml:"recv-window-conn,omitempty"`
	ReceiveWindow       int      `yaml:"recv-window,omitempty"`
	DisableMTUDiscovery bool     `yaml:"disable-mtu-discovery,omitempty"`
	FastOpen            bool     `yaml:"fast-open,omitempty"`
	HopInterval         int      `yaml:"hop-interval,omitempty"`
}

func ProxyToHysteria(p Proxy) Hysteria {
	return Hysteria{
		Type:                "hysteria",
		Name:                p.Name,
		Server:              p.Server,
		Port:                p.Port,
		Ports:               p.Ports,
		Protocol:            p.Protocol,
		Up:                  p.Up,
		Down:                p.Down,
		Auth:                p.Auth,
		AuthStringOLD:       p.AuthStringOLD,
		AuthString:          p.AuthString,
		Obfs:                p.Obfs,
		SNI:                 p.Sni,
		SkipCertVerify:      p.SkipCertVerify,
		Fingerprint:         p.Fingerprint,
		ALPN:                p.Alpn,
		CustomCA:            p.CustomCA,
		CustomCAString:      p.CustomCAString,
		ReceiveWindowConn:   p.ReceiveWindowConn,
		ReceiveWindow:       p.ReceiveWindow,
		DisableMTUDiscovery: p.DisableMTUDiscovery,
		FastOpen:            p.FastOpen,
		HopInterval:         p.HopInterval,
	}
}