Laravel 9.x Shift (#14504)

* Move `resources/lang` folder

* Shift registered middleware

* Remove `fruitcake/laravel-cors` dependency

* Streamline `$commands` property

* Upgrade to Flysystem 3.0

* Shift core files

* Convert `optional()` to nullsafe operator

* Remove unnecessary `$model` property

* Convert route options to fluent methods

Laravel 8 adopts the tuple syntax for controller actions. Since the old options array is incompatible with this syntax, Shift converted them to use modern, fluent methods.

* Convert deprecated `$dates` property to `$casts`

* Shift config files

* Default config files

In an effort to make upgrading the constantly changing config files
easier, Shift defaulted them and merged your true customizations -
where ENV variables may not be used.

* Bump Laravel dependencies

* Use `<env>` tags for configuration

`<env>` tags have a lower precedence than system environment variables making it easier to overwrite PHPUnit configuration values in additional environments, such a CI.

Review this blog post for more details on configuration precedence when testing Laravel: https://jasonmccreary.me/articles/laravel-testing-configuration-precedence/

* Fix error provider

* Match new symfony syntax

* Match upstream syntax

* Fix route syntax

* generate composer.lock

* Sync back configs

* routes

* composer

* Fix more flare

* fix cors

* sync lang

* Apply fixes from StyleCI (#14517)

Co-authored-by: StyleCI Bot <bot@styleci.io>

* bump larastan

* update packages

* wip

* Temporarily lower phpstan level

* Update phpstan.neon

* wip

* wip

* wip

* Apply fixes from StyleCI (#14592)

Co-authored-by: StyleCI Bot <bot@styleci.io>

* test

* Update CiHelper.php

* Update test.yml

* Update CiHelper.php

* Update CiHelper.php

* Apply fixes from StyleCI (#14616)

Co-authored-by: StyleCI Bot <bot@styleci.io>

* test?

* fix phpstan problems

* dont run snmpsim on github ci

* Fix whitespace

* More whitespace

* More whitespace ???

* I think the space broke it

* fix the reset of the whitespace

* hard code auth guard

---------

Co-authored-by: Shift <shift@laravelshift.com>
Co-authored-by: StyleCI Bot <bot@styleci.io>
Co-authored-by: Tony Murray <murraytony@gmail.com>
This commit is contained in:
Jellyfrog
2023-04-17 13:51:35 +02:00
committed by GitHub
parent 8941153c58
commit 0a351b49fd
209 changed files with 2754 additions and 2368 deletions

21
lang/en/auth.php Normal file
View File

@@ -0,0 +1,21 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'title' => 'Auth',
'failed' => 'These credentials do not match our records.',
'password' => 'The provided password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
'disabled' => 'Your Account is disabled, please contact Admin.',
];

65
lang/en/bgp.php Normal file
View File

@@ -0,0 +1,65 @@
<?php
// https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml#bgp-parameters-3
return [
'error_codes' => [
0 => 'Reserved',
1 => 'Message Header Error',
2 => 'OPEN Message Error',
3 => 'UPDATE Message Error',
4 => 'Hold Timer Expired',
5 => 'Finite State Machine Error',
6 => 'Cease',
7 => 'ROUTE-REFRESH Message Error',
],
'error_subcodes' => [
1 => [
0 => 'Unspecific',
1 => 'Connection Not Synchronized',
2 => 'Bad Message Length',
3 => 'Bad Message Type',
],
2 => [
0 => 'Unspecific',
1 => 'Unsupported Version Number',
2 => 'Bad Peer AS',
3 => 'Bad BGP Identifier',
4 => 'Unsuported Optional Parameter',
5 => '[Deprecated]',
6 => 'Unacceptable Hold Time',
7 => 'Role Mismatch (Temporary BGP Draft)',
],
3 => [
0 => 'Unspecific',
1 => 'Malformted Attribute List',
2 => 'Unrecognized Well-known Attribute',
3 => 'Missing Well-known Attribute',
4 => 'Attribute Flags Error',
5 => 'Attribute Length Error',
6 => 'Invalid ORIGIN Attribute',
7 => '[Deprecated]',
8 => 'Invalid NEXT_HOP Attribute',
9 => 'Optional Attribute Error',
10 => 'Invalid Network Field',
11 => 'Malformed AS_PATH',
],
5 => [
0 => 'Unspecified Error',
1 => 'Receive Unexpected Message in OpenSent State',
2 => 'Receive Unexpected Message in OpenConfirm State',
3 => 'Receive Unexpected Message in Established State',
],
6 => [
0 => 'Reserved',
1 => 'Maximum Number of Prefixes Reached',
2 => 'Administrative Shutdown',
3 => 'Peer De-configured',
4 => 'Administrative Reset',
5 => 'Connection Rejected',
6 => 'Other Configuration Change',
7 => 'Connection Collision Resolution',
8 => 'Out of Resources',
9 => 'Hard Reset',
],
],
];

232
lang/en/commands.php Normal file
View File

@@ -0,0 +1,232 @@
<?php
return [
'config:get' => [
'description' => 'Get configuration value',
'arguments' => [
'setting' => 'setting to get value of in dot notation (example: snmp.community.0)',
],
'options' => [
'dump' => 'Output the entire config as json',
],
],
'config:set' => [
'description' => 'Set configuration value (or unset)',
'arguments' => [
'setting' => 'setting to set in dot notation (example: snmp.community.0) To append to an array suffix with .+',
'value' => 'value to set, unset setting if this is omitted',
],
'options' => [
'ignore-checks' => 'Ignore all safety checks',
],
'confirm' => 'Reset :setting to the default?',
'forget_from' => 'Forget :path from :parent?',
'errors' => [
'append' => 'Cannot append to non-array setting',
'failed' => 'Failed to set :setting',
'invalid' => 'This is not a valid setting. Please check your input',
'invalid_os' => 'Specified OS (:os) does not exist',
'nodb' => 'Database is not connected',
'no-validation' => 'Cannot set :setting, it is missing validation definition.',
],
],
'db:seed' => [
'existing_config' => 'Database contains existing settings. Continue?',
],
'dev:check' => [
'description' => 'LibreNMS code checks. Running with no options runs all checks',
'arguments' => [
'check' => 'Run the specified check :checks',
],
'options' => [
'commands' => 'Print commands that would be run only, no checks',
'db' => 'Run unit tests that require a database connection',
'fail-fast' => 'Stop checks when any failure is encountered',
'full' => 'Run full checks ignoring changed file filtering',
'module' => 'Specific Module to run tests on. Implies unit, --db, --snmpsim',
'os' => 'Specific OS to run tests on. Implies unit, --db, --snmpsim',
'os-modules-only' => 'Skip os detection test when specifying a specific OS. Speeds up test time when checking non-detection changes.',
'quiet' => 'Hide output unless there is an error',
'snmpsim' => 'Use snmpsim for unit tests',
],
],
'dev:simulate' => [
'description' => 'Simulate devices using test data',
'arguments' => [
'file' => 'The file name (only base name) of the snmprec file to update or add to LibreNMS. If file not specified, no device will be added or updated.',
],
'options' => [
'multiple' => 'Use community name for hostname instead of snmpsim',
'remove' => 'Remove the device after stopping',
],
'added' => 'Device :hostname (:id) added',
'exit' => 'Ctrl-C to stop',
'removed' => 'Device :id removed',
'updated' => 'Device :hostname (:id) updated',
],
'device:add' => [
'description' => 'Add a new device',
'arguments' => [
'device spec' => 'Hostname or IP to add',
],
'options' => [
'v1' => 'Use SNMP v1',
'v2c' => 'Use SNMP v2c',
'v3' => 'Use SNMP v3',
'display-name' => "A string to display as the name of this device, defaults to hostname.\nMay be a simple template using replacements: {{ \$hostname }}, {{ \$sysName }}, {{ \$sysName_fallback }}, {{ \$ip }}",
'force' => 'Just add the device, do not make any safety checks',
'group' => 'Poller group (for distributed polling)',
'ping-fallback' => 'Add the device as ping only if it does not respond to SNMP',
'port-association-mode' => 'Sets how ports are mapped. ifName is suggested for Linux/Unix',
'community' => 'SNMP v1 or v2 community',
'transport' => 'Transport to connect to the device',
'port' => 'SNMP transport port',
'security-name' => 'SNMPv3 security username',
'auth-password' => 'SNMPv3 authentication password',
'auth-protocol' => 'SNMPv3 authentication protocol',
'privacy-protocol' => 'SNMPv3 privacy protocol',
'privacy-password' => 'SNMPv3 privacy password',
'ping-only' => 'Add a ping only device',
'os' => 'Ping only: specify OS',
'hardware' => 'Ping only: specify hardware',
'sysName' => 'Ping only: specify sysName',
],
'validation-errors' => [
'port.between' => 'Port should be 1-65535',
'poller-group.in' => 'The given poller-group does not exist',
],
'messages' => [
'save_failed' => 'Failed to save device :hostname',
'try_force' => 'You may try with the --force option to skip safety checks',
'added' => 'Added device :hostname (:device_id)',
],
],
'device:ping' => [
'description' => 'Ping device and record data for response',
'arguments' => [
'device spec' => 'Device to ping one of: <Device ID>, <Hostname/IP>, all',
],
],
'device:poll' => [
'description' => 'Poll data from device(s) as defined by discovery',
'arguments' => [
'device spec' => 'Device spec to poll: device_id, hostname, wildcard (*), odd, even, all',
],
'options' => [
'modules' => 'Specify single module to be run. Comma separate modules, submodules may be added with /',
'no-data' => 'Do not update datastores (RRD, InfluxDB, etc)',
],
'errors' => [
'db_connect' => 'Failed to connect to database. Verify database service is running and connection settings.',
'db_auth' => 'Failed to connect to database. Verify credentials: :error',
'no_devices' => 'No devices found matching your given device specification.',
'none_polled' => 'No devices were polled.',
],
'polled' => 'Polled :count devices in :time',
],
'key:rotate' => [
'description' => 'Rotate APP_KEY, this decrypts all encrypted data with the given old key and stores it with the new key in APP_KEY.',
'arguments' => [
'old_key' => 'The old APP_KEY which is valid for encrypted data',
],
'options' => [
'generate-new-key' => 'If you do not have the new key set in .env, use the APP_KEY from .env to decrypt data and generate a new key and set it in .env',
'forgot-key' => 'If you do not have the old key, you must delete all encrypted data to be able to continue to use certain LibreNMS features',
],
'destroy' => 'Destroy all encrypted configuration data?',
'destroy_confirm' => 'Only destroy all encrypted data if you cannot find the old APP_KEY!',
'cleared-cache' => 'Config was cached, cleared cache to make sure APP_KEY is correct. Please re-run lnms key:rotate',
'backup_keys' => 'Document BOTH keys! In case something goes wrong set the new key in .env and use the old key as an argument to this command',
'backup_key' => 'Document this key! This key is required to access encrypted data',
'backups' => 'This command could cause irreversible loss of data and will invalidate all browser sessions. Make sure you have backups.',
'confirm' => 'I have backups and want to continue',
'decrypt-failed' => 'Failed to decrypt :item, skipping',
'failed' => 'Failed to decrypt item(s). Set new key as APP_KEY and run this again with the old key as an argument.',
'current_key' => 'Current APP_KEY: :key',
'new_key' => 'New APP_KEY: :key',
'old_key' => 'Old APP_KEY: :key',
'save_key' => 'Save new key to .env?',
'success' => 'Successfully rotated keys!',
'validation-errors' => [
'not_in' => ':attribute must not match current APP_KEY',
'required' => 'Either old key or --generate-new-key is required.',
],
],
'lnms' => [
'validation-errors' => [
'optionValue' => 'Selected :option is invalid. Should be one of: :values',
],
],
'plugin:disable' => [
'description' => 'Disable all plugins with the given name',
'arguments' => [
'plugin' => 'The name of the plugin to disable or "all" to disable all plugins',
],
'already_disabled' => 'Plugin already disabled',
'disabled' => ':count plugin disabled|:count plugins disabled',
'failed' => 'Failed to disable plugin(s)',
],
'plugin:enable' => [
'description' => 'Enable the newest plugin with the given name',
'arguments' => [
'plugin' => 'The name of the plugin to enable or "all" to disable all plugins',
],
'already_enabled' => 'Plugin already enabled',
'enabled' => ':count plugin enabled|:count plugins enabled',
'failed' => 'Failed to enable plugin(s)',
],
'smokeping:generate' => [
'args-nonsense' => 'Use one of --probes and --targets',
'config-insufficient' => 'In order to generate a smokeping configuration, you must have set "smokeping.probes", "fping", and "fping6" set in your configuration',
'dns-fail' => 'was not resolvable and was omitted from the configuration',
'description' => 'Generate a configuration suitable for use with smokeping',
'header-first' => 'This file was automatically generated by "lnms smokeping:generate',
'header-second' => 'Local changes may be overwritten without notice or backups being taken',
'header-third' => 'For more information see https://docs.librenms.org/Extensions/Smokeping/"',
'no-devices' => 'No eligible devices found - devices must not be disabled.',
'no-probes' => 'At least one probe is required.',
'options' => [
'probes' => 'Generate probe list - used for splitting the smokeping configuration into multiple files. Conflicts with "--targets"',
'targets' => 'Generate the target list - used for splitting the smokeping configuration into multiple files. Conflicts with "--probes"',
'no-header' => 'Don\'t add the boilerplate comment to the start of the generated file',
'no-dns' => 'Skip DNS lookups',
'single-process' => 'Only use a single process for smokeping',
'compat' => '[deprecated] Mimic the behaviour of gen_smokeping.php',
],
],
'snmp:fetch' => [
'description' => 'Run snmp query against a device',
'arguments' => [
'device spec' => 'Device to query: device_id, hostname/ip, hostname regex, or all',
'oid(s)' => 'One or more SNMP OID to fetch. Should be either MIB::oid or a numeric oid',
],
'failed' => 'SNMP command failed!',
'oid' => 'OID',
'options' => [
'output' => 'Specify the output format :formats',
'numeric' => 'Numeric OIDs',
'depth' => 'Depth to group the snmp table at. Usually the same number as the items in the index of the table',
],
'not_found' => 'Device not found',
'value' => 'Value',
],
'translation:generate' => [
'description' => 'Generate updated json language files for use in the web frontend',
],
'user:add' => [
'description' => 'Add a local user, you can only log in with this user if auth is set to mysql',
'arguments' => [
'username' => 'The username the user will log in with',
],
'options' => [
'descr' => 'User description',
'email' => 'Email to use for the user',
'password' => 'Password for the user, if not given, you will be prompted',
'full-name' => 'Full name for the user',
'role' => 'Set the user to the desired role :roles',
],
'password-request' => "Please enter the user's password",
'success' => 'Successfully added user: :username',
'wrong-auth' => 'Warning! You will not be able to log in with this user because you are not using MySQL auth',
],
];

12
lang/en/components.php Normal file
View File

@@ -0,0 +1,12 @@
<?php
return [
'notification-subscription-status' => [
'no-support' => 'This browser does not support notifications',
'no-transport' => 'To enable browser notifications, there must be an alert transport referencing this user',
'enabled' => 'Notifications enabled for this browser',
'disabled' => 'Notifications disabled for this browser',
'enable' => 'Enable',
'disable' => 'Disable',
],
];

15
lang/en/device.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
return [
'attributes' => [
'features' => 'OS Features',
'hardware' => 'Hardware',
'icon' => 'Icon',
'location' => 'Location',
'os' => 'Device OS',
'serial' => 'Serial',
'sysName' => 'sysName',
'version' => 'OS Version',
'type' => 'Device type',
],
];

46
lang/en/exceptions.php Normal file
View File

@@ -0,0 +1,46 @@
<?php
return [
'database_connect' => [
'title' => 'Error connecting to database',
],
'database_inconsistent' => [
'title' => 'Database inconsistent',
'header' => 'Database inconsistencies found during a database error, please fix to continue.',
],
'dusk_unsafe' => [
'title' => 'It is unsafe to run Dusk in production',
'message' => 'Run ":command" to remove Dusk or if you are a developer set the appropriate APP_ENV',
],
'file_write_failed' => [
'title' => 'Error: Could not write to file',
'message' => 'Failed to write to file (:file). Please check permissions and SELinux/AppArmor if applicable.',
],
'host_exists' => [
'hostname_exists' => 'Device :hostname already exists',
'ip_exists' => 'Cannot add :hostname, already have device :existing with this IP :ip',
'sysname_exists' => 'Already have device :hostname due to duplicate sysName: :sysname',
],
'host_unreachable' => [
'unpingable' => 'Could not ping :hostname (:ip)',
'unsnmpable' => 'Could not connect to :hostname, please check the snmp details and snmp reachability',
'unresolvable' => 'Hostname did not resolve to IP',
'no_reply_community' => 'SNMP :version: No reply with community :credentials',
'no_reply_credentials' => 'SNMP :version: No reply with credentials :credentials',
],
'ldap_missing' => [
'title' => 'PHP LDAP support missing',
'message' => 'PHP does not support LDAP, please install or enable the PHP LDAP extension',
],
'maximum_execution_time_exceeded' => [
'title' => 'Maximum execution time of :seconds second exceeded|Maximum execution time of :seconds seconds exceeded',
'message' => 'Page load exceeded your maximum execution time configured in PHP. Either increase max_execution_time in your php.ini or improve server hardware',
],
'unserializable_route_cache' => [
'title' => 'Error caused by PHP version mismatch',
'message' => 'The version of PHP your web server is running (:web_version) does not match the CLI version (:cli_version)',
],
'snmp_version_unsupported' => [
'message' => 'Unsupported SNMP Version ":snmpver", must be v1, v2c, or v3',
],
];

72
lang/en/install.php Normal file
View File

@@ -0,0 +1,72 @@
<?php
return [
'checks' => [
'comment' => 'Comment',
'item' => 'Item',
'php_required' => ':version or higher required',
'status' => 'Status',
'title' => 'Pre-Install Checks',
],
'database' => [
'credentials' => 'Database Credentials',
'host' => 'Host',
'host_placeholder' => 'Use localhost for Unix-Socket',
'name' => 'Database Name',
'password' => 'Password',
'port' => 'Port',
'port_placeholder' => 'Leave empty if using Unix-Socket',
'socket' => 'Unix-Socket',
'socket_placeholder' => 'Only use for custom socket path',
'test' => 'Check Credentials',
'title' => 'Configure Database',
'username' => 'User',
],
'finish' => [
'config_exists' => 'config.php file exists',
'config_not_required' => 'This file is not required. Here is the default.',
'config_not_written' => 'Could not write config.php',
'config_written' => 'config.php file written',
'copied' => 'Copied to clipboard',
'dashboard' => 'Dashboard',
'env_manual' => 'Manually update :file with the following content',
'env_not_written' => 'Could not write .env file',
'env_written' => '.env file written',
'failed' => 'Failed to save .env',
'finish' => 'Finish Install',
'manual_copy' => 'Press Ctrl-C to copy',
'retry' => 'Retry',
'settings' => 'Additional Settings',
'success' => 'Install Complete',
'thanks' => 'Thank you for setting up LibreNMS.',
'title' => 'Finish Install',
'validate_button' => 'Validate Install',
],
'install' => 'Install',
'migrate' => [
'building_interrupt' => 'Do not close this page or interrupt the import!',
'error' => 'Error encountered, check output for details.',
'migrate' => 'Build Database',
'retry' => 'Retry',
'timeout' => 'HTTP request timed out, your database structure may be inconsistent.',
'wait' => 'Please Wait...',
],
'steps' => [
'checks' => 'Pre-Install Checks',
'database' => 'Database',
'finish' => 'Finish Install',
'migrate' => 'Build Database',
'user' => 'Create User',
],
'title' => 'LibreNMS Install',
'user' => [
'button' => 'Add User',
'created' => 'User Created',
'email' => 'Email',
'failure' => 'Failed to create user',
'password' => 'Password',
'success' => 'Successfully created user',
'title' => 'Create Admin User',
'username' => 'Username',
],
];

36
lang/en/modules.php Normal file
View File

@@ -0,0 +1,36 @@
<?php
return [
'slas' => [
'types' => [
'dhcp' => 'DHCP',
'dlsw' => 'DLSW',
'dns' => 'DNS',
'DnsQuery' => 'DNS Query',
'echo' => 'ICMP Ping',
'ethernetJitter' => 'Ethernet Jitter',
'ethernetPing' => 'Ethernet Ping',
'fileIO' => 'File I/O',
'ftp' => 'FTP',
'http' => 'HTTP',
'HttpGet' => 'HTTP Get',
'HttpGetMetadata' => 'HTTP Get Metadata',
'IcmpEcho' => 'ICMP Echo',
'icmpjitter' => 'ICMP Jitter',
'IcmpTimeStamp' => 'ICMP TimeStamp',
'jitter' => 'Jitter',
'lspGroup' => 'LSP Group',
'lspPing' => 'LSP Ping',
'lspPingPseudowire' => 'LSP Pseudowire Ping"',
'lspTrace' => 'LSP Trace',
'NtpQuery' => 'NTP Query',
'pathEcho' => 'Path ICMP Ping',
'rtp' => 'RTP',
'script' => 'Script',
'tcpConnect' => 'TCP Connect',
'udpEcho' => 'UDP Ping',
'UdpTimestamp' => 'UDP Timestamp',
'voip' => 'VoIP',
],
],
];

19
lang/en/pagination.php Normal file
View File

@@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

22
lang/en/passwords.php Normal file
View File

@@ -0,0 +1,22 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'reset' => 'Your password has been reset!',
'sent' => 'We have emailed your password reset link!',
'throttled' => 'Please wait before retrying.',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that email address.",
];

12
lang/en/plugins.php Normal file
View File

@@ -0,0 +1,12 @@
<?php
return [
'settings_page' => ':plugin: Settings',
'admin_page' => 'Plugin Admin',
'admin_title' => 'System Plugins',
'errors' => [
'not_exist' => 'Plugin :plugin does not exist.',
'disabled' => 'Plugin :plugin is disabled.',
'view_missing' => 'Missing view.',
],
];

104
lang/en/poller.php Normal file
View File

@@ -0,0 +1,104 @@
<?php
return [
'settings' => [
'settings' => [
'poller_groups' => [
'description' => 'Assigned Groups',
'help' => 'This node will only take action on devices in these poller groups.',
],
'poller_enabled' => [
'description' => 'Poller Enabled',
'help' => 'Enable poller workers on this node.',
],
'poller_workers' => [
'description' => 'Poller Workers',
'help' => 'Amount of poller workers to spawn on this node.',
],
'poller_frequency' => [
'description' => 'Poller Frequency (Warning!)',
'help' => 'How often to poll devices on this node. Warning! Changing this without fixing rrd files will break graphs. See docs for more info.',
],
'poller_down_retry' => [
'description' => 'Device Down Retry',
'help' => 'If a device is down when polling is attempted on this node. This is the amount of time to wait before retrying.',
],
'discovery_enabled' => [
'description' => 'Discovery Enabled',
'help' => 'Enable discovery workers on this node.',
],
'discovery_workers' => [
'description' => 'Discovery Workers',
'help' => 'Amount of discovery workers to run on this node. Setting too high can cause overload.',
],
'discovery_frequency' => [
'description' => 'Discovery Frequency',
'help' => 'How often to run device discovery on this node. Default is 4 times a day.',
],
'services_enabled' => [
'description' => 'Services Enabled',
'help' => 'Enable services workers on this node.',
],
'services_workers' => [
'description' => 'Services Workers',
'help' => 'Amount of services workers on this node.',
],
'services_frequency' => [
'description' => 'Services Frequency',
'help' => 'How often to run services on this node. This should match poller frequency.',
],
'billing_enabled' => [
'description' => 'Billing Enabled',
'help' => 'Enable billing workers on this node.',
],
'billing_frequency' => [
'description' => 'Billing Frequency',
'help' => 'How often to collect billing data on this node.',
],
'billing_calculate_frequency' => [
'description' => 'Billing Calculate Frequency',
'help' => 'How often to calculate bill usage on this node.',
],
'alerting_enabled' => [
'description' => 'Alerting Enabled',
'help' => 'Enable the alerting worker on this node.',
],
'alerting_frequency' => [
'description' => 'Alerting Frequency',
'help' => 'How often alert rules are checked on this node. Note that data is only updated based on poller frequency.',
],
'ping_enabled' => [
'description' => 'Fast Ping Enabled',
'help' => 'Fast Ping just pings devices to check if they are up or down',
],
'ping_frequency' => [
'description' => 'Ping Frequency',
'help' => 'How often to check ping on this node. Warning! If you change this you must make additional changes. Check the Fast Ping docs.',
],
'update_enabled' => [
'description' => 'Daily Maintenance Enabled',
'help' => 'Run daily.sh maintenance script and restart the dispatcher service afterwards.',
],
'update_frequency' => [
'description' => 'Maintenance Frequency',
'help' => 'How often to run daily maintenance on this node. Default is 1 Day. It is highly suggested not to change this.',
],
'loglevel' => [
'description' => 'Log Level',
'help' => 'Log level of the dispatch service.',
],
'watchdog_enabled' => [
'description' => 'Watchdog Enabled',
'help' => 'Watchdog monitors the log file and restarts the service it it has not been updated',
],
'watchdog_log' => [
'description' => 'Log File to Watch',
'help' => 'Default is the LibreNMS log file.',
],
],
'units' => [
'seconds' => 'Seconds',
'workers' => 'Workers',
],
],
];

8
lang/en/port.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
return [
'groups' => [
'updated' => ':port: groups updated',
'none' => ':port no update requested',
],
];

18
lang/en/preferences.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| User preferences
|--------------------------------------------------------------------------
|
| Translation strings for user preferences
| lang: is the display name for this language in the language select dialog
|
*/
'title' => 'Preferences',
'lang' => 'English',
];

194
lang/en/sensors.php Normal file
View File

@@ -0,0 +1,194 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Sensors Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used to translate names and units of sensors
|
*/
'title' => 'Sensors',
'airflow' => [
'short' => 'Airflow',
'long' => 'Airflow',
'unit' => 'cfm',
'unit_long' => 'Cubic Feet per Minute',
],
'ber' => [
'short' => 'BER',
'long' => 'Bit Error Rate',
'unit' => '',
'unit_long' => '',
],
'charge' => [
'short' => 'Charge',
'long' => 'Charge Percent',
'unit' => '%',
'unit_long' => 'Percent',
],
'chromatic_dispersion' => [
'short' => 'Chromatic Dispersion',
'long' => 'Chromatic Dispersion',
'unit' => 'ps/nm/km',
'unit_long' => 'Picoseconds per Nanometer per Kilometer',
],
'cooling' => [
'short' => 'Cooling',
'long' => '',
'unit' => 'W',
'unit_long' => 'Watts',
],
'count' => [
'short' => 'Count',
'long' => 'Count',
'unit' => '',
'unit_long' => '',
],
'current' => [
'short' => 'Current',
'long' => 'Current',
'unit' => 'A',
'unit_long' => 'Amperes',
],
'dbm' => [
'short' => 'dBm',
'long' => 'dBm',
'unit' => 'dBm',
'unit_long' => 'Decibel-Milliwatts',
],
'delay' => [
'short' => 'Delay',
'long' => 'Delay',
'unit' => 's',
'unit_long' => 'Seconds',
],
'eer' => [
'short' => 'EER',
'long' => 'Energy Efficient Ratio',
'unit' => '',
'unit_long' => '',
],
'fanspeed' => [
'short' => 'Fanspeed',
'long' => 'Fan Speed',
'unit' => 'RPM',
'unit_long' => 'Rotations per Minute',
],
'frequency' => [
'short' => 'Frequency',
'long' => 'Frequency',
'unit' => 'Hz',
'unit_long' => 'Hertz',
],
'humidity' => [
'short' => 'Humidity',
'long' => 'Humidity Percent',
'unit' => '%',
'unit_long' => 'Percent',
],
'load' => [
'short' => 'Load',
'long' => 'Load Percent',
'unit' => '%',
'unit_long' => 'Percent',
],
'loss' => [
'short' => 'Percent',
'long' => 'Loss Percentage',
'unit' => '%',
'unit_long' => 'percentage',
],
'power' => [
'short' => 'Power',
'long' => 'Power',
'unit' => 'W',
'unit_long' => 'Watts',
],
'power_consumed' => [
'short' => 'Power Consumed',
'long' => 'Power Consumed',
'unit' => 'kWh',
'unit_long' => 'Killowatt-Hours',
],
'power_factor' => [
'short' => 'Power Factor',
'long' => 'Power Factor',
'unit' => '',
'unit_long' => '',
],
'pressure' => [
'short' => 'Pressure',
'long' => 'Pressure',
'unit' => 'kPa',
'unit_long' => 'Kilopascals',
],
'quality_factor' => [
'short' => 'Quality Factor',
'long' => 'Quality Factor',
'unit' => '',
'unit_long' => '',
],
'runtime' => [
'short' => 'Runtime',
'long' => 'Runtime',
'unit' => 'Min',
'unit_long' => 'Minutes',
],
'signal' => [
'short' => 'Signal',
'long' => 'Signal',
'unit' => 'dBm',
'unit_long' => 'Decibal-Milliwatts',
],
'tv_signal' => [
'short' => 'Signal',
'long' => 'TV signal',
'unit' => 'dBmV',
'unit_long' => 'Decibel-Millivolts',
],
'bitrate' => [
'short' => 'Bitrate',
'long' => 'Bitrate',
'unit' => 'bps',
'unit_long' => 'bits per second',
],
'snr' => [
'short' => 'SNR',
'long' => 'Signal to Noise Ratio',
'unit' => 'dB',
'unit_long' => 'Decibels',
],
'state' => [
'short' => 'State',
'long' => 'State',
'unit' => '',
],
'temperature' => [
'short' => 'Temperature',
'long' => 'Temperature',
'unit' => '°C',
'unit_long' => '° Celsius',
],
'voltage' => [
'short' => 'Voltage',
'long' => 'voltage',
'unit' => 'V',
'unit_long' => 'Volts',
],
'waterflow' => [
'short' => 'Waterflow',
'long' => 'Water Flow',
'unit' => 'l/m',
'unit_long' => 'Liters Per Minute',
],
'percent' => [
'short' => 'Percent',
'long' => 'Percent',
'unit' => '%',
'unit_long' => 'Percent',
],
];

1648
lang/en/settings.php Normal file

File diff suppressed because it is too large Load Diff

6
lang/en/smokeping.php Normal file
View File

@@ -0,0 +1,6 @@
<?php
return [
'in' => 'Incoming',
'out' => 'Outgoing',
];

23
lang/en/stp.php Normal file
View File

@@ -0,0 +1,23 @@
<?php
return [
'stp_info' => 'STP Instance Information',
'stp_ports' => 'STP Ports',
'vlan' => 'VLAN',
'root_bridge' => 'Root bridge',
'bridge_address' => 'Bridge address (MAC)',
'protocol' => 'Protocol specification',
'priority' => 'Priority',
'last_topology_change' => 'Time since topology change',
'topology_changes' => 'Topology changes',
'designated_root' => 'Designated root (MAC)',
'root_cost' => 'Root cost',
'root_port' => 'Root port',
'max_age' => 'Max age (s)',
'hello_time' => 'Hello time (s)',
'hold_time' => 'Hold time (s)',
'forward_delay' => 'Forward delay (s)',
'bridge_max_age' => 'Bridge max age (s)',
'bridge_hello_time' => 'Bridge hello time (s)',
'bridge_forward_delay' => 'Bridge forward delay (s)',
];

41
lang/en/syslog.php Normal file
View File

@@ -0,0 +1,41 @@
<?php
return [
'title' => 'Syslog',
'severity' => [
'0' => 'Emergency',
'1' => 'Alert',
'2' => 'Critical',
'3' => 'Error',
'4' => 'Warning',
'5' => 'Notice',
'6' => 'Informational',
'7' => 'Debug',
],
'facility' => [
'0' => 'kernel messages',
'1' => 'user-level messages',
'2' => 'mail-system',
'3' => 'system daemons',
'4' => 'security/authorization messages',
'5' => 'messages generated internally by syslogd',
'6' => 'line printer subsystem',
'7' => 'network news subsystem',
'8' => 'UUCP subsystem',
'9' => 'clock daemon',
'10' => 'security/authorization messages',
'11' => 'FTP daemon',
'12' => 'NTP subsystem',
'13' => 'log audit',
'14' => 'log alert',
'15' => 'clock daemon (note 2)',
'16' => 'local use 0 (local0)',
'17' => 'local use 1 (local1)',
'18' => 'local use 2 (local2)',
'19' => 'local use 3 (local3)',
'20' => 'local use 4 (local4)',
'21' => 'local use 5 (local5)',
'22' => 'local use 6 (local6)',
'23' => 'local use 7 (local7)',
],
];

290
lang/en/validation.php Normal file
View File

@@ -0,0 +1,290 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'The :attribute must be accepted.',
'accepted_if' => 'The :attribute must be accepted when :other is :value.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
'alpha' => 'The :attribute must only contain letters.',
'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute must only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
'between' => [
'array' => 'The :attribute must have between :min and :max items.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'numeric' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max characters.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'current_password' => 'The password is incorrect.',
'date' => 'The :attribute is not a valid date.',
'date_equals' => 'The :attribute must be a date equal to :date.',
'date_format' => 'The :attribute does not match the format :format.',
'declined' => 'The :attribute must be declined.',
'declined_if' => 'The :attribute must be declined when :other is :value.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'dimensions' => 'The :attribute has invalid image dimensions.',
'distinct' => 'The :attribute field has a duplicate value.',
'doesnt_end_with' => 'The :attribute may not end with one of the following: :values.',
'doesnt_start_with' => 'The :attribute may not start with one of the following: :values.',
'email' => 'The :attribute must be a valid email address.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'enum' => 'The selected :attribute is invalid.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'array' => 'The :attribute must have more than :value items.',
'file' => 'The :attribute must be greater than :value kilobytes.',
'numeric' => 'The :attribute must be greater than :value.',
'string' => 'The :attribute must be greater than :value characters.',
],
'gte' => [
'array' => 'The :attribute must have :value items or more.',
'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
'numeric' => 'The :attribute must be greater than or equal to :value.',
'string' => 'The :attribute must be greater than or equal to :value characters.',
],
'image' => 'The :attribute must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The :attribute must be an integer.',
'ip' => 'The :attribute must be a valid IP address.',
'ipv4' => 'The :attribute must be a valid IPv4 address.',
'ipv6' => 'The :attribute must be a valid IPv6 address.',
'json' => 'The :attribute must be a valid JSON string.',
'lt' => [
'array' => 'The :attribute must have less than :value items.',
'file' => 'The :attribute must be less than :value kilobytes.',
'numeric' => 'The :attribute must be less than :value.',
'string' => 'The :attribute must be less than :value characters.',
],
'lte' => [
'array' => 'The :attribute must not have more than :value items.',
'file' => 'The :attribute must be less than or equal to :value kilobytes.',
'numeric' => 'The :attribute must be less than or equal to :value.',
'string' => 'The :attribute must be less than or equal to :value characters.',
],
'mac_address' => 'The :attribute must be a valid MAC address.',
'max' => [
'array' => 'The :attribute must not have more than :max items.',
'file' => 'The :attribute must not be greater than :max kilobytes.',
'numeric' => 'The :attribute must not be greater than :max.',
'string' => 'The :attribute must not be greater than :max characters.',
],
'max_digits' => 'The :attribute must not have more than :max digits.',
'mimes' => 'The :attribute must be a file of type: :values.',
'mimetypes' => 'The :attribute must be a file of type: :values.',
'min' => [
'array' => 'The :attribute must have at least :min items.',
'file' => 'The :attribute must be at least :min kilobytes.',
'numeric' => 'The :attribute must be at least :min.',
'string' => 'The :attribute must be at least :min characters.',
],
'min_digits' => 'The :attribute must have at least :min digits.',
'multiple_of' => 'The :attribute must be a multiple of :value.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute format is invalid.',
'numeric' => 'The :attribute must be a number.',
'password' => [
'letters' => 'The :attribute must contain at least one letter.',
'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.',
'numbers' => 'The :attribute must contain at least one number.',
'symbols' => 'The :attribute must contain at least one symbol.',
'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.',
],
'present' => 'The :attribute field must be present.',
'prohibited' => 'The :attribute field is prohibited.',
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => 'The :attribute format is invalid.',
'required' => 'The :attribute field is required.',
'required_array_keys' => 'The :attribute field must contain entries for: :values.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_if_accepted' => 'The :attribute field is required when :other is accepted.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute and :other must match.',
'size' => [
'array' => 'The :attribute must contain :size items.',
'file' => 'The :attribute must be :size kilobytes.',
'numeric' => 'The :attribute must be :size.',
'string' => 'The :attribute must be :size characters.',
],
'starts_with' => 'The :attribute must start with one of the following: :values.',
'string' => 'The :attribute must be a string.',
'timezone' => 'The :attribute must be a valid timezone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'url' => 'The :attribute must be a valid URL.',
'uuid' => 'The :attribute must be a valid UUID.',
// Librenms specific
'alpha_space' => 'The :attribute may only contain letters, numbers, underscores and spaces.',
'ip_or_hostname' => 'The :attribute must a valid IP address/network or hostname.',
'is_regex' => 'The :attribute is not a valid regular expression',
'keys_in' => 'The :attribute contains invalid keys: :extra. Valid keys: :values',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/
'attributes' => [],
'results' => [
'autofix' => 'Attempt to automatically fix',
'fix' => 'Fix',
'fixed' => 'Fix has completed, refresh to re-run validations.',
'fetch_failed' => 'Failed to fetch validation results',
'backend_failed' => 'Failed to load data from backend, check console for error.',
'invalid_fixer' => 'Invalid Fixer',
'show_all' => 'Show all',
'show_less' => 'Show less',
'validate' => 'Validate',
'validating' => 'Validating',
],
'validations' => [
'rrd' => [
'CheckRrdVersion' => [
'fail' => 'The rrdtool version you have specified is newer than what is installed. Config: :config_version Installed :installed_version',
'fix' => 'Either comment out or delete $config[\'rrdtool_version\'] = \':version\'; from your config.php file',
'ok' => 'rrdtool version ok',
],
'CheckRrdcachedConnectivity' => [
'fail_socket' => ':socket does not appear to exist, rrdcached connectivity test failed',
'fail_port' => 'Cannot connect to rrdcached server on port :port',
'ok' => 'Connected to rrdcached',
],
'CheckRrdDirPermissions' => [
'fail_root' => 'Your RRD directory is owned by root, please consider changing over to user a non-root user',
'fail_mode' => 'Your RRD directory is not set to 0775',
'ok' => 'rrd_dir is writable',
],
],
'database' => [
'CheckDatabaseTableNamesCase' => [
'fail' => 'You have lower_case_table_names set to 1 or true in mysql config.',
'fix' => 'Set lower_case_table_names=0 in your mysql config file in the [mysqld] section.',
'ok' => 'lower_case_table_names is enabled',
],
'CheckDatabaseServerVersion' => [
'fail' => ':server version :min is the minimum supported version as of :date.',
'fix' => 'Update :server to a supported version, :suggested suggested.',
'ok' => 'SQL Server meets minimum requirements',
],
'CheckMysqlEngine' => [
'fail' => 'Some tables are not using the recommended InnoDB engine, this may cause you issues.',
'tables' => 'Tables',
'ok' => 'MySQL engine is optimal',
],
'CheckSqlServerTime' => [
'fail' => "Time between this server and the mysql database is off\n Mysql time :mysql_time\n PHP time :php_time",
'ok' => 'MySQl and PHP time match',
],
'CheckSchemaVersion' => [
'fail_outdated' => 'Your database is out of date!',
'fail_legacy_outdated' => 'Your database schema (:current) is older than the latest (:latest).',
'fix_legacy_outdated' => 'Manually run ./daily.sh, and check for any errors.',
'warn_extra_migrations' => 'Your database schema has extra migrations (:migrations). If you just switched to the stable release from the daily release, your database is in between releases and this will be resolved with the next release.',
'warn_legacy_newer' => 'Your database schema (:current) is newer than expected (:latest). If you just switched to the stable release from the daily release, your database is in between releases and this will be resolved with the next release.',
'ok' => 'Database Schema is current',
],
'CheckSchemaCollation' => [
'ok' => 'Database and column collations are correct',
],
],
'distributedpoller' => [
'CheckDistributedPollerEnabled' => [
'ok' => 'Distributed Polling setting is enabled globally',
'not_enabled' => 'You have not enabled distributed_poller',
'not_enabled_globally' => 'You have not enabled distributed_poller globally',
],
'CheckMemcached' => [
'not_configured_host' => 'You have not configured distributed_poller_memcached_host',
'not_configured_port' => 'You have not configured distributed_poller_memcached_port',
'could_not_connect' => 'Could not connect to memcached server',
'ok' => 'Connection to memcached is ok',
],
'CheckRrdcached' => [
'fail' => 'You have not enabled rrdcached',
],
],
'poller' => [
'CheckActivePoller' => [
'fail' => 'No active polling method detected',
'both_fail' => 'Both Dispatcher Service and Python Wrapper were active recently, this could cause double polling',
'ok' => 'Active pollers found',
],
'CheckDispatcherService' => [
'fail' => 'No active dispatcher nodes found',
'ok' => 'Dispatcher Service is enabled',
'nodes_down' => 'Some dispatcher nodes have not checked in recently',
'not_detected' => 'Dispatcher Service not detected',
'warn' => 'Dispatcher Service has been used, but not recently',
],
'CheckLocking' => [
'fail' => 'Locking server issue: :message',
'ok' => 'Locks are functional',
],
'CheckPythonWrapper' => [
'fail' => 'No active python wrapper pollers found',
'no_pollers' => 'No python wrapper pollers found',
'cron_unread' => 'Could not read cron files',
'ok' => 'Python poller wrapper is polling',
'nodes_down' => 'Some poller nodes have not checked in recently',
'not_detected' => 'Python wrapper cron entry is not present',
],
'CheckRedis' => [
'bad_driver' => 'Using :driver for locking, you should set CACHE_DRIVER=redis',
'ok' => 'Redis is functional',
'unavailable' => 'Redis is unavailable',
],
],
],
];

64
lang/en/widgets.php Normal file
View File

@@ -0,0 +1,64 @@
<?php
return [
'alerts' => [
'title' => 'Alerts',
],
'alertlog' => [
'title' => 'Alert History',
],
'alertlog-stats' => [
'title' => 'Alert History Stats',
],
'availability-map' => [
'title' => 'Availability Map',
],
'component-status' => [
'title' => 'Component Status',
],
'device-summary-horiz' => [
'title' => 'Device Summary Horizontal',
],
'device-summary-vert' => [
'title' => 'Device Summary Vertical',
],
'device-types' => [
'title' => 'Device Types',
],
'eventlog' => [
'title' => 'Eventlog',
],
'generic-graph' => [
'title' => 'Graph',
],
'generic-image' => [
'title' => 'External Images',
],
'globe' => [
'title' => 'Globe Map',
],
'graylog' => [
'title' => 'Graylog',
],
'notes' => [
'title' => 'Notes',
],
'server-stats' => [
'title' => 'Server Stats',
],
'syslog' => [
'title' => 'Syslog',
],
'top-devices' => [
'title' => 'Top Devices',
],
'top-errors' => [
'title' => 'Top Errors',
],
'top-interfaces' => [
'title' => 'Top Interfaces',
],
'worldmap' => [
'title' => 'World Map',
],
];

135
lang/en/wireless.php Normal file
View File

@@ -0,0 +1,135 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Wireless Sensors Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used to translate names and units of wireless sensors
|
*/
'title' => 'Wireless',
'ap-count' => [
'short' => 'APs',
'long' => 'AP Count',
'unit' => '',
],
'clients' => [
'short' => 'Clients',
'long' => 'Client Count',
'unit' => '',
],
'capacity' => [
'short' => 'Capacity',
'long' => 'Capacity',
'unit' => '%',
],
'ccq' => [
'short' => 'CCQ',
'long' => 'Client Connection Quality',
'unit' => '%',
],
'errors' => [
'short' => 'Errors',
'long' => 'Error Count',
'unit' => '',
],
'error-ratio' => [
'short' => 'Error Ratio',
'long' => 'Bit/Packet Error Ratio',
'unit' => '%',
],
'error-rate' => [
'short' => 'BER',
'long' => 'Bit Error Rate',
'unit' => 'bps',
],
'frequency' => [
'short' => 'Frequency',
'long' => 'Frequency',
'unit' => 'MHz',
],
'distance' => [
'short' => 'Distance',
'long' => 'Distance',
'unit' => 'm',
],
'mse' => [
'short' => 'MSE',
'long' => 'Mean Square Error',
'unit' => 'dB',
],
'noise-floor' => [
'short' => 'Noise Floor',
'long' => 'Noise Floor',
'unit' => 'dBm',
],
'power' => [
'short' => 'Power/Signal',
'long' => 'TX/RX Power or Signal',
'unit' => 'dBm',
],
'quality' => [
'short' => 'Quality',
'long' => 'Quality',
'unit' => '%',
],
'rate' => [
'short' => 'Rate',
'long' => 'TX/RX Rate',
'unit' => 'bps',
],
'rssi' => [
'short' => 'RSSI',
'long' => 'Received Signal Strength Indicator',
'unit' => 'dBm',
],
'snr' => [
'short' => 'SNR',
'long' => 'Signal-to-Noise Ratio',
'unit' => 'dB',
],
'sinr' => [
'short' => 'SINR',
'long' => ' Signal-to-Interference-plus-Noise Ratio',
'unit' => 'dB',
],
'rsrq' => [
'short' => 'RSRQ',
'long' => 'Reference Signal Received Quality',
'unit' => 'dB',
],
'rsrp' => [
'short' => 'RSRP',
'long' => 'Reference Signals Received Power',
'unit' => 'dBm',
],
'ssr' => [
'short' => 'SSR',
'long' => 'Signal Strength Ratio',
'unit' => 'dB',
],
'utilization' => [
'short' => 'Utilization',
'long' => 'utilization',
'unit' => '%',
],
'xpi' => [
'short' => 'XPI',
'long' => 'Cross Polar Interference',
'unit' => 'dB',
],
'cell' => [
'short' => 'Cell',
'long' => 'Cell',
'unit' => '',
],
'channel' => [
'short' => 'Channel',
'long' => 'Channel',
'unit' => '',
],
];