update for go1.18
This commit is contained in:
@ -7,6 +7,7 @@ import (
|
||||
"github.com/gin-contrib/cors"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-gost/gost/pkg/auth"
|
||||
"github.com/go-gost/gost/pkg/service"
|
||||
)
|
||||
|
||||
type options struct {
|
||||
@ -35,12 +36,12 @@ func AutherOption(auther auth.Authenticator) Option {
|
||||
}
|
||||
}
|
||||
|
||||
type Server struct {
|
||||
type server struct {
|
||||
s *http.Server
|
||||
ln net.Listener
|
||||
}
|
||||
|
||||
func NewServer(addr string, opts ...Option) (*Server, error) {
|
||||
func NewService(addr string, opts ...Option) (service.Service, error) {
|
||||
ln, err := net.Listen("tcp", addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -77,7 +78,7 @@ func NewServer(addr string, opts ...Option) (*Server, error) {
|
||||
config.Use(mwBasicAuth(options.auther))
|
||||
registerConfig(config)
|
||||
|
||||
return &Server{
|
||||
return &server{
|
||||
s: &http.Server{
|
||||
Handler: r,
|
||||
},
|
||||
@ -85,15 +86,15 @@ func NewServer(addr string, opts ...Option) (*Server, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *Server) Serve() error {
|
||||
func (s *server) Serve() error {
|
||||
return s.s.Serve(s.ln)
|
||||
}
|
||||
|
||||
func (s *Server) Addr() net.Addr {
|
||||
func (s *server) Addr() net.Addr {
|
||||
return s.ln.Addr()
|
||||
}
|
||||
|
||||
func (s *Server) Close() error {
|
||||
func (s *server) Close() error {
|
||||
return s.s.Close()
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ func (session *Session) GetConn() (net.Conn, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &StreamConn{Conn: session.conn, stream: stream}, nil
|
||||
return &streamConn{Conn: session.conn, stream: stream}, nil
|
||||
}
|
||||
|
||||
func (session *Session) Accept() (net.Conn, error) {
|
||||
@ -46,7 +46,7 @@ func (session *Session) Accept() (net.Conn, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &StreamConn{Conn: session.conn, stream: stream}, nil
|
||||
return &streamConn{Conn: session.conn, stream: stream}, nil
|
||||
}
|
||||
|
||||
func (session *Session) Close() error {
|
||||
@ -67,19 +67,19 @@ func (session *Session) NumStreams() int {
|
||||
return session.session.NumStreams()
|
||||
}
|
||||
|
||||
type StreamConn struct {
|
||||
type streamConn struct {
|
||||
net.Conn
|
||||
stream *smux.Stream
|
||||
}
|
||||
|
||||
func (c *StreamConn) Read(b []byte) (n int, err error) {
|
||||
func (c *streamConn) Read(b []byte) (n int, err error) {
|
||||
return c.stream.Read(b)
|
||||
}
|
||||
|
||||
func (c *StreamConn) Write(b []byte) (n int, err error) {
|
||||
func (c *streamConn) Write(b []byte) (n int, err error) {
|
||||
return c.stream.Write(b)
|
||||
}
|
||||
|
||||
func (c *StreamConn) Close() error {
|
||||
func (c *streamConn) Close() error {
|
||||
return c.stream.Close()
|
||||
}
|
||||
|
@ -62,9 +62,8 @@ type APIConfig struct {
|
||||
}
|
||||
|
||||
type MetricsConfig struct {
|
||||
Enable bool `json:"enable"`
|
||||
Addr string `json:"addr"`
|
||||
Path string `json:"path"`
|
||||
Addr string `json:"addr"`
|
||||
Path string `json:"path"`
|
||||
}
|
||||
|
||||
type TLSConfig struct {
|
||||
|
@ -1,6 +1,4 @@
|
||||
// plain http tunnel
|
||||
|
||||
package pht
|
||||
package http3
|
||||
|
||||
import (
|
||||
"net"
|
||||
@ -18,7 +16,7 @@ func init() {
|
||||
registry.RegisterListener("h3", NewListener)
|
||||
}
|
||||
|
||||
type phtListener struct {
|
||||
type http3Listener struct {
|
||||
addr net.Addr
|
||||
server *pht_util.Server
|
||||
logger logger.Logger
|
||||
@ -31,13 +29,13 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
for _, opt := range opts {
|
||||
opt(&options)
|
||||
}
|
||||
return &phtListener{
|
||||
return &http3Listener{
|
||||
logger: options.Logger,
|
||||
options: options,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *phtListener) Init(md md.Metadata) (err error) {
|
||||
func (l *http3Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
@ -65,14 +63,14 @@ func (l *phtListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (l *phtListener) Accept() (conn net.Conn, err error) {
|
||||
func (l *http3Listener) Accept() (conn net.Conn, err error) {
|
||||
return l.server.Accept()
|
||||
}
|
||||
|
||||
func (l *phtListener) Addr() net.Addr {
|
||||
func (l *http3Listener) Addr() net.Addr {
|
||||
return l.addr
|
||||
}
|
||||
|
||||
func (l *phtListener) Close() (err error) {
|
||||
func (l *http3Listener) Close() (err error) {
|
||||
return l.server.Close()
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package pht
|
||||
package http3
|
||||
|
||||
import (
|
||||
"strings"
|
||||
@ -20,7 +20,7 @@ type metadata struct {
|
||||
backlog int
|
||||
}
|
||||
|
||||
func (l *phtListener) parseMetadata(md mdata.Metadata) (err error) {
|
||||
func (l *http3Listener) parseMetadata(md mdata.Metadata) (err error) {
|
||||
const (
|
||||
authorizePath = "authorizePath"
|
||||
pushPath = "pushPath"
|
||||
|
66
pkg/metrics/service.go
Normal file
66
pkg/metrics/service.go
Normal file
@ -0,0 +1,66 @@
|
||||
package metrics
|
||||
|
||||
import (
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"github.com/go-gost/gost/pkg/service"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
)
|
||||
|
||||
const (
|
||||
DefaultPath = "/metrics"
|
||||
)
|
||||
|
||||
type options struct {
|
||||
path string
|
||||
}
|
||||
|
||||
type Option func(*options)
|
||||
|
||||
func PathOption(path string) Option {
|
||||
return func(o *options) {
|
||||
o.path = path
|
||||
}
|
||||
}
|
||||
|
||||
type server struct {
|
||||
s *http.Server
|
||||
ln net.Listener
|
||||
}
|
||||
|
||||
func NewService(addr string, opts ...Option) (service.Service, error) {
|
||||
ln, err := net.Listen("tcp", addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var options options
|
||||
for _, opt := range opts {
|
||||
opt(&options)
|
||||
}
|
||||
if options.path == "" {
|
||||
options.path = DefaultPath
|
||||
}
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.Handle(options.path, promhttp.Handler())
|
||||
return &server{
|
||||
s: &http.Server{
|
||||
Handler: mux,
|
||||
},
|
||||
ln: ln,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *server) Serve() error {
|
||||
return s.s.Serve(s.ln)
|
||||
}
|
||||
|
||||
func (s *server) Addr() net.Addr {
|
||||
return s.ln.Addr()
|
||||
}
|
||||
|
||||
func (s *server) Close() error {
|
||||
return s.s.Close()
|
||||
}
|
Reference in New Issue
Block a user