summaryrefslogtreecommitdiff
path: root/pkg/server/module/auth.go
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2020-02-26 02:38:02 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2020-02-26 02:38:57 +0300
commite6631acaa5af979d87645d74997955a1304cd648 (patch)
treeba1a13102d437bc908a7c32ce604a802d5098868 /pkg/server/module/auth.go
parentd6b87d6ad43219bf5b9cdfef50697e1b066dc4ea (diff)
[server] prepare module.Open to return error
Diffstat (limited to 'pkg/server/module/auth.go')
-rw-r--r--pkg/server/module/auth.go30
1 files changed, 12 insertions, 18 deletions
diff --git a/pkg/server/module/auth.go b/pkg/server/module/auth.go
index d269bf6..de58e82 100644
--- a/pkg/server/module/auth.go
+++ b/pkg/server/module/auth.go
@@ -47,12 +47,6 @@ func (a *auth) generateChallenge() error {
return nil
}
-func (a *auth) sendChallenge(q queue.Q) bool {
- enc := netstring.NewEncoder(q.Writer())
- enc.Encode(a.challenge.self)
- return a.wait(a.recvChallenge)
-}
-
func (a *auth) getHash(c string) string {
h := md5.New()
@@ -62,13 +56,7 @@ func (a *auth) getHash(c string) string {
return string(h.Sum(nil))
}
-func (a *auth) sendHash(q queue.Q) bool {
- enc := netstring.NewEncoder(q.Writer())
- enc.Encode(a.getHash(a.challenge.peer))
- return a.wait(a.recvHash)
-}
-
-func (a *auth) wait(c chan struct{}) bool {
+func (a *auth) isReady(c chan struct{}) bool {
select {
case <-a.fail:
return false
@@ -78,11 +66,15 @@ func (a *auth) wait(c chan struct{}) bool {
}
func (a *auth) Send(rq, wq queue.Q) error {
+ e := netstring.NewEncoder(wq.Writer())
+
if err := a.generateChallenge(); err != nil {
return err
}
- if !a.sendChallenge(wq) {
+ e.Encode(a.challenge.self)
+
+ if !a.isReady(a.recvChallenge) {
return nil
}
@@ -90,7 +82,9 @@ func (a *auth) Send(rq, wq queue.Q) error {
return errDupChallenge
}
- if !a.sendHash(wq) {
+ e.Encode(a.getHash(a.challenge.peer))
+
+ if !a.isReady(a.recvHash) {
return nil
}
@@ -122,7 +116,7 @@ func (a *auth) Recv(rq, wq queue.Q) (err error) {
close(a.recvHash)
- if !a.wait(a.ok) {
+ if !a.isReady(a.ok) {
return nil
}
@@ -141,7 +135,7 @@ func getAuthSecret(env env.Env) string {
return env.Get("secret")
}
-func (m authModule) Open(env env.Env) (Pipe, Pipe) {
+func (m authModule) Open(env env.Env) (interface{}, error) {
a := &auth{
secret: getAuthSecret(env),
recvChallenge: make(chan struct{}),
@@ -149,7 +143,7 @@ func (m authModule) Open(env env.Env) (Pipe, Pipe) {
fail: make(chan struct{}),
ok: make(chan struct{}),
}
- return a.Send, a.Recv
+ return a, nil
}
func init() {