pico
created pr with
35.1
added 35.2
1: 77aaa29 ! 1: 8d56535 reactor(metric-drain): use caddy json format
-: ------- > 2: a336041 wip
-: ------- > 3: 7ae45b3 chore: wrap
-: ------- > 4: bfa5c4f done
added 35.3
1: 8d56535 < -: ------- reactor(metric-drain): use caddy json format
-: ------- > 1: c7eeb12 reactor(metric-drain): use caddy access logs
2: a336041 < -: ------- wip
3: 7ae45b3 < -: ------- chore: wrap
4: bfa5c4f < -: ------- done
added 35.4
1: c7eeb12 ! 1: 4e0839a reactor(metric-drain): use caddy access logs
changed status to
accepted
cmds
checkout latest patchset:
ssh pr.pico.sh print 35 | git am -3checkout any patchset in a patch request:
ssh pr.pico.sh print 35.[rev] | git am -3add changes to patch request:
git format-patch main --stdout | ssh pr.pico.sh pr add 35set PR to open (enables RSS notifications):
ssh pr.pico.sh pr open 35set PR to draft (stops RSS notifications):
ssh pr.pico.sh pr draft 35
+8
-7
auth/api.go
#
| ... | ... | @@ -589,7 +589,7 @@ type AccessLogReq struct { | |
| 589 | 589 | Uri string `json:"uri"` | |
| 590 | 590 | Headers struct { | |
| 591 | 591 | UserAgent []string `json:"User-Agent"` | |
| 592 | - | Referer string `json:"Referer"` | |
| 592 | + | Referer []string `json:"Referer"` | |
| 593 | 593 | } `json:"headers"` | |
| 594 | 594 | Tls struct { | |
| 595 | 595 | ServerName string `json:"server_name"` |
| ... | ... | @@ -658,7 +658,7 @@ func deserializeCaddyAccessLog(dbpool db.DB, access *CaddyAccessLog) (*db.Analyt | |
| 658 | 658 | Path: path, | |
| 659 | 659 | IpAddress: access.Request.ClientIP, | |
| 660 | 660 | UserAgent: strings.Join(access.Request.Headers.UserAgent, " "), | |
| 661 | - | Referer: access.Request.Headers.Referer, // TODO: I don't see referer in the access log | |
| 661 | + | Referer: strings.Join(access.Request.Headers.Referer, " "), | |
| 662 | 662 | Status: access.Status, | |
| 663 | 663 | }, nil | |
| 664 | 664 | } |
| ... | ... | @@ -699,7 +699,7 @@ func containerDrainSub(ctx context.Context, dbpool db.DB, logger *slog.Logger) { | |
| 699 | 699 | clean := strings.TrimSpace(line) | |
| 700 | 700 | visit, err := accessLogToVisit(dbpool, clean) | |
| 701 | 701 | if err != nil { | |
| 702 | - | logger.Error("could not convert access log to a visit", "err", err) | |
| 702 | + | logger.Debug("could not convert access log to a visit", "err", err) | |
| 703 | 703 | continue | |
| 704 | 704 | } | |
| 705 | 705 | jso, err := json.Marshal(visit) |
| ... | ... | @@ -736,12 +736,13 @@ func metricDrainSub(ctx context.Context, dbpool db.DB, logger *slog.Logger, secr | |
| 736 | 736 | scanner := bufio.NewScanner(drain) | |
| 737 | 737 | for scanner.Scan() { | |
| 738 | 738 | line := scanner.Text() | |
| 739 | - | visit, err := accessLogToVisit(dbpool, line) | |
| 739 | + | visit := db.AnalyticsVisits{} | |
| 740 | + | err := json.Unmarshal([]byte(line), &visit) | |
| 740 | 741 | if err != nil { | |
| 741 | - | logger.Error("could not convert access log to a visit", "err", err) | |
| 742 | + | logger.Info("could not unmarshal json", "err", err, "line", line) | |
| 742 | 743 | continue | |
| 743 | 744 | } | |
| 744 | - | err = shared.AnalyticsVisitFromVisit(visit, dbpool, secret) | |
| 745 | + | err = shared.AnalyticsVisitFromVisit(&visit, dbpool, secret) | |
| 745 | 746 | if err != nil { | |
| 746 | 747 | if !errors.Is(err, shared.ErrAnalyticsDisabled) { | |
| 747 | 748 | logger.Info("could not record analytics visit", "reason", err) |
| ... | ... | @@ -749,7 +750,7 @@ func metricDrainSub(ctx context.Context, dbpool db.DB, logger *slog.Logger, secr | |
| 749 | 750 | } | |
| 750 | 751 | ||
| 751 | 752 | logger.Info("inserting visit", "visit", visit) | |
| 752 | - | err = dbpool.InsertVisit(visit) | |
| 753 | + | err = dbpool.InsertVisit(&visit) | |
| 753 | 754 | if err != nil { | |
| 754 | 755 | logger.Error("could not insert visit record", "err", err) | |
| 755 | 756 | } |