Moved creation of URLs to net.URL instances to handle custom paths and parameters. Fixes #969

pull/1003/head
Jordan Wright 2018-02-22 22:10:50 -06:00
parent 29555085c0
commit 3d58d8362e
No known key found for this signature in database
GPG Key ID: 138D5AD2331B3C11
1 changed files with 16 additions and 4 deletions

View File

@ -9,6 +9,8 @@ import (
"io"
"math"
"net/mail"
"net/url"
"path"
"strings"
"text/template"
"time"
@ -213,10 +215,20 @@ func (m *MailLog) Generate(msg *gomail.Message) error {
fn = f.Address
}
msg.SetAddressHeader("From", f.Address, f.Name)
url, err := buildTemplate(c.URL, r)
campaignURL, err := buildTemplate(c.URL, r)
if err != nil {
return err
}
phishURL, _ := url.Parse(campaignURL)
q := phishURL.Query()
q.Set("rid", r.RId)
phishURL.RawQuery = q.Encode()
trackingURL, _ := url.Parse(campaignURL)
trackingURL.Path = path.Join(trackingURL.Path, "/track")
trackingURL.RawQuery = q.Encode()
td := struct {
Result
URL string
@ -225,9 +237,9 @@ func (m *MailLog) Generate(msg *gomail.Message) error {
From string
}{
r,
url + "?rid=" + r.RId,
url + "/track?rid=" + r.RId,
"<img alt='' style='display: none' src='" + url + "/track?rid=" + r.RId + "'/>",
phishURL.String(),
trackingURL.String(),
"<img alt='' style='display: none' src='" + trackingURL.String() + "'/>",
fn,
}