{"id":28546404,"url":"https://github.com/ulule/geoipfix","last_synced_at":"2025-09-16T20:55:31.277Z","repository":{"id":30184645,"uuid":"33735309","full_name":"ulule/geoipfix","owner":"ulule","description":"A Go service (HTTP+RPC) to retrieve location information","archived":false,"fork":false,"pushed_at":"2023-10-25T21:18:12.000Z","size":6137,"stargazers_count":47,"open_issues_count":1,"forks_count":2,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-07-07T06:42:52.801Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ulule.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-04-10T15:18:27.000Z","updated_at":"2025-03-04T10:43:30.000Z","dependencies_parsed_at":"2024-06-19T01:52:36.046Z","dependency_job_id":null,"html_url":"https://github.com/ulule/geoipfix","commit_stats":null,"previous_names":["ulule/ipfix"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ulule/geoipfix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulule%2Fgeoipfix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulule%2Fgeoipfix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulule%2Fgeoipfix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulule%2Fgeoipfix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ulule","download_url":"https://codeload.github.com/ulule/geoipfix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulule%2Fgeoipfix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275483715,"owners_count":25473115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-16T02:00:10.229Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-09T23:39:17.749Z","updated_at":"2025-09-16T20:55:31.252Z","avatar_url":"https://github.com/ulule.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"geoipfix\n=====\n\ngeoipfix is a Go service (HTTP+RPC) to retrieve geolocation information\nabout an ip address with freegeoip_ helpers.\n\nWe are using bindings from the maxmind_ database.\n\nInstallation\n============\n\nBuild it locally\n----------------\n\n1. Make sure you have a Go language compiler \u003e= 1.3 (required) and git installed.\n2. Make sure you have the following go system dependencies in your $PATH: bzr, svn, hg, git\n3. Ensure your GOPATH_ is properly set.\n4. Download it:\n\n::\n\n    git clone https://github.com/ulule/geoipfix.git\n\n4. Run ``make build``\n\nYou have now a binary version of geoipfix in the ``bin`` directory which\nfits perfectly with your architecture.\n\nBuild it using Docker\n---------------------\n\nIf you don't want to install Go and Docker_ is installed on your computer\n\n::\n\n    make docker-build\n\nYou will have a binary version of geoipfix compiled for linux in the ``bin`` directory.\n\nConfiguration\n=============\n\nConfiguration should be stored in a readable file and in JSON format.\n\nA complete example of the configuration file with RPC+HTTP would be:\n\n``config.json``\n\n.. code-block:: json\n\n    {\n        \"server\": {\n            \"rpc\": {\n                \"port\": 33001\n            },\n            \"http\": {\n                \"port\": 3001,\n                \"cors\": {\n                    \"allowed_origins\": [\"*.ulule.com\"],\n                    \"allowed_methods\": [\"GET\", \"HEAD\", \"POST\"],\n                    \"allowed_headers\": [\"Origin\", \"Accept\", \"Content-Type\", \"X-Requested-With\"]\n                }\n            }\n        },\n        \"database_path\": \"./GeoLite2-City.mmdb.gz\"\n    }\n\nBe careful, you should download first locally the GeoLite_ database because the service\nwill be unavailable until it will download the database.\n\nHTTP server\n===========\n\nThe HTTP server is based on chi_.\n\nIt's disabled by default, you can activate it by adding the `http` section to `server`.\n\n``config.json``\n\n.. code-block:: json\n\n    {\n        \"server\": {\n            \"http\": {\n                \"port\": 3001,\n            }\n        }\n    }\n\nCORS\n----\n\ngeoipfix supports CORS headers customization in your config file.\n\nTo enable this feature, set ``allowed_origins`` and ``allowed_methods``,\nfor example:\n\n``config.json``\n\n.. code-block:: json\n\n    {\n      \"allowed_origins\": [\"*.ulule.com\"],\n      \"allowed_methods\": [\"GET\", \"HEAD\"]\n    }\n\nRPC server\n===========\n\nThe RPC server is based on grpc_.\n\nIt's disabled by default, you can activate it by adding the `rpc` section to `server`.\n\n``config.json``\n\n.. code-block:: json\n\n    {\n        \"server\": {\n            \"http\": {\n                \"port\": 33001,\n            }\n        }\n    }\n\nYou can found a client example in the `repository \u003cexamples/client/main.go\u003e`_ and execute it:\n\n::\n\n    go run examples/client/main.go -ip {YOUR_IP_ADDRESS} -server-addr {RPC_ADDRESS}\n\nUsage\n=====\n\nWhen your configuration is done, you can start the service as follow:\n\n::\n\n    geoipfix -c config.json\n\nor using an environment variable:\n\n::\n\n    GEOIPFIX_CONF=/path/to/config.json geoipfix\n\nBy default, this will run the application on port 3001 and can be accessed by visiting:\n\n::\n\n    http://localhost:3001\n\nThe port number can be configured with ``port`` option in your config file.\n\nTo see a list of all available options, run:\n\n::\n\n    geoipfix --help\n\nDevelopment\n===========\n\nI recommend to install the live reload utility modd_ to make your life easier.\n\nInstall it:\n\n::\n\n    go get github.com/cortesi/modd/cmd/modd\n\nThen launch it in the geoipfix directory:\n\n::\n\n    GEOIPFIX_CONF=config.json make live\n\n\n.. _GOPATH: http://golang.org/doc/code.html#GOPATH\n.. _GeoLite: http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz\n.. _freegeoip: https://github.com/fiorix/freegeoip\n.. _maxmind: https://www.maxmind.com/fr/home\n.. _modd: https://github.com/cortesi/modd\n.. _chi: https://github.com/go-chi/chi\n.. _grpc: https://grpc.io/\n.. _Docker: https://docker.com\n\nDang, what's this name?\n=======================\n\nIt was an initial proposal from `kyojin \u003chttps://github.com/kyojin\u003e`_ based on `Idéfix \u003chttps://en.wikipedia.org/wiki/Dogmatix\u003e`_.\n\n.. image:: https://media.giphy.com/media/Ob7p7lDT99cd2/giphy.gif\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulule%2Fgeoipfix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fulule%2Fgeoipfix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulule%2Fgeoipfix/lists"}