Commit Graph

15497 Commits

Author SHA1 Message Date
Brian Tiemann e536a4db4a Closes #22761: Do not follow redirects when sending webhooks
requests.Session.send() defaults allow_redirects=True, and send_webhook()'s call
never overrode it. A webhook destination's response therefore controlled where
the request actually went: a destination that is legitimate at configuration
time but is later compromised (or is malicious from the outset while appearing
legitimate) could respond with a redirect to an arbitrary address -- including
an internal one -- bypassing whatever destination was actually configured.

This is distinct from the documented threat model's carve-out for webhook
authors deliberately targeting arbitrary endpoints (THREAT_MODEL.md): that
carve-out covers the operator's own configured payload_url, not a third
party's response silently redirecting the request elsewhere.

Passes allow_redirects=False to session.send(); a 3xx response now surfaces as
a failed webhook via the existing status-code check, same as any other
non-2xx response.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 15:34:29 -04:00
bctiemann b6ff8654e0
Merge pull request #22755 from netbox-community/22737-deleting-a-profiled-cable-leaves-stale-connector-metadata-on
Fixes #22737: Clear cached Cable Profile data when deleting Cables
2026-07-23 14:00:29 -04:00
Jeremy Stretch 728c84470b
Closes #22753: Add `header_safe` Jinja2 filter for sanitizing webhook headers (#22754)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 10:58:25 -05:00
bctiemann e2bc76c8d3
Closes #22748: ContentTypeField.to_internal_value() must respect its declared queryset (#22749) 2026-07-23 10:56:23 -04:00
Martin Hauser 47102330eb
fix(dcim): Clear stale cable profile data on cable deletion
Clear cable_connector and cable_positions when deleting profiled cables.
Adds data migration to clean up stale values from earlier versions that
failed to clear these fields, preventing validation errors on affected
endpoints.

Fixes #22737
2026-07-23 15:06:08 +02:00
github-actions ee8aaec433 Update source translation strings 2026-07-23 05:59:11 +00:00
bctiemann 1860713156
Merge pull request #22741 from netbox-community/22697-using-cancel-button-in-add-script-screen-returns-to-root
Fixes #22697: Return to Scripts list when canceling ScriptModule creation
2026-07-22 19:45:08 -04:00
Sri Chandraja Reddy Allala 3e3d36cc2d
Fixes #22588: Filter VLANs by Site Group scope when assigning to a prefix (#22684) 2026-07-22 12:44:09 -07:00
Martin Hauser 84a024babd
fix(ipam): Add comments field to ASN search indexing (#22739)
Include comments field in ASN search with weight 5000 to enable
full-text search on ASN comment content.

Fixes #22736
2026-07-22 11:58:48 -07:00
Martin Hauser bc51d04988
fix(extras): Set default return URL for ScriptModule create view
The ScriptModule add view now falls back to the Scripts list when no
explicit return URL is provided. Adds regression test to verify the
default return URL behavior.

Fixes #22697
2026-07-22 18:01:54 +02:00
Martin Hauser 98c94f5fc7
Fixes #22720: Fix Virtual Chassis deletion with cross-chassis LAGs (#22740) 2026-07-22 10:43:26 -05:00
Jeremy Stretch e79e33e9dd
Fixes #22729: Escape names of file attachments in HTTP responses (#22730) 2026-07-22 10:38:22 -05:00
bctiemann abe4a2cd9e
Closes #22685: Add "any" lookup for tag & tag_id filters 2026-07-22 08:20:09 -04:00
Arthur Hanson 64519b722e
Fixes #22677: Fix display of validation errors for Cable length fields (#22733) 2026-07-22 11:17:36 +02:00
bctiemann e232ec00e3
Merge pull request #22724 from netbox-community/22719-rest-api-returns-500-instead-of-a-validation-error-for
Fixes #22719: Correct malformed IP value validation
2026-07-21 22:05:17 -04:00
Martin Hauser f9a90f3cc9
fix(dcim): Correct format placeholder in Cluster location validation error (#22725)
Changes 'site' to 'location' in the error message format string to match
the actual parameter name being passed. Adds regression test coverage to
verify the error message displays the correct location name.

Fixes #22717
2026-07-21 08:27:54 -07:00
Martin Hauser 87d396bab5 feat(ipam): Change DHCP IP address status color from green to purple
Group DHCP with SLAAC as an automatic address configuration method while
keeping it visually distinct from Active and Available.

Fixes #22623
2026-07-21 08:32:54 -04:00
Martin Hauser f9363f8688
fix(ipam): Fix format string in IP address/prefix validation errors
Add missing keyword argument to format() calls in validation error
messages. This ensures the invalid data value is properly included in
the error message returned to the user.

Fixes #22719
2026-07-21 09:41:04 +02:00
Martin Hauser d857c145c0
fix(dcim): Resolve VC position when replicating relationships (#22710)
Pass the device context to resolve_name() when creating port mappings
and assigning interface bridges. This ensures that component template
names containing {vc_position} resolve consistently with the names of
the instantiated device components.

Fixes #22707
2026-07-20 10:46:26 -07:00
Martin Hauser 15d2cc35e0
Closes #19273: Enable selection of VLANs scoped to a Device's Cluster or Cluster Group (#22715) 2026-07-20 10:18:56 -05:00
Martin Hauser 80f6da084e fix(forms): Improve Tom Select validation error styling
Replicate Bootstrap's invalid styling for Tom Select widgets with
explicit .is-invalid class, and apply NetBox's server-side error border
to widgets with aria-invalid='true'. This ensures consistent validation
feedback across both client and server-side validation states.

Fixes #22712
2026-07-20 08:50:22 -04:00
github-actions 158f6846c3 Update source translation strings 2026-07-19 05:58:36 +00:00
bctiemann 0eb1fcc09c
Closes #22682: Fix CachedScopeMixin cache fields cascading on ancestor deletion (#22693)
CachedScopeMixin._region and ._site_group may cache ancestors of a
Site or Location scope. Change these relationships to SET_NULL so
deleting a Region or SiteGroup clears the cached value instead of
deleting the scoped Prefix, Cluster, or WirelessLAN.

Add reverse GenericRelation fields for Cluster and WirelessLAN on
Region and SiteGroup. This preserves the expected cascade when a
Region or SiteGroup is itself the direct scope, matching the existing
Prefix behavior.

Add migrations recording the ORM-level on_delete changes and regression
coverage for Site, Location, and direct Region/SiteGroup scopes.
2026-07-18 10:35:08 +02:00
github-actions 100589bf06 Update source translation strings 2026-07-18 05:44:18 +00:00
bctiemann 5d05fcc983
Merge pull request #22696 from netbox-community/21988-restrict-filtered-object-references
Fixes #21988: Enforce view permissions when referencing related object by attributes in REST API
2026-07-17 14:40:05 -04:00
Arthur Hanson 8aa39cf24b
Closes #22678: Add security note for Redis broker trust / RQ task deserialization (#22679) 2026-07-17 13:59:47 +02:00
bctiemann f0a58362f4
Closes #22687: Fix queryset truthiness check in RenderTemplateMixin.render_to_response() (#22689) 2026-07-16 15:17:21 -04:00
Jeremy Stretch e713b4fd07 Fixes #21988: Enforce view permissions when referencing related object by attributes in REST API 2026-07-16 11:38:33 -04:00
github-actions 6c501413ee Update source translation strings 2026-07-15 05:46:07 +00:00
bctiemann 425b70275e
Merge pull request #22676 from netbox-community/22675-rss
#22675 Validate RSS feed entry link schemes to prevent javascript: XSS
2026-07-14 22:18:07 -04:00
Sri Chandraja Reddy Allala 5198a640eb
Fix: Interface "Create & Add Another" does not pre-populate previous values (#22656) (#22680) 2026-07-14 17:25:43 -04:00
Arthur Hanson c1d8ff1216
#22644 Add ObjectChange to PortMapping (#22645) 2026-07-14 14:20:33 -07:00
bctiemann 16875c747c
Closes #22654: Redact install paths from debug tracebacks (#22655) 2026-07-14 15:44:19 -04:00
mburggraf ad054fc694
Fixes #22513: Make JournalEntry.created_by immutable after creation (#22547) 2026-07-14 10:46:53 -07:00
Martin Hauser 85ea61eb4f
Fixes #22565: Include Circuit distance in Cable Path length calculations (#22666) 2026-07-14 11:53:34 -05:00
Arthur aa3b570219 #22675 Validate RSS feed entry link schemes to prevent javascript: XSS 2026-07-14 09:31:51 -07:00
Martin Hauser bd562dd5c7
Fixes #22662: Fix database overflow when saving Cables with large lengths (#22668) 2026-07-14 11:25:56 -05:00
Arthur 31301cdb95 #22675 Validate RSS feed entry link schemes to prevent javascript: XSS 2026-07-14 09:17:02 -07:00
Arthur 9cf75b60c1 #22675 Validate RSS feed entry link schemes to prevent javascript: XSS 2026-07-14 09:13:29 -07:00
Jeremy Stretch ebee3578b9 Release v4.6.5 2026-07-14 08:45:54 -04:00
github-actions bc666ed226 Update source translation strings 2026-07-14 05:45:35 +00:00
JCWasmx86 c475cd12b7 chore(netbox): Cache serializers
Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
2026-07-13 17:54:11 -04:00
Martin Hauser 48ecc712bc
Closes #22603: Add experimental Python packaging support for NetBox (#22605)
Add initial Python package support for NetBox, including wheel and sdist
builds, generated package metadata, and Test PyPI publishing for maintainer
validation.

Add package-aware CLI support, `netbox setup` scaffolding for instance-local
files, and centralized wheel-vs-checkout path handling while preserving the
existing source/archive install layout.

Bundle pre-rendered embedded documentation in the wheel, and extend CI to
verify dependency pins, wheel metadata, artifact contents, CLI behavior, sdist
rebuilds, and smoke-test upgrades.
2026-07-13 16:28:04 +02:00
github-actions 84bbaaa5a0 Update source translation strings 2026-07-12 05:59:57 +00:00
bctiemann ca7caecac5
Closes #22652: Disable autoescaping for Config Templates (#22653)
Force autoescape=False in ConfigTemplate.get_environment_params() after
merging user-supplied environment parameters. Config templates produce
plain-text network configurations and scripts, so HTML autoescaping is
not applicable.

Keep the override out of the shared render_jinja2() helper so export
templates can continue to use autoescape=True for HTML output. Add
regression coverage for both behaviors.
2026-07-11 18:37:52 +02:00
github-actions f250586b4c Update source translation strings 2026-07-11 05:50:53 +00:00
bctiemann a5071064d7
Merge pull request #22650 from netbox-community/22544-provide-a-rest-api-method-to-updateoverwrite-an-existing
Closes: #22544: Add support for updating Custom Script Modules via REST API
2026-07-10 13:14:55 -04:00
bctiemann 6ec79402cc
Closes #22657: escape exception message in render_widget before mark_safe (#22658) 2026-07-10 10:26:40 -05:00
Martin Hauser a0debf0e3b
feat(extras): Allow updating uploaded Script Modules via API
Add PUT/PATCH support to ScriptModuleViewSet for replacing Script Module
content in place. Modules can be addressed by numeric ID or file name,
and the uploaded file name must match the existing file path.
The module's scripts are re-synchronized from the new content after
successful update.

Fixes #22544
2026-07-10 13:18:36 +02:00
github-actions 817b35de49 Update source translation strings 2026-07-10 06:17:51 +00:00