Changes for version 2.109000 - 2026-09-13

  • ENHANCEMENTS
    • this release needs Safari 16.4, Firefox 101, Chrome 74 or Edge 79, or newer. it is the first that will not work on an older browser
    • pages are now drawn in the display mode the current framework is written for. rows in a table stand a little taller as a result
    • Back and Forward now fetch the page again for the tab and options in the address bar, so what you return to is current rather than the results as they were when you left them
    • changing your search or your columns while results are still loading now abandons the request already in flight, so what you asked for last arrives sooner and the results you replaced never flash up on the way
    • a request whose answer never arrives now gives up after five minutes and says so where the results would be, instead of leaving the spinner turning
    • searching the SNMP browser now goes straight to the object, where it used to open the tree a level at a time
    • the SNMP browser tree and the suggestion lists under the search boxes are drawn by netdisco itself now. they work as they did, and both look a little different
    • the arrow marking a sorted column is drawn differently and takes less room, so tables are a little narrower
    • the date range boxes on Node Search, IP Inventory and Subnet Utilization are now a list of the usual ranges above two ordinary date fields. they send what they always did
    • the sidebar now opens and closes at once instead of sliding
    • if you keep site-local templates or JavaScript, run netdisco-do checksitelocal after upgrading. this release removes several things a copy may still call, including script files and a stylesheet a copy of the layout may still name, and the report names every file and what to change. a shadowed layout is also reported when the web app starts, because it leaves every page dead and says nothing otherwise
    • the loadmibs action now loads the SQL bundled with netdisco-mibs. the previous behavior, building the table from the OID reports, is now the loadmibsfromoids action
  • BUG FIXES
    • fix an authenticated server-side request forgery: any user could have the backend poll an address of their choosing
    • a non-admin job no longer forwards the extra and port parameters into the backend configuration
    • fix a privilege escalation in the port control endpoint, where a port_control user could queue any backend job action
    • fix an authenticated reflected XSS in the /t/<tenant> URL segment
    • a /t/ URL naming a tenancy which is not configured is no longer a page
    • fix an authenticated credential disclosure: the device API returned the stored SNMP community in the device object
    • fix an authenticated SQL injection in the device search "fields" parameter
    • Device Search no longer returns the stored SNMP community, and a field name which is not a Device column is refused rather than passed to the database
    • fix an authenticated SQL injection in report sorting and searching
    • the archived-node marker is drawn in one color everywhere it appears
    • the delete button on the Duplicate Devices admin page shows its icon again, rather than red on red
    • the Neighbor Hops label in the netmap sidebar lines up with its radio button again
    • the Module Inventory, NetBIOS and Node Vendor reports now honor every filter when more than one is given, rather than only the first
    • the ACL editor's Host Preference now follows the address bar, so it can be linked to and bookmarked
    • choosing an IPv6 prefix from the suggestions in the IP Inventory sidebar now disables the "never" option, which it only did if you typed the prefix out in full
    • a device name containing an ampersand now reads correctly in the search suggestions
    • when your session expires you are now taken to the login page and returned to where you were once you log in. a page whose panel refreshes on its own, the Job Queue in particular, used to report a server error and stop refreshing, with nothing to say your session had ended
    • the job log that appears when you hover a Job Queue row is now dismissed when the table refreshes. one was left behind on every refresh, still showing the job it described, and they piled up over the page and swallowed clicks meant for the rows beneath them
    • addresses that are links, on Device Inventory and Duplicate Devices, now sort by address. they sorted as text, which put .70 above .4
    • tooltips and the job log that appears when you hover a Job Queue row are drawn in the same typeface as the rest of the page again. the log had also been set larger, and in a monospaced face, which read as a terminal dropped onto the page
    • a button in an admin table no longer breaks its label across two lines as the window narrows. "Create ACL" on the User Management page split in two below about 1200 pixels
    • the Discover box on the front page now says whether your job was queued, and leaves you where you are. a name that does not resolve, a prefix wider than /22, or anything that is not an address, sent you back to the front page with nothing said either way
    • #1610 loadmibs silently skipped every vendor report when the mibhome path contained a dot
    • #1611 loadmibs -e <vendor> replaced the entire snmp_object table, and the single-vendor load now always includes rfc_oids, net-snmp_oids and cisco_oids

Documentation

Create DB Schema Versions for Netdisco
Import a Nedisco 1.x Manual Topology File
Job Control Daemon for Netdisco
Job Control for Netdisco
Database deployment for Netdisco
Database, OUI and MIB deployment for Netdisco
Run any Netdisco job from the command-line.
DEPRECATED!
Web Application Server for Netdisco
Web Application for Netdisco

Modules

An open source web-based network management tool.
Request NetBIOS node status with AnyEvent
Support for PostgreSQL Lock Modes
find site-local files broken by shipped changes
Netdisco Web UI components
Generate rancid Configuration

Provides

in lib/App/Netdisco/Backend/Job.pm
in lib/App/Netdisco/Backend/Role/Manager.pm
in lib/App/Netdisco/Backend/Role/Poller.pm
in lib/App/Netdisco/Backend/Role/Scheduler.pm
in lib/App/Netdisco/Builder.pm
in lib/App/Netdisco/Configuration.pm
in lib/App/Netdisco/DB.pm
in lib/App/Netdisco/DB/Result.pm
in lib/App/Netdisco/DB/Result/Admin.pm
in lib/App/Netdisco/DB/Result/Community.pm
in lib/App/Netdisco/DB/Result/Device.pm
in lib/App/Netdisco/DB/Result/DeviceBrowser.pm
in lib/App/Netdisco/DB/Result/DeviceIp.pm
in lib/App/Netdisco/DB/Result/DeviceModule.pm
in lib/App/Netdisco/DB/Result/DevicePort.pm
in lib/App/Netdisco/DB/Result/DevicePortLog.pm
in lib/App/Netdisco/DB/Result/DevicePortPower.pm
in lib/App/Netdisco/DB/Result/DevicePortProperties.pm
in lib/App/Netdisco/DB/Result/DevicePortSsid.pm
in lib/App/Netdisco/DB/Result/DevicePortVlan.pm
in lib/App/Netdisco/DB/Result/DevicePortWireless.pm
in lib/App/Netdisco/DB/Result/DevicePower.pm
in lib/App/Netdisco/DB/Result/DeviceSkip.pm
in lib/App/Netdisco/DB/Result/DeviceVlan.pm
in lib/App/Netdisco/DB/Result/Enterprise.pm
in lib/App/Netdisco/DB/Result/Log.pm
in lib/App/Netdisco/DB/Result/Manufacturer.pm
in lib/App/Netdisco/DB/Result/NetmapPositions.pm
in lib/App/Netdisco/DB/Result/Node.pm
in lib/App/Netdisco/DB/Result/NodeIp.pm
in lib/App/Netdisco/DB/Result/NodeMonitor.pm
in lib/App/Netdisco/DB/Result/NodeNbt.pm
in lib/App/Netdisco/DB/Result/NodeWireless.pm
in lib/App/Netdisco/DB/Result/Oui.pm
in lib/App/Netdisco/DB/Result/Process.pm
in lib/App/Netdisco/DB/Result/Product.pm
in lib/App/Netdisco/DB/Result/SNMPFilter.pm
in lib/App/Netdisco/DB/Result/SNMPObject.pm
in lib/App/Netdisco/DB/Result/Session.pm
in lib/App/Netdisco/DB/Result/Statistics.pm
in lib/App/Netdisco/DB/Result/Subnet.pm
in lib/App/Netdisco/DB/Result/Topology.pm
in lib/App/Netdisco/DB/Result/User.pm
in lib/App/Netdisco/DB/Result/UserLog.pm
in lib/App/Netdisco/DB/Result/Virtual/ACLEntriesWithDNS.pm
in lib/App/Netdisco/DB/Result/Virtual/ActiveNode.pm
in lib/App/Netdisco/DB/Result/Virtual/ActiveNodeWithAge.pm
in lib/App/Netdisco/DB/Result/Virtual/ApRadioChannelPower.pm
in lib/App/Netdisco/DB/Result/Virtual/CidrIps.pm
in lib/App/Netdisco/DB/Result/Virtual/DeviceDnsMismatch.pm
in lib/App/Netdisco/DB/Result/Virtual/DeviceLinks.pm
in lib/App/Netdisco/DB/Result/Virtual/DevicePlatforms.pm
in lib/App/Netdisco/DB/Result/Virtual/DevicePoeStatus.pm
in lib/App/Netdisco/DB/Result/Virtual/DevicePortSpeed.pm
in lib/App/Netdisco/DB/Result/Virtual/DuplexMismatch.pm
in lib/App/Netdisco/DB/Result/Virtual/FilteredSNMPObject.pm
in lib/App/Netdisco/DB/Result/Virtual/GenericReport.pm
in lib/App/Netdisco/DB/Result/Virtual/LastNode.pm
in lib/App/Netdisco/DB/Result/Virtual/NodeIp4.pm
in lib/App/Netdisco/DB/Result/Virtual/NodeIp6.pm
in lib/App/Netdisco/DB/Result/Virtual/NodeMonitor.pm
in lib/App/Netdisco/DB/Result/Virtual/NodeWithAge.pm
in lib/App/Netdisco/DB/Result/Virtual/NodesDiscovered.pm
in lib/App/Netdisco/DB/Result/Virtual/OrphanedDevices.pm
in lib/App/Netdisco/DB/Result/Virtual/PollerPerformance.pm
in lib/App/Netdisco/DB/Result/Virtual/PortMacs.pm
in lib/App/Netdisco/DB/Result/Virtual/PortUtilization.pm
in lib/App/Netdisco/DB/Result/Virtual/PortVLANMismatch.pm
in lib/App/Netdisco/DB/Result/Virtual/SlowDevices.pm
in lib/App/Netdisco/DB/Result/Virtual/SubnetUtilization.pm
in lib/App/Netdisco/DB/Result/Virtual/TastyJobs.pm
in lib/App/Netdisco/DB/Result/Virtual/UnDirEdgesAgg.pm
in lib/App/Netdisco/DB/Result/Virtual/UndiscoveredNeighbors.pm
in lib/App/Netdisco/DB/Result/Virtual/UserRole.pm
in lib/App/Netdisco/DB/Result/Virtual/WalkJobs.pm
in lib/App/Netdisco/DB/ResultSet.pm
in lib/App/Netdisco/DB/ResultSet/AccessControlListMap.pm
in lib/App/Netdisco/DB/ResultSet/AccessControlListName.pm
in lib/App/Netdisco/DB/ResultSet/Admin.pm
in lib/App/Netdisco/DB/ResultSet/Device.pm
in lib/App/Netdisco/DB/ResultSet/DeviceBrowser.pm
in lib/App/Netdisco/DB/ResultSet/DeviceModule.pm
in lib/App/Netdisco/DB/ResultSet/DevicePort.pm
in lib/App/Netdisco/DB/ResultSet/DevicePortLog.pm
in lib/App/Netdisco/DB/ResultSet/DevicePortSsid.pm
in lib/App/Netdisco/DB/ResultSet/DevicePower.pm
in lib/App/Netdisco/DB/ResultSet/DeviceSkip.pm
in lib/App/Netdisco/DB/ResultSet/Node.pm
in lib/App/Netdisco/DB/ResultSet/NodeIp.pm
in lib/App/Netdisco/DB/ResultSet/NodeNbt.pm
in lib/App/Netdisco/DB/ResultSet/NodeWireless.pm
in lib/App/Netdisco/DB/ResultSet/Subnet.pm
in lib/App/Netdisco/DB/SchemaVersioned.pm
in lib/App/Netdisco/DB/SetOperations.pm
in lib/App/Netdisco/Environment.pm
in lib/App/Netdisco/GenericDB.pm
in lib/App/Netdisco/GenericDB/Result/Virtual/GenericReport.pm
in lib/App/Netdisco/JobQueue/PostgreSQL.pm
in lib/App/Netdisco/Util/Configuration.pm
in lib/App/Netdisco/Util/CustomFields.pm
in lib/App/Netdisco/Util/MCE.pm
in lib/App/Netdisco/Util/NodeMonitor.pm
in lib/App/Netdisco/Util/Noop.pm
in lib/App/Netdisco/Util/Python.pm
in lib/App/Netdisco/Util/Worker.pm
in lib/App/Netdisco/Web.pm
in lib/App/Netdisco/Web/API/Objects.pm
in lib/App/Netdisco/Web/API/Queue.pm
in lib/App/Netdisco/Web/API/Statistics.pm
in lib/App/Netdisco/Web/API/User.pm
in lib/App/Netdisco/Web/AdminTask.pm
in lib/App/Netdisco/Web/Auth/Provider/DBIC.pm
in lib/App/Netdisco/Web/AuthN.pm
in lib/App/Netdisco/Web/CustomFields.pm
in lib/App/Netdisco/Web/Device.pm
in lib/App/Netdisco/Web/GenericReport.pm
in lib/App/Netdisco/Web/Health.pm
in lib/App/Netdisco/Web/Metrics.pm
in lib/App/Netdisco/Web/Password.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/ACLEditor.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/ACLManager.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/Divider.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/DuplicateDevices.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/JobQueue.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/NodeMonitor.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/OrphanedDevices.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/PollerPerformance.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/SlowDevices.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/TimedOutDevices.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/Topology.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/UndiscoveredNeighbors.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/UserLog.pm
in lib/App/Netdisco/Web/Plugin/AdminTask/Users.pm
in lib/App/Netdisco/Web/Plugin/Device/Addresses.pm
in lib/App/Netdisco/Web/Plugin/Device/Details.pm
in lib/App/Netdisco/Web/Plugin/Device/Modules.pm
in lib/App/Netdisco/Web/Plugin/Device/Neighbors.pm
in lib/App/Netdisco/Web/Plugin/Device/Ports.pm
in lib/App/Netdisco/Web/Plugin/Device/SNMP.pm
in lib/App/Netdisco/Web/Plugin/Device/Vlans.pm
in lib/App/Netdisco/Web/Plugin/Inventory.pm
in lib/App/Netdisco/Web/Plugin/Report/ApChannelDist.pm
in lib/App/Netdisco/Web/Plugin/Report/ApClients.pm
in lib/App/Netdisco/Web/Plugin/Report/ApRadioChannelPower.pm
in lib/App/Netdisco/Web/Plugin/Report/DeviceAddrNoDNS.pm
in lib/App/Netdisco/Web/Plugin/Report/DeviceByLocation.pm
in lib/App/Netdisco/Web/Plugin/Report/DeviceDnsMismatch.pm
in lib/App/Netdisco/Web/Plugin/Report/DevicePoeStatus.pm
in lib/App/Netdisco/Web/Plugin/Report/DuplexMismatch.pm
in lib/App/Netdisco/Web/Plugin/Report/HalfDuplex.pm
in lib/App/Netdisco/Web/Plugin/Report/InventoryByModelByOS.pm
in lib/App/Netdisco/Web/Plugin/Report/IpInventory.pm
in lib/App/Netdisco/Web/Plugin/Report/ModuleInventory.pm
in lib/App/Netdisco/Web/Plugin/Report/Netbios.pm
in lib/App/Netdisco/Web/Plugin/Report/NodeMultiIPs.pm
in lib/App/Netdisco/Web/Plugin/Report/NodeVendor.pm
in lib/App/Netdisco/Web/Plugin/Report/NodesDiscovered.pm
in lib/App/Netdisco/Web/Plugin/Report/PortAdminDown.pm
in lib/App/Netdisco/Web/Plugin/Report/PortBlocking.pm
in lib/App/Netdisco/Web/Plugin/Report/PortLog.pm
in lib/App/Netdisco/Web/Plugin/Report/PortMultiNodes.pm
in lib/App/Netdisco/Web/Plugin/Report/PortSsid.pm
in lib/App/Netdisco/Web/Plugin/Report/PortUtilization.pm
in lib/App/Netdisco/Web/Plugin/Report/PortVLANMismatch.pm
in lib/App/Netdisco/Web/Plugin/Report/SsidInventory.pm
in lib/App/Netdisco/Web/Plugin/Report/SubnetUtilization.pm
in lib/App/Netdisco/Web/Plugin/Report/VlanInventory.pm
in lib/App/Netdisco/Web/Plugin/Search/Device.pm
in lib/App/Netdisco/Web/Plugin/Search/Node.pm
in lib/App/Netdisco/Web/Plugin/Search/Port.pm
in lib/App/Netdisco/Web/Plugin/Search/VLAN.pm
in lib/App/Netdisco/Web/PortControl.pm
in lib/App/Netdisco/Web/Report.pm
in lib/App/Netdisco/Web/Search.pm
in lib/App/Netdisco/Web/Static.pm
in lib/App/Netdisco/Web/Statistics.pm
in lib/App/Netdisco/Web/TypeAhead.pm
in lib/App/Netdisco/Worker/Loader.pm
in lib/App/Netdisco/Worker/Plugin/AddPseudoDevice.pm
in lib/App/Netdisco/Worker/Plugin/Arpnip.pm
in lib/App/Netdisco/Worker/Plugin/Arpnip/Hooks.pm
in lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm
in lib/App/Netdisco/Worker/Plugin/Arpnip/Subnets.pm
in lib/App/Netdisco/Worker/Plugin/Arpwalk.pm
in lib/App/Netdisco/Worker/Plugin/CheckSiteLocal.pm
in lib/App/Netdisco/Worker/Plugin/Contact.pm
in lib/App/Netdisco/Worker/Plugin/Delete.pm
in lib/App/Netdisco/Worker/Plugin/Delete/Hooks.pm
in lib/App/Netdisco/Worker/Plugin/Discover.pm
in lib/App/Netdisco/Worker/Plugin/Discover/CanonicalIP.pm
in lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm
in lib/App/Netdisco/Worker/Plugin/Discover/Hooks.pm
in lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm
in lib/App/Netdisco/Worker/Plugin/Discover/Neighbors/DOCSIS.pm
in lib/App/Netdisco/Worker/Plugin/Discover/NextHopNeighbors.pm
in lib/App/Netdisco/Worker/Plugin/Discover/PortPower.pm
in lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm
in lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm
in lib/App/Netdisco/Worker/Plugin/Discover/Properties/Tags.pm
in lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm
in lib/App/Netdisco/Worker/Plugin/Discover/Wireless.pm
in lib/App/Netdisco/Worker/Plugin/DiscoverAll.pm
in lib/App/Netdisco/Worker/Plugin/DumpConfig.pm
in lib/App/Netdisco/Worker/Plugin/DumpInfoCache.pm
in lib/App/Netdisco/Worker/Plugin/Expire.pm
in lib/App/Netdisco/Worker/Plugin/ExpireNodes.pm
in lib/App/Netdisco/Worker/Plugin/GetAPIKey.pm
in lib/App/Netdisco/Worker/Plugin/Graph.pm
in lib/App/Netdisco/Worker/Plugin/Hook.pm
in lib/App/Netdisco/Worker/Plugin/Hook/Exec.pm
in lib/App/Netdisco/Worker/Plugin/Hook/HTTP.pm
in lib/App/Netdisco/Worker/Plugin/Internal/BackendFQDN.pm
in lib/App/Netdisco/Worker/Plugin/Internal/SNMPFastDiscover.pm
in lib/App/Netdisco/Worker/Plugin/Linter.pm
in lib/App/Netdisco/Worker/Plugin/LoadMIBs.pm
in lib/App/Netdisco/Worker/Plugin/LoadMIBsFromOIDs.pm
in lib/App/Netdisco/Worker/Plugin/Location.pm
in lib/App/Netdisco/Worker/Plugin/Macsuck.pm
in lib/App/Netdisco/Worker/Plugin/Macsuck/Hooks.pm
in lib/App/Netdisco/Worker/Plugin/Macsuck/InterfacesStatus.pm
in lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm
in lib/App/Netdisco/Worker/Plugin/Macsuck/PortAccessEntity.pm
in lib/App/Netdisco/Worker/Plugin/Macsuck/WirelessNodes.pm
in lib/App/Netdisco/Worker/Plugin/Macwalk.pm
in lib/App/Netdisco/Worker/Plugin/Nbtstat.pm
in lib/App/Netdisco/Worker/Plugin/Nbtstat/Core.pm
in lib/App/Netdisco/Worker/Plugin/Nbtwalk.pm
in lib/App/Netdisco/Worker/Plugin/NodeMonitor.pm
in lib/App/Netdisco/Worker/Plugin/Noop.pm
in lib/App/Netdisco/Worker/Plugin/PingSweep.pm
in lib/App/Netdisco/Worker/Plugin/PortControl.pm
in lib/App/Netdisco/Worker/Plugin/PortName.pm
in lib/App/Netdisco/Worker/Plugin/Power.pm
in lib/App/Netdisco/Worker/Plugin/PrimeSkiplist.pm
in lib/App/Netdisco/Worker/Plugin/Psql.pm
in lib/App/Netdisco/Worker/Plugin/PythonShim.pm
in lib/App/Netdisco/Worker/Plugin/Renumber.pm
in lib/App/Netdisco/Worker/Plugin/Scheduler.pm
in lib/App/Netdisco/Worker/Plugin/Show.pm
in lib/App/Netdisco/Worker/Plugin/Snapshot.pm
in lib/App/Netdisco/Worker/Plugin/Stats.pm
in lib/App/Netdisco/Worker/Plugin/TastyJobs.pm
in lib/App/Netdisco/Worker/Plugin/Vlan.pm
in lib/App/Netdisco/Worker/Plugin/Vlan/Core.pm
in lib/App/Netdisco/Worker/Runner.pm
in lib/App/Netdisco/Worker/Status.pm
in lib/Dancer/Template/NetdiscoTemplateToolkit.pm
in lib/App/Netdisco/Transport/SSH.pm