Windows: Security warning based on server OS
Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
parent
f5527956fb
commit
b4f6e2c8b7
1 changed files with 31 additions and 0 deletions
|
@ -1,8 +1,11 @@
|
||||||
package httputils
|
package httputils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/docker/docker/pkg/jsonmessage"
|
"github.com/docker/docker/pkg/jsonmessage"
|
||||||
)
|
)
|
||||||
|
@ -25,3 +28,31 @@ func NewHTTPRequestError(msg string, res *http.Response) error {
|
||||||
Code: res.StatusCode,
|
Code: res.StatusCode,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ServerHeader struct {
|
||||||
|
App string // docker
|
||||||
|
Ver string // 1.8.0-dev
|
||||||
|
OS string // windows or linux
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseServerHeader extracts pieces from am HTTP server header
|
||||||
|
// which is in the format "docker/version (os)" eg docker/1.8.0-dev (windows)
|
||||||
|
func ParseServerHeader(hdr string) (*ServerHeader, error) {
|
||||||
|
re := regexp.MustCompile(`.*\((.+)\).*$`)
|
||||||
|
r := &ServerHeader{}
|
||||||
|
if matches := re.FindStringSubmatch(hdr); matches != nil {
|
||||||
|
r.OS = matches[1]
|
||||||
|
parts := strings.Split(hdr, "/")
|
||||||
|
if len(parts) != 2 {
|
||||||
|
return nil, errors.New("Bad header: '/' missing")
|
||||||
|
}
|
||||||
|
r.App = parts[0]
|
||||||
|
v := strings.Split(parts[1], " ")
|
||||||
|
if len(v) != 2 {
|
||||||
|
return nil, errors.New("Bad header: Expected single space")
|
||||||
|
}
|
||||||
|
r.Ver = v[0]
|
||||||
|
return r, nil
|
||||||
|
}
|
||||||
|
return nil, errors.New("Bad header: Failed regex match")
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue