add websocket stub
parent
2ebe43e886
commit
943da8807b
|
|
@ -19,7 +19,6 @@
|
|||
import Recursors from "./routes/Recursors.svelte";
|
||||
|
||||
export let url = "";
|
||||
|
||||
interface NavLink {
|
||||
label: string;
|
||||
to: string;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
onMount(async () => {
|
||||
try {
|
||||
const { payload } = await getRules();
|
||||
console.log(payload);
|
||||
rows = payload || [];
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
|
|
|||
1
go.mod
1
go.mod
|
|
@ -6,6 +6,7 @@ require (
|
|||
github.com/go-chi/chi v1.5.4
|
||||
github.com/go-chi/chi/v5 v5.0.2
|
||||
github.com/go-chi/cors v1.2.0
|
||||
github.com/gorilla/websocket v1.4.2
|
||||
github.com/mattn/go-sqlite3 v1.14.7
|
||||
github.com/miekg/dns v1.1.41
|
||||
)
|
||||
|
|
|
|||
2
go.sum
2
go.sum
|
|
@ -4,6 +4,8 @@ github.com/go-chi/chi/v5 v5.0.2 h1:4xKeALZdMEsuI5s05PU2Bm89Uc5iM04qFubUCl5LfAQ=
|
|||
github.com/go-chi/chi/v5 v5.0.2/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
||||
github.com/go-chi/cors v1.2.0 h1:tV1g1XENQ8ku4Bq3K9ub2AtgG+p16SmzeMSGTwrOKdE=
|
||||
github.com/go-chi/cors v1.2.0/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
|
||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA=
|
||||
github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY=
|
||||
|
|
|
|||
|
|
@ -12,8 +12,14 @@ import (
|
|||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-chi/chi/v5/middleware"
|
||||
"github.com/go-chi/cors"
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
var upgrader = websocket.Upgrader{
|
||||
EnableCompression: true,
|
||||
HandshakeTimeout: time.Second * 2,
|
||||
}
|
||||
|
||||
type adminHandler struct {
|
||||
Cache
|
||||
Storage
|
||||
|
|
@ -50,9 +56,11 @@ func NewAdminHandler(c Cache, s Storage, re *RuleEngine) http.Handler {
|
|||
handler.Route("/api/v1", func(r chi.Router) {
|
||||
r.Get("/metrics/log", RestHandler(a.getLog).ToHF())
|
||||
r.Get("/metrics/stats", RestHandler(a.getStats).ToHF())
|
||||
|
||||
r.Get("/rules", RestHandler(a.getRules).ToHF())
|
||||
r.Put("/rules", RestHandler(a.createRule).ToHF())
|
||||
r.Delete("/rules/{id:[0-9]+}", RestHandler(a.deleteRule).ToHF())
|
||||
|
||||
r.Get("/recursors", RestHandler(a.getRecursors).ToHF())
|
||||
r.Put("/recursors", RestHandler(a.addRecursor).ToHF())
|
||||
// r.Put("/rules/lists", a.addRulelist)
|
||||
|
|
@ -63,6 +71,7 @@ func NewAdminHandler(c Cache, s Storage, re *RuleEngine) http.Handler {
|
|||
// r.Delete("/cache/purgeall", RestHandler(a.purgeAll).ToHF())
|
||||
// r.Delete("/cache/purge", a.purgeKey)
|
||||
// r.Get("/cache", a.getCacheContents)
|
||||
r.HandleFunc("/signal", a.signal)
|
||||
})
|
||||
|
||||
return a
|
||||
|
|
@ -73,6 +82,18 @@ func (a *adminHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
a.h.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
func (a *adminHandler) signal(w http.ResponseWriter, r *http.Request) {
|
||||
c, err := upgrader.Upgrade(w, r, nil)
|
||||
if err != nil {
|
||||
log.Print("could not upgrade to a websocket:", err)
|
||||
return
|
||||
}
|
||||
|
||||
defer c.Close()
|
||||
for {
|
||||
// send any updates that come through to the client
|
||||
}
|
||||
}
|
||||
func (a *adminHandler) addRecursor(r *http.Request) (*RestResponse, error) {
|
||||
var recursorHttpInput RecursorRow
|
||||
|
||||
|
|
|
|||
|
|
@ -83,18 +83,15 @@ func (rr RecursorRow) ValidIp() (net.IP, int, bool) {
|
|||
return nil, -1, false
|
||||
}
|
||||
|
||||
var err error
|
||||
var parsedIp net.IP
|
||||
parsedPort := -1
|
||||
parsedPort := 53
|
||||
|
||||
if parsedIp = net.ParseIP(ipAddrFrags[0]); parsedIp == nil {
|
||||
return nil, -1, false
|
||||
}
|
||||
|
||||
if len(ipAddrFrags) > 1 {
|
||||
if parsedPort, err = strconv.Atoi(ipAddrFrags[1]); err != nil {
|
||||
return parsedIp, -1, false
|
||||
}
|
||||
parsedPort, _ = strconv.Atoi(ipAddrFrags[1])
|
||||
}
|
||||
|
||||
return parsedIp, parsedPort, true
|
||||
|
|
|
|||
Loading…
Reference in New Issue