Go to file
antonc42 e1e6dba31b changed env var in makefile to builtin var
makefile was using the environment variable PWD. this can be
problematic if using 'sudo' as the PWD variable is not passed through.
however GNU make has a builtin CURDIR variable for the current working
directory that does work with 'sudo'.
2019-01-04 09:56:16 -06:00
cmd/echoip Log if template is unreadable 2018-12-28 15:05:31 +01:00
http Log if template is unreadable 2018-12-28 15:05:31 +01:00
iputil Differentiate between IsEU being false and unknown 2018-08-31 22:55:09 +02:00
useragent Handle more invalid user agents 2017-05-28 13:57:48 +02:00
.gitignore Use Go modules 2018-08-27 21:13:06 +02:00
.travis.yml Stop using container-based Travis 2018-11-21 19:22:33 +01:00
Dockerfile Reduce image size 2018-12-28 19:06:05 +01:00
LICENSE Update copyright year 2018-02-09 22:13:25 +01:00
Makefile changed env var in makefile to builtin var 2019-01-04 09:56:16 -06:00
README.md Mention Docker image 2018-12-28 19:06:05 +01:00
go.mod Tidy up modules 2018-09-11 22:06:32 +02:00
go.sum Tidy up modules 2018-09-11 22:06:32 +02:00
heroku.yml Rename ipd -> echoip 2018-08-27 20:50:56 +02:00
index.html Patch for a Map (#62) 2018-10-28 16:42:17 +01:00

README.md

echoip

Build Status

A simple service for looking up your IP address. This is the code that powers https://ifconfig.co.

Usage

Just the business, please:

$ curl ifconfig.co
127.0.0.1

$ http ifconfig.co
127.0.0.1

$ wget -qO- ifconfig.co
127.0.0.1

$ fetch -qo- https://ifconfig.co
127.0.0.1

$ bat -print=b ifconfig.co/ip
127.0.0.1

Country and city lookup:

$ curl ifconfig.co/country
Elbonia

$ curl ifconfig.co/country-iso
EB

$ curl ifconfig.co/city
Bornyasherk

As JSON:

$ curl -H 'Accept: application/json' ifconfig.co  # or curl ifconfig.co/json
{
  "city": "Bornyasherk",
  "country": "Elbonia",
  "country_iso": "EB",
  "ip": "127.0.0.1",
  "ip_decimal": 2130706433
}

Port testing:

$ curl ifconfig.co/port/80
{
  "ip": "127.0.0.1",
  "port": 80,
  "reachable": false
}

Pass the appropriate flag (usually -4 and -6) to your client to switch between IPv4 and IPv6 lookup.

Features

  • Easy to remember domain name
  • Fast
  • Supports IPv6
  • Supports HTTPS
  • Supports common command-line clients (e.g. curl, httpie, wget and fetch)
  • JSON output
  • Country and city lookup using the MaxMind GeoIP database
  • Port testing
  • Open source under the BSD 3-Clause license

Why?

  • To scratch an itch
  • An excuse to use Go for something
  • Faster than ifconfig.me and has IPv6 support

Building

Compiling requires the Golang compiler to be installed. This package can be installed with go get:

go get github.com/mpolden/echoip/...

For more information on building a Go project, see the official Go documentation.

Docker image

A Docker image is available on Docker Hub, which can be downloaded with:

docker pull mpolden/echoip

Usage

$ echoip -h
Usage:
  echoip [OPTIONS]

Application Options:
  -f, --country-db=FILE        Path to GeoIP country database
  -c, --city-db=FILE           Path to GeoIP city database
  -l, --listen=ADDR            Listening address (default: :8080)
  -r, --reverse-lookup         Perform reverse hostname lookups
  -p, --port-lookup            Enable port lookup
  -t, --template=FILE          Path to template (default: index.html)
  -H, --trusted-header=NAME    Header to trust for remote IP, if present (e.g. X-Real-IP)

Help Options:
  -h, --help                   Show this help message