Files
authentik/internal/outpost/radius/eap/tls/conn.go
Jens Langhammer a71532b3e3 refactor more
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
2025-07-01 22:42:55 +02:00

67 lines
1.6 KiB
Go

package tls
import (
"bytes"
"net"
"time"
log "github.com/sirupsen/logrus"
)
type TLSConnection struct {
reader *bytes.Buffer
writer *bytes.Buffer
}
func NewTLSConnection(initialData []byte) TLSConnection {
c := TLSConnection{
reader: bytes.NewBuffer(initialData),
writer: bytes.NewBuffer([]byte{}),
}
return c
}
func (conn TLSConnection) GetData() []byte {
for {
b := conn.writer.Bytes()
if len(b) < 1 {
log.Debug("TLS(buffer): Attempted retrieve from empty buffer, stalling...")
time.Sleep(1 * time.Second)
continue
}
return b
}
}
func (conn TLSConnection) UpdateData(data []byte) {
conn.reader.Reset()
conn.reader.Write(data)
}
// ----
func (conn TLSConnection) Read(p []byte) (int, error) {
log.Debugf("TLS(buffer): Read: %d from %d", len(p), conn.reader.Len())
for {
n, err := conn.reader.Read(p)
if n == 0 {
log.Debug("TLS(buffer): Attempted read from empty buffer, stalling...")
time.Sleep(1 * time.Second)
continue
}
return n, err
}
}
func (conn TLSConnection) Write(p []byte) (int, error) {
log.Debugf("TLS(buffer): Write: %d", len(p))
return conn.writer.Write(p)
}
func (conn TLSConnection) Close() error { return nil }
func (conn TLSConnection) LocalAddr() net.Addr { return nil }
func (conn TLSConnection) RemoteAddr() net.Addr { return nil }
func (conn TLSConnection) SetDeadline(t time.Time) error { return nil }
func (conn TLSConnection) SetReadDeadline(t time.Time) error { return nil }
func (conn TLSConnection) SetWriteDeadline(t time.Time) error { return nil }