Go to file
Jeff Leung 52708bd2c2 Add self contained runtime deployment 2024-01-13 12:15:55 -08:00
AS1024.GeoFeed Add self contained runtime deployment 2024-01-13 12:15:55 -08:00
.dockerignore Add project files. 2024-01-04 20:39:36 -08:00
.gitattributes Add .gitattributes, .gitignore, README.md, and LICENSE.txt. 2024-01-04 20:39:34 -08:00
.gitignore Add .gitattributes, .gitignore, README.md, and LICENSE.txt. 2024-01-04 20:39:34 -08:00
AS1024.GeoFeed.sln Add project files. 2024-01-04 20:39:36 -08:00
LICENSE.txt Update license text 2024-01-08 14:59:18 -08:00
README.md Update the readme file 2024-01-08 10:48:48 -08:00

README.md

NetBox GeoFeed Web Application

Overview

This web application provides a self-published IP geolocation feed, conforming to the standards set out in RFC 8805. It is designed to interface with NetBox, a web-based infrastructure resource modeling (IRM) tool, to retrieve and format geolocation data for IP addresses.

The application is implemented in C# using .NET 8.0, ensuring a robust and modern back-end architecture. It's built to communicate securely over HTTPS with the NetBox API, adhering to best practices for data transmission and security.

Features

  • GeoFeed Generation: Dynamically generates a geolocation feed in CSV format as specified in RFC 8805.
  • Caching Mechanism: Implements an efficient caching strategy to reduce redundant API calls and enhance performance.
  • Local Disk Fallback Caching Mechanism: In the event of a failure to communicate with the NetBox instance specified, the web app will return data that is locally cached inside a SQLite database.
  • Secure Communication: Ensures secure data retrieval from NetBox over HTTPS.

Configuration

The application requires the following configuration variables to be set:

  1. APIKey: This is the API key used for authenticating with the NetBox API. Ensure this key has the necessary permissions to access the required resources.
  2. NetBoxHost: The hostname of the NetBox instance from which the application retrieves data. For example, netbox.example.com.
  3. LocalFeedCache: This connection string is for a local SQLite Database that caches the geofeed data from Netbox.

These variables can be set in your application's configuration file or through environment variables, depending on your deployment strategy.

NetBox Custom Fields

Ensure that your NetBox instance is configured with the following custom fields:

  • geoloc_city: (Text) Represents the city and is not required to be filled in.
  • geoloc_country: (Selection) Represents the country and is not required to be filled in.
  • geoloc_has_location: (Boolean) Indicates if there is geolocation data available and is required.
  • geoloc_postal_code: (Text) Represents the postal code and is not required to be filled in.
  • geoloc_region: (Selection) Represents the region and is not required to be filled in.

These fields are critical for the application to accurately retrieve and format geolocation data.

Getting Started

To build and run the application, follow these steps:

  1. Ensure you have .NET 8.0 SDK installed on your machine.
  2. Clone the repository to your local machine.
  3. Navigate to the root directory of the project via a command line interface (CLI).
  4. Run the command dotnet build to build the application. This will compile the source code and prepare it for execution.
  5. After a successful build, you can start the application by running dotnet run.
  6. The application will start, and you can access the endpoints as specified.

Endpoints

The application provides the following key endpoints:

  • /geofeed: Returns the GeoFeed data in CSV format.
  • /geofeed.csv: Also returns the GeoFeed data in CSV format, typically used for downloading the file.

Security and Compliance

This application is designed to always communicate over HTTPS with NetBox, ensuring that the data transfer is encrypted and secure.


For more information about configuring and using this application, please refer to the official .NET documentation and the NetBox API guide.