* implementation of ignore_layers, force_macsuck, force_arpnip and macwalk
* use new WalkJobs view to get devices needing macsuck
* also new query for discoverall, arpwalk, nbtwalk
* faux record has a last_defer stamp so we can see when the backend started
* fix typo
* Add macsuck worker to collect various PortAccessEntity (NAC) attributes
* Incorporate PAE feedback on #937
* missing Result/Device.pm column added
* pae_is... columns instead of pae_capabilities
* moved most code to Util/PortAccessEntity.pm so the update can
be done in discover and macsuck
* Refactor PAE attributes during discover as separate Plugin
* PortAccessEntity: don't use device->dns in log string
* Fix "Experimental keys on scalar is now forbidden" test failure
* Revamp pae_control and add missing attribute
- device.pae_control (text) is now device.pae_is_enabled (bool)
- also store pae_authconfig_port_control (port mode auto/force(un)Auth)
* Fix "Experimental keys on scalar is now forbidden" test failure
- ... again because of botched merge
- at least perlgolfed away a set of curly braces
* Update PortAccessEntity.pm
* Incorporate @ollyg PR feedback
* allow actions without transport to run when there are also no creds
* initial refactor for separate gather, process, store phases for macsuck
* factor out the vlan sanity check
* additional help with log of action workers
* cleanup logic in check macsuck
* refactor to make main phases only
* some fixes
* implement file slurp. amazingly the whole thing works
* remove outdated noop from test
* treat error as critical, use cancel to suppress further drivers
* big refactor to share mac sanity code to both paths
* fix inverted logic on vlan sanity filter
* some code tidy
* fix error in default value
* fix for vlan 0 nodes input from cli
* ensure imported MACs are IEEE format
* add api endpoint, no useful return status yet
* exit status if error from nodes PUT
* suppress other networked workers when direct workers are active
* better log showing worker
* fix status recording to get first error or last done message
* implement arpnip API PUT
* avoid package redeclaration error
* make sure write API methods require admin status
* add doc for passing JSON data to arpnip and macsuck
* update manifest
* remove option to do jobs in web handler; all by queue now
* use job entry timestamp for offline queued jobs
* fix store username and IP on api PUT
* never de-duplicate user-submitted jobs; never reset DeviceSkip for offline jobs
* myworker no longer needed
* make logic cleaner
Co-authored-by: Christian Ramseyer <ramseyer@netnea.com>
* fix anomalous name
* add gather worker
* fix encoding of binary storage
* store results back to job
* now parsing mbis report to translate
* fix the broken report parser
* rename gather to snapshot
* implement walk code copied from SNMP::Info
* can now bulkwalk and parse mibs report and store resolved walk in cache
* add func/glob aliasing broken
* better aliasing
* implement aliasing from globals and funcs
* fix regexp for matching netdisco-mibs report
* fake cache entry for all ND2 methods called, add comments
* also save to logs/snapshots/IP
* add doc for netdisco-do
* add is_pseudo column to device table
* support for loading cache for pseudo devices
* check for hrSystemUptime as well as sysUpTime for snmp connect
* display pseudo devices with yellow pill for name
* color all cells for layers for pseudo
* no need to b64 encode binary data in scalars as we b64 whole thing after
* tweaked uptime check
* store snapshot to database instead of Job
* expose snapshots in device details tab
* small ux improvements on snap download
* fixes for errors in subnet mask searching
* hide snapshot management for pseudo devices
* update to use new netdisco-mibs object cache
* update for new format oids file
* start of work on loading walk into db for browsing
* store values and meta
* add auto increment col and oid index to browser
* start web plugin for browser
* add virtual search for oid children
* have all oid in separte table (60 seconds load on my laptop)
* rename table and add relation
* store oid as int array
* fix sql for children
* make jstree start working
* working very slow tree expand
* fix to work when first displaying tree
* store both oid and oid_parts
* simplify SQL to speed up (more complicated perl)
* fix sql bug, add better index, prettify tree
* render the snmp node detail
* add node template, make scrollable, pretty print data values (insecure)
* store munge hint
* some dubious code to munge the data
* make sure to filter by IP on device_browser
* make safer the rendering of value data (but need to come back to key ordering)
* fix sorting on object values
* limit the opening of child nodes to keep response good and unclutter
* factor out the munge and make safer
* reject unknown mungers
* show the munger and option (not working) to change
* additional js for munge select
* complete custom munge
* change so that saving to database is only at CLI and on request
* hide snmp tab if no browser rows in the db
* add helpful message when no browser rows for the device
* stub handler for search and add recurse control
* working search
* minor ui fixes
* implement typeahead for leaf search
* limit rows in typeahead
* make sure device_browser is visited in delete and renumber
* add requirements for this branch
* update manifest
* make sure node search and typeahead are restricted to current device only
* initial v0 creator
* working json api for generic reports
* add require login
* move report swagger into plugin, and set new default layout of noop
* require proper role and also use new util func
* start to tidy authn
* some work on cleaning up web authn
* clean up the authN checks
* fix bug
* fix the auth for api
* fixes to json handling
* set swagger sort order
* enable most reports for api endpoints
* fix doc
* add paramters to reports
* add missed report
* allow api_parameters in reports config
* reorganise api
* add vlan search
* add port search
* make sure to enable layout processing
* add device search
* add v1 to api paths
* add Node Search
* support api_responses
* add device object search; fix spurious ports field in device result class
* handle some plugins just returning undef if search fails
* errors from api seamlessley
* fix error in date range default
* more sensible default for prefix
* change order of endpoints in swagger-ui
* all db row classes can now TO_JSON
* add device_port api endpoint
* add device ports endpoint
* do not expand docs
* add swagger ui json tree formatter
* add all relations from Device table
* add port relations
* add nodes retrieve on device or vlan
* rename to GetAPIKey
* update config for previous commit
* We meant well but it turns out that the array unnest and join is
actually very slow, as the join arguments do not get pushed down
into the CTE (in Postgres 9/10 at least, later versions remove some
of the optimization barriers in that specifc type of query)
* This caused a seq scan on both device and device_port, and the query
is executed many times during macsuck
* The query is now rewritten to use ANY (macaddr[]) and without CTE,
which seems to be around 20x faster
* initial token-based-api login handler
* add token schema and validation
* initial import of pyro3d api code
* basic Swagger spec support
* Merge in working copy of API/Device.pm
* Fix some error handling for API/Device.pm
* Break out utility functions into separate file, to allow other api portions to use
* Add NodeIP support.
* Add nodeip plugin to config
* remove double define of "plugin:" (#448)
disclaimer: i did not test this is any way, came across it when looking for something else.
* only AuthZ header for api use, and alway regen key on login
* use RFC7235
* workaround for Swagger plugin weird response body
* do not autodiscover swagger routes
* code formatting only
* move api util to utils area
* initial full swagger spec for nodeip search
* add api user role and fix api auth failure response
* update version of swagger-ui to 3.20.3
* add more openapi defs
* fixes to SQL and api spec
* clean up subs
* improvements to login/logout for API
* make api logout work
* add openapi tags to group operations
* allow api params to be generated from DBIC schema spec
* remove API calls for nodes and devices
* remove some poor assumptions about api calls
* tidy up
* remove DDP
* make login and logout similar
* example of api call being handled by ajax call
* make the branch authonly
this has a bug whereby if the list of remote_ports is not the same
size as the list of real matching ports, then the list of port names
will be short, and port descriptions may be assigned to the wrong
ports, or the query may crash. needs testing.