https://github.com/glendc/go-external-ip
a Golang library to get your external ip from multiple services
https://github.com/glendc/go-external-ip
external-ip golang golang-library ip ipv4 ipv6 wip
Last synced: 8 months ago
JSON representation
a Golang library to get your external ip from multiple services
- Host: GitHub
- URL: https://github.com/glendc/go-external-ip
- Owner: GlenDC
- License: mit
- Created: 2017-04-06T03:14:01.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-08-17T13:11:53.000Z (about 2 years ago)
- Last Synced: 2025-01-30T12:09:10.810Z (8 months ago)
- Topics: external-ip, golang, golang-library, ip, ipv4, ipv6, wip
- Language: Go
- Homepage:
- Size: 38.1 KB
- Stars: 71
- Watchers: 4
- Forks: 25
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Go External IP [](https://github.com/glendc/go-external-ip/actions?query=workflow%Go) [](https://godoc.org/github.com/glendc/go-external-ip) [](https://goreportcard.com/report/github.com/glendc/go-external-ip)[](https://github.com/GlenDC/go-external-ip/blob/master/LICENSE.txt)
A Golang library to get your external ip from multiple services.
## TODO
+ Design/Implement STUNSource, more info:
+ [RFC 3489](https://tools.ietf.org/html/rfc3489);
+ [RFC 5389](https://tools.ietf.org/html/rfc5389);## Docs
https://godoc.org/github.com/GlenDC/go-external-ip
## Usage
Using the library can as simple as the following (runnable) example:
```go
package mainimport (
"fmt"
externalip "github.com/glendc/go-external-ip"
)func main() {
// Create the default consensus,
// using the default configuration and no logger.
consensus := externalip.DefaultConsensus(nil, nil)// By default Ipv4 or Ipv6 is returned,
// use the function below to limit yourself to IPv4,
// or pass in `6` instead to limit yourself to IPv6.
// consensus.UseIPProtocol(4)// Get your IP,
// which is never when err is .
ip, err := consensus.ExternalIP()
if err == nil {
fmt.Println(ip.String()) // print IPv4/IPv6 in string format
}
}
```Please read [the documentation][docs] for more information.
## exip
This library also comes with a standalone command line application,
which can be used to get your external IP, directly from your terminal.### install
```
$ go install github.com/glendc/go-external-ip/cmd/exip
```### usage
```
$ exip -h
Retrieve your external IP.Usage:
exip [flags]Flags:
-h help
show this usage message
-p uint
IP Protocol to be used (0, 4, or 6)
-t duration
consensus's voting timeout (default 5s)
-v log errors to STDERR, when defined
```[docs]: https://pkg.go.dev/github.com/GlenDC/go-external-ip