Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v3.4.9 #12354

Merged
merged 20 commits into from
Apr 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
dd8112c
PRVB
jeremystretch Apr 12, 2023
c1c98f9
Closes #12232: Annotate direct URL for release notes for all projects
jeremystretch Apr 12, 2023
7b374e4
Fixes #12296: Fix 'mark connected' form field for bulk editing front …
jeremystretch Apr 19, 2023
164b2a5
Fixes #12270: Fix pre-population of list values when creating a saved…
jeremystretch Apr 19, 2023
ab35315
Closes #12226: Add Profile Data Headers to Remote Authentication Midd…
stuntguy3000 Apr 20, 2023
8b7ee0a
11383 fix search order (#12251)
decoupca Apr 20, 2023
12bb0ec
Fix typo in api token auth
Janik-Haag Apr 21, 2023
38a0ed5
12255 inventory item device change (#12311)
arthanson Apr 21, 2023
c8988ba
Add graphics
jeremystretch Apr 21, 2023
89fa546
Merge pull request from GHSA-92x4-vfjf-rmf7
x64x6a Apr 21, 2023
b1130ff
Add an issue template for deprecations
jeremystretch Apr 21, 2023
390619c
Changelog for #11383, #12205, #12226, #12255
jeremystretch Apr 21, 2023
053be95
Fixes #12238: Improve error message for API token IP prefix validatio…
jeremystretch Apr 21, 2023
e7663b7
Mark Provider.account as deprecated
jeremystretch Apr 21, 2023
b693123
Fixes #10987: Show rack-list dropdown in rack (#11779)
PieterL75 Apr 24, 2023
adb9673
Fixes #11623: obfuscate Wi-Fi PSKs (#12244)
decoupca Apr 24, 2023
99af126
Closes #11386: Introduce CSRF_COOKIE_SECURE, SECURE_SSL_REDIRECT, and…
jeremystretch Apr 25, 2023
d87235a
Closes #12337: Enable anonymized reporting of census data
jeremystretch Apr 26, 2023
1ad0297
#11902 validate device on inventory item import
arthanson Apr 25, 2023
a49fdad
Release v3.4.9
jeremystretch Apr 26, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ body:
attributes:
label: NetBox version
description: What version of NetBox are you currently running?
placeholder: v3.4.8
placeholder: v3.4.9
validations:
required: true
- type: dropdown
Expand Down
24 changes: 24 additions & 0 deletions .github/ISSUE_TEMPLATE/deprecation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
name: 🗑️ Deprecation
description: The removal of an existing feature or resource
labels: ["type: deprecation"]
body:
- type: textarea
attributes:
label: Proposed Changes
description: >
Describe in detail the proposed changes. What is being removed?
validations:
required: true
- type: textarea
attributes:
label: Justification
description: Please provide justification for the proposed change(s).
validations:
required: true
- type: textarea
attributes:
label: Impact
description: List all areas of the application that will be affected by this change.
validations:
required: true
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ body:
attributes:
label: NetBox version
description: What version of NetBox are you currently running?
placeholder: v3.4.8
placeholder: v3.4.9
validations:
required: true
- type: dropdown
Expand Down
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,18 @@ as the cornerstone for network automation in thousands of organizations.

## Getting Started

<div align="center">

[![NetBox logo](https://raw.githubusercontent.com/wiki/netbox-community/netbox/images/deploy/deploy1.png)](https://github.com/netbox-community/netbox)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[![Docker logo](https://raw.githubusercontent.com/wiki/netbox-community/netbox/images/deploy/deploy2.png)](https://github.com/netbox-community/netbox-docker)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[![NetBox Labs logo](https://raw.githubusercontent.com/wiki/netbox-community/netbox/images/deploy/deploy3.png)](https://netboxlabs.com/netbox-cloud/)

</div>

* Just want to explore? Check out [our public demo](https://demo.netbox.dev/) right now!
* The [official documentation](https://docs.netbox.dev) offers a comprehensive introduction.
* Choose your deployment: [self-hosted](https://github.com/netbox-community/netbox), [Docker](https://github.com/netbox-community/netbox-docker), or [NetBox Cloud](https://netboxlabs.com/netbox-cloud/).
* Check out [our wiki](https://github.com/netbox-community/netbox/wiki/Community-Contributions) for even more projects to get the most out of NetBox!

## Get Involved
Expand Down
64 changes: 32 additions & 32 deletions base_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,85 +1,85 @@
# HTML sanitizer
# https://github.com/mozilla/bleach
# https://github.com/mozilla/bleach/blob/main/CHANGES
bleach<6.0

# The Python web framework on which NetBox is built
# https://github.com/django/django
# https://docs.djangoproject.com/en/stable/releases/
Django<4.2

# Django middleware which permits cross-domain API requests
# https://github.com/OttoYiu/django-cors-headers
# https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst
django-cors-headers

# Runtime UI tool for debugging Django
# https://github.com/jazzband/django-debug-toolbar
# https://github.com/jazzband/django-debug-toolbar/blob/main/docs/changes.rst
django-debug-toolbar

# Library for writing reusable URL query filters
# https://github.com/carltongibson/django-filter
# https://github.com/carltongibson/django-filter/blob/main/CHANGES.rst
django-filter

# Django debug toolbar extension with support for GraphiQL
# https://github.com/flavors/django-graphiql-debug-toolbar/
# https://github.com/flavors/django-graphiql-debug-toolbar/blob/main/CHANGES.rst
django-graphiql-debug-toolbar

# Modified Preorder Tree Traversal (recursive nesting of objects)
# https://github.com/django-mptt/django-mptt
# https://github.com/django-mptt/django-mptt/blob/main/CHANGELOG.rst
django-mptt

# Context managers for PostgreSQL advisory locks
# https://github.com/Xof/django-pglocks
# https://github.com/Xof/django-pglocks/blob/master/CHANGES.txt
django-pglocks

# Prometheus metrics library for Django
# https://github.com/korfuri/django-prometheus
# https://github.com/korfuri/django-prometheus/blob/master/CHANGELOG.md
django-prometheus

# Django caching backend using Redis
# https://github.com/jazzband/django-redis
# https://github.com/jazzband/django-redis/blob/master/CHANGELOG.rst
django-redis

# Django extensions for Rich (terminal text rendering)
# https://github.com/adamchainz/django-rich
# https://github.com/adamchainz/django-rich/blob/main/CHANGELOG.rst
django-rich

# Django integration for RQ (Reqis queuing)
# https://github.com/rq/django-rq
# https://github.com/rq/django-rq/blob/master/CHANGELOG.md
django-rq

# Abstraction models for rendering and paginating HTML tables
# https://github.com/jieter/django-tables2
# https://github.com/jieter/django-tables2/blob/master/CHANGELOG.md
django-tables2

# User-defined tags for objects
# https://github.com/alex/django-taggit
# https://github.com/jazzband/django-taggit/blob/master/CHANGELOG.rst
django-taggit

# A Django field for representing time zones
# https://github.com/mfogel/django-timezone-field/
django-timezone-field

# A REST API framework for Django projects
# https://github.com/encode/django-rest-framework
# https://www.django-rest-framework.org/community/release-notes/
djangorestframework

# Swagger/OpenAPI schema generation for REST APIs
# https://github.com/axnsan12/drf-yasg
# https://drf-yasg.readthedocs.io/en/stable/changelog.html
drf-yasg[validation]

# Django wrapper for Graphene (GraphQL support)
# https://github.com/graphql-python/graphene-django
# https://github.com/graphql-python/graphene-django/releases
graphene_django

# WSGI HTTP server
# https://gunicorn.org/
# https://docs.gunicorn.org/en/latest/news.html
gunicorn

# Platform-agnostic template rendering engine
# https://github.com/pallets/jinja
# https://jinja.palletsprojects.com/changes/
Jinja2

# Simple markup language for rendering HTML
# https://github.com/Python-Markdown/markdown
# https://python-markdown.github.io/change_log/
# mkdocs currently requires Markdown v3.3
Markdown<3.4

Expand All @@ -88,50 +88,50 @@ Markdown<3.4
markdown-include

# MkDocs Material theme (for documentation build)
# https://github.com/squidfunk/mkdocs-material
# https://squidfunk.github.io/mkdocs-material/changelog/
mkdocs-material

# Introspection for embedded code
# https://github.com/mkdocstrings/mkdocstrings
# https://github.com/mkdocstrings/mkdocstrings/blob/master/CHANGELOG.md
mkdocstrings[python-legacy]

# Library for manipulating IP prefixes and addresses
# https://github.com/netaddr/netaddr
# https://github.com/netaddr/netaddr/blob/master/CHANGELOG
netaddr

# Fork of PIL (Python Imaging Library) for image processing
# https://github.com/python-pillow/Pillow
# https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst
Pillow

# PostgreSQL database adapter for Python
# https://github.com/psycopg/psycopg2
# https://www.psycopg.org/docs/news.html
psycopg2-binary

# YAML rendering library
# https://github.com/yaml/pyyaml
# https://github.com/yaml/pyyaml/blob/master/CHANGES
PyYAML

# Sentry SDK
# https://github.com/getsentry/sentry-python
# https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md
sentry-sdk

# Social authentication framework
# https://github.com/python-social-auth/social-core
# https://github.com/python-social-auth/social-core/blob/master/CHANGELOG.md
social-auth-core

# Django app for social-auth-core
# https://github.com/python-social-auth/social-app-django
# https://github.com/python-social-auth/social-app-django/blob/master/CHANGELOG.md
# See https://github.com/python-social-auth/social-app-django/issues/429
social-auth-app-django==5.0.0

# SVG image rendering (used for rack elevations)
# https://github.com/mozman/svgwrite
# hhttps://github.com/mozman/svgwrite/blob/master/NEWS.rst
svgwrite

# Tabular dataset library (for table-based exports)
# https://github.com/jazzband/tablib
# https://github.com/jazzband/tablib/blob/master/HISTORY.md
tablib

# Timezone data (required by django-timezone-field on Python 3.9+)
# https://github.com/python/tzdata
# https://github.com/python/tzdata/blob/master/NEWS.md
tzdata
2 changes: 2 additions & 0 deletions docs/administration/authentication/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ REMOTE_AUTH_BACKEND = 'netbox.authentication.RemoteUserBackend'

Another option for remote authentication in NetBox is to enable HTTP header-based user assignment. The front end HTTP server (e.g. nginx or Apache) performs client authentication as a process external to NetBox, and passes information about the authenticated user via HTTP headers. By default, the user is assigned via the `REMOTE_USER` header, but this can be customized via the `REMOTE_AUTH_HEADER` configuration parameter.

Optionally, user profile information can be supplied by `REMOTE_USER_FIRST_NAME`, `REMOTE_USER_LAST_NAME` and `REMOTE_USER_EMAIL` headers. These are saved to the users profile during the authentication process. These headers can be customized like the `REMOTE_USER` header.

### Single Sign-On (SSO)

```python
Expand Down
10 changes: 10 additions & 0 deletions docs/configuration/miscellaneous.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ Sets content for the top banner in the user interface.

---

## CENSUS_REPORTING_ENABLED

Default: True

Enables anonymous census reporting. To opt out of census reporting, set this to False.

This data enables the project maintainers to estimate how many NetBox deployments exist and track the adoption of new versions over time. Census reporting effects a single HTTP request each time a worker starts. The only data reported by this function are the NetBox version, Python version, and a pseudorandom unique identifier.

---

## CHANGELOG_RETENTION

!!! tip "Dynamic Configuration Parameter"
Expand Down
24 changes: 24 additions & 0 deletions docs/configuration/remote-authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,30 @@ When remote user authentication is in use, this is the name of the HTTP header w

---

## REMOTE_AUTH_USER_EMAIL

Default: `'HTTP_REMOTE_USER_EMAIL'`

When remote user authentication is in use, this is the name of the HTTP header which informs NetBox of the email address of the currently authenticated user. For example, to use the request header `X-Remote-User-Email` it needs to be set to `HTTP_X_REMOTE_USER_EMAIL`. (Requires `REMOTE_AUTH_ENABLED`.)

---

## REMOTE_AUTH_USER_FIRST_NAME

Default: `'HTTP_REMOTE_USER_FIRST_NAME'`

When remote user authentication is in use, this is the name of the HTTP header which informs NetBox of the first name of the currently authenticated user. For example, to use the request header `X-Remote-User-First-Name` it needs to be set to `HTTP_X_REMOTE_USER_FIRST_NAME`. (Requires `REMOTE_AUTH_ENABLED`.)

---

## REMOTE_AUTH_USER_LAST_NAME

Default: `'HTTP_REMOTE_USER_LAST_NAME'`

When remote user authentication is in use, this is the name of the HTTP header which informs NetBox of the last name of the currently authenticated user. For example, to use the request header `X-Remote-User-Last-Name` it needs to be set to `HTTP_X_REMOTE_USER_LAST_NAME`. (Requires `REMOTE_AUTH_ENABLED`.)

---

## REMOTE_AUTH_SUPERUSER_GROUPS

Default: `[]` (Empty list)
Expand Down
25 changes: 25 additions & 0 deletions docs/configuration/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,12 @@ The name of the cookie to use for the cross-site request forgery (CSRF) authenti

---

## CSRF_COOKIE_SECURE

Default: False

If true, the cookie employed for cross-site request forgery (CSRF) protection will be marked as secure, meaning that it can only be sent across an HTTPS connection.

---

## CSRF_TRUSTED_ORIGINS
Expand Down Expand Up @@ -145,6 +151,17 @@ The view name or URL to which a user is redirected after logging out.

---

## SECURE_SSL_REDIRECT

Default: False

If true, all non-HTTPS requests will be automatically redirected to use HTTPS.

!!! warning
Ensure that your frontend HTTP daemon has been configured to forward the HTTP scheme correctly before enabling this option. An incorrectly configured frontend may result in a looping redirect.

---

## SESSION_COOKIE_NAME

Default: `sessionid`
Expand All @@ -153,6 +170,14 @@ The name used for the session cookie. See the [Django documentation](https://doc

---

## SESSION_COOKIE_SECURE

Default: False

If true, the cookie employed for session authentication will be marked as secure, meaning that it can only be sent across an HTTPS connection.

---

## SESSION_FILE_PATH

Default: None
Expand Down
2 changes: 1 addition & 1 deletion docs/integrations/rest-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -638,7 +638,7 @@ $ curl -X POST \
https://netbox/api/users/tokens/provision/ \
--data '{
"username": "hankhill",
"password": "I<3C3H8",
"password": "I<3C3H8"
}'
```

Expand Down
22 changes: 22 additions & 0 deletions docs/release-notes/version-3.4.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# NetBox v3.4

## v3.4.9 (2023-04-26)

### Enhancements

* [#10987](https://github.com/netbox-community/netbox/issues/10987) - Show peer racks as a dropdown list under rack view
* [#11386](https://github.com/netbox-community/netbox/issues/11386) - Introduce `CSRF_COOKIE_SECURE`, `SECURE_SSL_REDIRECT`, and `SESSION_COOKIE_SECURE` configuration parameters
* [#11623](https://github.com/netbox-community/netbox/issues/11623) - Hide PSK strings under wireless LAN & link views
* [#12205](https://github.com/netbox-community/netbox/issues/12205) - Sanitize rendered custom links to mitigate malicious links
* [#12226](https://github.com/netbox-community/netbox/issues/12226) - Enable setting user name & email values via remote authenticate headers
* [#12337](https://github.com/netbox-community/netbox/issues/12337) - Enable anonymized reporting of census data

### Bug Fixes

* [#11383](https://github.com/netbox-community/netbox/issues/11383) - Fix ordering of global search results by object type
* [#11902](https://github.com/netbox-community/netbox/issues/11902) - Fix import of inventory items for devices with duplicated names
* [#12238](https://github.com/netbox-community/netbox/issues/12238) - Improve error message for API token IP prefix validation failures
* [#12255](https://github.com/netbox-community/netbox/issues/12255) - Restore the ability to move inventory items among devices
* [#12270](https://github.com/netbox-community/netbox/issues/12270) - Fix pre-population of list values when creating a saved filter
* [#12296](https://github.com/netbox-community/netbox/issues/12296) - Fix "mark connected" form field for bulk editing front & rear ports

---

## v3.4.8 (2023-04-12)

### Enhancements
Expand Down
10 changes: 10 additions & 0 deletions netbox/dcim/forms/bulk_edit.py
Original file line number Diff line number Diff line change
Expand Up @@ -1324,6 +1324,11 @@ class FrontPortBulkEditForm(
form_from_model(FrontPort, ['label', 'type', 'color', 'mark_connected', 'description']),
ComponentBulkEditForm
):
mark_connected = forms.NullBooleanField(
required=False,
widget=BulkEditNullBooleanSelect
)

model = FrontPort
fieldsets = (
(None, ('module', 'type', 'label', 'color', 'description', 'mark_connected')),
Expand All @@ -1335,6 +1340,11 @@ class RearPortBulkEditForm(
form_from_model(RearPort, ['label', 'type', 'color', 'mark_connected', 'description']),
ComponentBulkEditForm
):
mark_connected = forms.NullBooleanField(
required=False,
widget=BulkEditNullBooleanSelect
)

model = RearPort
fieldsets = (
(None, ('module', 'type', 'label', 'color', 'description', 'mark_connected')),
Expand Down
Loading