Add the ability to hook into server

This commit is contained in:
James Rouzier 2024-01-08 20:47:06 +00:00
parent 3de177432c
commit 1831141deb
2 changed files with 9 additions and 1 deletions

View file

@ -32,6 +32,7 @@ type Config struct {
Reverse bool
KeepAlive time.Duration
TLS TLSConfig
HTTPHook http.Handler
}
// Server respresent a chisel service
@ -45,6 +46,7 @@ type Server struct {
sessions *settings.Users
sshConfig *ssh.ServerConfig
users *settings.UserIndex
httpHook http.Handler
}
var upgrader = websocket.Upgrader{
@ -60,6 +62,7 @@ func NewServer(c *Config) (*Server, error) {
httpServer: cnet.NewHTTPServer(),
Logger: cio.NewLogger("server"),
sessions: settings.NewUsers(),
httpHook: c.HTTPHook,
}
server.Info = true
server.users = settings.NewUserIndex(server.Logger)

View file

@ -19,7 +19,7 @@ func (s *Server) handleClientHandler(w http.ResponseWriter, r *http.Request) {
//websockets upgrade AND has chisel prefix
upgrade := strings.ToLower(r.Header.Get("Upgrade"))
protocol := r.Header.Get("Sec-WebSocket-Protocol")
if upgrade == "websocket" {
if upgrade == "websocket" {
if protocol == chshare.ProtocolVersion {
s.handleWebsocket(w, r)
return
@ -42,6 +42,11 @@ func (s *Server) handleClientHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(chshare.BuildVersion))
return
}
if s.httpHook != nil {
s.httpHook.ServeHTTP(w, r)
return
}
//missing :O
w.WriteHeader(404)
w.Write([]byte("Not found"))