* Convert Config to a singleton
Continuation of #14364 by @Jellyfrog
This time, make the old class a shim for the facade. Will update references in a separate PR.
* Remove logging config call
* Apply fixes from StyleCI
* Fix bad Git constructor call
* Fail on config table does not exist instead of throw exception
* Inline LibrenmsConfig::isRegistered()
* Debug call in case there are more issues,
remove before merge.
* Fix up config tests
* Allow config cache controlled by CONFIG_CACHE_TTL (disabled by default for now)
* Enable config cache for tests
* Remove debug statement and deprecation phpdoc
* Apply fixes from StyleCI
---------
Co-authored-by: Tony Murray <murrant@users.noreply.github.com>
* Error reporting
* Move code to ErrorReportingProvider
Enable reporting of error (and warning) messages.
report module exceptions
* Restore flare key
Not needed to set late anymore. We set up filtering before it is initialized.
* Remove unnecessary and maybe double Flare report
* lint
* Cannot use typed properties yet, use phpdoc
* fix handleError return type
* Filter both exceptions and reports (so we don't miss any)
Consolidate the check if reporting should be enabled
* Cache reportingEnabled check for the runtime
* Split out middleware to improve readability
Logging of why reporting is disabled
Fix reportingEnabled cache
* Style
* Return some user data
* Change to class based middleware, it looks nicer
* Fix error page error id report, add url.
* also rewrite intended url
* remove link
* Move ignition to production and update flare-client
Co-authored-by: Tony Murray <murraytony@gmail.com>
* Move Config loading to a service provider
That way other service providers can depend on it
Move various random listener registrations into the EventServiceProvider
Various startup cleanup
* Config::persist Set live variable before persisting incase db update fail
* Disable strict mode for legacy code (init.php)
* Disable debug after os test data is gathered
* remove Eloquent::boot it is never used
* remove Eloquent::version
* lint fixes
* style fixes
* there is no c_echo here
* Allow unordered OIDs (global and per-os)
Fix global no_bulk setting, was ignored before
(to fix global needed to rework Config::getCombined() a bit to allow a global prefix to be specified)
Removed invalid use of getCombined and updated tests
* fix whitespace
* update os schema
* Configurable device display name
You can just set the display name in device settings.
It also accepts simple template format with the variables: hostname, sysName, sysName_fallback, ip
Default controlled by device_display_default, (set from old force_hostname_to_sysname and force_ip_to_sysname settings
* remove second argument to format_hostname()
* Style fixes
* Update schema
* update phpstan baseline
* Improved settings strings (and add for translation)
* Definition of a new SLA module to migrate from old cisco-sla and support other devices : Juniper RPM and Huawei
* Change wrong description name of module SLA
* Re implementing Juniper RPM support in a new module Slas (Cisco SLA to be added)
* Added Graphs for Juniper RPM types
* Tried to make discover and poller generic : to handle Cisco SLA and Juniper RPM and others
* Reimplementing Cisco SLA in the new Sla module and adding condition to manage both SLA and RPM
* Definition of a new SLA module to migrate from old cisco-sla and support other devices : Juniper RPM and Huawei
* Change wrong description name of module SLA
* Re implementing Juniper RPM support in a new module Slas (Cisco SLA to be added)
* Added Graphs for Juniper RPM types
* Tried to make discover and poller generic : to handle Cisco SLA and Juniper RPM and others
* Reimplementing Cisco SLA in the new Sla module and adding condition to manage both SLA and RPM
* Fix some error due to Elequent object replacing SQL request
* Fixing indentation
* Fixed continuous integrations errors
* Fixed continuous integrations errors part 2
* Fixed continuous integrations errors part 3 : missing last new lines
* Fixed PHP Static Analysis checks
* Fixed continuous integrations errors part 4
* Fixed PHP Static Analysis checks part 2
* Trying to convert existing cisco-sla to new slas one
* Trying to add slas to fix test failure (I am pretty sure this is not enough but I don't know how to do it)
* Switching old cisco-sla module declaration to new slas module in concerned OS files
* Fixing wrong sla module name instead of slas in concerned OS files
* Fixing wrong module name sla changed to slas (as is it in power-supplies reimplementation)
* Fixing some warnings shown in the Inspection CI but skipping some that are already present
* Adding tests files from virtual Juniper VMX and adding slas modules in /tests/module_tables
* Adding missing SNMP data files
* Module Slas modifications to use inheritance
* Fix CI errors
* Fix CI errors part 2
* Fix CI errors part 3
* Fixing no value on RTT graphs
* Fixing only last SLA to be polled : problem with loops
* Fix CI errors part 4
* Optimizing a little the Juniper RPM poller part
I wanted to query only the required values but it is complicated to query a specific OID
as Cisco-SLA does because the owner and tag are hardcoded in ASCII decimal with strange values.
So I use the function snmp_walk which gets the whole OID values in text.
And I index the Juniper MIB (because we want multiple values). But I changed the DISMAN MIB
requests to get only what we want.
* Fix CI errors
* Fix CI errors part 2
* Fix CI errors part 3
* Fixing PHP Static Analysis error 2/4
* Fix CI errors
* Implementing Interfaces to fix some errors that occurs with inheritance
* Adding missing Interfaces files
* Moving generic Sla discovery code into Junos Class
* Fix CI errors
* Fix CI errors part 2
* Fixing missing definition of SlaDiscovery in Cisco shared Class
* Fixing missing import for Illuminate\Database\Eloquent\Collection
* Fix CI errors part 3
* Fix PHP Static Analysis error
* change type strings to use translations instead of config
* IOSXR test data
* remove test data garbage
* simplify discovery
* Fix style
* Updating test files to adapt mock sla_nr ID starting from 0 and not 1 : CI tests should pass
* clean up polling
add rtt field in the db
cisco icmpjitter seems to have confused a lot of values
* rtt on discovery
* use crc32 for consistent sla_nr values
* revert snmprec
* Fix style
* correct schema
Co-authored-by: Tony Murray <murraytony@gmail.com>
* Remove $debug global
and $vdebug global
makes these variables more accessible and protects from collisions.
* the on boot set sends application as the first parameter, just handle that
* Relocate other debug related functions
* Log debug to stdout
* Wrong output
* remove stupid constants
* Fix lint and style issues
Better validation when config.php does not exist
Update docs and quote password
only populate legacy vars in config_to_json
drop .travis.yml config copy
remove credentials from config.php.default
Check for existance of .env instead of config.php in python scripts
legacy credential cleanup
tiny cleanups
consistent env for artisan server and artisan dusk
* Ping only device doesn't display
if os was set to something, ping os wasn't loaded and we try to get overview graphs from it.
* Fix snmp_disable device page load error
When other os is set.
* Revamp os setting loading
the only safe way to access is Config::getOsSetting()
* Remove getOsSetting fallback behavior
Most instances don't use it and it can have unexpected results Config::getOsSetting('blah', 'group') == 'librenms'
* refactor and remove unneeded load_os/loadOs calls now since getOsSetting automatically loads it.
* restore unix overview graphs, they are different
small cleanups
* fix
* Remove $_SESSION usage, except install
Fixes issue with device debug capture
Removes secure_cookies setting, use the .env variable SESSION_SECURE_COOKIE instead. Reminder secure cookies requires cookies are transported over https, if everything is already transported via https, the setting won't make a difference.
* Fix availability map controls
* Allow different config sources to completely override a setting from the previous
This is an issue with array settings. The previous code would merge the two arrays together, possibly leaving artifacts behind.
* Missed one
* 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.
* initial db/defaults dump
* numeric values
* Remove $config['time']
* Use config_definitions.json
* try setting definition as a complete array
* a little more
* fix format
* WIP converting dynamic setting pages
* rewriting the webui
* remove legacy and add translations
* finish email section
* improve navigation
update js a bit
* Import the remaining existing settings
* Update backend still some wip
migration
* fix config loading (db not overriding defaults)
* some cleanup
* more array collapsing
* update settings
* Settings search
* add purge settings to ui, order groups and sections
* collapse more arrays
* Auth definitions WIP
* remove needless slash escapes
* add warning to json
* moving settings from defaults.inc
* remove slow_statistics
* Move rrdtool settings to the poller section
* Use translations more consistently
* removing more settings from defaults.inc.php
* show setting name in tooltip
* allow help text to be shown on mobile
* disable settings that are set in config.php
* Implement undo and reset to default.
* Vue.js functional
* Vue.js WIP
* Implement tabs component
* accordion WIP
* lodash ver update
* two items
* Accordion somewhat working
* hash navigation
* Refine Accordion
* Fix up tab styling a bit
* Cleaner tab selected property
Hide html while loading
* spinner?
* Icon support
property for accordion to active
* WIP
* Tabs/Sections from ajax
* Setting Component skeletons
* Dynamic Component resolution
* Basic functionality
* toggle class
* Refactor components
* translate tabs and accordions
* simple array attempt
* improve readonly tooltip
* array styling
* array value editing
* organize snmp info
* Handle initial tab/section in url
* Use Laravel to parse tab/section, dump old
* Draggable array entries
* v-tooltip, for clickable (and touch) help tooltips
disable draggable
* Navigation WIP
* Navigation WIP
* groups computed
* filter settings
* fix event reference
* vue.js i18n initial
* missing description = just setting name
* en fallback
* tidy up the language support and js generation
* persist value to db
* fix issue with 0
* Delete settings from DB instead of setting them to default
* ldap-groups
fixup style
* Default dashboard selection
* fix array of options instead of object
* allow custom validation for settings
* translate options in SettingSelect
* SNMP v3 WIP
* fix setting arrays
* Split persist out of set
* Hook up events for SNMP v3 Auth
correct Config::persist behaviour with arrays
* dependent settings (primitive for now)
actually update the settings values in the LibrenmsSettings component
* more complex "when" behaviour
* remove un-needed seeder
* add poller_modules.cisco-qfp
* remove en.json (disable warning)
* don't set default for log_dir or log_file, otherwise it won't be processed correctly
* Fix module order
add some missing settings
* more config corrections
* correct graphs
correct loading values set to null (although it should have no difference)
remove project_name_version
* Add nfsen settings. Docs are very confusing, so might have flubbed something
remove option for array definition of select option as numeric indexes messes it up
* Correct more upstream config differences
* Config cleanup after a bunch of merges.
* Fixes
* add version tags to js/css files
remove old js
* Print out full settings list read-only
* Add http_proxy setting
fix indents in config_definitions.json
* repeaters default is 0 (aka 20)
* cleanups
* rewrite the dynamic config docs
* add language docs
* Don't show snmp v3 auth add/remove if disabled by config.php
* Refactor tests
Boot Laravel for all tests.
Config use private static property for storage instead of global
* Backup/restore modules
* disable snmpsim log
* Fixing DBTestCase
* Fix macros loading to the wrong place
* trap and other tests should check if db is available
* don't include snmp.inc.php if mock.snmp.inc.php is already included...
* fix migration
* if we don't reset the db, run migrations at least.
* set vars for migrate too
* Fix style
* ignore issues with undefined indexes in legacy code
* Store config data serialized
This way we can store null, booleans, and more reliably.
* Use model to get the mutated output.
* fix whitespace and unused function
* use json_encode/decode and casts
migration to transfer
* json_encode JSON_UNESCAPED_SLASHES
* Use JSON_UNESCAPED_SLASHES. That is only relevant if you are printing into an HTML page.
* pre-encode the seed...
* filter other fields besides config_value
* Fix installer not generating tmp directory directive
This fixes a usecase when open_basedir is set, not allowing php to write to default temp directory /tmp.
In that case, temp directory is set by `php_admin_value[sys_temp_dir] = /var/www/site/tmp`
Without setting config['temp_dir'] in generated config.php, LibreNMS will use /tmp regardless of what is set in fpm configuration.
* is_writeable and is_writable are both valid, but let's stay consistent
* Make $config['temp_dir'] non static
* Remove $config['temp_dir'] from standard config.php
* Make sys_get_temp_dir() fallback to '/tmp'
* Update defaults.inc.php
* Update install.php
* Update Config.php
* Update defaults.inc.php
* Update defaults.inc.php
* Ignore session.cookie_secure errors
They happen if the session is already started.
* Don't allow secure cookies to be enabled when not accessing via https
* Completely remove the setting
* Reorganize trap tests
* Testing db DRIVER to prevent .env from interfering
* New code to detect if Laravel is booted. Hopefully more reliable.
* WIP external test process
* revert module test helper
* Use .env in Eloquent::boot()
* Fix test database settings loading
* fix undefined classes
(didn't find the one I needed)
* Fix incorrect Config usages
And RrdDefinition return type
* fix .env loading
* use the right DB
* slightly more accurate isConnected
* Move db_name to DBSetupTest specifically
* restore $_SERVER in AuthSSOTest
* missed item
* WIP
* tear down in the correct order.
* some testing cleanups
* remove check for duplicate event listener, it's not working right
* Don't need this change anymore
* Implement Log::event to replace legacy function log_event()
* fix port tests
* fix up tests
* remove pointless TrapTestCase class
* fix style
* Fix db config not being merged...
* skip env check for tests
* defer database operations until after Laravel is booted.
* don't include dbFaciale...
* redundant use
* Reorganize trap tests
* Testing db DRIVER to prevent .env from interfering
* New code to detect if Laravel is booted. Hopefully more reliable.
* WIP external test process
* revert module test helper
* Use .env in Eloquent::boot()
* Fix test database settings loading
* fix undefined classes
(didn't find the one I needed)
* Fix incorrect Config usages
And RrdDefinition return type
* fix .env loading
* use the right DB
* slightly more accurate isConnected
* Move db_name to DBSetupTest specifically
* restore $_SERVER in AuthSSOTest
* missed item
* WIP
* tear down in the correct order.
* some testing cleanups
* remove check for duplicate event listener, it's not working right
* Don't need this change anymore
* Implement Log::event to replace legacy function log_event()
* fix port tests
* fix up tests
* remove pointless TrapTestCase class
* fix style
* Add migrations and seeds
* Fix spacing validation issues
* Fix linting
* Update tabs to spaces
* Update daily and install process
* Make build-base.php use the new migrations if empty or at dbschema 1000.
Seed 1000 into the database.
Temp fix for the route table index length (this table basically isn't used...)
* Fix typo in seed.
Hard code legacy schema checks to version 1000 (999 would have worked as is)
* Port association table no longer exists
* Make database validate again
* DB schema, remove as many DB::statement as possible
* update migrations
add librenms cli entry point (artisan)
update validate to check laravel migrations
* remove statements from users migration
* Fix up daily.sh and the 1000 migration
* Update migrations to current state
Take advantage of environment variables to set DB credentials.
* Fix style issues
* Update schema
* fix test db collation
* Fix migration table definition
* update db migrations
* Update migrations
* Update stats callback. Just count the total migrations applied.
* Update 1000.sql.
* update migrations
* remove the graph type seeder, it is no longer needed
* update docs
* fix whitespace
* remove extra schema
* update tests
* fix sort
* add message
* dbSchema should actually be 1000
* add character set to db create
* Fix some artisan issues
* Update schema
Currently has a file handle leak (and will eventually run out of handles) related to the self update process.
Either need to fix that or rip out self-update and leave that up to cron or something.
DO NOT DELETE THIS TEXT
#### Please note
> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.
- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)
#### Testers
If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
DO NOT DELETE THIS TEXT
#### Please note
> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.
- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)
#### Testers
If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
This patch provides the ability to override most aspects of the configuration output provided to Oxidized. This is now backwards compatible with any current groups defined previously but allows for extra features such as group overrides in Oxidized as well as IP changes (for hosts that are treated differently inside Oxidized), as well as ProxyHost additions. Of course, this goes further and allows for any flag that can be defined within Oxidized to be mapped in the config.
Examples
1) Define a group for these hosts
```php
$config['oxidized']['maps']['group']['sysname'][] = array('regex' => '/^(foo|bar)/', 'group' => 'myGroup');
$config['oxidized']['maps']['group']['sysname'][] = array('regex' => '/^(baz)/', 'group' => 'anotherGroup');
```
2) Provide a proxy host for these hosts to bounce through
```php
$config['oxidized']['maps']['ssh_proxy']['sysname'][] = array('regex' => '/foo/', 'ssh_proxy' => 'mySshProxyHost');
$config['oxidized']['maps']['ssh_proxy']['sysname'][] = array('regex' => '/bar/', 'ssh_proxy' => 'anotherSshProxyHost');
```
3) Allow overrides of IP addresses so the external DNS is not used for connections
```php
$config['oxidized']['maps']['ip']['sysname'][] = array('regex' => '/baz/', 'ip' => '10.10.0.23');
$config['oxidized']['maps']['ip']['sysname'][] = array('regex' => '/lala/', 'ip' => '192.168.0.243');
```
As already mentioned, this doesn't stop with the above examples.
DO NOT DELETE THIS TEXT
#### Please note
> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.
- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)
#### Testers
If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`