aboutsummaryrefslogtreecommitdiff
path: root/referrer.go
diff options
context:
space:
mode:
authorFelix Hanley <felix@userspace.com.au>2020-05-12 07:00:36 +0000
committerFelix Hanley <felix@userspace.com.au>2020-05-12 07:00:36 +0000
commit848d1aa993e5bd25dd26eed67e6f7144f58ac198 (patch)
tree949afef2171793d06f9c96322f96bdc13f092d78 /referrer.go
parentf39a00443e2785862ec2042e00b7bbf42044227d (diff)
downloadsws-848d1aa993e5bd25dd26eed67e6f7144f58ac198.tar.gz
sws-848d1aa993e5bd25dd26eed67e6f7144f58ac198.tar.bz2
Fix referrer handlingHEADmaster
Diffstat (limited to 'referrer.go')
-rw-r--r--referrer.go45
1 files changed, 24 insertions, 21 deletions
diff --git a/referrer.go b/referrer.go
index cbb1198..521e7e3 100644
--- a/referrer.go
+++ b/referrer.go
@@ -3,48 +3,51 @@ package sws
import (
"net/url"
"sort"
- "strings"
"time"
)
type Referrer struct {
Name string `json:"name"`
+ URL string `json:"url"`
LastSeenAt time.Time `json:"last_seen_at" db:"last_seen_at"`
hitSet *HitSet
}
type ReferrerSet []*Referrer
-func NewReferrerSet(hs *HitSet) *ReferrerSet {
+func NewReferrerSet(hs *HitSet, site Site) *ReferrerSet {
tmp := make(map[string]*Referrer)
for _, h := range hs.Hits() {
- if h.Referrer == nil {
- continue
- }
+ host := "direct"
+ u := ""
- u, err := url.Parse(*h.Referrer)
- if err != nil || h.Host == u.Host {
- continue
+ if h.Referrer != nil {
+ if r, err := url.Parse(*h.Referrer); err == nil {
+ host = r.Host
+ }
+ u = *h.Referrer
}
- host := u.Host
- if u.Host == "" {
- host = "direct"
+ // Check for internal referrer
+ if site.IncludesDomain(host) {
+ //host = "internal"
+ continue
}
- r := &Referrer{
- Name: host,
- LastSeenAt: h.CreatedAt,
+ tmp[host] = &Referrer{
+ Name: host,
+ URL: u,
hitSet: hs.Filter(func(t *Hit) bool {
- if t.Referrer == nil {
+ if h.Referrer == nil && t.Referrer == nil {
+ return true
+ }
+ if h.Referrer == nil && t.Referrer != nil {
+ return false
+ }
+ if h.Referrer != nil && t.Referrer == nil {
return false
}
- return strings.Contains(*t.Referrer, u.Host)
+ return *t.Referrer == *t.Referrer
}),
}
- // if b.LastSeenAt.Before(h.CreatedAt) {
- // b.LastSeenAt = h.CreatedAt
- // }
- //b.hitSet.Add(h)
- tmp[u.Host] = r
}
if len(tmp) < 1 {
return nil