Update readme.md

This commit is contained in:
skidoodle 2024-09-07 19:31:20 +02:00 committed by GitHub
parent ae91bd7ca8
commit 8901320eea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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
<script>
let getGoogle = function(data) {
alert("Google's ASN is " + data.asn);
let Quad9 = function(data) {
alert("Quad9's ASN is " + data.asn);
}
</script>
<script src="https://ip.albert.lol/8.8.8.8?callback=getGoogle"></script>
<script src="https://test.albert.lol/9.9.9.9?callback=Quad9"></script>
```
## 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
```