Reorganize packages
This commit is contained in:
67
honeypot/ssh/conn.go
Normal file
67
honeypot/ssh/conn.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package ssh
|
||||
|
||||
import (
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/fujiwara/shapeio"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type throttledConn struct {
|
||||
ID uuid.UUID
|
||||
conn net.Conn
|
||||
writer *shapeio.Writer
|
||||
reader *shapeio.Reader
|
||||
CloseCallback func(c *throttledConn)
|
||||
}
|
||||
|
||||
func newThrottledConn(conn net.Conn) *throttledConn {
|
||||
id := uuid.Must(uuid.NewRandom())
|
||||
return &throttledConn{
|
||||
ID: id,
|
||||
conn: conn,
|
||||
writer: shapeio.NewWriter(conn),
|
||||
reader: shapeio.NewReader(conn),
|
||||
}
|
||||
}
|
||||
|
||||
func (sc *throttledConn) SetSpeed(bytesPerSec float64) {
|
||||
sc.writer.SetRateLimit(bytesPerSec)
|
||||
sc.reader.SetRateLimit(bytesPerSec)
|
||||
}
|
||||
|
||||
func (sc *throttledConn) Read(b []byte) (n int, err error) {
|
||||
return sc.reader.Read(b)
|
||||
}
|
||||
|
||||
func (sc *throttledConn) Write(b []byte) (n int, err error) {
|
||||
return sc.writer.Write(b)
|
||||
}
|
||||
|
||||
func (sc *throttledConn) Close() error {
|
||||
if sc.CloseCallback != nil {
|
||||
sc.CloseCallback(sc)
|
||||
}
|
||||
return sc.conn.Close()
|
||||
}
|
||||
|
||||
func (sc *throttledConn) LocalAddr() net.Addr {
|
||||
return sc.conn.LocalAddr()
|
||||
}
|
||||
|
||||
func (sc *throttledConn) RemoteAddr() net.Addr {
|
||||
return sc.conn.RemoteAddr()
|
||||
}
|
||||
|
||||
func (sc *throttledConn) SetDeadline(t time.Time) error {
|
||||
return sc.conn.SetDeadline(t)
|
||||
}
|
||||
|
||||
func (sc *throttledConn) SetReadDeadline(t time.Time) error {
|
||||
return sc.conn.SetReadDeadline(t)
|
||||
}
|
||||
|
||||
func (sc *throttledConn) SetWriteDeadline(t time.Time) error {
|
||||
return sc.conn.SetWriteDeadline(t)
|
||||
}
|
Reference in New Issue
Block a user