Add v2ray HTTP transport
This commit is contained in:
61
transport/v2rayhttp/conn.go
Normal file
61
transport/v2rayhttp/conn.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package v2rayhttp
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/sagernet/sing/common"
|
||||
)
|
||||
|
||||
type HTTPConn struct {
|
||||
reader io.Reader
|
||||
writer io.Writer
|
||||
}
|
||||
|
||||
func (c *HTTPConn) Read(b []byte) (n int, err error) {
|
||||
return c.reader.Read(b)
|
||||
}
|
||||
|
||||
func (c *HTTPConn) Write(b []byte) (n int, err error) {
|
||||
return c.writer.Write(b)
|
||||
}
|
||||
|
||||
func (c *HTTPConn) Close() error {
|
||||
return common.Close(c.reader, c.writer)
|
||||
}
|
||||
|
||||
func (c *HTTPConn) LocalAddr() net.Addr {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *HTTPConn) RemoteAddr() net.Addr {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *HTTPConn) SetDeadline(t time.Time) error {
|
||||
return os.ErrInvalid
|
||||
}
|
||||
|
||||
func (c *HTTPConn) SetReadDeadline(t time.Time) error {
|
||||
return os.ErrInvalid
|
||||
}
|
||||
|
||||
func (c *HTTPConn) SetWriteDeadline(t time.Time) error {
|
||||
return os.ErrInvalid
|
||||
}
|
||||
|
||||
type ServerHTTPConn struct {
|
||||
HTTPConn
|
||||
flusher http.Flusher
|
||||
}
|
||||
|
||||
func (c *ServerHTTPConn) Write(b []byte) (n int, err error) {
|
||||
n, err = c.writer.Write(b)
|
||||
if err == nil {
|
||||
c.flusher.Flush()
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user