feat: tlsmiddlebox experiment (#817)

See https://github.com/ooni/probe/issues/2124
This commit is contained in:
DecFox 2022-09-08 21:01:03 +05:30 committed by GitHub
commit f2b88ddb4a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 1670 additions and 0 deletions

View file

@ -0,0 +1,45 @@
package tlsmiddlebox
//
// Custom TTL dialer
//
import (
"context"
"net"
"time"
"github.com/ooni/probe-cli/v3/internal/model"
"github.com/ooni/probe-cli/v3/internal/netxlite"
)
const timeout time.Duration = 15 * time.Second
func NewDialerTTLWrapper() model.Dialer {
return &dialerTTLWrapper{
Dialer: &net.Dialer{Timeout: timeout},
}
}
// dialerTTLWrapper wraps errors and also returns a TTL wrapped conn
type dialerTTLWrapper struct {
Dialer model.SimpleDialer
}
var _ model.Dialer = &dialerTTLWrapper{}
// DialContext implements model.Dialer.DialContext
func (d *dialerTTLWrapper) DialContext(ctx context.Context, network string, address string) (net.Conn, error) {
conn, err := d.Dialer.DialContext(ctx, network, address)
if err != nil {
return nil, netxlite.NewErrWrapper(netxlite.ClassifyGenericError, netxlite.ConnectOperation, err)
}
return &dialerTTLWrapperConn{
Conn: conn,
}, nil
}
// CloseIdleConnections implements model.Dialer.CloseIdleConnections
func (d *dialerTTLWrapper) CloseIdleConnections() {
// nothing to do here
}