FreeNAS/freenas cba3364debian/debian postinst

NAS-136785 / 25.10 / Disable ix-nvmf (#16789)

If SPDK is enabled the we will manually start this service when the
"wrapper" service `nvmet` is started.
DeltaFile
+3-0debian/debian/postinst
+3-01 files

FreeNAS/freenas 4355c82tests/api2 test_261_iscsi_cmd.py test_nvmet_tcp.py, tests/sharing_protocols/fibre_channel test_fibre_channel.py

NAS-136781 / 25.10 / Shift iSCSI, nvmet, FC functional tests to sharing_protocols (#16788)

DeltaFile
+0-3,324tests/api2/test_261_iscsi_cmd.py
+3,324-0tests/sharing_protocols/iscsi/test_261_iscsi_cmd.py
+0-1,678tests/api2/test_nvmet_tcp.py
+1,678-0tests/sharing_protocols/nvmet/test_nvmet_tcp.py
+0-1,053tests/api2/test_fibre_channel.py
+1,053-0tests/sharing_protocols/fibre_channel/test_fibre_channel.py
+6,055-6,0555 files not shown
+7,012-7,01111 files

FreeNAS/freenas ffd6746tests/sharing_protocols assets

Add assets softlink
DeltaFile
+1-0tests/sharing_protocols/assets
+1-01 files

FreeNAS/freenas c544e26tests/api2 test_fibre_channel.py, tests/sharing_protocols/fibre_channel test_fibre_channel.py

Move Fibre channel tests to sharing_protocols
DeltaFile
+1,053-0tests/sharing_protocols/fibre_channel/test_fibre_channel.py
+0-1,053tests/api2/test_fibre_channel.py
+1,053-1,0532 files

FreeNAS/freenas ea544c8tests/api2 test_261_iscsi_cmd.py test_nvmet_tcp.py, tests/sharing_protocols/iscsi test_261_iscsi_cmd.py test_262_iscsi_alua.py

Move main iSCSI and nvmet tests to sharing_protocols
DeltaFile
+0-3,324tests/api2/test_261_iscsi_cmd.py
+3,324-0tests/sharing_protocols/iscsi/test_261_iscsi_cmd.py
+1,678-0tests/sharing_protocols/nvmet/test_nvmet_tcp.py
+0-1,678tests/api2/test_nvmet_tcp.py
+573-0tests/sharing_protocols/iscsi/test_262_iscsi_alua.py
+0-573tests/api2/test_262_iscsi_alua.py
+5,575-5,5752 files not shown
+5,958-5,9588 files

FreeNAS/freenas 5adb6b8src/middlewared/middlewared/plugins/system_advanced gpu.py

Update GPU PCI choices to reflect which GPU is critical
DeltaFile
+17-6src/middlewared/middlewared/plugins/system_advanced/gpu.py
+17-61 files

FreeNAS/freenas da00126src/middlewared/middlewared/alembic/versions/25.10 2025-07-17_10-00_add_webshare_complete.py, src/middlewared/middlewared/api/v25_10_0 webshare.py

NAS-133371: Add complete WebShare service implementation

This commit implements the full WebShare service functionality including:

- WebShare service configuration and management
- Database migration for service tables and configuration
- API endpoints for WebShare CRUD operations
- User and group management integration for webshare access
- Dataset creation and permission management for bulk downloads and search
- Service lifecycle management (start/stop/enable/disable)
- Auto-configuration of pools for new installations
- Search indexing integration with TrueSearch
- Web terminal functionality
- Session logging and retention management
- PAM authentication integration
- Comprehensive test coverage for all features
- Integration with TrueNAS nginx configuration
- Pool dataset integration for webshare functionality
- Error handling and validation for all configuration options

    [21 lines not shown]
DeltaFile
+730-0src/middlewared/middlewared/plugins/webshare.py
+475-0tests/unit/test_webshare_service.py
+414-0tests/api2/test_webshare.py
+202-0src/middlewared/middlewared/etc_files/local/nginx/nginx.conf.mako
+121-0src/middlewared/middlewared/alembic/versions/25.10/2025-07-17_10-00_add_webshare_complete.py
+91-0src/middlewared/middlewared/api/v25_10_0/webshare.py
+2,033-012 files not shown
+2,148-318 files

FreeNAS/freenas 624c282src/middlewared/middlewared/utils/disks_ disk_class.py

NAS-136771 / 25.10 / Factor in partitions as well when generating disk identifier (#16777)

## Problem

Currently how disk identifier is calculated in `disk.query`, it factors
in partition uuids as well if they are available and serial/lunid are
not before falling back to using disk name as disk identifier. This
introduces discrepancy between identifiers wherever they are going to be
used elsewhere.

## Solution

Factor in partition uuid when determining disk identifier in `DiskEntry`
class to make sure that both implementations are as close as possible in
terms of retrieving the same deterministic disk identifier.
DeltaFile
+13-3src/middlewared/middlewared/utils/disks_/disk_class.py
+13-31 files

FreeNAS/freenas 8f4f307src/middlewared/middlewared/plugins/directoryservices_ datastore.py

Fix
DeltaFile
+0-1src/middlewared/middlewared/plugins/directoryservices_/datastore.py
+0-11 files

FreeNAS/freenas deff512src/middlewared/middlewared/etc_files/local/avahi/services ADISK.service.py, tests/api2 test_310_service_announcement.py

NAS-136782 / 25.10 / Fix filter for checking time machine share (#16785)

This commit fixes the filter that determines whether an SMB share needs
an ADISK mDNS record.
DeltaFile
+5-5tests/api2/test_310_service_announcement.py
+2-2src/middlewared/middlewared/etc_files/local/avahi/services/ADISK.service.py
+7-72 files

FreeNAS/freenas 6f7f7a6tests/api2 test_310_service_announcement.py

Fix test
DeltaFile
+5-5tests/api2/test_310_service_announcement.py
+5-51 files

FreeNAS/freenas 6c88176src/middlewared/middlewared/api/v25_10_0 update.py

NAS-136766 / 25.10 / Fix crash on `update.status` call (#16786)

Missing API field
DeltaFile
+1-0src/middlewared/middlewared/api/v25_10_0/update.py
+1-01 files

FreeNAS/freenas 747e30esrc/middlewared/middlewared/plugins/directoryservices_ activedirectory_join_mixin.py

Fix
DeltaFile
+2-1src/middlewared/middlewared/plugins/directoryservices_/activedirectory_join_mixin.py
+2-11 files

FreeNAS/freenas 58d5c07src/middlewared/middlewared/alembic/versions/25.10 2025-07-17_10-00_add_webshare_complete.py, src/middlewared/middlewared/api/v25_10_0 webshare.py

NAS-133371: Add complete WebShare service implementation

This commit implements the full WebShare service functionality including:

- WebShare service configuration and management
- Database migration for service tables and configuration
- API endpoints for WebShare CRUD operations
- User and group management integration for webshare access
- Dataset creation and permission management for bulk downloads and search
- Service lifecycle management (start/stop/enable/disable)
- Auto-configuration of pools for new installations
- Search indexing integration with TrueSearch
- Web terminal functionality
- Session logging and retention management
- PAM authentication integration
- Comprehensive test coverage for all features
- Integration with TrueNAS nginx configuration
- Pool dataset integration for webshare functionality
- Error handling and validation for all configuration options

    [21 lines not shown]
DeltaFile
+730-0src/middlewared/middlewared/plugins/webshare.py
+475-0tests/unit/test_webshare_service.py
+414-0tests/api2/test_webshare.py
+202-0src/middlewared/middlewared/etc_files/local/nginx/nginx.conf.mako
+121-0src/middlewared/middlewared/alembic/versions/25.10/2025-07-17_10-00_add_webshare_complete.py
+91-0src/middlewared/middlewared/api/v25_10_0/webshare.py
+2,033-012 files not shown
+2,148-318 files

FreeNAS/freenas 2145d5bsrc/middlewared/middlewared/etc_files/local/avahi/services ADISK.service.py

Fix filter for checking time machine share

This commit fixes the filter that determines whether an SMB share
needs an ADISK mDNS record.
DeltaFile
+2-2src/middlewared/middlewared/etc_files/local/avahi/services/ADISK.service.py
+2-21 files

FreeNAS/freenas d6f92a3src/middlewared/middlewared/etc_files/local/avahi/services ADISK.service.py

Fix
DeltaFile
+1-1src/middlewared/middlewared/etc_files/local/avahi/services/ADISK.service.py
+1-11 files

FreeNAS/freenas 1113440tests/api2 test_261_iscsi_cmd.py test_300_nfs.py

Remove tests
DeltaFile
+0-3,324tests/api2/test_261_iscsi_cmd.py
+0-2,064tests/api2/test_300_nfs.py
+0-1,678tests/api2/test_nvmet_tcp.py
+0-1,404tests/api2/test_200_ftp.py
+0-1,053tests/api2/test_fibre_channel.py
+0-936tests/api2/test_345_acl_nfs4.py
+0-10,459244 files not shown
+0-35,932250 files

FreeNAS/freenas 95cb221tests/directory_services test_zzz_truenas_ha.py

Fix
DeltaFile
+2-1tests/directory_services/test_zzz_truenas_ha.py
+2-11 files

FreeNAS/freenas b6dd41fsrc/middlewared/middlewared/alembic/versions/25.10 2025-07-17_10-00_add_webshare_complete.py, src/middlewared/middlewared/api/v25_10_0 webshare.py

NAS-133371: Add complete WebShare service implementation

This commit implements the full WebShare service functionality including:

- WebShare service configuration and management
- Database migration for service tables and configuration
- API endpoints for WebShare CRUD operations
- User and group management integration for webshare access
- Dataset creation and permission management for bulk downloads and search
- Service lifecycle management (start/stop/enable/disable)
- Auto-configuration of pools for new installations
- Search indexing integration with TrueSearch
- Web terminal functionality
- Session logging and retention management
- PAM authentication integration
- Comprehensive test coverage for all features
- Integration with TrueNAS nginx configuration
- Pool dataset integration for webshare functionality
- Error handling and validation for all configuration options

    [20 lines not shown]
DeltaFile
+730-0src/middlewared/middlewared/plugins/webshare.py
+475-0tests/unit/test_webshare_service.py
+414-0tests/api2/test_webshare.py
+196-0src/middlewared/middlewared/etc_files/local/nginx/nginx.conf.mako
+121-0src/middlewared/middlewared/alembic/versions/25.10/2025-07-17_10-00_add_webshare_complete.py
+91-0src/middlewared/middlewared/api/v25_10_0/webshare.py
+2,027-012 files not shown
+2,142-318 files

FreeNAS/freenas a0064dbsrc/middlewared/middlewared/plugins/directoryservices_ datastore.py

Fix
DeltaFile
+3-1src/middlewared/middlewared/plugins/directoryservices_/datastore.py
+3-11 files

FreeNAS/freenas c5bd6bdsrc/middlewared/middlewared/etc_files/local/avahi/services ADISK.service.py

Fix filter for checking time machine share

This commit fixes the filter that determines whether an SMB share
needs an ADISK mDNS record.
DeltaFile
+1-1src/middlewared/middlewared/etc_files/local/avahi/services/ADISK.service.py
+1-11 files

FreeNAS/freenas 40155aesrc/middlewared/middlewared/plugins auth.py

NAS-136775 / 25.04.2 / fallthrough auth.login_ex on unhealthy HA (by yocalebo) (#16784)

Seems to be a reoccurring theme whereby HA is disabled and then both
controllers are power cycled, rebooted, etc. When HA is
disabled...failover will not work by design. It has been this way since
the beginning. However, some changes to the UI login page have
introduced a situation where the user is unable to login at all without
any indication as to why (even if the credentials that are provided are
valid).

This changes the logic to return REDIRECT _ONLY_ when HA is healthy and
the user is trying to login to the standby controller. Otherwise, the
login attempt will fall through like normal.

This shifts the responsibility of whether to continue the login process
and show the web page contents back to the caller (local UI in this
scenario).

Original PR: https://github.com/truenas/middleware/pull/16781

Co-authored-by: Caleb <yocalebo at gmail.com>
DeltaFile
+19-4src/middlewared/middlewared/plugins/auth.py
+19-41 files

FreeNAS/freenas ca8ff0esrc/middlewared/middlewared/plugins auth.py

NAS-136775 / 25.10 / fallthrough auth.login_ex on unhealthy HA (#16781)

Seems to be a reoccurring theme whereby HA is disabled and then both
controllers are power cycled, rebooted, etc. When HA is
disabled...failover will not work by design. It has been this way since
the beginning. However, some changes to the UI login page have
introduced a situation where the user is unable to login at all without
any indication as to why (even if the credentials that are provided are
valid).

This changes the logic to return REDIRECT _ONLY_ when HA is healthy and
the user is trying to login to the standby controller. Otherwise, the
login attempt will fall through like normal.

This shifts the responsibility of whether to continue the login process
and show the web page contents back to the caller (local UI in this
scenario).
DeltaFile
+19-4src/middlewared/middlewared/plugins/auth.py
+19-41 files

FreeNAS/freenas 0c69616src/middlewared/middlewared/api/v25_10_0 app.py, src/middlewared/middlewared/plugins network.py

NAS-136676 / 25.10 / Prevent removing aliases on interfaces which might be used by apps (#16779)

This PR adds some validation to prevent removing aliases which might be
used by some app and raise an appropriate validation error why it cannot
be removed in that case.
DeltaFile
+227-0src/middlewared/middlewared/pytest/unit/plugins/apps/test_used_host_ips.py
+30-0src/middlewared/middlewared/plugins/network.py
+16-1src/middlewared/middlewared/plugins/apps/resources.py
+12-2src/middlewared/middlewared/api/v25_10_0/app.py
+7-1src/middlewared/middlewared/plugins/apps/ix_apps/query.py
+292-45 files

FreeNAS/freenas b33cc92src/middlewared/middlewared/plugins/directoryservices_ datastore.py

Fix
DeltaFile
+2-0src/middlewared/middlewared/plugins/directoryservices_/datastore.py
+2-01 files

FreeNAS/freenas c9ccc4dsrc/middlewared/middlewared/plugins/truenas_connect hostname.py acme.py

NAS-136464 / 25.10 / Only create wildcard domain for TNC for ACME challenge (#16783)

This PR adds changes to make sure we only create wildcard domain for TNC
when we are performing TNC challenge which happens either the first time
we set up the cert or when we renew it.
DeltaFile
+2-2src/middlewared/middlewared/plugins/truenas_connect/hostname.py
+1-1src/middlewared/middlewared/plugins/truenas_connect/acme.py
+3-32 files

FreeNAS/freenas 8c4e1fbsrc/middlewared/middlewared/plugins/truenas_connect acme.py

Make sure on cert renewal wildcard record gets created
DeltaFile
+1-1src/middlewared/middlewared/plugins/truenas_connect/acme.py
+1-11 files

FreeNAS/freenas a005f00src/middlewared/middlewared/plugins/truenas_connect hostname.py acme.py

Make sure on cert generation we create wildcard record
DeltaFile
+2-2src/middlewared/middlewared/plugins/truenas_connect/hostname.py
+1-1src/middlewared/middlewared/plugins/truenas_connect/acme.py
+3-32 files

FreeNAS/freenas a410267src/middlewared/middlewared/api/v25_10_0 audit.py

flake8 (lines too long)
DeltaFile
+6-6src/middlewared/middlewared/api/v25_10_0/audit.py
+6-61 files

FreeNAS/freenas 23b62d8src/middlewared/middlewared/plugins/directoryservices_ datastore.py

Log
DeltaFile
+2-0src/middlewared/middlewared/plugins/directoryservices_/datastore.py
+2-01 files