mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-05-08 06:42:41 +08:00
- Added `protocol_multiplexer.go`, enabling support for both HTTP and Redis protocols on a single listener. - Introduced `redis_queue_protocol.go` to handle Redis-compatible RESP commands for queue management. - Integrated `redisqueue` package, supporting in-memory queuing with expiration pruning. - Updated server initialization to manage a shared listener and multiplex connections. - Adjusted `Handler` to adopt `AuthenticateManagementKey` for modular key validation, supporting both HTTP and Redis flows.
33 lines
573 B
Go
33 lines
573 B
Go
package api
|
|
|
|
import (
|
|
"bufio"
|
|
"crypto/tls"
|
|
"net"
|
|
)
|
|
|
|
type bufferedConn struct {
|
|
net.Conn
|
|
reader *bufio.Reader
|
|
}
|
|
|
|
func (c *bufferedConn) Read(p []byte) (int, error) {
|
|
if c == nil {
|
|
return 0, net.ErrClosed
|
|
}
|
|
if c.reader == nil {
|
|
return c.Conn.Read(p)
|
|
}
|
|
return c.reader.Read(p)
|
|
}
|
|
|
|
func (c *bufferedConn) ConnectionState() tls.ConnectionState {
|
|
if c == nil || c.Conn == nil {
|
|
return tls.ConnectionState{}
|
|
}
|
|
if stater, ok := c.Conn.(interface{ ConnectionState() tls.ConnectionState }); ok {
|
|
return stater.ConnectionState()
|
|
}
|
|
return tls.ConnectionState{}
|
|
}
|