package network import ( "crypto/tls" "net" "git.hpds.cc/Component/network/auth" "github.com/lucas-clemente/quic-go" ) // ServerOptions are the options for HPDS Network server. type ServerOptions struct { QuicConfig *quic.Config TLSConfig *tls.Config Addr string Auths []auth.Authentication Conn net.PacketConn } // WithAddr sets the server address. func WithAddr(addr string) ServerOption { return func(o *ServerOptions) { o.Addr = addr } } // WithAuth sets the server authentication method. func WithAuth(name string, args ...string) ServerOption { return func(o *ServerOptions) { if auth, ok := auth.GetAuth(name); ok { auth.Init(args...) o.Auths = append(o.Auths, auth) } } } // WithServerTLSConfig sets the TLS configuration for the server. func WithServerTLSConfig(tc *tls.Config) ServerOption { return func(o *ServerOptions) { o.TLSConfig = tc } } // WithServerQuicConfig sets the QUIC configuration for the server. func WithServerQuicConfig(qc *quic.Config) ServerOption { return func(o *ServerOptions) { o.QuicConfig = qc } } // WithConn sets the connection for the server. func WithConn(conn net.PacketConn) ServerOption { return func(o *ServerOptions) { o.Conn = conn } }