1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package server
- import (
- "crypto/tls"
- "net"
- "time"
- "github.com/coreos/etcd/log"
- )
- const (
- DefaultReadTimeout = float64((5 * time.Minute) / time.Second)
- DefaultWriteTimeout = float64((5 * time.Minute) / time.Second)
- )
- // TLSServerConfig generates tls configuration based on TLSInfo
- // If any error happens, this function will call log.Fatal
- func TLSServerConfig(info *TLSInfo) *tls.Config {
- if info.KeyFile == "" || info.CertFile == "" {
- return nil
- }
- cfg, err := info.ServerConfig()
- if err != nil {
- log.Fatal("TLS info error: ", err)
- }
- return cfg
- }
- // NewListener creates a net.Listener
- // If the given scheme is "https", it will use TLS config to set listener.
- // If any error happens, this function will call log.Fatal
- func NewListener(scheme, addr string, cfg *tls.Config) net.Listener {
- if scheme == "https" {
- l, err := newTLSListener(addr, cfg)
- if err != nil {
- log.Fatal("Failed to create TLS listener: ", err)
- }
- return l
- }
- l, err := newListener(addr)
- if err != nil {
- log.Fatal("Failed to create listener: ", err)
- }
- return l
- }
- func newListener(addr string) (net.Listener, error) {
- if addr == "" {
- addr = ":http"
- }
- l, e := net.Listen("tcp", addr)
- if e != nil {
- return nil, e
- }
- return l, nil
- }
- func newTLSListener(addr string, cfg *tls.Config) (net.Listener, error) {
- if addr == "" {
- addr = ":https"
- }
- conn, err := net.Listen("tcp", addr)
- if err != nil {
- return nil, err
- }
- return tls.NewListener(conn, cfg), nil
- }
|