Skip to content

Commit

Permalink
Tweak email code to support self-initiation of Bootstrap OTP.
Browse files Browse the repository at this point in the history
  • Loading branch information
rgooch committed Jun 11, 2020
1 parent 61df6d2 commit c18a666
Showing 1 changed file with 23 additions and 23 deletions.
46 changes: 23 additions & 23 deletions cmd/keymasterd/email.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ import (

const emailAdminTemplateData = `
{{define "Bootstrap OTP Admin Email"}}
From: {{.AdminAddr}}
From: {{.InitiatorAddr}}
To: {{.AdminAddrs}}
Subject: Keymaster Bootstrap OTP generated for {{.Username}}
A Bootstrap OTP was generated by {{.AdminUser}} for user: {{.Username}}
A Bootstrap OTP was generated by {{.InitiatorUser}} for user: {{.Username}}
The OTP fingerprint is: {{printf "%x" .Fingerprint}}
Expand All @@ -28,7 +28,7 @@ The user profile may be viewed at: {{.HostIdentity}}/profile/{{.Username}}

const emailUserTemplateData = `
{{define "Bootstrap OTP User Email"}}
From: {{.AdminAddr}}
From: {{.InitiatorAddr}}
To: {{.UserAddr}}
Subject: Welcome to Keymaster
Expand All @@ -50,15 +50,15 @@ You have {{.Duration}} to complete this operation before this passcode expires.
const emailTimeout = time.Second * 15

type bootstrapOtpEmailData struct {
AdminAddrs string
AdminAddr string
AdminUser string
Duration time.Duration
Fingerprint [4]byte
HostIdentity string
OTP string
UserAddr string
Username string
AdminAddrs string
Duration time.Duration
Fingerprint [4]byte
HostIdentity string
InitiatorAddr string
InitiatorUser string
OTP string
UserAddr string
Username string
}

func (state *RuntimeState) initEmailDefaults() {
Expand All @@ -79,19 +79,19 @@ func (state *RuntimeState) setupEmail() error {
}

func (state *RuntimeState) sendBootstrapOtpEmail(hash []byte, OTP string,
duration time.Duration, adminUser, targetUser string) error {
duration time.Duration, initiatorUser, targetUser string) error {
emailData := bootstrapOtpEmailData{
AdminAddr: adminUser + "@" + state.Config.Email.Domain,
AdminUser: adminUser,
Duration: duration,
HostIdentity: state.Config.Base.HostIdentity,
OTP: OTP,
UserAddr: targetUser + "@" + state.Config.Email.Domain,
Username: targetUser,
Duration: duration,
HostIdentity: state.Config.Base.HostIdentity,
OTP: OTP,
InitiatorAddr: initiatorUser + "@" + state.Config.Email.Domain,
InitiatorUser: initiatorUser,
UserAddr: targetUser + "@" + state.Config.Email.Domain,
Username: targetUser,
}
copy(emailData.Fingerprint[:], hash[:4])
adminUsers := make(map[string]struct{})
adminUsers[adminUser] = struct{}{}
adminUsers[initiatorUser] = struct{}{}
for _, user := range state.Config.Base.AdminUsers {
adminUsers[user] = struct{}{}
}
Expand Down Expand Up @@ -120,7 +120,7 @@ func (state *RuntimeState) sendBootstrapOtpEmail(hash []byte, OTP string,
if err != nil {
return err
}
err = state.sendMail(emailData.AdminAddr, adminAddrs, buffer.Bytes(),
err = state.sendMail(emailData.InitiatorAddr, adminAddrs, buffer.Bytes(),
emailTimeout)
if err != nil {
return err
Expand All @@ -131,7 +131,7 @@ func (state *RuntimeState) sendBootstrapOtpEmail(hash []byte, OTP string,
if err != nil {
return err
}
err = state.sendMail(emailData.AdminAddr, []string{emailData.UserAddr},
err = state.sendMail(emailData.InitiatorAddr, []string{emailData.UserAddr},
buffer.Bytes(), emailTimeout)
if err != nil {
return err
Expand Down

0 comments on commit c18a666

Please sign in to comment.