Code Monkey home page Code Monkey logo

gogeo's Introduction

Go bindings to the GeoIP city database

gogeo allows you you to access a GeoIP city database to determine Geographical information from an IP address.

Features

  • IPv4 support
  • IPv6 support
  • GeoRecord support
  • Unlike other libraries, doesn't read the whole database into memory
  • Fine grained control over database open modes, caching, etc.
  • Works with go net.Addr's, which simplifies integration with go network programs.

Limitations

  • cgo based (not suitable for app engine deployments)

Setup

  • Install libgeoip1 libgeoip-dev (on ubuntu)
  • Download the geolite city database (either ipv4 or ipv6)
  • go get -u github.com/shanemhansen/gogeo

Example usage

  • Look at the unit tests
package main
import "github.com/shanemhansen/gogeo"
import "net"
import "fmt"

func main() {
    db, err := gogeo.Open("/usr/share/GeoIP/GeoLiteCity.dat", gogeo.MemoryCache)
    if err != nil {
        panic(err)
    }
    addr, err := net.ResolveIPAddr("ip4", "google.com")
    record := db.RecordByIPAddr(addr)
    fmt.Printf("hello, from %s", record.CountryCode)
   }

gogeo's People

Contributors

araddon avatar shanemhansen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

araddon louygan

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.