mirror of
https://github.com/jpillora/chisel
synced 2024-10-18 16:02:19 +00:00
Add the ability to hook into server
This commit is contained in:
parent
3de177432c
commit
1831141deb
|
@ -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)
|
||||
|
|
|
@ -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"))
|
||||
|
|
Loading…
Reference in a new issue