update for go1.18

This commit is contained in:
ginuerzh
2022-02-25 13:08:05 +08:00
parent 9db7137cd3
commit 0aee4f0ebd
13 changed files with 262 additions and 78 deletions

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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 {

View File

@ -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()
}

View File

@ -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
View 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()
}