...

Source file src/golang.conradwood.net/go-easyops/client/connect.go

Documentation: golang.conradwood.net/go-easyops/client

     1  package client
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"golang.conradwood.net/go-easyops/cmdline"
     7  	"golang.conradwood.net/go-easyops/standalone"
     8  	"net"
     9  	"strings"
    10  )
    11  
    12  const (
    13  	DIRECT_PREFIX = "direct://"
    14  	PROXY_PREFIX  = "proxy://"
    15  )
    16  
    17  // this is called by grpc to get a connection
    18  func CustomDialer(ctx context.Context, name string) (net.Conn, error) {
    19  	if cmdline.IsStandalone() {
    20  		return standalone.DialService(ctx, name)
    21  	}
    22  
    23  	if *dialer_debug {
    24  		fmt.Printf("[go-easyops] custom dialling \"%s\"\n", name)
    25  	}
    26  	t := name
    27  	if strings.HasPrefix(name, PROXY_PREFIX) {
    28  		sid := t[len(PROXY_PREFIX):]
    29  		pt, err := GetProxyTarget(ctx, sid)
    30  		if err != nil {
    31  			return nil, err
    32  		}
    33  		if pt == nil {
    34  			return nil, fmt.Errorf("no such proxy service: \"%s\"", name)
    35  		}
    36  		return pt.tcpConn, nil
    37  	}
    38  	if strings.HasPrefix(name, DIRECT_PREFIX) {
    39  		t = t[len(DIRECT_PREFIX):]
    40  	}
    41  	if *dialer_debug {
    42  		fmt.Printf("Dialing: %s (%s)\n", name, t)
    43  	}
    44  	return (&net.Dialer{}).DialContext(ctx, "tcp", t)
    45  }
    46  

View as plain text