package qbit import ( "context" "crypto/subtle" "github.com/go-chi/chi/v5" "net/http" "strings" ) func (q *QBit) authMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { user, pass, ok := r.BasicAuth() if !ok { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } if subtle.ConstantTimeCompare([]byte(user), []byte(q.Username)) != 1 || subtle.ConstantTimeCompare([]byte(pass), []byte(q.Password)) != 1 { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } next.ServeHTTP(w, r) }) } func HashesCtx(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _hashes := chi.URLParam(r, "hashes") var hashes []string if _hashes != "" { hashes = strings.Split(_hashes, "|") } if hashes == nil { // Get hashes from form _ = r.ParseForm() hashes = r.Form["hashes"] } ctx := context.WithValue(r.Context(), "hashes", hashes) next.ServeHTTP(w, r.WithContext(ctx)) }) }