From f5e9eded374394b7510b2492dc729d7952083a53 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Mon, 8 Apr 2019 16:05:06 +0000 Subject: dnsd: include user agent with requests --- web/user_agent.go | 22 ++++++++++++++++++---- web/user_agent_test.go | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'web') diff --git a/web/user_agent.go b/web/user_agent.go index 8e4bd4c..99885a4 100644 --- a/web/user_agent.go +++ b/web/user_agent.go @@ -4,16 +4,30 @@ import ( "fmt" "net/http" "os" - "path/filepath" "runtime" + "time" + + "github.com/celrenheit/sandflake" +) + +var ( + startID = sandflake.Next() + hostname = "" + started = time.Now() ) func init() { http.DefaultTransport = &userAgentTransport{http.DefaultTransport} + + name, _ := os.Hostname() + if name != "" { + hostname = name + } } -func genUserAgent() string { - return fmt.Sprintf("github.com-Xe-x (%s/%s/%s; %s/bot; +https://github.com/Xe/x/blob/master/web/x.md)", runtime.Version(), runtime.GOOS, runtime.GOARCH, filepath.Base(os.Args[0])) +// GenUserAgent creates a unique User-Agent string for outgoing HTTP requests. +func GenUserAgent() string { + return fmt.Sprintf("github.com-Xe-x (%s/%s/%s; %s; +https://github.com/Xe/x/blob/master/web/x.md) Alive (%s; sandflake) Hostname/%s Started (%s)", runtime.Version(), runtime.GOOS, runtime.GOARCH, os.Args[0], startID.String(), hostname, started.Format(time.RFC3339)) } type userAgentTransport struct { @@ -21,6 +35,6 @@ type userAgentTransport struct { } func (uat userAgentTransport) RoundTrip(r *http.Request) (*http.Response, error) { - r.Header.Set("User-Agent", genUserAgent()) + r.Header.Set("User-Agent", GenUserAgent()) return uat.rt.RoundTrip(r) } diff --git a/web/user_agent_test.go b/web/user_agent_test.go index e2ffca0..c2ecb6e 100644 --- a/web/user_agent_test.go +++ b/web/user_agent_test.go @@ -3,7 +3,7 @@ package web import "testing" func TestGenUserAgent(t *testing.T) { - ua := genUserAgent() + ua := GenUserAgent() if ua == "" { t.Fatal("no user agent generated") } -- cgit v1.2.3