Replaced legacy `*.orly` module imports with `next.orly.dev/pkg` paths across the codebase for consistency. Removed legacy `go.mod` files from sub-packages, consolidating dependency management. Added Dockerfiles and configurations for benchmarking environments.
56 lines
1.0 KiB
Go
56 lines
1.0 KiB
Go
package app
|
|
|
|
import (
|
|
"lol.mleku.dev/chk"
|
|
"lol.mleku.dev/log"
|
|
"next.orly.dev/pkg/encoders/envelopes/authenvelope"
|
|
"next.orly.dev/pkg/encoders/envelopes/okenvelope"
|
|
"next.orly.dev/pkg/protocol/auth"
|
|
)
|
|
|
|
func (l *Listener) HandleAuth(b []byte) (err error) {
|
|
var rem []byte
|
|
env := authenvelope.NewResponse()
|
|
if rem, err = env.Unmarshal(b); chk.E(err) {
|
|
return
|
|
}
|
|
defer func() {
|
|
if env != nil && env.Event != nil {
|
|
env.Event.Free()
|
|
}
|
|
}()
|
|
if len(rem) > 0 {
|
|
log.I.F("extra '%s'", rem)
|
|
}
|
|
var valid bool
|
|
if valid, err = auth.Validate(
|
|
env.Event, l.challenge.Load(),
|
|
l.ServiceURL(l.req),
|
|
); err != nil {
|
|
e := err.Error()
|
|
if err = Ok.Error(l, env, e); chk.E(err) {
|
|
return
|
|
}
|
|
return
|
|
} else if !valid {
|
|
if err = Ok.Error(
|
|
l, env, "auth response event is invalid",
|
|
); chk.E(err) {
|
|
return
|
|
}
|
|
return
|
|
} else {
|
|
if err = okenvelope.NewFrom(
|
|
env.Event.ID, true,
|
|
).Write(l); chk.E(err) {
|
|
return
|
|
}
|
|
log.D.F(
|
|
"%s authed to pubkey %0x", l.remote,
|
|
env.Event.Pubkey,
|
|
)
|
|
l.authedPubkey.Store(env.Event.Pubkey)
|
|
}
|
|
return
|
|
}
|