mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-04-14 12:38:45 +00:00
fix(challenge/preact): ensure that the client waits as long as it needs to
Signed-off-by: Xe Iaso <me@xeiaso.net>
This commit is contained in:
@@ -34,8 +34,6 @@ const App = () => {
|
|||||||
setPassed(true);
|
setPassed(true);
|
||||||
}, state.difficulty * 100);
|
}, state.difficulty * 100);
|
||||||
|
|
||||||
console.log(challenge);
|
|
||||||
|
|
||||||
return () => clearTimeout(timer);
|
return () => clearTimeout(timer);
|
||||||
}, [challenge]);
|
}, [challenge]);
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/TecharoHQ/anubis"
|
"github.com/TecharoHQ/anubis"
|
||||||
"github.com/TecharoHQ/anubis/internal"
|
"github.com/TecharoHQ/anubis/internal"
|
||||||
@@ -56,6 +57,12 @@ func (i *impl) Issue(r *http.Request, lg *slog.Logger, in *challenge.IssueInput)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (i *impl) Validate(r *http.Request, lg *slog.Logger, in *challenge.ValidateInput) error {
|
func (i *impl) Validate(r *http.Request, lg *slog.Logger, in *challenge.ValidateInput) error {
|
||||||
|
wantTime := in.Challenge.IssuedAt.Add(time.Duration(in.Rule.Challenge.Difficulty) * 95 * time.Millisecond)
|
||||||
|
|
||||||
|
if time.Now().Before(wantTime) {
|
||||||
|
return challenge.NewError("validate", "insufficent time", fmt.Errorf("%w: wanted user to wait until at least %s", wantTime.Format(time.RFC3339)))
|
||||||
|
}
|
||||||
|
|
||||||
got := r.FormValue("result")
|
got := r.FormValue("result")
|
||||||
want := internal.SHA256sum(in.Challenge.RandomData)
|
want := internal.SHA256sum(in.Challenge.RandomData)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user