* New device:add code
pre-requisite for updating other code paths
includes option to set display name
separate validation code from device creation
* remove duplicate community and v3 creds
* style fixes
* some lint fixes
* fix phpstan
* Exception cleanup
improved messages and translations
* port association mode to enum
well, pseudo enum
* defaults and cleanups
* fixed/improved validation messages
* fix tests
* fix stupid ide refactor mistake
* lint fixes
* core WIP
* try to finish up
* trim space too
and a couple of cleanups
* update test data
* put escapes back
* another net-snmp difference
* correct copy paste error
* WIP
* Use new code YAY
* a tiny bit more
* Kind of working
* Handle manual modules correctly
* convert core to modern module
* Only save metrics if modules is not overridden
* correct module exists check
* database error handling
* debug handling
* restore bad changes
* Introduce Actions
RunAlertRulesAction
UpdateDeviceGroupsAction
* tweaks to output
* Fix some issues in outside code
* Style fixes
* fixes to module status checks
* typehints!
* Use logger only and DI
* OS module not named correctly
* Work on quiet output a bit more
* generically don't change output when disabling debug if the driver is already stack
* Fix missing $device variable for legacy os polling
Fix missing dbFacile functions when no legacy modules polled in RunAlertRulesAction
* restore legacy os module shim
* use the new poller code for tests
* PollingDevice event
* Fix some issues and enable/disable error reporting around legacy modules
* typehints
* fully update baseline
* Use Process for version commands so we don't leak debug output.
* don't detect rrdtool version in ci every time
* style fixes
* Warning fixes
* more fixes
* re-update baseline
* remove diff noise
* fix up alerts
* Catch exceptions in device ip lookup
* Revert accidental snmp.inc.php poller target change
(should have been ?: not ??)
* core WIP
* try to finish up
* trim space too
and a couple of cleanups
* update test data
* put escapes back
* another net-snmp difference
* correct copy paste error
* WIP
* Use new code YAY
* a tiny bit more
* Kind of working
* Handle manual modules correctly
* convert core to modern module
* Only save metrics if modules is not overridden
* correct module exists check
* database error handling
* debug handling
* restore bad changes
* Introduce Actions
RunAlertRulesAction
UpdateDeviceGroupsAction
* tweaks to output
* Fix some issues in outside code
* Style fixes
* fixes to module status checks
* typehints!
* Use logger only and DI
* OS module not named correctly
* Work on quiet output a bit more
* generically don't change output when disabling debug if the driver is already stack
* Fix missing $device variable for legacy os polling
Fix missing dbFacile functions when no legacy modules polled in RunAlertRulesAction
* restore legacy os module shim
* use the new poller code for tests
* PollingDevice event
* Fix some issues and enable/disable error reporting around legacy modules
* typehints
* fully update baseline
* Use Process for version commands so we don't leak debug output.
* don't detect rrdtool version in ci every time
* style fixes
* Warning fixes
* more fixes
* re-update baseline
* remove diff noise
* fix up alerts
* Fping WIP
* Update availability, move ping rrd update in the same place as db update.
* move classes around
* make device:ping command work
* use new code, remove legacy code
* save metrics boolean prevents all saves
style fixes
* update device array
* style fixes
* Update unit test
* fix whitespace
* Fix Fping stub
* fix backwards if
* fix phpstan complaining
* Fix return type
* add fillable to DeviceOutage model.
* device_outage migration to add id...
* missed line in db_schema.yaml
* 1 billion more comments on the brain damage up/down code
* tests for status and status_reason fields
* fix style again :D
* Duplicate legacy isSNMPable() functionality
but with only one snmp call ever 😎
* Remove unused variable
* fix migrations for sqlite
* SNMP WIP
* cleanup, more types
* Include my snmp:fetch command
* Fix Facade name conflict
* Command WIP
remove mib
* Ignore exit code
cleanups
* Doc blocks and style fixes
* forgot to use parseOid
* Hopefully final fixes
* missed on (:
* small changes
deviates from existing code, hopefully doesn't re-add too many corner cases.
* add some simple tests, will make it easier to add more in the future when we find corner cases.
* test numeric
* API refinements, try to avoid setting textual net-snmp options directly
* change numeric to a toggle makes for nicer usage
* make ci happy
* Some errors happen only in stderr, pass that to SnmpResponse for parsing.
Add error message access
* More consistent naming
* Feature config seeder
Place yaml key value files in database/seeders/config to pre-populate the config database
This feature is primarily for docker images and other automation
example snmp.yaml
```yaml
snmp.community:
- public
- private
snmp.max_repeaters 30
```
* fix style
* include /data/config as used in docker
* respect --force option
* Confirm if re-import
Defaults to yes for --no-interaction
Don't confirm if there is nothing to do
* default to false
* typehints
* Validate APP_KEY
key:rotate command to rotate keys, only rotates validation data for now
* fixes, swapped encrypters, not saving new value to db, check that key exists first
* add confirmation
* Option to generate new key, re-encrypt data and then save it to .env
A lot more text to try to prevent disaster. Print out both keys 1-2 times.
Fix bug in EnvHelper (when key is commented but not empty)
* fix style
* oops, good phpstan
* lnms config:set works for os settings
validate against os schema (gives us path and value validation)
fix unset in config:set
json formatted output in config:get to match input parsing
* inline errors
* Check that OS exists
* Fix lock file
* Set param type
* correct method name, it no longer returns a boolean
* rename --json to --dump
tests and fixes
* fix whitespace
* missed one whitespace
* typehints
* add connection typehint
* try again
* Enable config:set to set variables inside a nested array of settings
Re-index arrays when forgetting a value from a sequential numerically indexed array
* cleanup
* Developer device simulation
lnms dev:simulate
handy helper to start snmpsim with test data and optionally add and remove a device to LibreNMS
* doc update
* Rewrite smokeping script to be an lnms command
* Add a default number of probes for smokeping
* Formatting fixes
* Refactor to simplify a couple of methods
* Fix a name collision when using more than 60 threads
* Simplify
* First pass at documentation
A few climate fixes too.
I'm a little dubious about the + LibreNMS fix - it could be included
in /etc/smokeping/config if it is really needed, but it sounds like
(looking at git blame) it's needed for if the script generates a broken
configuration file.
I'm thinking we should just not generate broken config.
* Improve testability and add some tests
* Load laravel to make translations available
* Second pass at documentation
* Fix brace
* Extend the device factory to include the type
Also adds a device group fake I created before I realised I didn't need it
* Mimic gen_smokeping.php a little more closely
* Update tests to properly verify old and new behaviour against each other
* Replace gen_smokeping with a wrapper
* Don't double whitespace
Render does this automatically.
Explicitly order by hostname too.
* Make faker less likely to generate duplicates
I tried adding a unique constraint here, but it didn't have the
intended effect.
Extending the hostname like this seems to work fine - I tried
generating 10 million hosts and got no duplicates, compared to
duplicates appearing with as few as 100 hosts without this
change.
A true fix would be to add an 'fqdn' fake upstream.
* Make the tests more robust
* Assorted bug fixes
* Style corrections
* Handle 'generic' devices
* Fix an issue that came up during rebase
Co-authored-by: Tony Murray <murraytony@gmail.com>
* Refactor pre-commit to class
* docs build
* dusk check
* ci mode for checks
* full checks
* other mysql
* make other lint checks actually work
fix pylint finding
* ci is a long opt
* fix undefined index
* dusk fully working
* ask for forgiveness, not permission
* fix whitespace
* skip dusk sometimes
* Handle 3com and other os with digits
* flags instead of if else spaghetti
* convert to command
* cleanup
* missed check
* fixes
* case
* self-check :D
* argument now
* fix bugs from refactors
* another fix
* adjust file change parsing
* refactor execut a bit
* fallback to global quiet when unknown type.
* allow quiet override for specific commands
* output cleanup
* check flow
* start of tests
* file categorizer tests and fixes
* fixes and cleanup
* skipable not implemented...
* more tests, fix bugs
* more tests and cleanup
* wrong command
* fix canCheck and set env properly
* full env fix
* don't allow dusk on user's run as it will erase their db.
* fix os option
* fix whitespace
* don't need to start server
* ci doesn't like that
* lnms config:set improvements
--ignore-checks option
* Config option completion
Could use some more refinement, but needs device commands converted to Laravel
* fix whitespace
additional translatable strings: Filter Settings in settings page and Global Search on all pages.
remove duplicate fr key
also, language file signatures were wrong as I had a testing version of the vue generator
* add lnms commands to get and set config settings
lnms config:get and lnms config:set
Note: you cannot override settings in config.php
* Update to check setting exists and value validation rules.
* Add lnms user:add command
Uses events to mark past notifications as read (even for non-manually added users)
* Filter out previous options from auto-completion
* use validation to check cli input
* Warn if using other auth
* abstract LnmsCommand
* Use setPassword helper for hashing instead of mutator
* Extract validation function