aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcell Martini <marcell@meliuz.com.br>2022-01-25 15:58:22 -0400
committerGitHub <noreply@github.com>2022-01-25 15:58:22 -0400
commit11fc65639149bdb1297f93fe3dce105fbedbded5 (patch)
treebb55a5585def6a9aed32d01a0e9c383bd865a0dd
parenta4d13ad0edcc3c9dd591ad1aa26d2b50b8528168 (diff)
parentffa6674637a5bf906d78ae6675f9a4680a78ab7b (diff)
Merge branch 'mpolden:master' into master
-rw-r--r--.github/workflows/ci.yml30
-rw-r--r--.travis.yml23
-rw-r--r--Dockerfile3
-rw-r--r--Makefile7
-rw-r--r--README.md6
-rw-r--r--go.mod5
-rw-r--r--go.sum19
-rw-r--r--html/index.html37
-rw-r--r--html/script.html1
-rw-r--r--html/styles.html20
-rw-r--r--http/http.go2
11 files changed, 85 insertions, 68 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..aea27d1
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,30 @@
+name: ci
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ env:
+ DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
+ DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
+ steps:
+ - uses: actions/checkout@v2
+ - name: install go
+ uses: actions/setup-go@v2
+ with:
+ go-version: 1.16
+ - name: build and test
+ run: make
+ - name: enable experimental docker features
+ if: ${{ github.ref == 'refs/heads/master' }}
+ run: |
+ echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
+ sudo service docker restart
+ - name: publish multi-arch docker image
+ if: ${{ github.ref == 'refs/heads/master' }}
+ run: make docker-pushx
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 9d4d74d..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-dist: bionic
-language: minimal
-
-services:
- - docker
-
-env:
- global:
- - DOCKER_CLI_EXPERIMENTAL=enabled
-
-before_install:
- - echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
- - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- - sudo apt-get update
- - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
-
-script:
- - make docker-build
-
-deploy:
- - provider: script
- script: make docker-push
diff --git a/Dockerfile b/Dockerfile
index e6f18a2..7a4c32a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,8 @@
# Build
-FROM golang:1.13-buster AS build
+FROM golang:1.15-buster AS build
WORKDIR /go/src/github.com/mpolden/echoip
COPY . .
+
# Must build without cgo because libc is unavailable in runtime image
ENV GO111MODULE=on CGO_ENABLED=0
RUN make
diff --git a/Makefile b/Makefile
index d51a752..8d07bac 100644
--- a/Makefile
+++ b/Makefile
@@ -57,7 +57,10 @@ docker-test:
$(eval DOCKER_PORT=$(shell $(DOCKER) port $(CONTAINER) | cut -d ":" -f 2))
curl -fsS -m 5 localhost:$(DOCKER_PORT) > /dev/null; $(DOCKER) stop $(CONTAINER)
-docker-push: docker-test docker-multiarch-builder docker-login
+docker-push: docker-test docker-login
+ $(DOCKER) push $(DOCKER_IMAGE)
+
+docker-pushx: docker-multiarch-builder docker-test docker-login
$(DOCKER) buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t $(DOCKER_IMAGE) --push .
xinstall:
@@ -71,4 +74,4 @@ endif
@sha256sum $(GOPATH)/bin/$(XBIN)
run:
- go run cmd/echoip/main.go -a data/asn.mmdb -c data/city.mmdb -f data/country.mmdb -H x-forwarded-for -r -s
+ go run cmd/echoip/main.go -a data/asn.mmdb -c data/city.mmdb -f data/country.mmdb -H x-forwarded-for -r -s -p
diff --git a/README.md b/README.md
index 1284fcb..444eb53 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# echoip
-[![Build Status](https://travis-ci.org/mpolden/echoip.svg)](https://travis-ci.org/mpolden/echoip)
+![Build Status](https://github.com/mpolden/echoip/workflows/ci/badge.svg)
A simple service for looking up your IP address. This is the code that powers
https://ifconfig.co.
@@ -93,9 +93,9 @@ between IPv4 and IPv6 lookup.
## Building
Compiling requires the [Golang compiler](https://golang.org/) to be installed.
-This package can be installed with `go get`:
+This package can be installed with:
-`go get github.com/mpolden/echoip/...`
+`go install github.com/mpolden/echoip/...@latest`
For more information on building a Go project, see the [official Go
documentation](https://golang.org/doc/code.html).
diff --git a/go.mod b/go.mod
index cca3101..040fac8 100644
--- a/go.mod
+++ b/go.mod
@@ -2,4 +2,7 @@ module github.com/mpolden/echoip
go 1.13
-require github.com/oschwald/geoip2-golang v1.4.0
+require (
+ github.com/oschwald/geoip2-golang v1.5.0
+ golang.org/x/sys v0.0.0-20210223212115-eede4237b368 // indirect
+)
diff --git a/go.sum b/go.sum
index 36bcb8c..f00e6ee 100644
--- a/go.sum
+++ b/go.sum
@@ -1,17 +1,20 @@
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/oschwald/geoip2-golang v1.4.0 h1:5RlrjCgRyIGDz/mBmPfnAF4h8k0IAcRv9PvrpOfz+Ug=
-github.com/oschwald/geoip2-golang v1.4.0/go.mod h1:8QwxJvRImBH+Zl6Aa6MaIcs5YdlZSTKtzmPGzQqi9ng=
-github.com/oschwald/maxminddb-golang v1.6.0 h1:KAJSjdHQ8Kv45nFIbtoLGrGWqHFajOIm7skTyz/+Dls=
-github.com/oschwald/maxminddb-golang v1.6.0/go.mod h1:DUJFucBg2cvqx42YmDa/+xHvb0elJtOm3o4aFQ/nb/w=
+github.com/oschwald/geoip2-golang v1.5.0 h1:igg2yQIrrcRccB1ytFXqBfOHCjXWIoMv85lVJ1ONZzw=
+github.com/oschwald/geoip2-golang v1.5.0/go.mod h1:xdvYt5xQzB8ORWFqPnqMwZpCpgNagttWdoZLlJQzg7s=
+github.com/oschwald/maxminddb-golang v1.8.0 h1:Uh/DSnGoxsyp/KYbY1AuP0tYEwfs0sCph9p/UMXK/Hk=
+github.com/oschwald/maxminddb-golang v1.8.0/go.mod h1:RXZtst0N6+FY/3qCNmZMBApR19cdQj43/NM9VkrNAis=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/sys v0.0.0-20191224085550-c709ea063b76 h1:Dho5nD6R3PcW2SH1or8vS0dszDaXRxIw55lBX7XiE5g=
golang.org/x/sys v0.0.0-20191224085550-c709ea063b76/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210223212115-eede4237b368 h1:fDE3p0qf2V1co1vfj3/o87Ps8Hq6QTGNxJ5Xe7xSp80=
+golang.org/x/sys v0.0.0-20210223212115-eede4237b368/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/html/index.html b/html/index.html
index dc814ee..9557084 100644
--- a/html/index.html
+++ b/html/index.html
@@ -74,11 +74,11 @@
<h2>What do we know about this IP address?</h2>
<table class="info-table">
<tr>
- <th scope="row">IP address</th>
+ <th scope="row">IP&nbsp;address</th>
<td>{{ .IP }}</td>
</tr>
<tr>
- <th scope="row">IP address (decimal)</th>
+ <th scope="row">IP&nbsp;address (decimal)</th>
<td>{{ .IPDecimal }}</td>
</tr>
{{ if .Country }}
@@ -103,7 +103,7 @@
</tr>
{{ end }} {{ if .RegionCode }}
<tr>
- <th scope="row">Region code</th>
+ <th scope="row">Region&nbsp;code</th>
<td>{{ .RegionCode }}</td>
</tr>
{{ end }} {{ if .MetroCode }}
@@ -113,7 +113,7 @@
</tr>
{{ end }} {{ if .PostalCode }}
<tr>
- <th scope="row">Postal code</th>
+ <th scope="row">Postal&nbsp;code</th>
<td>{{ .PostalCode }}</td>
</tr>
{{ end }} {{ if .City }}
@@ -153,17 +153,17 @@
</tr>
{{ end }} {{ if .UserAgent }} {{ if .UserAgent.Comment }}
<tr>
- <th scope="row">User agent</th>
+ <th scope="row">User&nbsp;agent</th>
<td>{{ .UserAgent.Product }}/{{ .UserAgent.Version }}</td>
</tr>
{{ end }} {{ if .UserAgent.Comment }}
<tr>
- <th scope="row">User agent: Comment</th>
+ <th scope="row">User&nbsp;agent: Comment</th>
<td>{{ .UserAgent.Comment }}</td>
</tr>
{{ end }} {{ if .UserAgent.RawValue }}
<tr>
- <th scope="row">User agent: Raw</th>
+ <th scope="row">User&nbsp;agent: Raw</th>
<td>{{ .UserAgent.RawValue }}</td>
</tr>
{{ end }} {{ end }}
@@ -200,52 +200,52 @@
</p>
<div class="pure-form">
<!-- COMMAND WIDGET -->
- <div class="buttons">
+ <div class="input-buttons">
<button
name="ip"
- class="button widget-select"
+ class="pure-button widget-select"
onclick="changeInput(this.name, this)"
>
ip
</button>
<button
name="country"
- class="button widget-select"
+ class="pure-button widget-select"
onclick="changeInput(this.name, this)"
>
country
</button>
<button
name="country-iso"
- class="button widget-select"
+ class="pure-button widget-select"
onclick="changeInput(this.name, this)"
>
country-iso
</button>
<button
name="city"
- class="button widget-select"
+ class="pure-button widget-select"
onclick="changeInput(this.name, this)"
>
city
</button>
<button
name="asn"
- class="button widget-select"
+ class="pure-button widget-select"
onclick="changeInput(this.name, this)"
>
asn
</button>
<button
name="json"
- class="button widget-select"
+ class="pure-button widget-select"
onclick="changeInput(this.name, this)"
>
json
</button>
<button
name="port"
- class="button widget-select"
+ class="pure-button widget-select"
onclick="changeInput(this.name, this)"
>
port
@@ -266,12 +266,13 @@
</div>
<div id="output" class="widgetbox output"></div>
- <form class="pure-form">
+ <form class="pure-form input-buttons">
<fieldset>
- <label for="ipCheckBox">
+ <label for="ipInput">
+ Check another IP (optional)
<input
id="ipInput"
- class="medium-input pure-input"
+ class=""
type="text"
placeholder="IP to query"
onkeyup="updateIP(this.value)"
diff --git a/html/script.html b/html/script.html
index 1e4b7f8..cd57f8d 100644
--- a/html/script.html
+++ b/html/script.html
@@ -71,7 +71,6 @@
function navigate(event) {
console.log("navigate", compositePath)
window.location = compositePath
- event.preventDefault()
}
function updatePort(value) {
diff --git a/html/styles.html b/html/styles.html
index e2cd974..bc0725f 100644
--- a/html/styles.html
+++ b/html/styles.html
@@ -26,6 +26,7 @@
background: #f2f2f2;
font-size: 36px;
padding: 6px;
+ word-wrap: break-word;
}
svg.github-corner {
fill: #151513;
@@ -52,12 +53,12 @@
.info-table th {
padding: 5px;
border: 2px solid #ababab;
+ word-wrap: break-word;
}
.info-table th[scope="row"] {
background-color: #d5d5d5;
text-align: left;
- white-space: nowrap;
}
.widgetbox {
@@ -88,11 +89,6 @@
text-align: right;
}
- .narrow-input {
- width: 5.5em;
- margin-top: 0.2em;
- }
-
.medium-input {
width: 10em;
}
@@ -101,6 +97,11 @@
background-color: rgb(208 208 208);
}
+ .input-buttons {
+ line-height: 2.6em;
+ font-size: smaller;
+ }
+
/* POST CORRECTION */
.leafcloud-logo .letters {
fill: black;
@@ -113,7 +114,6 @@
a {
background-color: #161719;
color: #d8d9da;
- /* text-decoration: underline; */
}
.ip {
border: 1px solid #313233;
@@ -137,13 +137,13 @@
background-color: #2e2e2e;
color: rgb(220, 220, 220);
text-align: left;
- white-space: nowrap;
}
- button {
+ .pure-button {
background-color: #2e2e2e;
+ color: rgb(220, 220, 220);
}
- button.selected {
+ .pure-button.selected {
background-color: rgb(125 125 125);
}
diff --git a/http/http.go b/http/http.go
index 9a56953..626d75b 100644
--- a/http/http.go
+++ b/http/http.go
@@ -370,7 +370,7 @@ func NotFoundHandler(w http.ResponseWriter, r *http.Request) *appError {
func cliMatcher(r *http.Request) bool {
ua := useragent.Parse(r.UserAgent())
switch ua.Product {
- case "curl", "HTTPie", "httpie-go", "Wget", "fetch libfetch", "Go", "Go-http-client", "ddclient", "Mikrotik":
+ case "curl", "HTTPie", "httpie-go", "Wget", "fetch libfetch", "Go", "Go-http-client", "ddclient", "Mikrotik", "xh":
return true
}
return false