From 8901320eeaa98c6b3c78ef3e37fa0bca744fe0bc Mon Sep 17 00:00:00 2001 From: skidoodle Date: Sat, 7 Sep 2024 19:31:20 +0200 Subject: [PATCH] Update readme.md --- readme.md | 89 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 35 deletions(-) diff --git a/readme.md b/readme.md index b528ecb..ffd5ade 100644 --- a/readme.md +++ b/readme.md @@ -5,56 +5,56 @@ - **IP Geolocation**: Provides city, region, country, continent, and coordinates for any IP address. - **ASN Information**: Includes autonomous system number and organization. - **Hostname Lookup**: Retrieves the hostname associated with the IP address. -- **Automatic Database Updates**: Keeps GeoIP databases up-to-date weekly. +- **Automatic Database Updates**: Keeps GeoIP databases up-to-date daily. - **JSONP Support**: Allows JSONP responses for cross-domain requests. ## Example Endpoints ### Get information about an IP address ```sh -$ curl https://ip.albert.lol/8.8.8.8 +$ curl https://ip.albert.lol/9.9.9.9 { - "ip": "8.8.8.8", - "hostname": "dns.google.", - "asn": "15169", - "organization": "Google LLC", - "city": "Mountain View", + "ip": "9.9.9.9", + "hostname": "dns9.quad9.net", + "asn": "19281", + "org": "QUAD9-AS-1", + "city": "Berkeley", "region": "California", - "country": "US", - "country_full": "United States", - "continent": "NA", - "continent_full": "North America", - "loc": "37.4223,-122.0850" + "country": "United States", + "continent": "North America", + "timezone": "America/Los_Angeles", + "loc": "37.8767,-122.2676" } ``` ### Get specific information (e.g., city) about an IP address ```sh -$ curl https://ip.albert.lol/8.8.8.8/city -Mountain View +$ curl https://ip.albert.lol/9.9.9.9/city +{ + "city": "Berkeley" +} ``` ### Use JSONP callback function ```sh -$ curl http://ip.albert.lol/8.8.8.8?callback=getGoogle -/**/ typeof getGoogle === 'function' && getGoogle({ - "ip": "8.8.8.8", - "hostname": "dns.google.", - "asn": "15169", - "organization": "Google LLC", - "city": "Mountain View", +$ curl https://test.albert.lol/9.9.9.9?callback=Quad9 +/**/ typeof Quad9 === 'function' && Quad9({ + "ip": "9.9.9.9", + "hostname": "dns9.quad9.net", + "asn": "19281", + "org": "QUAD9-AS-1", + "city": "Berkeley", "region": "California", - "country": "US", - "country_full": "United States", - "continent": "NA", - "continent_full": "North America", - "loc": "37.4223,-122.0850" + "country": "United States", + "continent": "North America", + "timezone": "America/Los_Angeles", + "loc": "37.8767,-122.2676" }); ``` ```html - + ``` ## Running Locally @@ -63,27 +63,42 @@ let getGoogle = function(data) { git clone https://github.com/skidoodle/ipinfo cd ipinfo docker build -t ipinfo:main . -docker run -p 3000:3000 ipinfo:main +docker run \ +-p 3000:3000 +-e GEOIPUPDATE_ACCOUNT_ID=<> \ +-e GEOIPUPDATE_LICENSE_KEY=<> \ +-e GEOIPUPDATE_EDITION_IDS=<> \ +-e GEOIPUPDATE_DB_DIR=<> \ +ipinfo:main ``` ### Without Docker ```sh git clone https://github.com/skidoodle/ipinfo cd ipinfo -go run main.go +go run . ``` ## Deploying ### Docker Compose ```yaml -version: '3.9' - services: ipinfo: + image: ghcr.io/skidoodle/ipinfo:main container_name: ipinfo - image: 'ghcr.io/skidoodle/ipinfo:main' restart: unless-stopped ports: - - '3000:3000' + - "3000:3000" + environment: + GEOIPUPDATE_ACCOUNT_ID: ${GEOIPUPDATE_ACCOUNT_ID} + GEOIPUPDATE_LICENSE_KEY: ${GEOIPUPDATE_LICENSE_KEY} + GEOIPUPDATE_EDITION_IDS: "GeoLite2-City GeoLite2-ASN" + GEOIPUPDATE_DB_DIR: /app + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3000/"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s ``` ### Docker Run ```sh @@ -92,6 +107,10 @@ docker run \ --name=ipinfo \ --restart=unless-stopped \ -p 3000:3000 \ + -e GEOIPUPDATE_ACCOUNT_ID=<> \ + -e GEOIPUPDATE_LICENSE_KEY=<> \ + -e GEOIPUPDATE_EDITION_IDS=<> \ + -e GEOIPUPDATE_DB_DIR=<> \ ghcr.io/skidoodle/ipinfo:main ```