v0.2.0
ADDED: * The ability to show both IPv4 and IPv6 addresses (if the client has dual-stack and either the server does as well or a separate ClientInfo is running on the "other" net family).
This commit is contained in:
@@ -3,24 +3,24 @@ package server
|
||||
import (
|
||||
`encoding/json`
|
||||
`encoding/xml`
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
`errors`
|
||||
`fmt`
|
||||
`net`
|
||||
`net/http`
|
||||
`net/http/fcgi`
|
||||
"net/netip"
|
||||
"net/url"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
"sync"
|
||||
`net/netip`
|
||||
`net/url`
|
||||
`os`
|
||||
`os/signal`
|
||||
`strings`
|
||||
`sync`
|
||||
`syscall`
|
||||
|
||||
sysd "github.com/coreos/go-systemd/daemon"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
sysd `github.com/coreos/go-systemd/daemon`
|
||||
`github.com/davecgh/go-spew/spew`
|
||||
`github.com/goccy/go-yaml`
|
||||
`r00t2.io/clientinfo/version`
|
||||
"r00t2.io/goutils/multierr"
|
||||
`r00t2.io/goutils/multierr`
|
||||
)
|
||||
|
||||
// Close cleanly closes any remnants of a Server. Stop should be used instead to cleanly shut down; this is a little more aggressive.
|
||||
@@ -267,8 +267,10 @@ func (s *Server) explicit404(resp http.ResponseWriter, req *http.Request) {
|
||||
func (s *Server) handleDefault(resp http.ResponseWriter, req *http.Request) {
|
||||
|
||||
var err error
|
||||
var ok bool
|
||||
var page *Page
|
||||
var uas []string
|
||||
var origin string
|
||||
var reqdMimes []string
|
||||
var parsedUA *R00tClient
|
||||
var nAP netip.AddrPort
|
||||
@@ -280,13 +282,20 @@ func (s *Server) handleDefault(resp http.ResponseWriter, req *http.Request) {
|
||||
var outerFmt string = mediaJSON
|
||||
|
||||
s.log.Debug("server.Server.handleDefault: Handling request:\n%s", spew.Sdump(req))
|
||||
origin = req.Header.Get("Origin")
|
||||
if s.corsOrigins != nil && len(s.corsOrigins) != 0 && origin != "" {
|
||||
if _, ok = s.corsOrigins[origin]; ok {
|
||||
resp.Header().Set("Access-Control-Allow-Origin", origin)
|
||||
resp.Header().Add("Vary", "Origin")
|
||||
}
|
||||
}
|
||||
|
||||
resp.Header().Set("ClientInfo-Version", version.Ver.Short())
|
||||
|
||||
page = &Page{
|
||||
Info: &R00tInfo{
|
||||
Client: nil,
|
||||
IP: nil,
|
||||
IP: netip.Addr{},
|
||||
Port: 0,
|
||||
Headers: XmlHeaders(req.Header),
|
||||
Req: req,
|
||||
@@ -301,7 +310,7 @@ func (s *Server) handleDefault(resp http.ResponseWriter, req *http.Request) {
|
||||
// First the client info.
|
||||
remAddrPort = req.RemoteAddr
|
||||
if s.isHttp && req.Header.Get(httpRealHdr) != "" {
|
||||
// TODO: WHitelist explicit reverse proxy addr(s)?
|
||||
// TODO: Whitelist explicit reverse proxy addr(s)?
|
||||
remAddrPort = req.Header.Get(httpRealHdr)
|
||||
req.Header.Del(httpRealHdr)
|
||||
}
|
||||
@@ -315,7 +324,7 @@ func (s *Server) handleDefault(resp http.ResponseWriter, req *http.Request) {
|
||||
*/
|
||||
err = nil
|
||||
}
|
||||
page.Info.IP = net.ParseIP(nAP.Addr().String())
|
||||
page.Info.IP = nAP.Addr().Unmap()
|
||||
page.Info.Port = nAP.Port()
|
||||
}
|
||||
if req.URL != nil {
|
||||
@@ -547,6 +556,8 @@ func (s *Server) renderHTML(page *Page, resp http.ResponseWriter) (err error) {
|
||||
|
||||
var b []byte
|
||||
|
||||
page.srv = s
|
||||
|
||||
if page.RawFmt != nil {
|
||||
switch *page.RawFmt {
|
||||
case mediaHTML:
|
||||
|
||||
Reference in New Issue
Block a user