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 @@

What do we know about this IP address?

- + - + {{ if .Country }} @@ -103,7 +103,7 @@ {{ end }} {{ if .RegionCode }} - + {{ end }} {{ if .MetroCode }} @@ -113,7 +113,7 @@ {{ end }} {{ if .PostalCode }} - + {{ end }} {{ if .City }} @@ -153,17 +153,17 @@ {{ end }} {{ if .UserAgent }} {{ if .UserAgent.Comment }} - + {{ end }} {{ if .UserAgent.Comment }} - + {{ end }} {{ if .UserAgent.RawValue }} - + {{ end }} {{ end }} @@ -200,52 +200,52 @@

-
+
-
+
-
IP addressIP address {{ .IP }}
IP address (decimal)IP address (decimal) {{ .IPDecimal }}
Region codeRegion code {{ .RegionCode }}
Postal codePostal code {{ .PostalCode }}
User agentUser agent {{ .UserAgent.Product }}/{{ .UserAgent.Version }}
User agent: CommentUser agent: Comment {{ .UserAgent.Comment }}
User agent: RawUser agent: Raw {{ .UserAgent.RawValue }}