diff options
| author | Christine Dodrill <me@christine.website> | 2019-11-28 18:22:38 +0000 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2019-11-28 18:24:54 +0000 |
| commit | 389f7b5a7764e3d0ca050d440393daadac8d176d (patch) | |
| tree | 1b6e9d1d4829e3ee15a6705d48510fc96057a561 | |
| parent | 2dfde39f006f8e6fa69d68dd72dd10d67e9b1cfd (diff) | |
| download | x-389f7b5a7764e3d0ca050d440393daadac8d176d.tar.xz x-389f7b5a7764e3d0ca050d440393daadac8d176d.zip | |
web: move useragent to its own package
| -rw-r--r-- | internal/internal.go | 9 | ||||
| -rw-r--r-- | web/user_agent.go | 40 | ||||
| -rw-r--r-- | web/useragent/user_agent.go | 43 | ||||
| -rw-r--r-- | web/useragent/user_agent_test.go (renamed from web/user_agent_test.go) | 2 | ||||
| -rw-r--r-- | web/x.md | 4 |
5 files changed, 50 insertions, 48 deletions
diff --git a/internal/internal.go b/internal/internal.go index d84b212..1c78d60 100644 --- a/internal/internal.go +++ b/internal/internal.go @@ -14,15 +14,14 @@ import ( "within.website/ln/opname" "within.website/x/internal/flagenv" "within.website/x/internal/manpage" + "within.website/x/web/useragent" // Debug routes + "net/http" _ "net/http/pprof" // Older projects use .env files, shim in compatibility _ "github.com/joho/godotenv/autoload" - - // User agent init hook - _ "within.website/x/web" ) var ( @@ -80,3 +79,7 @@ func HandleStartup() { manpage.Spew() } } + +func init() { + http.DefaultTransport = useragent.Transport("within.website-x", "https://within.website/.x.botinfo", http.DefaultTransport) +} diff --git a/web/user_agent.go b/web/user_agent.go deleted file mode 100644 index 249f6b7..0000000 --- a/web/user_agent.go +++ /dev/null @@ -1,40 +0,0 @@ -package web - -import ( - "fmt" - "net/http" - "os" - "runtime" - "time" - - "github.com/celrenheit/sandflake" -) - -var ( - startID = sandflake.Next() - hostname = "<unknown>" - started = time.Now() -) - -func init() { - http.DefaultTransport = &userAgentTransport{http.DefaultTransport} - - name, _ := os.Hostname() - if name != "" { - hostname = name - } -} - -// 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://within.website/.x.botinfo) 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 { - rt http.RoundTripper -} - -func (uat userAgentTransport) RoundTrip(r *http.Request) (*http.Response, error) { - r.Header.Set("User-Agent", GenUserAgent()) - return uat.rt.RoundTrip(r) -} diff --git a/web/useragent/user_agent.go b/web/useragent/user_agent.go new file mode 100644 index 0000000..0f521c9 --- /dev/null +++ b/web/useragent/user_agent.go @@ -0,0 +1,43 @@ +package useragent + +import ( + "fmt" + "net/http" + "os" + "runtime" +) + +var ( + hostname = "<unknown>" +) + +func init() { + name, _ := os.Hostname() + if name != "" { + hostname = name + } +} + +// GenUserAgent creates a unique User-Agent string for outgoing HTTP requests. +func GenUserAgent(prefix, infoURL string) string { + return fmt.Sprintf( + "%s (%s/%s/%s; %s; +%s) Hostname/%s", + prefix, runtime.Version(), runtime.GOOS, runtime.GOARCH, infoURL, + os.Args[0], hostname, + ) +} + +// Transport wraps a http transport with user agent information. +func Transport(prefix, infoURL string, rt http.RoundTripper) http.RoundTripper { + return userAgentTransport{prefix: prefix, rt: rt} +} + +type userAgentTransport struct { + prefix, infoURL string + rt http.RoundTripper +} + +func (uat userAgentTransport) RoundTrip(r *http.Request) (*http.Response, error) { + r.Header.Set("User-Agent", GenUserAgent(uat.prefix)) + return uat.rt.RoundTrip(r) +} diff --git a/web/user_agent_test.go b/web/useragent/user_agent_test.go index c2ecb6e..702bcf7 100644 --- a/web/user_agent_test.go +++ b/web/useragent/user_agent_test.go @@ -1,4 +1,4 @@ -package web +package useragent import "testing" diff --git a/web/x.md b/web/x.md deleted file mode 100644 index 09a7165..0000000 --- a/web/x.md +++ /dev/null @@ -1,4 +0,0 @@ -# x repo bots - -Hello, if you are reading this, you have found this URL in your access logs. -If one of these programs is doing something you don't want them to do, please [contact me](https://christine.website/contact) or open an issue [on this repo](https://github.com/Xe/x). |
