• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mendersoftware / mender-server / 1978029483

11 Aug 2025 02:15PM UTC coverage: 65.755% (+0.3%) from 65.495%
1978029483

Pull #860

gitlab-ci

kjaskiewiczz
docs(useradm): move API specification to single file

Changelog: Title
Ticket: QA-1094
Signed-off-by: Krzysztof Jaskiewicz <krzysztof.jaskiewicz@northern.tech>
Pull Request #860: docs(useradm): move API specification to single file

29261 of 44500 relevant lines covered (65.76%)

1.44 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

8.11
/backend/pkg/accesslog/middleware.go
1
// Copyright 2024 Northern.tech AS
2
//
3
//        Licensed under the Apache License, Version 2.0 (the "License");
4
//        you may not use this file except in compliance with the License.
5
//        You may obtain a copy of the License at
6
//
7
//            http://www.apache.org/licenses/LICENSE-2.0
8
//
9
//        Unless required by applicable law or agreed to in writing, software
10
//        distributed under the License is distributed on an "AS IS" BASIS,
11
//        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
//        See the License for the specific language governing permissions and
13
//        limitations under the License.
14
package accesslog
15

16
import (
17
        "fmt"
18
        "net"
19
        "net/http"
20
        "os"
21
        "path"
22
        "runtime"
23
        "strconv"
24
        "strings"
25

26
        "github.com/mendersoftware/mender-server/pkg/netutils"
27
)
28

29
const (
30
        StatusClientClosedConnection = 499
31

32
        envProxyDepth = "ACCESSLOG_PROXY_DEPTH"
33
)
34

35
func getClientIPFromEnv() func(r *http.Request) net.IP {
9✔
36
        if proxyDepthEnv, ok := os.LookupEnv(envProxyDepth); ok {
9✔
37
                proxyDepth, err := strconv.ParseUint(proxyDepthEnv, 10, 8)
×
38
                if err == nil {
×
39
                        return func(r *http.Request) net.IP {
×
40
                                return netutils.GetIPFromXFFDepth(r, int(proxyDepth))
×
41
                        }
×
42
                }
43
        }
44
        return nil
9✔
45
}
46

47
const MaxTraceback = 32
48

49
func collectTrace() string {
×
50
        var (
×
51
                trace     [MaxTraceback]uintptr
×
52
                traceback strings.Builder
×
53
        )
×
54
        // Skip 4
×
55
        // = accesslog.LogFunc
×
56
        // + accesslog.collectTrace
×
57
        // + runtime.Callers
×
58
        // + runtime.gopanic
×
59
        n := runtime.Callers(4, trace[:])
×
60
        frames := runtime.CallersFrames(trace[:n])
×
61
        for frame, more := frames.Next(); frame.PC != 0 &&
×
62
                n >= 0; frame, more = frames.Next() {
×
63
                funcName := frame.Function
×
64
                if funcName == "" {
×
65
                        fmt.Fprint(&traceback, "???\n")
×
66
                } else {
×
67
                        fmt.Fprintf(&traceback, "%s@%s:%d",
×
68
                                frame.Function,
×
69
                                path.Base(frame.File),
×
70
                                frame.Line,
×
71
                        )
×
72
                }
×
73
                if more {
×
74
                        fmt.Fprintln(&traceback)
×
75
                }
×
76
                n--
×
77
        }
78
        return traceback.String()
×
79
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc