Commit 09aad777 authored by Matthew Holt's avatar Matthew Holt

Proper host/port splitting; also log file perms

parent da72a5fb
......@@ -43,7 +43,7 @@ func New(c middleware.Controller) (middleware.Middleware, error) {
} else if outputFile == "stderr" {
file = os.Stderr
} else {
file, err = os.OpenFile(outputFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
file, err = os.OpenFile(outputFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
return err
}
......
package middleware
import (
"net"
"net/http"
"strconv"
"strings"
......@@ -13,11 +14,11 @@ import (
// NewReplacer to get one of these.
type replacer map[string]string
// NewReplacer makes a new replacer based on r and rw.
// Do not create a new replacer until r and rw have all
// NewReplacer makes a new replacer based on r and rr.
// Do not create a new replacer until r and rr have all
// the needed values, because this function copies those
// values into the replacer.
func NewReplacer(r *http.Request, rw *responseRecorder) replacer {
func NewReplacer(r *http.Request, rr *responseRecorder) replacer {
rep := replacer{
"{method}": r.Method,
"{scheme}": func() string {
......@@ -32,24 +33,25 @@ func NewReplacer(r *http.Request, rw *responseRecorder) replacer {
"{fragment}": r.URL.Fragment,
"{proto}": r.Proto,
"{remote}": func() string {
if idx := strings.Index(r.RemoteAddr, ":"); idx > -1 {
return r.RemoteAddr[:idx] // IP address only
} else {
host, _, err := net.SplitHostPort(r.RemoteAddr)
if err != nil {
return r.RemoteAddr
}
return host
}(),
"{port}": func() string {
if idx := strings.Index(r.Host, ":"); idx > -1 {
return r.Host[idx+1:] // port only
}
_, port, err := net.SplitHostPort(r.RemoteAddr)
if err != nil {
return ""
}
return port
}(),
"{uri}": r.RequestURI,
"{when}": func() string {
return time.Now().Format(timeFormat)
}(),
"{status}": strconv.Itoa(rw.status),
"{size}": strconv.Itoa(rw.size),
"{status}": strconv.Itoa(rr.status),
"{size}": strconv.Itoa(rr.size),
}
// Header placeholders
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment