Allow access to manholes in pineconesim

This commit is contained in:
Neil Alexander 2022-03-30 14:54:10 +01:00
parent fb51a311e4
commit f83fe8f8ab
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
3 changed files with 21 additions and 0 deletions

View file

@ -255,6 +255,16 @@ func configureHTTPRouting(log *log.Logger, sim *simulator.Simulator) {
log.Printf("WebSocket peer %q connected to sim node %q\n", c.RemoteAddr(), nodeID)
})
http.DefaultServeMux.HandleFunc("/manhole", func(w http.ResponseWriter, r *http.Request) {
nodeID := r.URL.Query().Get("node")
node := sim.Node(nodeID)
if node == nil {
w.WriteHeader(404)
return
}
node.SimRouter.ManholeHandler(w, r)
})
http.DefaultServeMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
_ = template.Must(template.ParseFiles("./cmd/pineconesim/page.html")).Execute(w, "")
})

View file

@ -19,6 +19,7 @@ import (
"crypto/ed25519"
"log"
"net"
"net/http"
"time"
"github.com/matrix-org/pinecone/router"
@ -150,6 +151,10 @@ func (a *AdversaryRouter) ConfigureFilterPeer(peer types.PublicKey, rates DropRa
a.dropSettings.peers[peer] = rates
}
func (a *AdversaryRouter) ManholeHandler(w http.ResponseWriter, req *http.Request) {
a.rtr.ManholeHandler(w, req)
}
func (a *AdversaryRouter) updatePacketCounts(from types.PublicKey, frameType types.FrameType) {
a.packetsRx.overall.Inc()
a.packetsRx.peers[from].overall.Inc()

View file

@ -17,6 +17,7 @@ package simulator
import (
"context"
"net"
"net/http"
"time"
"github.com/matrix-org/pinecone/cmd/pineconesim/simulator/adversary"
@ -33,6 +34,7 @@ type SimRouter interface {
Coords() types.Coordinates
ConfigureFilterDefaults(rates adversary.DropRates)
ConfigureFilterPeer(peer types.PublicKey, rates adversary.DropRates)
ManholeHandler(w http.ResponseWriter, req *http.Request)
}
type DefaultRouter struct {
@ -62,3 +64,7 @@ func (r *DefaultRouter) Coords() types.Coordinates {
func (r *DefaultRouter) ConfigureFilterDefaults(rates adversary.DropRates) {}
func (r *DefaultRouter) ConfigureFilterPeer(peer types.PublicKey, rates adversary.DropRates) {}
func (r *DefaultRouter) ManholeHandler(w http.ResponseWriter, req *http.Request) {
r.rtr.ManholeHandler(w, req)
}