Skip to content

NetBox GeoIP v1.1

Latest

Choose a tag to compare

@jcl06 jcl06 released this 07 Nov 09:34

🚀 NetBox GeoIP Plugin v1.1

Release Date: November 2025
Requires: NetBox ≥ 4.1.3 • Python ≥ 3.10


✨ Enhancement

  • 🧩 Direct Integration (No Custom Fields)
    GeoIP fields (Enable GeoIP, Country, Region, City) are now injected directly into NetBox’s native Prefix and IPAddress forms — no more extras.CustomField dependencies.

  • 🌍 Dynamic Region Filtering
    Region choices now auto-filter by selected Country using NetBox’s dynamic form logic.

  • 🕒 Changelog Synchronization
    GeoIP changes are now logged together with their parent Prefix/IP object for complete traceability.

  • 🧹 Safer, Self-Contained Plugin
    Removed legacy migrations that edited NetBox core files (ipam/urls.py) or created custom fields.
    The plugin now operates entirely through dynamic form patching and runs without any NetBox core modifications.

  • 🗑️ Auto-Delete Behavior
    Disabling Enable GeoIP automatically deletes the related GeoIP record.


⚠️ Upgrade Notes

If upgrading from v1.0:

  1. Remove old custom fields (country, region, city, geoip_feed) from Customization → Custom Fields.

  2. Uncomment and remove the following in ipam.urls.py:

    - from netbox_geoip import views as netbox_geoip_views  # remove from the top
    
    # Prefixes
    ...
    + path('prefixes/add/', views.PrefixEditView.as_view(), name='prefix_add'),
    - # path('prefixes/add/', views.PrefixEditView.as_view(), name='prefix_add'),
    - path('prefixes/add/', netbox_geoip_views.CustomPrefixAddView.as_view(), name='prefix_add'),
    ...
    + path('prefixes/edit/', views.PrefixBulkEditView.as_view(), name='prefix_bulk_edit'),
    - # path('prefixes/edit/', views.PrefixBulkEditView.as_view(), name='prefix_bulk_edit'),
    - path('prefixes/edit/', netbox_geoip_views.CustomPrefixBulkEditView.as_view(), name='prefix_bulk_edit'),
    ...
    - path('prefixes/<int:pk>/edit/', netbox_geoip_views.CustomPrefixEditView.as_view(), name='prefix_edit'),
    
    # IP addresses
    ...
    + path('ip-addresses/add/', views.IPAddressEditView.as_view(), name='ipaddress_add'),
    - # path('ip-addresses/add/', views.IPAddressEditView.as_view(), name='ipaddress_add'),
    - path('ip-addresses/add/', netbox_geoip_views.CustomIPAddressAddView.as_view(), name='ipaddress_add'),
    ...
    + path('ip-addresses/edit/', views.IPAddressBulkEditView.as_view(), name='ipaddress_bulk_edit'),
    - # path('ip-addresses/edit/', views.IPAddressBulkEditView.as_view(), name='ipaddress_bulk_edit'),
    - path('ip-addresses/edit/', netbox_geoip_views.CustomIPAddressBulkEditView.as_view(), name='ipaddress_bulk_edit'),
    ...
    - path('ip-addresses/<int:pk>/edit/', netbox_geoip_views.CustomIPAddressEditView.as_view(), name='ipaddress_edit'),
  3. Run plugin migrations:

    python manage.py migrate netbox_geoip