add websocket stub

pull/1/head
Adam Veldhousen 3 years ago
parent 2ebe43e886
commit 943da8807b
Signed by: adam
GPG Key ID: 6DB29003C6DD1E4B

@ -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);

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

@ -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…
Cancel
Save