Proper host/port splitting; also log file perms

This commit is contained in:
Matthew Holt 2015-03-26 23:39:36 -06:00
parent da72a5fbcd
commit 09aad777f4
2 changed files with 14 additions and 12 deletions

View file

@ -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
}

View file

@ -1,6 +1,7 @@
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 ""
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