diff --git a/LibreNMS/Util/DynamicConfigItem.php b/LibreNMS/Util/DynamicConfigItem.php
index 64b2e24591..f6f964a240 100644
--- a/LibreNMS/Util/DynamicConfigItem.php
+++ b/LibreNMS/Util/DynamicConfigItem.php
@@ -77,8 +77,10 @@ class DynamicConfigItem implements \ArrayAccess
return filter_var($value, FILTER_VALIDATE_EMAIL);
} elseif ($this->type == 'array') {
return is_array($value); // this should probably have more complex validation via validator rules
+ } elseif ($this->type == 'color') {
+ return (bool)preg_match('/^#?[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/', $value);
} elseif (in_array($this->type, ['text', 'password'])) {
- return true;
+ return !is_array($value);
}
return false;
diff --git a/html/js/app.js b/html/js/app.js
index c10e98ddbd..f8203455a5 100644
--- a/html/js/app.js
+++ b/html/js/app.js
@@ -6765,6 +6765,10 @@ __webpack_require__.r(__webpack_exports__);
"description": "Enable Distributed Polling (requires additional setup)",
"help": "Enable distributed polling system wide. This is intended for load sharing, not remote polling. You must read the documentation for steps to enable: https://docs.librenms.org/Extensions/Distributed-Poller/"
},
+ "distributed_poller_group": {
+ "description": "Default Poller Group",
+ "help": "The default poller group all pollers should poll if none is set in config.php"
+ },
"distributed_poller_memcached_host": {
"description": "Memcached host",
"help": "The hostname or ip for the memcached server. This is required for poller_wrapper.py and daily.sh locking."
@@ -7177,6 +7181,7 @@ __webpack_require__.r(__webpack_exports__);
},
"validate": {
"boolean": "{value} is not a valid boolean",
+ "color": "{value} is not a valid hex color code",
"email": "{value} is not a valid email",
"integer": "{value} is not an integer",
"password": "The password is incorrect",
diff --git a/includes/defaults.inc.php b/includes/defaults.inc.php
deleted file mode 100644
index df49d8fc29..0000000000
--- a/includes/defaults.inc.php
+++ /dev/null
@@ -1,877 +0,0 @@
- '#ffffff',
- 'even_alt' => '#f9f9f9',
- 'even_alt2' => '#f0f0f0',
- 'odd' => '#eeeeee',
- 'odd_alt' => '#f0f0f0',
- 'odd_alt2' => '#e3e3e3',
- 'highlight' => '#ffcccc',
-);
-$config['warn_colour'] = '#ffeeee';
-$config['warn_colour_alt'] = '#ffcccc';
-
-// $config['graph_colours'] = array("000066","330066","990066","990066","CC0033","FF0000"); // Purple to Red
-// $config['graph_colours'] = array("006600","336600","996600","996600","CC3300","FF0000"); // Green to Red
-// $config['graph_colours'] = array("002200","004400","006600","008800","00AA00","00CC00"); // Green
-// $config['graph_colours'] = array("220000","440000","660000","880000","AA0000","CC0000"); // Red
-// $config['graph_colours'] = array("001122","002244","003366","004488","0055AA","0066CC"); // Blue
-// $config['graph_colours'] = array("002233","004466","006699","0088CC","0099FF"); // Sky-Blue
-// $config['graph_colours'] = array("110022","330066","440088","6600AA","8800FF"); // Purple
-// $config['graph_colours'] = array("002200","004400","006600","008800","00AA00","00AA00","00CC00"); // Forest Greens
-// $config['graph_colours']['greens'] = array("112200","224400","336600","448800","66AA00","88FF00"); // Grass Greens
-// $config['graph_colours']['greens'] = array("95FFA7","4EFF97","33FF66","336600","224400","112200");
-// $config['graph_colours']['greens'] = array("B7d6A9","8fcb73","50b91d","3ab419","0a8612","034f11");
-// $config['graph_colours']['blues'] = array("b5d7ff","6eb7ff","0064ff","0082ff","0019d5","0016cb","00007d"); // Cold Blues
-$config['graph_colours']['mixed'] = array(
- 'CC0000',
- '008C00',
- '4096EE',
- '73880A',
- 'D01F3C',
- '36393D',
- 'FF0084',
- '91B13C',
-);
-$config['graph_colours']['oranges'] = array(
- 'E43C00',
- 'E74B00',
- 'EB5B00',
- 'EF6A00',
- 'F37900',
- 'F78800',
- 'FB9700',
- 'FFA700',
-);
-$config['graph_colours']['greens'] = array(
- 'B6D14B',
- '91B13C',
- '6D912D',
- '48721E',
- '24520F',
- '003300',
-);
-$config['graph_colours']['pinks'] = array(
- 'D0558F',
- 'B34773',
- '943A57',
- '792C38',
- '5C1F1E',
- '401F10',
-);
-$config['graph_colours']['blues'] = array(
- 'A0A0E5',
- '8080BD',
- '606096',
- '40406F',
- '202048',
- '000033',
-);
-$config['graph_colours']['purples'] = array(
- 'CC7CCC',
- 'AF63AF',
- '934A93',
- '773177',
- '5B185B',
- '3F003F',
-);
-$config['graph_colours']['default'] = $config['graph_colours']['blues'];
-
-// Colour values from http://www.sapdesignguild.org/goodies/diagram_guidelines/color_palettes.html
-$config['graph_colours']['manycolours'] = array(
- "FFF8A3", "FAE16B", "F8D753", "F3C01C", "F0B400", // yellows
- "A9CC8F", "82B16A", "5C9746", "3D8128", "1E6C0B", // greens
- "B2C8D9", "779DBF", "3E75A7", "205F9A", "00488C", // blues
- "BEA37A", "907A52", "7A653E", "63522B", "3D3000", // browns
- "F3AA79", "EB8953", "E1662A", "DC5313", "D84000", // oranges
- "B5B5A9", "8B8D82", "74796F", "5D645A", "434C43", // greys
- "E6A4A5", "D6707B", "C4384F", "BC1C39", "B30023", // pinks
-);
-
-// interleaved purple, pink, green, blue, and orange
-$config['graph_colours']['psychedelic'] = array(
- 'CC7CCC', 'D0558F', 'B6D14B', 'A0A0E5', 'E43C00',
- 'AF63AF', 'B34773', '91B13C', '8080BD', 'E74B00',
- '934A93', '943A57', '6D912D', '606096', 'EB5B00',
- '773177', '792C38', '48721E', '40406F', 'EF6A00',
- '5B185B', '5C1F1E', '24520F', '202048', 'F37900',
- '3F003F', '401F10', '003300', '000033', 'F78800',
- 'FB9700', 'FFA700'
-);
-
-$config['graph_colours']['mega']=array_merge(
- $config['graph_colours']['psychedelic'],
- $config['graph_colours']['manycolours'],
- $config['graph_colours']['default'],
- $config['graph_colours']['mixed']
-);
-
-// Map colors
-$config['network_map_legend'] = array(
- '0' => '#008dca',
- '5' => '#0092a6',
- '10' => '#009782',
- '15' => '#009c5f',
- '20' => '#00a13b',
- '25' => '#00a617',
- '30' => '#0bad00',
- '35' => '#2fb700',
- '40' => '#53c100',
- '45' => '#77cc00',
- '50' => '#9ad600',
- '55' => '#bee000',
- '60' => '#e2ea00',
- '65' => '#ead600',
- '70' => '#e5b200',
- '75' => '#e08e00',
- '80' => '#db6b00',
- '85' => '#d64700',
- '90' => '#d12300',
- '95' => '#cc0000',
- '100' => '#cc0000',
- 'di' => [
- 'edge' => '#dddddd88',
- 'border' => '#cccccc',
- 'node' => '#eeeeee',
- ],
- 'dn' => [
- 'edge' => '#ff777788',
- 'border' => '#ff5555',
- 'node' => '#ffdddd',
- ]
-);
-
-// Default mini graph time options:
-$config['graphs']['mini']['widescreen'] = array(
- 'sixhour' => '6 Hours',
- 'day' => '24 Hours',
- 'twoday' => '48 Hours',
- 'week' => 'One Week',
- 'twoweek' => 'Two Weeks',
- 'month' => 'One Month',
- 'twomonth' => 'Two Months',
- 'year' => 'One Year',
- 'twoyear' => 'Two Years',
-);
-
-$config['graphs']['mini']['normal'] = array(
- 'day' => '24 Hours',
- 'week' => 'One Week',
- 'month' => 'One Month',
- 'year' => 'One Year',
-);
-
-$config['graphs']['row']['normal'] = $config['graphs']['mini']['widescreen'];
-
-// Network Map Items
-$config['network_map_items'] = array('xdp','mac');
-
-// Network Map Visualization Options
-// See http://visjs.org/docs/network/ for description of these options.
-$config['network_map_vis_options'] = '{
- layout:{
- randomSeed:2
- },
- "edges": {
- arrows: {
- to: {enabled: true, scaleFactor:0.5},
- },
- "smooth": {
- enabled: false
- },
- font: {
- size: 14,
- color: "red",
- face: "sans",
- background: "white",
- strokeWidth:3,
- align: "middle",
- strokeWidth: 2
- }
- },
- "physics": {
- "barnesHut": {
- "gravitationalConstant": -2000,
- "centralGravity": 0.3,
- "springLength": 200,
- "springConstant": 0.04,
- "damping": 0.09,
- "avoidOverlap": 1
- },
-
- "forceAtlas2Based": {
- "gravitationalConstant": -50,
- "centralGravity": 0.01,
- "springLength": 200,
- "springConstant": 0.08,
- "damping": 0.4,
- "avoidOverlap": 1
- },
-
- "repulsion": {
- "centralGravity": 0.2,
- "springLength": 250,
- "springConstant": 0.2,
- "nodeDistance": 200,
- "damping": 0.07
- },
-
- "hierarchicalRepulsion": {
- "nodeDistance": 300,
- "centralGravity": 0.2,
- "springLength": 300,
- "springConstant": 0.2,
- "damping": 0.07
- },
-
- "maxVelocity": 50,
- "minVelocity": 0.4,
- "solver": "hierarchicalRepulsion",
- "stabilization": {
- "enabled": true,
- "iterations": 1000,
- "updateInterval": 100,
- "onlyDynamicEdges": false,
- "fit": true
- },
-
- "timestep": 0.4,
- }
-}';
-
-// Device page options
-$config['show_overview_tab'] = true;
-
-$config['cpu_details_overview'] = false; //By default show only average cpu in device overview
-
-// The device overview page options
-$config['overview_show_sysDescr'] = true;
-
-// Enable checking of version in discovery
-// Poller/Discovery Modules
-$config['enable_bgp'] = 1;
-// Enable BGP session collection and display
-$config['enable_syslog'] = 0;
-// Enable Syslog
-$config['enable_inventory'] = 1;
-// Enable Inventory
-$config['enable_pseudowires'] = 1;
-// Enable Pseudowires
-$config['enable_vrfs'] = 1;
-// Enable VRFs
-$config['enable_vrf_lite_cisco'] = 1;
-// Enable routes for VRF lite cisco
-$config['enable_sla'] = 0;
-// Enable Cisco SLA collection and display
-// Ports extension modules
-$config['port_descr_parser'] = 'includes/port-descr-parser.inc.php';
-// Parse port descriptions into fields
-$config['enable_ports_etherlike'] = 0;
-// Enable Polling EtherLike-MIB (doubles interface processing time)
-$config['enable_ports_junoseatmvp'] = 0;
-// Enable JunOSe ATM VC Discovery/Poller
-$config['enable_ports_adsl'] = 1;
-// Enable ADSL-LINE-MIB
-$config['enable_ports_poe'] = 0;
-// Enable PoE stats collection
-// Billing System Configuration
-$config['enable_billing'] = 0;
-// Enable Billing
-$config['billing']['customer_autoadd'] = 0;
-// Enable Auto-add bill per customer
-$config['billing']['circuit_autoadd'] = 0;
-// Enable Auto-add bill per circuit_id
-$config['billing']['bill_autoadd'] = 0;
-// Enable Auto-add bill per bill_id
-$config['billing']['base'] = 1000;
-// Set the base to divider bytes to kB, MB, GB ,... (1000|1024)
-// External Integration
-// $config['rancid_configs'][] = '/var/lib/rancid/network/configs/';
-$config['rancid_repo_type'] = 'svn';
-$config['rancid_ignorecomments'] = 0;
-// Ignore lines starting with #
-// $config['collectd_dir'] = '/var/lib/collectd/rrd';
-// $config['smokeping']['dir'] = "/var/lib/smokeping/";
-$config['smokeping']['pings'] = 20;
-// $config['oxidized']['enabled'] = FALSE;//Set to TRUE
-// $config['oxidized']['url'] = 'http://127.0.0.1:8888';// Set the Oxidized rest URL
-// $config['oxidized']['reload_nodes'] = FALSE;//Set to TRUE, check documentation
-
-// Location Mapping
-// Use this feature to map ugly locations to pretty locations
-// config['location_map']['Under the Sink'] = "Under The Sink, The Office, London, UK";
-// Ignores & Allows
-// Has to be lowercase
-$config['bad_if'][] = 'voip-null';
-$config['bad_if'][] = 'virtual-';
-$config['bad_if'][] = 'unrouted';
-$config['bad_if'][] = 'eobc';
-$config['bad_if'][] = 'lp0';
-$config['bad_if'][] = '-atm';
-$config['bad_if'][] = 'faith0';
-$config['bad_if'][] = 'container';
-$config['bad_if'][] = 'async';
-$config['bad_if'][] = 'plip';
-$config['bad_if'][] = '-physical';
-$config['bad_if'][] = 'container';
-$config['bad_if'][] = 'unrouted';
-$config['bad_if'][] = 'bluetooth';
-$config['bad_if'][] = 'isatap';
-$config['bad_if'][] = 'ras';
-$config['bad_if'][] = 'qos';
-$config['bad_if'][] = 'span rp';
-$config['bad_if'][] = 'span sp';
-$config['bad_if'][] = 'sslvpn';
-$config['bad_if'][] = 'pppoe-';
-$config['bad_if'][] = 'irtual';
-// $config['bad_if'][] = "control plane"; // Example for cisco control plane
-// Ignore ports based on ifType. Case-sensitive.
-$config['bad_iftype'][] = 'voiceEncap';
-$config['bad_iftype'][] = 'voiceFXO';
-$config['bad_iftype'][] = 'voiceFXS';
-$config['bad_iftype'][] = 'voiceOverAtm';
-$config['bad_iftype'][] = 'voiceOverFrameRelay';
-$config['bad_iftype'][] = 'voiceOverIp';
-$config['bad_iftype'][] = 'ds0';
-$config['bad_iftype'][] = 'ds1';
-$config['bad_iftype'][] = 'ds3';
-// $config['bad_iftype'][] = "isdn"; #show signaling traffic
-// $config['bad_iftype'][] = "lapd"; #show signaling traffic
-$config['bad_iftype'][] = 'sonet';
-$config['bad_iftype'][] = 'atmSubInterface';
-$config['bad_iftype'][] = 'aal5';
-$config['bad_iftype'][] = 'shdsl';
-$config['bad_iftype'][] = 'mpls';
-
-$config['bad_if_regexp'][] = '/^ng[0-9]+$/';
-$config['bad_if_regexp'][] = '/^sl[0-9]/';
-
-// Rewrite Interfaces
-$config['rewrite_if_regexp']['/^cpu interface/'] = 'Mgmt';
-
-$config['ignore_mount_removable'] = 1;
-// Ignore removable disk storage
-$config['ignore_mount_network'] = 1;
-// Ignore network mounted storage
-$config['ignore_mount_optical'] = 1;
-// Ignore mounted optical discs
-// Per-device interface graph filters
-$config['device_traffic_iftype'][] = '/loopback/';
-$config['device_traffic_iftype'][] = '/tunnel/';
-$config['device_traffic_iftype'][] = '/virtual/';
-$config['device_traffic_iftype'][] = '/mpls/';
-$config['device_traffic_iftype'][] = '/ieee8023adLag/';
-$config['device_traffic_iftype'][] = '/l2vlan/';
-$config['device_traffic_iftype'][] = '/ppp/';
-
-$config['device_traffic_descr'][] = '/loopback/';
-$config['device_traffic_descr'][] = '/vlan/';
-$config['device_traffic_descr'][] = '/tunnel/';
-$config['device_traffic_descr'][] = '/bond/';
-$config['device_traffic_descr'][] = '/null/';
-$config['device_traffic_descr'][] = '/dummy/';
-
-// IRC Bot configuration
-$config['irc_host'] = '';
-$config['irc_port'] = '';
-$config['irc_maxretry'] = 3;
-$config['irc_nick'] = $config['project_name'];
-$config['irc_chan'][] = '##'.$config['project_id'];
-$config['irc_pass'] = '';
-$config['irc_external'] = '';
-$config['irc_authtime'] = 3;
-$config['irc_debug'] = false;
-$config['irc_alert'] = false;
-$config['irc_alert_utf8'] = false;
-$config['irc_alert_short'] = false;
-$config['irc_ctcp'] = false;
-$config['irc_ctcp_version'] = "LibreNMS IRCbot. https://www.librenms.org/";
-
-// Authentication
-$config['allow_unauth_graphs'] = false;
-// Allow graphs to be viewed by anyone
-$config['allow_unauth_graphs_cidr'] = array();
-// Allow graphs to be viewed without authorisation from certain IP ranges
-$config['auth_mechanism'] = 'mysql';
-// Available mechanisms: mysql (default), ldap, http-auth
-$config['auth_remember'] = '30';
-// This is how long in days to remember users who select remember me
-// LDAP Authentication
-$config['auth_ldap_version'] = 3;
-// v2 or v3
-$config['auth_ldap_server'] = 'ldap.example.com';
-$config['auth_ldap_port'] = 389;
-$config['auth_ldap_prefix'] = 'uid=';
-$config['auth_ldap_suffix'] = ',ou=People,dc=example,dc=com';
-$config['auth_ldap_group'] = 'cn=groupname,ou=groups,dc=example,dc=com';
-$config['auth_ldap_uid_attribute'] = 'uidnumber';
-
-$config['auth_ldap_attr']['uid'] = "uid";
-$config['auth_ldap_groupbase'] = 'ou=group,dc=example,dc=com';
-$config['auth_ldap_groups']['admin']['level'] = 10;
-$config['auth_ldap_groups']['pfy']['level'] = 7;
-$config['auth_ldap_groups']['support']['level'] = 1;
-$config['auth_ldap_groupmemberattr'] = 'memberUid';
-$config['auth_ldap_emailattr'] = 'mail';
-$config['auth_ldap_cache_ttl'] = 300;
-// How long in seconds should ldap* module cache user information in $_SESSION
-$config['auth_ldap_userdn'] = false;
-// Uses a users full DN as the value of the member attribute in a group (instead of member: username, it’s member: uid=username,ou=groups,dc=domain,dc=com).
-
-// Active Directory Authentication
-$config['auth_ad_user_filter'] = "(objectclass=user)";
-$config['auth_ad_group_filter'] = "(objectclass=group)";
-
-// Single sign-on defaults
-$config['sso']['create_users'] = true;
-$config['sso']['update_users'] = true;
-$config['sso']['user_attr'] = 'REMOTE_USER';
-
-// Sensors
-$config['allow_entity_sensor']['amperes'] = 1;
-$config['allow_entity_sensor']['celsius'] = 1;
-$config['allow_entity_sensor']['dBm'] = 1;
-$config['allow_entity_sensor']['voltsDC'] = 1;
-$config['allow_entity_sensor']['voltsAC'] = 1;
-$config['allow_entity_sensor']['watts'] = 1;
-$config['allow_entity_sensor']['truthvalue'] = 1;
-$config['allow_entity_sensor']['specialEnum'] = 1;
-
-// Filesystems
-$config['ignore_mount'][] = '/kern';
-$config['ignore_mount'][] = '/mnt/cdrom';
-$config['ignore_mount'][] = '/proc';
-$config['ignore_mount'][] = '/dev';
-$config['ignore_mount'][] = '/compat/linux/proc';
-$config['ignore_mount'][] = '/compat/linux/sys';
-
-$config['ignore_mount_string'][] = 'packages';
-$config['ignore_mount_string'][] = 'devfs';
-$config['ignore_mount_string'][] = 'procfs';
-$config['ignore_mount_string'][] = 'linprocfs';
-$config['ignore_mount_string'][] = 'linsysfs';
-$config['ignore_mount_string'][] = 'UMA';
-$config['ignore_mount_string'][] = 'MALLOC';
-
-$config['ignore_mount_regexp'][] = '/on: \/packages/';
-$config['ignore_mount_regexp'][] = '/on: \/dev/';
-$config['ignore_mount_regexp'][] = '/on: \/proc/';
-$config['ignore_mount_regexp'][] = '/on: \/junos^/';
-$config['ignore_mount_regexp'][] = '/on: \/junos\/dev/';
-$config['ignore_mount_regexp'][] = '/on: \/jail\/dev/';
-$config['ignore_mount_regexp'][] = '/^(dev|proc)fs/';
-$config['ignore_mount_regexp'][] = '/^\/dev\/md0/';
-$config['ignore_mount_regexp'][] = '/^\/var\/dhcpd\/dev/';
-$config['ignore_mount_regexp'][] = '/UMA/';
-$config['ignore_mount_regexp'][] = "/^\/Volumes\/OS X Base System/";
-
-$config['ignore_mount_removable'] = 1;
-// Ignore removable disk storage
-$config['ignore_mount_network'] = 1;
-// Ignore network mounted storage
-// Syslog Settings
-// Entries older than this will be removed
-$config['syslog_filter'][] = 'last message repeated';
-$config['syslog_filter'][] = 'Connection from UDP: [';
-$config['syslog_filter'][] = 'ipSystemStatsTable node ipSystemStatsOutFragOKs not implemented';
-$config['syslog_filter'][] = 'diskio.c';
-// Ignore some crappy stuff from SNMP daemon
-// Virtualization
-$config['enable_libvirt'] = 0;
-// Enable Libvirt VM support
-$config['libvirt_protocols'] = array(
- 'qemu+ssh',
- 'xen+ssh',
-);
-
-// Nicer labels for the SLA types
-$config['sla_type_labels']['echo'] = 'ICMP ping';
-$config['sla_type_labels']['pathEcho'] = 'Path ICMP ping';
-$config['sla_type_labels']['fileIO'] = 'File I/O';
-$config['sla_type_labels']['script'] = 'Script';
-$config['sla_type_labels']['udpEcho'] = 'UDP ping';
-$config['sla_type_labels']['tcpConnect'] = 'TCP connect';
-$config['sla_type_labels']['http'] = 'HTTP';
-$config['sla_type_labels']['dns'] = 'DNS';
-$config['sla_type_labels']['jitter'] = 'Jitter';
-$config['sla_type_labels']['dlsw'] = 'DLSW';
-$config['sla_type_labels']['dhcp'] = 'DHCP';
-$config['sla_type_labels']['ftp'] = 'FTP';
-$config['sla_type_labels']['voip'] = 'VoIP';
-$config['sla_type_labels']['rtp'] = 'RTP';
-$config['sla_type_labels']['lspGroup'] = 'LSP group';
-$config['sla_type_labels']['icmpjitter'] = 'ICMP jitter';
-$config['sla_type_labels']['lspPing'] = 'LSP ping';
-$config['sla_type_labels']['lspTrace'] = 'LSP trace';
-$config['sla_type_labels']['ethernetPing'] = 'Ethernet ping';
-$config['sla_type_labels']['ethernetJitter'] = 'Ethernet jitter';
-$config['sla_type_labels']['lspPingPseudowire'] = 'LSP Pseudowire ping';
-
-// Warnings on front page
-$config['warn']['ifdown'] = true;
-// Show down interfaces
-// List of poller modules. Need to be in the array to be
-// considered for execution.
-$config['poller_modules']['unix-agent'] = false;
-$config['poller_modules']['os'] = true;
-$config['poller_modules']['ipmi'] = true;
-$config['poller_modules']['sensors'] = true;
-$config['poller_modules']['processors'] = true;
-$config['poller_modules']['mempools'] = true;
-$config['poller_modules']['storage'] = true;
-$config['poller_modules']['netstats'] = true;
-$config['poller_modules']['hr-mib'] = true;
-$config['poller_modules']['ucd-mib'] = true;
-$config['poller_modules']['ipSystemStats'] = true;
-$config['poller_modules']['ports'] = true;
-$config['poller_modules']['bgp-peers'] = true;
-$config['poller_modules']['junose-atm-vp'] = false;
-$config['poller_modules']['toner'] = false;
-$config['poller_modules']['ucd-diskio'] = true;
-$config['poller_modules']['wifi'] = false;
-$config['poller_modules']['wireless'] = true;
-$config['poller_modules']['ospf'] = true;
-$config['poller_modules']['cisco-ipsec-flow-monitor'] = false;
-$config['poller_modules']['cisco-remote-access-monitor'] = false;
-$config['poller_modules']['cisco-cef'] = false;
-$config['poller_modules']['cisco-sla'] = false;
-$config['poller_modules']['cisco-mac-accounting'] = false;
-$config['poller_modules']['cipsec-tunnels'] = false;
-$config['poller_modules']['cisco-ace-loadbalancer'] = false;
-$config['poller_modules']['cisco-ace-serverfarms'] = false;
-$config['poller_modules']['cisco-asa-firewall'] = false;
-$config['poller_modules']['cisco-voice'] = false;
-$config['poller_modules']['cisco-cbqos'] = false;
-$config['poller_modules']['cisco-otv'] = false;
-$config['poller_modules']['cisco-qfp'] = false;
-$config['poller_modules']['cisco-vpdn'] = false;
-$config['poller_modules']['nac'] = false;
-$config['poller_modules']['netscaler-vsvr'] = false;
-$config['poller_modules']['aruba-controller'] = false;
-$config['poller_modules']['entity-physical'] = true;
-$config['poller_modules']['entity-state'] = false;
-$config['poller_modules']['applications'] = true;
-$config['poller_modules']['mib'] = false;
-$config['poller_modules']['stp'] = true;
-$config['poller_modules']['ntp'] = true;
-$config['poller_modules']['loadbalancers'] = false;
-$config['poller_modules']['mef'] = false;
-$config['poller_modules']['mpls'] = true;
-
-// List of discovery modules. Need to be in this array to be
-// considered for execution.
-$config['discovery_modules']['os'] = true;
-$config['discovery_modules']['ports'] = true;
-$config['discovery_modules']['ports-stack'] = true;
-$config['discovery_modules']['entity-physical'] = true;
-$config['discovery_modules']['entity-state'] = false;
-$config['discovery_modules']['processors'] = true;
-$config['discovery_modules']['mempools'] = true;
-$config['discovery_modules']['cisco-vrf-lite'] = true;
-$config['discovery_modules']['cisco-mac-accounting'] = false;
-$config['discovery_modules']['cisco-pw'] = false;
-$config['discovery_modules']['vrf'] = false;
-$config['discovery_modules']['cisco-cef'] = false;
-$config['discovery_modules']['cisco-sla'] = false;
-$config['discovery_modules']['cisco-cbqos'] = false;
-$config['discovery_modules']['cisco-otv'] = false;
-$config['discovery_modules']['cisco-qfp'] = false;
-$config['discovery_modules']['ipv4-addresses'] = true;
-$config['discovery_modules']['ipv6-addresses'] = true;
-$config['discovery_modules']['route'] = false;
-$config['discovery_modules']['sensors'] = true;
-$config['discovery_modules']['storage'] = true;
-$config['discovery_modules']['hr-device'] = true;
-$config['discovery_modules']['discovery-protocols'] = true;
-$config['discovery_modules']['arp-table'] = true;
-$config['discovery_modules']['discovery-arp'] = false;
-$config['discovery_modules']['junose-atm-vp'] = false;
-$config['discovery_modules']['bgp-peers'] = true;
-$config['discovery_modules']['vlans'] = true;
-$config['discovery_modules']['vmware-vminfo'] = false;
-$config['discovery_modules']['libvirt-vminfo'] = false;
-$config['discovery_modules']['toner'] = false;
-$config['discovery_modules']['ucd-diskio'] = true;
-$config['discovery_modules']['applications'] = false;
-$config['discovery_modules']['services'] = true;
-$config['discovery_modules']['stp'] = true;
-$config['discovery_modules']['ntp'] = true;
-$config['discovery_modules']['loadbalancers'] = false;
-$config['discovery_modules']['mef'] = false;
-$config['discovery_modules']['wireless'] = true;
-$config['discovery_modules']['fdb-table'] = true;
-$config['discovery_modules']['mpls'] = true;
-// Enable daily updates
-$config['update'] = 1;
-
-// Sets automatic sensor limits when no values are returned by the device.
-$config['sensors']['guess_limits'] = true;
-
-// Purge syslog and eventlog
-$config['syslog_purge'] = 30;
-// Number in days of how long to keep syslog entries for.
-$config['eventlog_purge'] = 30;
-// Number in days of how long to keep eventlog entries for.
-$config['authlog_purge'] = 30;
-// Number in days of how long to keep authlog entries for.
-$config['perf_times_purge'] = 30;
-// Number in days of how long to keep performace polling stats entries for.
-$config['device_perf_purge'] = 7;
-// Number in days of how long to keep device performance data for.
-$config['alert_log_purge'] = 365;
-// Number in days of how long to keep alert log data for.
-$config['ports_fdb_purge'] = 10;
-// Number in days of how long to keep fdb table data for.
-
-// Date format for PHP date()s
-$config['dateformat']['long'] = 'r';
-// RFC2822 style
-$config['dateformat']['compact'] = 'Y-m-d H:i:s';
-$config['dateformat']['byminute'] = 'Y-m-d H:i';
-$config['dateformat']['time'] = 'H:i:s';
-
-// Date format for MySQL DATE_FORMAT
-$config['dateformat']['mysql']['compact'] = '%Y-%m-%d %H:%i:%s';
-$config['dateformat']['mysql']['date'] = '%Y-%m-%d';
-$config['dateformat']['mysql']['time'] = '%H:%i:%s';
-
-$config['enable_clear_discovery'] = 1;
-// Set this to 0 if you want to disable the web option to rediscover devices
-$config['force_ip_to_sysname'] = false;// Set to true if you want to use sysName in place of IPs
-$config['force_hostname_to_sysname'] = false;// Set to true if you want to use sysNAme in place of a hostname, ie Dynamic DNS
-
-// Allow duplicate devices by sysName
-$config['allow_duplicate_sysName'] = false;// Set to true if you want to allow duplicate sysName's
-
-$config['enable_port_relationship'] = true;
-// Set this to false to not display neighbour relationships for ports
-$config['enable_footer'] = false;
-// Set this to true if you want to enable the footer in the web interface
-$config['api_demo'] = 0;
-// Set this to 1 if you want to disable some untrusting features for the API
-// Distributed Poller-Settings
-$config['distributed_poller'] = false;
-$config['distributed_poller_name'] = php_uname('n');
-$config['distributed_poller_group'] = 0;
-$config['distributed_poller_memcached_host'] = 'example.net';
-$config['distributed_poller_memcached_port'] = '11211';
-
-// BETA polller service config options.
-// See https://docs.librenms.org/Extensions/Poller-Service/ for more information
-//$config['service_poller_workers'] = 24; # Processes spawned for polling
-//$config['service_services_workers'] = 8; # Processes spawned for service polling
-//$config['service_discovery_workers'] = 16; # Processes spawned for discovery
-// Optional BETA polller service Settings
-//$config['service_poller_frequency'] = 300; # Seconds between polling attempts
-//$config['service_services_frequency'] = 300; # Seconds between service polling attempts
-//$config['service_discovery_frequency'] = 21600; # Seconds between discovery runs
-//$config['service_billing_frequency'] = 300; # Seconds between billing calculations
-//$config['service_billing_calculate_frequency'] = 60; # Billing interval
-//$config['service_poller_down_retry'] = 60; # Seconds between failed polling attempts
-//$config['service_loglevel'] = 'INFO'; # Must be one of 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'
-
-// Stats callback system
-$config['callback_post'] = 'https://stats.librenms.org/log.php';
-$config['callback_clear'] = 'https://stats.librenms.org/clear.php';
-
-// Stat graphs
-$config['alert_graph_date_format'] = '%Y-%m-%d %H:%i';
-
-// IPMI type
-$config['ipmi']['type'][] = 'lanplus';
-$config['ipmi']['type'][] = 'lan';
-$config['ipmi']['type'][] = 'imb';
-$config['ipmi']['type'][] = 'open';
-
-// Options needed for dynamic config - do NOT edit
-$config['email_backend_options'] = array(
- 'mail',
- 'sendmail',
- 'smtp',
-);
-$config['email_smtp_secure_options'] = array(
- '',
- 'tls',
- 'ssl',
-);
-
-// Unix-agent poller module config settings
-$config['unix-agent-connection-time-out'] = 10;
-// seconds
-$config['unix-agent-read-time-out'] = 10;
-// seconds
-
-// Lat / Lon support for maps
-#$config['geoloc']['latlng'] = true; // True to enable translation of location to latlng co-ordinates
-#$config['geoloc']['engine'] = 'google';
-$config['map']['engine'] = 'leaflet';
-$config['mapael']['default_map'] = 'maps/world_countries.js';
-$config['leaflet']['default_lat'] = '51.4800';
-$config['leaflet']['default_lng'] = '0';
-$config['leaflet']['default_zoom'] = 2;
-$config['leaflet']['tile_url'] = "{s}.tile.openstreetmap.org";
-
-// General GUI options
-$config['gui']['network-map']['style'] = 'new';//old is also valid
-
-// Show errored ports in the summary table on the dashboard
-$config['summary_errors'] = 0;
-
-// Default notifications Feed
-$config['notifications']['LibreNMS'] = 'http://www.librenms.org/notifications.rss';
-$config['notifications']['local'] = 'misc/notifications.rss';
-
-// Update channel (Can be 'master' or 'release')
-$config['update_channel'] = 'master';
-
-// Default port association mode
-$config['default_port_association_mode'] = 'ifIndex';
-// Ignore ports which can't be mapped using a devices port_association_mode
-// See include/polling/ports.inc.php for a lenghty explanation.
-$config['ignore_unmapable_port'] = false;
-
-// InfluxDB default configuration
-$config['influxdb']['timeout'] = 0;
-$config['influxdb']['verifySSL'] = false;
-
-// Prometheus Push Default configuration
-$config['prometheus']['job'] = 'librenms';
-
-// Xirrus - Disable station/client polling if true as it may take a long time on larger/heavily used APs.
-$config['xirrus_disable_stations'] = false;
-
-// Graphite default port
-$config['graphite']['port'] = 2003;
-
-// API config
-$config['api']['cors']['enabled'] = false;
-$config['api']['cors']['origin'] = '*';
-$config['api']['cors']['maxage'] = '86400';
-$config['api']['cors']['allowmethods'] = array('POST', 'GET', 'PUT', 'DELETE', 'PATCH');
-$config['api']['cors']['allowheaders'] = array('Origin', 'X-Requested-With', 'Content-Type', 'Accept', 'X-Auth-Token');
-
-// Disk
-$config['bad_disk_regexp'] = [];
-
-// Snmptrap logging: none, unhandled, all
-$config['snmptraps']['eventlog'] = 'unhandled';
diff --git a/includes/definitions.inc.php b/includes/definitions.inc.php
deleted file mode 100644
index 47db476852..0000000000
--- a/includes/definitions.inc.php
+++ /dev/null
@@ -1,632 +0,0 @@
- 'analyzer', 'order' => 0, 'descr' => 'Log Rate'];
-
-//PAN OS Graphs
-$config['graph_types']['device']['panos_sessions']['section'] = 'firewall';
-$config['graph_types']['device']['panos_sessions']['order'] = '0';
-$config['graph_types']['device']['panos_sessions']['descr'] = 'Active Sessions';
-$config['graph_types']['device']['panos_sessions_tcp']['section'] = 'firewall';
-$config['graph_types']['device']['panos_sessions_tcp']['order'] = '0';
-$config['graph_types']['device']['panos_sessions_tcp']['descr'] = 'Active TCP Sessions';
-$config['graph_types']['device']['panos_sessions_udp']['section'] = 'firewall';
-$config['graph_types']['device']['panos_sessions_udp']['order'] = '0';
-$config['graph_types']['device']['panos_sessions_udp']['descr'] = 'Active UDP Sessions';
-$config['graph_types']['device']['panos_sessions_icmp']['section'] = 'firewall';
-$config['graph_types']['device']['panos_sessions_icmp']['order'] = '0';
-$config['graph_types']['device']['panos_sessions_icmp']['descr'] = 'Active ICMP Sessions';
-$config['graph_types']['device']['panos_sessions_ssl']['section'] = 'firewall';
-$config['graph_types']['device']['panos_sessions_ssl']['order'] = '0';
-$config['graph_types']['device']['panos_sessions_ssl']['descr'] = 'Active SSL Proxy Sessions';
-$config['graph_types']['device']['panos_sessions_sslutil']['section'] = 'firewall';
-$config['graph_types']['device']['panos_sessions_sslutil']['order'] = '0';
-$config['graph_types']['device']['panos_sessions_sslutil']['descr'] = 'Active SSL Proxy Utilization';
-$config['graph_types']['device']['panos_activetunnels'] = ['section' => 'firewall', 'order' => 0, 'descr' => 'Active GlobalProtect Tunnels'];
-
-//PF Graphs
-$config['graph_types']['device']['pf_states']['section'] = 'firewall';
-$config['graph_types']['device']['pf_states']['order'] = '1';
-$config['graph_types']['device']['pf_states']['descr'] = 'States';
-$config['graph_types']['device']['pf_searches']['section'] = 'firewall';
-$config['graph_types']['device']['pf_searches']['order'] = '2';
-$config['graph_types']['device']['pf_searches']['descr'] = 'Searches';
-$config['graph_types']['device']['pf_inserts']['section'] = 'firewall';
-$config['graph_types']['device']['pf_inserts']['order'] = '3';
-$config['graph_types']['device']['pf_inserts']['descr'] = 'Inserts';
-$config['graph_types']['device']['pf_removals']['section'] = 'firewall';
-$config['graph_types']['device']['pf_removals']['order'] = '4';
-$config['graph_types']['device']['pf_removals']['descr'] = 'Removals';
-$config['graph_types']['device']['pf_matches']['section'] = 'firewall';
-$config['graph_types']['device']['pf_matches']['order'] = '5';
-$config['graph_types']['device']['pf_matches']['descr'] = 'Matches';
-$config['graph_types']['device']['pf_badoffset']['section'] = 'firewall';
-$config['graph_types']['device']['pf_badoffset']['order'] = '6';
-$config['graph_types']['device']['pf_badoffset']['descr'] = 'BadOffset';
-$config['graph_types']['device']['pf_fragmented']['section'] = 'firewall';
-$config['graph_types']['device']['pf_fragmented']['order'] = '7';
-$config['graph_types']['device']['pf_fragmented']['descr'] = 'Fragmented';
-$config['graph_types']['device']['pf_short']['section'] = 'firewall';
-$config['graph_types']['device']['pf_short']['order'] = '8';
-$config['graph_types']['device']['pf_short']['descr'] = 'Short';
-$config['graph_types']['device']['pf_normalized']['section'] = 'firewall';
-$config['graph_types']['device']['pf_normalized']['order'] = '9';
-$config['graph_types']['device']['pf_normalized']['descr'] = 'Normalized';
-$config['graph_types']['device']['pf_memdropped']['section'] = 'firewall';
-$config['graph_types']['device']['pf_memdropped']['order'] = '10';
-$config['graph_types']['device']['pf_memdropped']['descr'] = 'MemDropped';
-
-//Pulse Secure Graphs
-$config['graph_types']['device']['pulse_sessions'] = ['section' => 'firewall', 'order' => 0, 'descr' => 'Active Sessions'];
-$config['graph_types']['device']['pulse_users'] = ['section' => 'firewall', 'order' => 0, 'descr' => 'Active Users'];
-
-// Infoblox dns/dhcp Graphs
-$config['graph_types']['device']['ib_dns_dyn_updates']['section'] = 'dns';
-$config['graph_types']['device']['ib_dns_dyn_updates']['order'] = '0';
-$config['graph_types']['device']['ib_dns_dyn_updates']['descr'] = 'DNS dynamic updates';
-$config['graph_types']['device']['ib_dns_request_return_codes']['section'] = 'dns';
-$config['graph_types']['device']['ib_dns_request_return_codes']['order'] = '0';
-$config['graph_types']['device']['ib_dns_request_return_codes']['descr'] = 'DNS request return codes';
-$config['graph_types']['device']['ib_dns_performance']['section'] = 'dns';
-$config['graph_types']['device']['ib_dns_performance']['order'] = '0';
-$config['graph_types']['device']['ib_dns_performance']['descr'] = 'DNS performance';
-$config['graph_types']['device']['ib_dhcp_messages']['section'] = 'dhcp';
-$config['graph_types']['device']['ib_dhcp_messages']['order'] = '0';
-$config['graph_types']['device']['ib_dhcp_messages']['descr'] = 'DHCP messages';
-
-// Cisco WAAS Optimized TCP Connections
-$config['graph_types']['device']['waas_cwotfostatsactiveoptconn'] = ['section' => 'graphs', 'order' => 0, 'descr' => 'Optimized TCP Connections'];
-
-// SonicWALL Sessions
-$config['graph_types']['device']['sonicwall_sessions'] = ['section' => 'firewall', 'order' => 0, 'descr' => 'Active Sessions'];
-
-$config['graph_types']['device']['bits']['section'] = 'netstats';
-$config['graph_types']['device']['bits']['order'] = '0';
-$config['graph_types']['device']['bits']['descr'] = 'Total Traffic';
-$config['graph_types']['device']['ipsystemstats_ipv4']['section'] = 'netstats';
-$config['graph_types']['device']['ipsystemstats_ipv4']['order'] = '0';
-$config['graph_types']['device']['ipsystemstats_ipv4']['descr'] = 'IPv4 Packet Statistics';
-$config['graph_types']['device']['ipsystemstats_ipv4_frag']['section'] = 'netstats';
-$config['graph_types']['device']['ipsystemstats_ipv4_frag']['order'] = '0';
-$config['graph_types']['device']['ipsystemstats_ipv4_frag']['descr'] = 'IPv4 Fragmentation Statistics';
-$config['graph_types']['device']['ipsystemstats_ipv6']['section'] = 'netstats';
-$config['graph_types']['device']['ipsystemstats_ipv6']['order'] = '0';
-$config['graph_types']['device']['ipsystemstats_ipv6']['descr'] = 'IPv6 Packet Statistics';
-$config['graph_types']['device']['ipsystemstats_ipv6_frag']['section'] = 'netstats';
-$config['graph_types']['device']['ipsystemstats_ipv6_frag']['order'] = '0';
-$config['graph_types']['device']['ipsystemstats_ipv6_frag']['descr'] = 'IPv6 Fragmentation Statistics';
-$config['graph_types']['device']['netstat_icmp_info']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_icmp_info']['order'] = '0';
-$config['graph_types']['device']['netstat_icmp_info']['descr'] = 'ICMP Informational Statistics';
-$config['graph_types']['device']['netstat_icmp']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_icmp']['order'] = '0';
-$config['graph_types']['device']['netstat_icmp']['descr'] = 'ICMP Statistics';
-$config['graph_types']['device']['netstat_ip']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_ip']['order'] = '0';
-$config['graph_types']['device']['netstat_ip']['descr'] = 'IP Statistics';
-$config['graph_types']['device']['netstat_ip_frag']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_ip_frag']['order'] = '0';
-$config['graph_types']['device']['netstat_ip_frag']['descr'] = 'IP Fragmentation Statistics';
-$config['graph_types']['device']['netstat_snmp']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_snmp']['order'] = '0';
-$config['graph_types']['device']['netstat_snmp']['descr'] = 'SNMP Statistics';
-$config['graph_types']['device']['netstat_snmp_pkt']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_snmp_pkt']['order'] = '0';
-$config['graph_types']['device']['netstat_snmp_pkt']['descr'] = 'SNMP Packet Type Statistics';
-
-$config['graph_types']['device']['netstat_ip_forward']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_ip_forward']['order'] = '0';
-$config['graph_types']['device']['netstat_ip_forward']['descr'] = 'IP Forwarding Statistics';
-
-$config['graph_types']['device']['netstat_tcp']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_tcp']['order'] = '0';
-$config['graph_types']['device']['netstat_tcp']['descr'] = 'TCP Statistics';
-$config['graph_types']['device']['netstat_udp']['section'] = 'netstats';
-$config['graph_types']['device']['netstat_udp']['order'] = '0';
-$config['graph_types']['device']['netstat_udp']['descr'] = 'UDP Statistics';
-
-$config['graph_types']['device']['fdb_count']['section'] = 'system';
-$config['graph_types']['device']['fdb_count']['order'] = '0';
-$config['graph_types']['device']['fdb_count']['descr'] = 'MAC Addresses Learnt';
-$config['graph_types']['device']['hr_processes']['section'] = 'system';
-$config['graph_types']['device']['hr_processes']['order'] = '0';
-$config['graph_types']['device']['hr_processes']['descr'] = 'Running Processes';
-$config['graph_types']['device']['hr_users']['section'] = 'system';
-$config['graph_types']['device']['hr_users']['order'] = '0';
-$config['graph_types']['device']['hr_users']['descr'] = 'Users Logged In';
-$config['graph_types']['device']['mempool']['section'] = 'system';
-$config['graph_types']['device']['mempool']['order'] = '0';
-$config['graph_types']['device']['mempool']['descr'] = 'Memory Pool Usage';
-$config['graph_types']['device']['processor']['section'] = 'system';
-$config['graph_types']['device']['processor']['order'] = '0';
-$config['graph_types']['device']['processor']['descr'] = 'Processor Usage';
-$config['graph_types']['device']['storage']['section'] = 'system';
-$config['graph_types']['device']['storage']['order'] = '0';
-$config['graph_types']['device']['storage']['descr'] = 'Filesystem Usage';
-$config['graph_types']['device']['temperature']['section'] = 'system';
-$config['graph_types']['device']['temperature']['order'] = '0';
-$config['graph_types']['device']['temperature']['descr'] = 'temperature';
-$config['graph_types']['device']['charge']['section'] = 'system';
-$config['graph_types']['device']['charge']['order'] = '0';
-$config['graph_types']['device']['charge']['descr'] = 'Battery Charge';
-$config['graph_types']['device']['ucd_cpu']['section'] = 'system';
-$config['graph_types']['device']['ucd_cpu']['order'] = '0';
-$config['graph_types']['device']['ucd_cpu']['descr'] = 'Detailed Processor Usage';
-$config['graph_types']['device']['ucd_load']['section'] = 'system';
-$config['graph_types']['device']['ucd_load']['order'] = '0';
-$config['graph_types']['device']['ucd_load']['descr'] = 'Load Averages';
-$config['graph_types']['device']['ucd_memory']['section'] = 'system';
-$config['graph_types']['device']['ucd_memory']['order'] = '0';
-$config['graph_types']['device']['ucd_memory']['descr'] = 'Detailed Memory Usage';
-$config['graph_types']['device']['ucd_swap_io']['section'] = 'system';
-$config['graph_types']['device']['ucd_swap_io']['order'] = '0';
-$config['graph_types']['device']['ucd_swap_io']['descr'] = 'Swap I/O Activity';
-$config['graph_types']['device']['ucd_io']['section'] = 'system';
-$config['graph_types']['device']['ucd_io']['order'] = '0';
-$config['graph_types']['device']['ucd_io']['descr'] = 'System I/O Activity';
-$config['graph_types']['device']['ucd_contexts']['section'] = 'system';
-$config['graph_types']['device']['ucd_contexts']['order'] = '0';
-$config['graph_types']['device']['ucd_contexts']['descr'] = 'Context Switches';
-$config['graph_types']['device']['ucd_interrupts']['section'] = 'system';
-$config['graph_types']['device']['ucd_interrupts']['order'] = '0';
-$config['graph_types']['device']['ucd_interrupts']['descr'] = 'Interrupts';
-$config['graph_types']['device']['uptime']['section'] = 'system';
-$config['graph_types']['device']['uptime']['order'] = '0';
-$config['graph_types']['device']['uptime']['descr'] = 'System Uptime';
-$config['graph_types']['device']['poller_perf']['section'] = 'poller';
-$config['graph_types']['device']['poller_perf']['order'] = '0';
-$config['graph_types']['device']['poller_perf']['descr'] = 'Poller Time';
-$config['graph_types']['device']['ping_perf']['section'] = 'poller';
-$config['graph_types']['device']['ping_perf']['order'] = '0';
-$config['graph_types']['device']['ping_perf']['descr'] = 'Ping Response';
-$config['graph_types']['device']['poller_modules_perf']['section'] = 'poller';
-$config['graph_types']['device']['poller_modules_perf']['order'] = '0';
-$config['graph_types']['device']['poller_modules_perf']['descr'] = 'Poller Modules Performance';
-
-$config['graph_types']['device']['vpdn_sessions_l2tp']['section'] = 'vpdn';
-$config['graph_types']['device']['vpdn_sessions_l2tp']['order'] = '0';
-$config['graph_types']['device']['vpdn_sessions_l2tp']['descr'] = 'VPDN L2TP Sessions';
-
-$config['graph_types']['device']['vpdn_tunnels_l2tp']['section'] = 'vpdn';
-$config['graph_types']['device']['vpdn_tunnels_l2tp']['order'] = '0';
-$config['graph_types']['device']['vpdn_tunnels_l2tp']['descr'] = 'VPDN L2TP Tunnels';
-
-$config['graph_types']['device']['netscaler_tcp_conn']['section'] = 'load balancer';
-$config['graph_types']['device']['netscaler_tcp_conn']['order'] = '0';
-$config['graph_types']['device']['netscaler_tcp_conn']['descr'] = 'TCP Connections';
-
-$config['graph_types']['device']['netscaler_tcp_bits']['section'] = 'load balancer';
-$config['graph_types']['device']['netscaler_tcp_bits']['order'] = '0';
-$config['graph_types']['device']['netscaler_tcp_bits']['descr'] = 'TCP Traffic';
-
-$config['graph_types']['device']['netscaler_tcp_pkts']['section'] = 'load balancer';
-$config['graph_types']['device']['netscaler_tcp_pkts']['order'] = '0';
-$config['graph_types']['device']['netscaler_tcp_pkts']['descr'] = 'TCP Packets';
-
-$config['graph_types']['device']['asa_conns'] = ['section' => 'firewall', 'order' => 0, 'descr' => 'Current connections'];
-
-$config['graph_types']['device']['cisco-iospri']['section'] = 'voice';
-$config['graph_types']['device']['cisco-iospri']['order'] = '0';
-$config['graph_types']['device']['cisco-iospri']['descr'] = 'PRI Utilisation';
-
-$config['graph_types']['device']['cisco-voice-ip']['section'] = 'voice';
-$config['graph_types']['device']['cisco-voice-ip']['order'] = '0';
-$config['graph_types']['device']['cisco-voice-ip']['descr'] = 'IP Real Time Calls';
-
-$config['graph_types']['device']['cisco-iosdsp']['section'] = 'voice';
-$config['graph_types']['device']['cisco-iosdsp']['order'] = '0';
-$config['graph_types']['device']['cisco-iosdsp']['descr'] = 'DSP Utilisation';
-
-$config['graph_types']['device']['cisco-iosmtp']['section'] = 'voice';
-$config['graph_types']['device']['cisco-iosmtp']['order'] = '0';
-$config['graph_types']['device']['cisco-iosmtp']['descr'] = 'Hardware MTP Utilisation';
-
-$config['graph_types']['device']['cisco-iosxcode']['section'] = 'voice';
-$config['graph_types']['device']['cisco-iosxcode']['order'] = '0';
-$config['graph_types']['device']['cisco-iosxcode']['descr'] = 'Transcoder Utilisation';
-
-$config['graph_descr']['device_smokeping_in_all'] = 'This is an aggregate graph of the incoming smokeping tests to this host. The line corresponds to the average RTT. The shaded area around each line denotes the standard deviation.';
-$config['graph_descr']['device_processor'] = 'This is an aggregate graph of all processors in the system.';
-
-$config['graph_types']['device']['cisco_wwan_rssi']['section'] = 'wireless';
-$config['graph_types']['device']['cisco_wwan_rssi']['order'] = '0';
-$config['graph_types']['device']['cisco_wwan_rssi']['descr'] = 'Signal Rssi';
-$config['graph_types']['device']['cisco_wwan_mnc']['section'] = 'wireless';
-$config['graph_types']['device']['cisco_wwan_mnc']['order'] = '1';
-$config['graph_types']['device']['cisco_wwan_mnc']['descr'] = 'MNC';
-
-$config['graph_types']['device']['xirrus_stations']['section'] = 'wireless';
-$config['graph_types']['device']['xirrus_stations']['order'] = '0';
-$config['graph_types']['device']['xirrus_stations']['descr'] = 'Associated Stations';
-
-$config['graph_types']['device']['sgos_average_requests']['section'] = 'network';
-$config['graph_types']['device']['sgos_average_requests']['order'] = '0';
-$config['graph_types']['device']['sgos_average_requests']['descr'] = 'Average HTTP Requests';
-
-// SRX Flow Sessions
-$config['graph_types']['device']['junos_jsrx_spu_flows'] = ['section' => 'network', 'order' => 0, 'descr' => 'SPU Flows'];
-$config['graph_types']['device']['junos_jsrx_spu_sessions'] = ['section' => 'network', 'order' => 1, 'descr' => 'Flow Sessions'];
-
-// Blue Coat SGOS
-// Client Connections
-$config['graph_types']['device']['bluecoat_http_client_connections']['section'] = 'network';
-$config['graph_types']['device']['bluecoat_http_client_connections']['order'] = '0';
-$config['graph_types']['device']['bluecoat_http_client_connections']['descr'] = 'HTTP Client Connections';
-// Server Connections
-$config['graph_types']['device']['bluecoat_http_server_connections']['section'] = 'network';
-$config['graph_types']['device']['bluecoat_http_server_connections']['order'] = '0';
-$config['graph_types']['device']['bluecoat_http_server_connections']['descr'] = 'HTTP Server Connections';
-
-// Client Connections Active
-$config['graph_types']['device']['bluecoat_http_client_connections_active']['section'] = 'network';
-$config['graph_types']['device']['bluecoat_http_client_connections_active']['order'] = '0';
-$config['graph_types']['device']['bluecoat_http_client_connections_active']['descr'] = 'HTTP Client Connections Active';
-// Server Connections Active
-$config['graph_types']['device']['bluecoat_http_server_connections_active']['section'] = 'network';
-$config['graph_types']['device']['bluecoat_http_server_connections_active']['order'] = '0';
-$config['graph_types']['device']['bluecoat_http_server_connections_active']['descr'] = 'HTTP Server Connections Active';
-
-// Client Connections Idle
-$config['graph_types']['device']['bluecoat_http_client_connections_idle']['section'] = 'network';
-$config['graph_types']['device']['bluecoat_http_client_connections_idle']['order'] = '0';
-$config['graph_types']['device']['bluecoat_http_client_connections_idle']['descr'] = 'HTTP Client Connections Idle';
-
-// Server Connections Idle
-$config['graph_types']['device']['bluecoat_http_server_connections_idle']['section'] = 'network';
-$config['graph_types']['device']['bluecoat_http_server_connections_idle']['order'] = '0';
-$config['graph_types']['device']['bluecoat_http_server_connections_idle']['descr'] = 'HTTP Server Connections Idle';
-
-
-//riverbed specific graphs
-$config['graph_types']['device']['riverbed_connections'] = ['section' => 'network', 'order' => 0, 'descr' => 'Connections'];
-$config['graph_types']['device']['riverbed_optimization'] = ['section' => 'network', 'order' => 1, 'descr' => 'Optimization'];
-$config['graph_types']['device']['riverbed_datastore'] = ['section' => 'network', 'order' => 2, 'descr' => 'Datastore productivity'];
-$config['graph_types']['device']['riverbed_passthrough'] = ['section' => 'network', 'order' => 3, 'descr' => 'Bandwidth passthrough'];
-
-//mikrotik specific graphs
-$config['graph_types']['device']['routeros_leases']['section'] = 'network';
-$config['graph_types']['device']['routeros_leases']['order'] = 0;
-$config['graph_types']['device']['routeros_leases']['descr'] = 'DHCP Lease Count';
-
-$config['graph_types']['device']['routeros_pppoe_sessions']['section'] = 'network';
-$config['graph_types']['device']['routeros_pppoe_sessions']['order'] = 0;
-$config['graph_types']['device']['routeros_pppoe_sessions']['descr'] = 'PPPoE Session Count';
-
-
-//CheckPoint SPLAT specific graphs
-$config['graph_types']['device']['secureplatform_sessions']['section'] = 'firewall';
-$config['graph_types']['device']['secureplatform_sessions']['order'] = 0;
-$config['graph_types']['device']['secureplatform_sessions']['descr'] = 'Active connections';
-
-//arbos specific graphs
-$config['graph_types']['device']['arbos_flows'] = ['section' => 'graphs', 'order' => 0, 'descr' => 'Accumulative flow count per SP device'];
-
-//F5 specific graphs
-$config['graph_types']['device']['bigip_apm_sessions'] = ['section' => 'apm', 'order' => 0, 'descr' => 'Active Sessions'];
-$config['graph_types']['device']['bigip_system_tps'] = ['section' => 'ltm', 'order' => 0, 'descr' => 'SSL Transactions'];
-$config['graph_types']['device']['bigip_system_server_concurrent_connections'] = ['section' => 'ltm', 'order' => 1, 'descr' => 'Global Server Concurrent Connections'];
-$config['graph_types']['device']['bigip_system_client_concurrent_connections'] = ['section' => 'ltm', 'order' => 2, 'descr' => 'Global Client Concurrent Connections'];
-$config['graph_types']['device']['bigip_system_server_connection_rate'] = ['section' => 'ltm', 'order' => 3, 'descr' => 'Global Server Connection Rate'];
-$config['graph_types']['device']['bigip_system_client_connection_rate'] = ['section' => 'ltm', 'order' => 4, 'descr' => 'Global Client Connection Rate'];
-
-// Bluecoat ProxySG Graphs
-$config['graph_types']['device']['sgos_average_requests'] = ['section' => 'network', 'order' => 0, 'descr' => 'Average HTTP Requests'];
-$config['graph_types']['device']['sgos_client_connections'] = ['section' => 'network', 'order' => 1, 'descr' => 'HTTP Client Connections'];
-$config['graph_types']['device']['sgos_client_connections_active'] = ['section' => 'network', 'order' => 2, 'descr' => 'HTTP Client Connections Active'];
-$config['graph_types']['device']['sgos_client_connections_idle'] = ['section' => 'network', 'order' => 3, 'descr' => 'HTTP Client Connections Idle'];
-$config['graph_types']['device']['sgos_server_connections'] = ['section' => 'network', 'order' => 4, 'descr' => 'HTTP Server Connections'];
-$config['graph_types']['device']['sgos_server_connections_active'] = ['section' => 'network', 'order' => 5, 'descr' => 'HTTP Server Connections Active'];
-$config['graph_types']['device']['sgos_server_connections_idle'] = ['section' => 'network', 'order' => 6, 'descr' => 'HTTP Server Connections Idle'];
-
-// Cisco AsyncOS Graphs
-$config['graph_types']['device']['asyncos_conns'] = ['section' => 'proxy', 'order' => 0, 'descr' => 'Current connections'];
-
-// Zywall Graphs
-$config['graph_types']['device']['zywall_sessions'] = ['section' => 'firewall', 'order' => 0, 'descr' => 'Sessions'];
-
-// TopVision Graphs
-$config['graph_types']['device']['topvision_cmtotal'] = ['section' => 'cmts', 'order' => 0, 'descr' => 'Cable Modem Total'];
-$config['graph_types']['device']['topvision_cmreg'] = ['section' => 'cmts', 'order' => 1, 'descr' => 'Cable Modem Registered'];
-$config['graph_types']['device']['topvision_cmoffline'] = ['section' => 'cmts', 'order' => 2, 'descr' => 'Cable Modem Offline'];
-
-// Teltonika RUT2XX Graph
-$config['graph_types']['device']['rutos_2xx_mobileDataUsage'] = ['section' => 'network', 'order' => 0, 'descr' => 'Mobile Data Usage'];
-
-// Device Types
-$i = 0;
-$config['device_types'][$i]['text'] = 'Servers';
-$config['device_types'][$i]['type'] = 'server';
-$config['device_types'][$i]['icon'] = 'server.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Network';
-$config['device_types'][$i]['type'] = 'network';
-$config['device_types'][$i]['icon'] = 'network.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Wireless';
-$config['device_types'][$i]['type'] = 'wireless';
-$config['device_types'][$i]['icon'] = 'wireless.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Firewalls';
-$config['device_types'][$i]['type'] = 'firewall';
-$config['device_types'][$i]['icon'] = 'firewall.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Power';
-$config['device_types'][$i]['type'] = 'power';
-$config['device_types'][$i]['icon'] = 'power.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Environment';
-$config['device_types'][$i]['type'] = 'environment';
-$config['device_types'][$i]['icon'] = 'environment.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Load Balancers';
-$config['device_types'][$i]['type'] = 'loadbalancer';
-$config['device_types'][$i]['icon'] = 'loadbalancer.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Storage';
-$config['device_types'][$i]['type'] = 'storage';
-$config['device_types'][$i]['icon'] = 'storage.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Printers';
-$config['device_types'][$i]['type'] = 'printer';
-$config['device_types'][$i]['icon'] = 'printer.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Appliance';
-$config['device_types'][$i]['type'] = 'appliance';
-$config['device_types'][$i]['icon'] = 'appliance.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Collaboration';
-$config['device_types'][$i]['type'] = 'collaboration';
-$config['device_types'][$i]['icon'] = 'collaboration.png';
-
-$i++;
-$config['device_types'][$i]['text'] = 'Workstation';
-$config['device_types'][$i]['type'] = 'workstation';
-$config['device_types'][$i]['icon'] = 'workstation.png';
-
-//
-// No changes below this line #
-//
-
-// IPMI sensor type mappings
-$config['ipmi_unit']['Volts'] = 'voltage';
-$config['ipmi_unit']['degrees C'] = 'temperature';
-$config['ipmi_unit']['RPM'] = 'fanspeed';
-$config['ipmi_unit']['Watts'] = 'power';
-$config['ipmi_unit']['Amps'] = 'current';
-$config['ipmi_unit']['percent'] = 'load';
-$config['ipmi_unit']['discrete'] = '';
diff --git a/includes/html/graphs/common.inc.php b/includes/html/graphs/common.inc.php
index dc12cf4a59..05080e6f7c 100644
--- a/includes/html/graphs/common.inc.php
+++ b/includes/html/graphs/common.inc.php
@@ -82,7 +82,7 @@ if (isset($scale_rigid)) {
}
$rrd_options .= ' -E --start '.$from.' --end '.$to.' --width '.$width.' --height '.$height.' ';
-$rrd_options .= \LibreNMS\Config::get('rrdgraph_def_text') . ' -c FONT#' . \LibreNMS\Config::get('rrdgraph_def_text_color');
+$rrd_options .= \LibreNMS\Config::get('rrdgraph_def_text') . ' -c FONT#' . ltrim(\LibreNMS\Config::get('rrdgraph_def_text_color'), '#');
if ($_GET['bg']) {
$rrd_options .= ' -c CANVAS#' . Clean::alphaDash($_GET['bg']) . ' ';
diff --git a/includes/html/graphs/multiport/bits_duo.inc.php b/includes/html/graphs/multiport/bits_duo.inc.php
index 5541dec4c4..7ca93400f6 100644
--- a/includes/html/graphs/multiport/bits_duo.inc.php
+++ b/includes/html/graphs/multiport/bits_duo.inc.php
@@ -5,7 +5,7 @@ if ($_GET['legend']) {
}
$rrd_options = "--alt-autoscale-max -E --start $from --end ".($to - 150)." --width $width --height $height ";
-$rrd_options .= \LibreNMS\Config::get('rrdgraph_def_text') . ' -c FONT#' . \LibreNMS\Config::get('rrdgraph_def_text_color');
+$rrd_options .= \LibreNMS\Config::get('rrdgraph_def_text') . ' -c FONT#' . ltrim(\LibreNMS\Config::get('rrdgraph_def_text_color'), '#');
if ($height < '99') {
$rrd_options .= ' --only-graph';
}
diff --git a/includes/html/graphs/multiport/bits_trio.inc.php b/includes/html/graphs/multiport/bits_trio.inc.php
index f584471e08..e11121a419 100644
--- a/includes/html/graphs/multiport/bits_trio.inc.php
+++ b/includes/html/graphs/multiport/bits_trio.inc.php
@@ -5,7 +5,7 @@ if ($_GET['legend']) {
}
$rrd_options = " --alt-autoscale-max -E --start $from --end ".($to - 150)." --width $width --height $height ";
-$rrd_options .= \LibreNMS\Config::get('rrdgraph_def_text') . ' -c FONT#' . \LibreNMS\Config::get('rrdgraph_def_text_color');
+$rrd_options .= \LibreNMS\Config::get('rrdgraph_def_text') . ' -c FONT#' . ltrim(\LibreNMS\Config::get('rrdgraph_def_text_color'), '#');
if ($height < '99') {
$rrd_options .= ' --only-graph';
diff --git a/misc/config_definitions.json b/misc/config_definitions.json
index ff1f28d73a..025ca8e85b 100644
--- a/misc/config_definitions.json
+++ b/misc/config_definitions.json
@@ -10,7 +10,8 @@
"type": "integer"
},
"addhost_alwayscheckip": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"alert.ack_until_clear": {
"default": false,
@@ -106,7 +107,8 @@
"type": "boolean"
},
"alert_graph_date_format": {
- "default": "%Y-%m-%d %H:%i"
+ "default": "%Y-%m-%d %H:%i",
+ "type": "text"
},
"alert_log_purge": {
"default": 365,
@@ -117,48 +119,65 @@
"type": "integer"
},
"alerts.bgp.whitelist": {
- "default": null
+ "type": "array"
},
"alerts.email.default_only": {
+ "type": "boolean"
},
"alerts.email.enable": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"alerts.port.ifdown": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"alerts.port_util_alert": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"alerts.port_util_perc": {
- "default": 85
+ "default": 85,
+ "type": "integer",
+ "validate": {
+ "value": "integer|between:0,100"
+ }
},
"allow_duplicate_sysName": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"allow_entity_sensor.amperes": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"allow_entity_sensor.celsius": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"allow_entity_sensor.dBm": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"allow_entity_sensor.specialEnum": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"allow_entity_sensor.truthvalue": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"allow_entity_sensor.voltsAC": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"allow_entity_sensor.voltsDC": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"allow_entity_sensor.watts": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"allow_unauth_graphs": {
"default": false,
@@ -195,13 +214,20 @@
"type": "array"
},
"api.cors.enabled": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"api.cors.maxage": {
- "default": 86400
+ "default": 86400,
+ "type": "integer",
+ "units": "seconds",
+ "validate": {
+ "value": "integer|min:0"
+ }
},
"api.cors.origin": {
- "default": "*"
+ "default": "*",
+ "type": "text"
},
"api_demo": {
"default": false,
@@ -223,22 +249,20 @@
"65332": "Cymru FullBogon Feed",
"65333": "Cymru Bogon Feed"
},
- "type": "object"
+ "type": "array"
},
"auth_ad_base_dn": {
"group": "auth",
"section": "ad",
"order": 1,
- "type": "text",
- "required": true
+ "type": "text"
},
"auth_ad_check_certificates": {
"default": false,
"group": "auth",
"section": "ad",
"order": 1,
- "type": "boolean",
- "required": true
+ "type": "boolean"
},
"auth_ad_group_filter": {
"default": "(objectclass=group)",
@@ -472,7 +496,8 @@
"type": "integer"
},
"autodiscovery.bgp": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"autodiscovery.cdp_exclude.platform_regexp": {
"type": "array",
@@ -491,13 +516,16 @@
]
},
"autodiscovery.ospf": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"autodiscovery.snmpscan": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"autodiscovery.xdp": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"autodiscovery.xdp_exclude.sysdesc_regexp": {
"type": "array",
@@ -506,7 +534,8 @@
]
},
"bad_disk_regexp": {
- "default": []
+ "default": [],
+ "type": "array"
},
"bad_if": {
"type": "array",
@@ -562,78 +591,107 @@
]
},
"billing.base": {
- "default": 1000
+ "default": 1000,
+ "type": "integer"
},
"billing.bill_autoadd": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"billing.circuit_autoadd": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"billing.customer_autoadd": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"callback_clear": {
- "default": "https://stats.librenms.org/clear.php"
+ "default": "https://stats.librenms.org/clear.php",
+ "type": "text"
},
"callback_post": {
- "default": "https://stats.librenms.org/log.php"
+ "default": "https://stats.librenms.org/log.php",
+ "type": "text"
},
- "core_descr.0": {
- "default": "core"
+ "core_descr": {
+ "default": ["core"],
+ "type": "array"
},
"cpu_details_overview": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
- "custom_descr.0": {
- "default": ""
+ "custom_descr": {
+ "default": [""],
+ "type": "array"
},
"customers_descr": {
- "default": "cust"
+ "default": "cust",
+ "type": "text"
},
"dateformat.byminute": {
- "default": "Y-m-d H:i"
+ "default": "Y-m-d H:i",
+ "type": "text"
},
"dateformat.compact": {
- "default": "Y-m-d H:i:s"
+ "default": "Y-m-d H:i:s",
+ "type": "text"
},
"dateformat.long": {
- "default": "r"
+ "default": "r",
+ "type": "text"
},
"dateformat.mysql.compact": {
- "default": "%Y-%m-%d %H:%i:%s"
+ "default": "%Y-%m-%d %H:%i:%s",
+ "type": "text"
},
"dateformat.mysql.date": {
- "default": "%Y-%m-%d"
+ "default": "%Y-%m-%d",
+ "type": "text"
},
"dateformat.mysql.time": {
- "default": "%H:%i:%s"
+ "default": "%H:%i:%s",
+ "type": "text"
},
"dateformat.time": {
- "default": "H:i:s"
+ "default": "H:i:s",
+ "type": "text"
},
"db_name": {
"default": "librenms",
- "hidden": true
+ "hidden": true,
+ "type": "boolean"
},
"db_pass": {
"default": null,
- "hidden": true
+ "hidden": true,
+ "type": "boolean"
},
"db_port": {
"default": 3306,
- "hidden": true
+ "hidden": true,
+ "type": "boolean"
},
"db_socket": {
"default": null,
- "hidden": true
+ "hidden": true,
+ "type": "boolean"
},
"db_user": {
"default": "librenms",
- "hidden": true
+ "hidden": true,
+ "type": "boolean"
},
"default_port_association_mode": {
- "default": "ifIndex"
+ "default": "ifIndex",
+ "type": "select",
+ "options": {
+ "ifIndex": "ifIndex",
+ "ifName": "ifName",
+ "ifDescr": "ifDescr",
+ "ifAlias": "ifAlias"
+ }
},
"device_perf_purge": {
"default": 7,
@@ -731,133 +789,176 @@
"type": "array"
},
"discover_services": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_by_ip": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.os": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.ports": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.ports-stack": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.entity-physical": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.entity-state": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.processors": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.mempools": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.cisco-vrf-lite": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.cisco-mac-accounting": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.cisco-pw": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.vrf": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.cisco-cef": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.cisco-sla": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.cisco-cbqos": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.cisco-otv": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.cisco-qfp": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.ipv4-addresses": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.ipv6-addresses": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.route": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.sensors": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.storage": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.hr-device": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.discovery-protocols": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.arp-table": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.discovery-arp": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.junose-atm-vp": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.bgp-peers": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.vlans": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.vmware-vminfo": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.libvirt-vminfo": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.toner": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.ucd-diskio": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.applications": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.services": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.stp": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.ntp": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.loadbalancers": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.mef": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"discovery_modules.wireless": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.fdb-table": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"discovery_modules.mpls": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"distributed_poller": {
"default": false,
@@ -867,7 +968,11 @@
"type": "boolean"
},
"distributed_poller_group": {
- "default": 0
+ "default": 0,
+ "type": "integer",
+ "group": "poller",
+ "section": "distributed",
+ "order": 3
},
"distributed_poller_memcached_host": {
"default": "example.net",
@@ -886,10 +991,9 @@
"order": 2,
"type": "integer"
},
- "distributed_poller_name": {
- },
"dot": {
- "default": "/usr/bin/dot"
+ "default": "/usr/bin/dot",
+ "type": "text"
},
"email_auto_tls": {
"default": true,
@@ -963,7 +1067,9 @@
"section": "email",
"order": 6,
"type": "text",
- "pattern": "[a-zA-Z0-9_\\-.]+",
+ "validate": {
+ "value": "^[a-zA-Z0-9_\\-.]+$"
+ },
"when": {
"setting": "email_backend",
"operator": "equals",
@@ -1043,55 +1149,72 @@
"type": "text"
},
"enable_bgp": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"enable_billing": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"enable_clear_discovery": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"enable_footer": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"enable_inventory": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"enable_lazy_load": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"enable_libvirt": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"enable_port_relationship": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"enable_ports_adsl": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"enable_ports_etherlike": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"enable_ports_junoseatmvp": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"enable_ports_poe": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"enable_pseudowires": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"enable_sla": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"enable_syslog": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"enable_vrf_lite_cisco": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"enable_vrfs": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"eventlog_purge": {
"default": 30,
@@ -1108,10 +1231,12 @@
"type": "text"
},
"force_hostname_to_sysname": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"force_ip_to_sysname": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"fping": {
"default": "fping",
@@ -1151,16 +1276,20 @@
"type": "text"
},
"front_page": {
- "default": "pages/front/tiles.php"
+ "default": "pages/front/tiles.php",
+ "type": "text"
},
"front_page_down_box_limit": {
- "default": 10
+ "default": 10,
+ "type": "integer"
},
"front_page_settings.top.devices": {
- "default": 10
+ "default": 10,
+ "type": "integer"
},
"front_page_settings.top.ports": {
- "default": 10
+ "default": 10,
+ "type": "integer"
},
"geoloc.api_key": {
"default": "",
@@ -1168,7 +1297,6 @@
"section": "location",
"order": 1,
"type": "text",
- "required": true,
"when": {
"setting": "geoloc.engine",
"operator": "in",
@@ -1193,7 +1321,8 @@
}
},
"github_api": {
- "default": "https://api.github.com/repos/librenms/librenms/"
+ "default": "https://api.github.com/repos/librenms/librenms/",
+ "type": "text"
},
"graph_colours.blues": {
"default": [
@@ -1354,1154 +1483,1320 @@
"type": "array"
},
"graph_descr.device_processor": {
- "default": "This is an aggregate graph of all processors in the system."
+ "default": "This is an aggregate graph of all processors in the system.",
+ "type": "text"
},
"graph_descr.device_smokeping_in_all": {
- "default": "This is an aggregate graph of the incoming smokeping tests to this host. The line corresponds to the average RTT. The shaded area around each line denotes the standard deviation."
+ "default": "This is an aggregate graph of the incoming smokeping tests to this host. The line corresponds to the average RTT. The shaded area around each line denotes the standard deviation.",
+ "type": "text"
},
"graph_types.device.agent": {
"default": {
"section": "poller",
"order": 0,
"descr": "Agent Execution Time"
- }
+ },
+ "type": "graph"
},
"graph_types.device.arbos_flows": {
"default": {
"section": "graphs",
"order": 0,
"descr": "Accumulative flow count per SP device"
- }
+ },
+ "type": "graph"
},
"graph_types.device.asa_conns": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Current connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.asyncos_conns": {
"default": {
"section": "proxy",
"order": 0,
"descr": "Current connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.barracuda_firewall_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bigip_apm_sessions": {
"default": {
"section": "apm",
"order": 0,
"descr": "Active Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bigip_system_client_concurrent_connections": {
"default": {
"section": "ltm",
"order": 2,
"descr": "Global Client Concurrent Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bigip_system_client_connection_rate": {
"default": {
"section": "ltm",
"order": 4,
"descr": "Global Client Connection Rate"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bigip_system_server_concurrent_connections": {
"default": {
"section": "ltm",
"order": 1,
"descr": "Global Server Concurrent Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bigip_system_server_connection_rate": {
"default": {
"section": "ltm",
"order": 3,
"descr": "Global Server Connection Rate"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bigip_system_tps": {
"default": {
"section": "ltm",
"order": 0,
"descr": "SSL Transactions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bits": {
"default": {
"section": "netstats",
"order": 0,
"descr": "Total Traffic"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bluecoat_http_client_connections": {
"default": {
"section": "network",
"order": 0,
"descr": "HTTP Client Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bluecoat_http_client_connections_active": {
"default": {
"section": "network",
"order": 0,
"descr": "HTTP Client Connections Active"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bluecoat_http_client_connections_idle": {
"default": {
"section": "network",
"order": 0,
"descr": "HTTP Client Connections Idle"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bluecoat_http_server_connections": {
"default": {
"section": "network",
"order": 0,
"descr": "HTTP Server Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bluecoat_http_server_connections_active": {
"default": {
"section": "network",
"order": 0,
"descr": "HTTP Server Connections Active"
- }
+ },
+ "type": "graph"
},
"graph_types.device.bluecoat_http_server_connections_idle": {
"default": {
"section": "network",
"order": 0,
"descr": "HTTP Server Connections Idle"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cambium-epmp-frameUtilization": {
"default": {
"section": "wireless",
"order": 7,
"descr": "Frame Utilization"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cambium_epmp_RFStatus": {
"default": {
"section": "wireless",
"order": 0,
"descr": "RF Status"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cambium_epmp_access": {
"default": {
"section": "wireless",
"order": 4,
"descr": "Access Info"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cambium_epmp_freq": {
"default": {
"section": "wireless",
"order": 6,
"descr": "Frequency"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cambium_epmp_gpsSync": {
"default": {
"section": "wireless",
"order": 5,
"descr": "GPS Sync Status"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cambium_epmp_modulation": {
"default": {
"section": "wireless",
"order": 2,
"descr": "ePMP Modulation"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cambium_epmp_registeredSM": {
"default": {
"section": "wireless",
"order": 3,
"descr": "ePMP Registered SM"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_450_linkRadioDbm": {
"default": {
"section": "wireless",
"order": 5,
"descr": "Radio Link H/V"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_450_powerlevel": {
"default": {
"section": "wireless",
"order": 4,
"descr": "Power Level of Registered SM"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_450_ptpSNR": {
"default": {
"section": "wireless",
"order": 6,
"descr": "Master SNR"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_450_slaveHV": {
"default": {
"section": "wireless",
"order": 7,
"descr": "Dbm H/V"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_crcErrors": {
"default": {
"section": "wireless",
"order": 15,
"descr": "CRC Errors (Migrated to Wireless Sensor)"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_errorCount": {
"default": {
"section": "wireless",
"order": 14,
"descr": "Error Count (Migrated to Wireless Sensor)"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_gpsStats": {
"default": {
"section": "wireless",
"order": 0,
"descr": "GPS Stats"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_jitter": {
"default": {
"section": "wireless",
"order": 2,
"descr": "Jitter"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_radioDbm": {
"default": {
"section": "wireless",
"order": 13,
"descr": "Radio Dbm"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_regCount": {
"default": {
"section": "wireless",
"order": 11,
"descr": "Registered SM"
- }
+ },
+ "type": "graph"
},
"graph_types.device.canopy_generic_signalHV": {
"default": {
"section": "wireless",
"order": 3,
"descr": "Signal"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ceraos_DefectedBlocks": {
"default": {
"section": "wireless",
"order": 4,
"descr": "DefectedBlocks"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ceraos_MSE": {
"default": {
"section": "wireless",
"order": 2,
"descr": "Radial MSE"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ceraos_RxBitrate": {
"default": {
"section": "wireless",
"order": 6,
"descr": "RxBitrate"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ceraos_RxLevel": {
"default": {
"section": "wireless",
"order": 0,
"descr": "RX Level"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ceraos_TxBitrate": {
"default": {
"section": "wireless",
"order": 5,
"descr": "TxBitrate"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ceraos_TxPower": {
"default": {
"section": "wireless",
"order": 1,
"descr": "TX Power"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ceraos_XPI": {
"default": {
"section": "wireless",
"order": 3,
"descr": "Cross Polarisation Interference"
- }
+ },
+ "type": "graph"
},
"graph_types.device.charge": {
"default": {
"section": "system",
"order": 0,
"descr": "Battery Charge"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cipsec_flow_bits": {
"default": {
"section": "firewall",
"order": 0,
"descr": "IPSec Tunnel Traffic Volume"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cipsec_flow_pkts": {
"default": {
"section": "firewall",
"order": 0,
"descr": "IPSec Tunnel Traffic Packets"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cipsec_flow_stats": {
"default": {
"section": "firewall",
"order": 0,
"descr": "IPSec Tunnel Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cipsec_flow_tunnels": {
"default": {
"section": "firewall",
"order": 0,
"descr": "IPSec Active Tunnels"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cisco-iosdsp": {
"default": {
"section": "voice",
"order": 0,
"descr": "DSP Utilisation"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cisco-iosmtp": {
"default": {
"section": "voice",
"order": 0,
"descr": "Hardware MTP Utilisation"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cisco-iospri": {
"default": {
"section": "voice",
"order": 0,
"descr": "PRI Utilisation"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cisco-iosxcode": {
"default": {
"section": "voice",
"order": 0,
"descr": "Transcoder Utilisation"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cisco-voice-ip": {
"default": {
"section": "voice",
"order": 0,
"descr": "IP Real Time Calls"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cisco_wwan_mnc": {
"default": {
"section": "wireless",
"order": 1,
"descr": "MNC"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cisco_wwan_rssi": {
"default": {
"section": "wireless",
"order": 0,
"descr": "Signal Rssi"
- }
+ },
+ "type": "graph"
},
"graph_types.device.cras_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Remote Access Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.fdb_count": {
"default": {
"section": "system",
"order": 0,
"descr": "MAC Addresses Learnt"
- }
+ },
+ "type": "graph"
},
"graph_types.device.fortigate_cpu": {
"default": {
"section": "system",
"order": 0,
"descr": "CPU"
- }
+ },
+ "type": "graph"
},
"graph_types.device.fortigate_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.fortios_lograte": {
"default": {
"section": "analyzer",
"order": 0,
"descr": "Log Rate"
- }
+ },
+ "type": "graph"
},
"graph_types.device.hr_processes": {
"default": {
"section": "system",
"order": 0,
"descr": "Running Processes"
- }
+ },
+ "type": "graph"
},
"graph_types.device.hr_users": {
"default": {
"section": "system",
"order": 0,
"descr": "Users Logged In"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ib_dhcp_messages": {
"default": {
"section": "dhcp",
"order": 0,
"descr": "DHCP messages"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ib_dns_dyn_updates": {
"default": {
"section": "dns",
"order": 0,
"descr": "DNS dynamic updates"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ib_dns_performance": {
"default": {
"section": "dns",
"order": 0,
"descr": "DNS performance"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ib_dns_request_return_codes": {
"default": {
"section": "dns",
"order": 0,
"descr": "DNS request return codes"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ipsystemstats_ipv4": {
"default": {
"section": "netstats",
"order": 0,
"descr": "IPv4 Packet Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ipsystemstats_ipv4_frag": {
"default": {
"section": "netstats",
"order": 0,
"descr": "IPv4 Fragmentation Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ipsystemstats_ipv6": {
"default": {
"section": "netstats",
"order": 0,
"descr": "IPv6 Packet Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ipsystemstats_ipv6_frag": {
"default": {
"section": "netstats",
"order": 0,
"descr": "IPv6 Fragmentation Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.junos_jsrx_spu_flows": {
"default": {
"section": "network",
"order": 0,
"descr": "SPU Flows"
- }
+ },
+ "type": "graph"
},
"graph_types.device.junos_jsrx_spu_sessions": {
"default": {
"section": "network",
"order": 1,
"descr": "Flow Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.mempool": {
"default": {
"section": "system",
"order": 0,
"descr": "Memory Pool Usage"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netscaler_tcp_bits": {
"default": {
"section": "load balancer",
"order": 0,
"descr": "TCP Traffic"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netscaler_tcp_conn": {
"default": {
"section": "load balancer",
"order": 0,
"descr": "TCP Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netscaler_tcp_pkts": {
"default": {
"section": "load balancer",
"order": 0,
"descr": "TCP Packets"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_icmp": {
"default": {
"section": "netstats",
"order": 0,
"descr": "ICMP Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_icmp_info": {
"default": {
"section": "netstats",
"order": 0,
"descr": "ICMP Informational Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_ip": {
"default": {
"section": "netstats",
"order": 0,
"descr": "IP Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_ip_forward": {
"default": {
"section": "netstats",
"order": 0,
"descr": "IP Forwarding Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_ip_frag": {
"default": {
"section": "netstats",
"order": 0,
"descr": "IP Fragmentation Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_snmp": {
"default": {
"section": "netstats",
"order": 0,
"descr": "SNMP Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_snmp_pkt": {
"default": {
"section": "netstats",
"order": 0,
"descr": "SNMP Packet Type Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_tcp": {
"default": {
"section": "netstats",
"order": 0,
"descr": "TCP Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.netstat_udp": {
"default": {
"section": "netstats",
"order": 0,
"descr": "UDP Statistics"
- }
+ },
+ "type": "graph"
},
"graph_types.device.panos_activetunnels": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active GlobalProtect Tunnels"
- }
+ },
+ "type": "graph"
},
"graph_types.device.panos_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.panos_sessions_icmp": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active ICMP Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.panos_sessions_ssl": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active SSL Proxy Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.panos_sessions_sslutil": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active SSL Proxy Utilization"
- }
+ },
+ "type": "graph"
},
"graph_types.device.panos_sessions_tcp": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active TCP Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.panos_sessions_udp": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active UDP Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_badoffset": {
"default": {
"section": "firewall",
"order": 6,
"descr": "BadOffset"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_fragmented": {
"default": {
"section": "firewall",
"order": 7,
"descr": "Fragmented"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_inserts": {
"default": {
"section": "firewall",
"order": 3,
"descr": "Inserts"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_matches": {
"default": {
"section": "firewall",
"order": 5,
"descr": "Matches"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_memdropped": {
"default": {
"section": "firewall",
"order": 10,
"descr": "MemDropped"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_normalized": {
"default": {
"section": "firewall",
"order": 9,
"descr": "Normalized"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_removals": {
"default": {
"section": "firewall",
"order": 4,
"descr": "Removals"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_searches": {
"default": {
"section": "firewall",
"order": 2,
"descr": "Searches"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_short": {
"default": {
"section": "firewall",
"order": 8,
"descr": "Short"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pf_states": {
"default": {
"section": "firewall",
"order": 1,
"descr": "States"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ping_perf": {
"default": {
"section": "poller",
"order": 0,
"descr": "Ping Response"
- }
+ },
+ "type": "graph"
},
"graph_types.device.poller_modules_perf": {
"default": {
"section": "poller",
"order": 0,
"descr": "Poller Modules Performance"
- }
+ },
+ "type": "graph"
},
"graph_types.device.poller_perf": {
"default": {
"section": "poller",
"order": 0,
"descr": "Poller Time"
- }
+ },
+ "type": "graph"
},
"graph_types.device.processor": {
"default": {
"section": "system",
"order": 0,
"descr": "Processor Usage"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pulse_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.pulse_users": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active Users"
- }
+ },
+ "type": "graph"
},
"graph_types.device.riverbed_connections": {
"default": {
"section": "network",
"order": 0,
"descr": "Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.riverbed_datastore": {
"default": {
"section": "network",
"order": 2,
"descr": "Datastore productivity"
- }
+ },
+ "type": "graph"
},
"graph_types.device.riverbed_optimization": {
"default": {
"section": "network",
"order": 1,
"descr": "Optimization"
- }
+ },
+ "type": "graph"
},
"graph_types.device.riverbed_passthrough": {
"default": {
"section": "network",
"order": 3,
"descr": "Bandwidth passthrough"
- }
+ },
+ "type": "graph"
},
"graph_types.device.routeros_leases": {
"default": {
"section": "network",
"order": 0,
"descr": "DHCP Lease Count"
- }
+ },
+ "type": "graph"
},
"graph_types.device.routeros_pppoe_sessions": {
"default": {
"section": "network",
"order": 0,
"descr": "PPPoE Session Count"
- }
+ },
+ "type": "graph"
},
"graph_types.device.rutos_2xx_mobileDataUsage": {
"default": {
"section": "network",
"order": 0,
"descr": "Mobile Data Usage"
- }
+ },
+ "type": "graph"
},
"graph_types.device.screenos_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.secureplatform_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sgos_average_requests": {
"default": {
"section": "network",
"order": 0,
"descr": "Average HTTP Requests"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sgos_client_connections": {
"default": {
"section": "network",
"order": 1,
"descr": "HTTP Client Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sgos_client_connections_active": {
"default": {
"section": "network",
"order": 2,
"descr": "HTTP Client Connections Active"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sgos_client_connections_idle": {
"default": {
"section": "network",
"order": 3,
"descr": "HTTP Client Connections Idle"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sgos_server_connections": {
"default": {
"section": "network",
"order": 4,
"descr": "HTTP Server Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sgos_server_connections_active": {
"default": {
"section": "network",
"order": 5,
"descr": "HTTP Server Connections Active"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sgos_server_connections_idle": {
"default": {
"section": "network",
"order": 6,
"descr": "HTTP Server Connections Idle"
- }
+ },
+ "type": "graph"
},
"graph_types.device.siklu_rfinterfaceOctets": {
"default": {
"section": "wireless",
"order": 5,
"descr": "Traffic"
- }
+ },
+ "type": "graph"
},
"graph_types.device.siklu_rfinterfaceOtherOctets": {
"default": {
"section": "wireless",
"order": 6,
"descr": "Other Octets"
- }
+ },
+ "type": "graph"
},
"graph_types.device.siklu_rfinterfaceOtherPkts": {
"default": {
"section": "wireless",
"order": 4,
"descr": "Other Packets"
- }
+ },
+ "type": "graph"
},
"graph_types.device.siklu_rfinterfacePkts": {
"default": {
"section": "wireless",
"order": 3,
"descr": "Packets"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sonicwall_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Active Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.storage": {
"default": {
"section": "system",
"order": 0,
"descr": "Filesystem Usage"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sub10_sub10RadioLclAFER": {
"default": {
"section": "wireless",
"order": 4,
"descr": "Radio Air Frame Error Rate"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sub10_sub10RadioLclDataRate": {
"default": {
"section": "wireless",
"order": 4,
"descr": "Data Rate on the Airside interface"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sub10_sub10RadioLclLnkLoss": {
"default": {
"section": "wireless",
"order": 3,
"descr": "Radio Link Loss"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sub10_sub10RadioLclRxPower": {
"default": {
"section": "wireless",
"order": 1,
"descr": "Radio Receive Power"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sub10_sub10RadioLclTxPower": {
"default": {
"section": "wireless",
"order": 0,
"descr": "Radio Transmit Power"
- }
+ },
+ "type": "graph"
},
"graph_types.device.sub10_sub10RadioLclVectErr": {
"default": {
"section": "wireless",
"order": 3,
"descr": "Radio Vector Error"
- }
+ },
+ "type": "graph"
},
"graph_types.device.temperature": {
"default": {
"section": "system",
"order": 0,
"descr": "temperature"
- }
+ },
+ "type": "graph"
},
"graph_types.device.topvision_cmoffline": {
"default": {
"section": "cmts",
"order": 2,
"descr": "Cable Modem Offline"
- }
+ },
+ "type": "graph"
},
"graph_types.device.topvision_cmreg": {
"default": {
"section": "cmts",
"order": 1,
"descr": "Cable Modem Registered"
- }
+ },
+ "type": "graph"
},
"graph_types.device.topvision_cmtotal": {
"default": {
"section": "cmts",
"order": 0,
"descr": "Cable Modem Total"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_Capacity": {
"default": {
"section": "wireless",
"order": 2,
"descr": "Link Capacity"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_LinkDist": {
"default": {
"section": "wireless",
"order": 1,
"descr": "Link Distance"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_RFTotOctetsRx": {
"default": {
"section": "wireless",
"order": 6,
"descr": "RF Total Octets Rx"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_RFTotOctetsTx": {
"default": {
"section": "wireless",
"order": 4,
"descr": "RF Total Octets Tx"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_RFTotPktsRx": {
"default": {
"section": "wireless",
"order": 7,
"descr": "RF Total Packets Rx"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_RFTotPktsTx": {
"default": {
"section": "wireless",
"order": 5,
"descr": "RF Total Packets Tx"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_RadioFreqs": {
"default": {
"section": "wireless",
"order": 0,
"descr": "Radio Frequencies"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_RadioTemp": {
"default": {
"section": "wireless",
"order": 3,
"descr": "Radio Temperatures"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_RxPower": {
"default": {
"section": "wireless",
"order": 8,
"descr": "Radio Rx Power"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ubnt_airfiber_TxPower": {
"default": {
"section": "wireless",
"order": 0,
"descr": "Radio Tx Power"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ucd_contexts": {
"default": {
"section": "system",
"order": 0,
"descr": "Context Switches"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ucd_cpu": {
"default": {
"section": "system",
"order": 0,
"descr": "Detailed Processor Usage"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ucd_interrupts": {
"default": {
"section": "system",
"order": 0,
"descr": "Interrupts"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ucd_io": {
"default": {
"section": "system",
"order": 0,
"descr": "System I/O Activity"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ucd_load": {
"default": {
"section": "system",
"order": 0,
"descr": "Load Averages"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ucd_memory": {
"default": {
"section": "system",
"order": 0,
"descr": "Detailed Memory Usage"
- }
+ },
+ "type": "graph"
},
"graph_types.device.ucd_swap_io": {
"default": {
"section": "system",
"order": 0,
"descr": "Swap I/O Activity"
- }
+ },
+ "type": "graph"
},
"graph_types.device.uptime": {
"default": {
"section": "system",
"order": 0,
"descr": "System Uptime"
- }
+ },
+ "type": "graph"
},
"graph_types.device.vpdn_sessions_l2tp": {
"default": {
"section": "vpdn",
"order": 0,
"descr": "VPDN L2TP Sessions"
- }
+ },
+ "type": "graph"
},
"graph_types.device.vpdn_tunnels_l2tp": {
"default": {
"section": "vpdn",
"order": 0,
"descr": "VPDN L2TP Tunnels"
- }
+ },
+ "type": "graph"
},
"graph_types.device.waas_cwotfostatsactiveoptconn": {
"default": {
"section": "graphs",
"order": 0,
"descr": "Optimized TCP Connections"
- }
+ },
+ "type": "graph"
},
"graph_types.device.xirrus_stations": {
"default": {
"section": "wireless",
"order": 0,
"descr": "Associated Stations"
- }
+ },
+ "type": "graph"
},
"graph_types.device.zywall_sessions": {
"default": {
"section": "firewall",
"order": 0,
"descr": "Sessions"
- }
+ },
+ "type": "graph"
},
"graphite.port": {
- "default": 2003
+ "default": 2003,
+ "type": "integer"
},
"graphs.mini.normal": {
"default": {
@@ -2509,7 +2804,8 @@
"week": "One Week",
"month": "One Month",
"year": "One Year"
- }
+ },
+ "type": "array"
},
"graphs.mini.widescreen": {
"default": {
@@ -2521,7 +2817,8 @@
"twomonth": "Two Months",
"year": "One Year",
"twoyear": "Two Years"
- }
+ },
+ "type": "array"
},
"graphs.row.normal": {
"default": {
@@ -2534,12 +2831,19 @@
"twomonth": "Two Months",
"year": "One Year",
"twoyear": "Two Years"
- }
+ },
+ "type": "array"
},
"gui.network-map.style": {
- "default": "new"
+ "default": "new",
+ "type": "select",
+ "options": {
+ "old": "Old",
+ "new": "New"
+ }
},
"html_dir": {
+ "type": "text"
},
"http_proxy": {
"group": "system",
@@ -2548,7 +2852,8 @@
"type": "text"
},
"icmp_check": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"ignore_mount": {
"default": [
@@ -2562,10 +2867,12 @@
"type": "array"
},
"ignore_mount_network": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"ignore_mount_optical": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"ignore_mount_regexp": {
"default": [
@@ -2580,10 +2887,12 @@
"/^\\/var\\/dhcpd\\/dev/",
"/UMA/",
"/^\\/Volumes\\/OS X Base System/"
- ]
+ ],
+ "type": "array"
},
"ignore_mount_removable": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"ignore_mount_string": {
"default": [
@@ -2598,30 +2907,39 @@
"type": "array"
},
"ignore_unmapable_port": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"influxdb.timeout": {
- "default": 0
+ "default": 0,
+ "type": "integer"
},
"influxdb.verifySSL": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"install_dir": {
+ "type": "text"
},
"int_core": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"int_customers": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"int_l2tp": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"int_peering": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"int_transit": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"ipmi.type": {
"default": [
@@ -2629,7 +2947,8 @@
"lan",
"imb",
"open"
- ]
+ ],
+ "type": "array"
},
"ipmi_unit": {
"default": {
@@ -2640,7 +2959,8 @@
"degrees C": "temperature",
"discrete": "",
"percent": "load"
- }
+ },
+ "type": "array"
},
"ipmitool": {
"default": "/usr/bin/ipmitool",
@@ -2650,57 +2970,74 @@
"type": "text"
},
"irc_alert": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"irc_alert_short": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"irc_alert_utf8": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"irc_authtime": {
- "default": 3
+ "default": 3,
+ "type": "integer"
},
"irc_chan": {
"type": "array"
},
"irc_ctcp": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"irc_ctcp_version": {
- "default": "LibreNMS IRCbot. https://www.librenms.org/"
+ "default": "LibreNMS IRCbot. https://www.librenms.org/",
+ "type": "text"
},
"irc_debug": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"irc_external": {
- "default": ""
+ "default": "",
+ "type": "text"
},
"irc_host": {
- "default": ""
+ "default": "",
+ "type": "text"
},
"irc_maxretry": {
- "default": 3
+ "default": 3,
+ "type": "integer"
},
"irc_nick": {
+ "type": "text"
},
"irc_pass": {
- "default": ""
+ "default": "",
+ "type": "password"
},
"irc_port": {
- "default": ""
+ "default": "",
+ "type": "text"
},
"leaflet.default_lat": {
- "default": 51.4800
+ "default": 51.4800,
+ "type": "float"
},
"leaflet.default_lng": {
- "default": 0
+ "default": 0,
+ "type": "float"
},
"leaflet.default_zoom": {
- "default": 2
+ "default": 2,
+ "type": "integer"
},
"leaflet.tile_url": {
- "default": "{s}.tile.openstreetmap.org"
+ "default": "{s}.tile.openstreetmap.org",
+ "type": "text"
},
"libvirt_protocols": {
"default": [
@@ -2710,29 +3047,38 @@
"type": "array"
},
"list_colour.even": {
- "default": "#ffffff"
+ "default": "#ffffff",
+ "type": "color"
},
"list_colour.even_alt": {
- "default": "#f9f9f9"
+ "default": "#f9f9f9",
+ "type": "color"
},
"list_colour.even_alt2": {
- "default": "#f0f0f0"
+ "default": "#f0f0f0",
+ "type": "color"
},
"list_colour.highlight": {
- "default": "#ffcccc"
+ "default": "#ffcccc",
+ "type": "color"
},
"list_colour.odd": {
- "default": "#eeeeee"
+ "default": "#eeeeee",
+ "type": "color"
},
"list_colour.odd_alt": {
- "default": "#f0f0f0"
+ "default": "#f0f0f0",
+ "type": "color"
},
"list_colour.odd_alt2": {
- "default": "#e3e3e3"
+ "default": "#e3e3e3",
+ "type": "color"
},
"log_dir": {
+ "type": "text"
},
"log_file": {
+ "type": "text"
},
"login_message": {
"default": "Unauthorised access or use shall render the user liable to criminal and/or civil prosecution.",
@@ -2742,15 +3088,23 @@
"type": "text"
},
"map.engine": {
- "default": "leaflet"
+ "default": "leaflet",
+ "type": "select",
+ "options": {
+ "leaflet": "Leaflet",
+ "mapeal": "Mapeal"
+ }
},
"mapael.default_map": {
- "default": "maps/world_countries.js"
+ "default": "maps/world_countries.js",
+ "type": "text"
},
"mib_dir": {
+ "type": "text"
},
"mono_font": {
- "default": "DejaVuSansMono"
+ "default": "DejaVuSansMono",
+ "type": "text"
},
"mtr": {
"default": "/usr/bin/mtr",
@@ -2760,10 +3114,8 @@
"type": "text"
},
"nagios_plugins": {
- "default": "/usr/lib/nagios/plugins"
- },
- "navbar.manage_groups.hide": {
- "default": 0
+ "default": "/usr/lib/nagios/plugins",
+ "type": "text"
},
"network_map_items": {
"default": [
@@ -2805,10 +3157,12 @@
"edge": "#ff777788",
"node": "#ffdddd"
}
- }
+ },
+ "type": "array"
},
"network_map_vis_options": {
- "default": "{\n layout:{\n randomSeed:2\n },\n \"edges\": {\n arrows: {\n to: {enabled: true, scaleFactor:0.5},\n },\n \"smooth\": {\n enabled: false\n },\n font: {\n size: 14,\n color: \"red\",\n face: \"sans\",\n background: \"white\",\n strokeWidth:3,\n align: \"middle\",\n strokeWidth: 2\n }\n },\n \"physics\": {\n \"barnesHut\": {\n \"gravitationalConstant\": -2000,\n \"centralGravity\": 0.3,\n \"springLength\": 200,\n \"springConstant\": 0.04,\n \"damping\": 0.09,\n \"avoidOverlap\": 1\n },\n\n \"forceAtlas2Based\": {\n \"gravitationalConstant\": -50,\n \"centralGravity\": 0.01,\n \"springLength\": 200,\n \"springConstant\": 0.08,\n \"damping\": 0.4,\n \"avoidOverlap\": 1\n },\n\n \"repulsion\": {\n \"centralGravity\": 0.2,\n \"springLength\": 250,\n \"springConstant\": 0.2,\n \"nodeDistance\": 200,\n \"damping\": 0.07\n },\n\n \"hierarchicalRepulsion\": {\n \"nodeDistance\": 300,\n \"centralGravity\": 0.2,\n \"springLength\": 300,\n \"springConstant\": 0.2,\n \"damping\": 0.07\n },\n\n \"maxVelocity\": 50,\n \"minVelocity\": 0.4,\n \"solver\": \"hierarchicalRepulsion\",\n \"stabilization\": {\n \"enabled\": true,\n \"iterations\": 1000,\n \"updateInterval\": 100,\n \"onlyDynamicEdges\": false,\n \"fit\": true\n },\n\n \"timestep\": 0.4,\n }\n}"
+ "default": "{\n layout:{\n randomSeed:2\n },\n \"edges\": {\n arrows: {\n to: {enabled: true, scaleFactor:0.5},\n },\n \"smooth\": {\n enabled: false\n },\n font: {\n size: 14,\n color: \"red\",\n face: \"sans\",\n background: \"white\",\n strokeWidth:3,\n align: \"middle\",\n strokeWidth: 2\n }\n },\n \"physics\": {\n \"barnesHut\": {\n \"gravitationalConstant\": -2000,\n \"centralGravity\": 0.3,\n \"springLength\": 200,\n \"springConstant\": 0.04,\n \"damping\": 0.09,\n \"avoidOverlap\": 1\n },\n\n \"forceAtlas2Based\": {\n \"gravitationalConstant\": -50,\n \"centralGravity\": 0.01,\n \"springLength\": 200,\n \"springConstant\": 0.08,\n \"damping\": 0.4,\n \"avoidOverlap\": 1\n },\n\n \"repulsion\": {\n \"centralGravity\": 0.2,\n \"springLength\": 250,\n \"springConstant\": 0.2,\n \"nodeDistance\": 200,\n \"damping\": 0.07\n },\n\n \"hierarchicalRepulsion\": {\n \"nodeDistance\": 300,\n \"centralGravity\": 0.2,\n \"springLength\": 300,\n \"springConstant\": 0.2,\n \"damping\": 0.07\n },\n\n \"maxVelocity\": 50,\n \"minVelocity\": 0.4,\n \"solver\": \"hierarchicalRepulsion\",\n \"stabilization\": {\n \"enabled\": true,\n \"iterations\": 1000,\n \"updateInterval\": 100,\n \"onlyDynamicEdges\": false,\n \"fit\": true\n },\n\n \"timestep\": 0.4,\n }\n}",
+ "type": "text"
},
"nfdump": {
"default": "/usr/bin/nfdump",
@@ -2831,8 +3185,7 @@
"group": "external",
"section": "nfsen",
"order": 1,
- "type": "array",
- "required": true
+ "type": "array"
},
"nfsen_subdirlayout": {
"default": 1,
@@ -2922,7 +3275,8 @@
"76800": "24 hours",
"115200": "36 hours",
"153600": "48 hours"
- }
+ },
+ "type": "array"
},
"nfsen_split_char": {
"group": "external",
@@ -2944,13 +3298,16 @@
"type": "text"
},
"notifications.LibreNMS": {
- "default": "http://www.librenms.org/notifications.rss"
+ "default": "http://www.librenms.org/notifications.rss",
+ "type": "text"
},
"notifications.local": {
- "default": "misc/notifications.rss"
+ "default": "misc/notifications.rss",
+ "type": "text"
},
"old_graphs": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"os.default.over": {
"default": [
@@ -2962,10 +3319,12 @@
"graph": "device_mempool",
"text": "Memory Usage"
}
- ]
+ ],
+ "type": "array"
},
"os_def_cache_time": {
- "default": 86400
+ "default": 86400,
+ "type": "integer"
},
"os_group.unix.over": {
"default": [
@@ -2977,19 +3336,24 @@
"graph": "device_ucd_memory",
"text": "Memory Usage"
}
- ]
+ ],
+ "type": "array"
},
"os_group.unix.processor_stacked": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"os_group.unix.type": {
- "default": "server"
+ "default": "server",
+ "type": "text"
},
"overlib_defaults": {
- "default": ",FGCOLOR,'#ffffff', BGCOLOR, '#e5e5e5', BORDER, 5, CELLPAD, 4, CAPCOLOR, '#555555', TEXTCOLOR, '#3e3e3e'"
+ "default": ",FGCOLOR,'#ffffff', BGCOLOR, '#e5e5e5', BORDER, 5, CELLPAD, 4, CAPCOLOR, '#555555', TEXTCOLOR, '#3e3e3e'",
+ "type": "text"
},
"overview_show_sysDescr": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"own_hostname": {
"default": "localhost",
@@ -3030,7 +3394,8 @@
"default": false,
"group": "external",
"section": "oxidized",
- "order": 5
+ "order": 5,
+ "type": "boolean"
},
"oxidized.url": {
"default": false,
@@ -3038,19 +3403,27 @@
"section": "oxidized",
"order": 1,
"type": "text",
- "pattern": "[a-zA-Z0-9]{1,5}://.*",
- "required": true
+ "validate": {
+ "value": "regex:^[a-zA-Z0-9]{1,5}://.*$"
+ }
},
"page_refresh": {
- "default": 300
+ "default": 300,
+ "type": "integer",
+ "units": "seconds"
},
"page_title_prefix": {
- "default": ""
+ "default": "",
+ "type": "text"
},
"page_title_suffix": {
+ "type": "text"
},
- "peering_descr.0": {
- "default": "peering"
+ "peering_descr": {
+ "default": [
+ "peering"
+ ],
+ "type": "array"
},
"peeringdb.enabled": {
"default": false,
@@ -3060,7 +3433,11 @@
"type": "boolean"
},
"percentile_value": {
- "default": 95
+ "default": 95,
+ "type": "integer",
+ "validate": {
+ "value": "integer|between:0,100"
+ }
},
"perf_times_purge": {
"default": 30,
@@ -3077,144 +3454,235 @@
"type": "text"
},
"plugin_dir": {
+ "type": "text"
},
"poller_modules.unix-agent": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"poller_modules.os": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.ipmi": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.sensors": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.processors": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.mempools": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.storage": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.netstats": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.hr-mib": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.ucd-mib": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.ipSystemStats": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.ports": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.bgp-peers": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.junose-atm-vp": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.toner": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.ucd-diskio": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.wifi": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.wireless": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.ospf": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.cisco-ipsec-flow-monitor": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-remote-access-monitor": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-cef": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-sla": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-mac-accounting": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cipsec-tunnels": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-ace-loadbalancer": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-ace-serverfarms": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-asa-firewall": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-voice": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-cbqos": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-otv": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-qfp": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.cisco-vpdn": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.nac": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.netscaler-vsvr": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.aruba-controller": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.entity-physical": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.entity-state": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.applications": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.mib": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.stp": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.ntp": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"poller_modules.loadbalancers": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.mef": {
- "default": false
+ "default": false,
+ "type": "boolean"
+
},
"poller_modules.mpls": {
- "default": true
+ "default": true,
+ "type": "boolean"
+
},
"port_descr_parser": {
- "default": "includes/port-descr-parser.inc.php"
+ "default": "includes/port-descr-parser.inc.php",
+ "type": "text"
},
"ports_fdb_purge": {
"default": 10,
@@ -3225,22 +3693,34 @@
"type": "integer"
},
"ports_page_default": {
- "default": "details"
+ "default": "details",
+ "type": "select",
+ "options":{
+ "basic": "Basic",
+ "details": "Details",
+ "arp": "ARP",
+ "fdb": "FDB"
+ }
},
"project_home": {
- "default": "http://www.librenms.org/"
+ "default": "http://www.librenms.org/",
+ "type": "text"
},
"project_id": {
- "default": "librenms"
+ "default": "librenms",
+ "type": "text"
},
"project_issues": {
- "default": "https://community.librenms.org/c/help"
+ "default": "https://community.librenms.org/c/help",
+ "type": "text"
},
"project_name": {
- "default": "LibreNMS"
+ "default": "LibreNMS",
+ "type": "text"
},
"prometheus.job": {
- "default": "librenms"
+ "default": "librenms",
+ "type": "text"
},
"public_status": {
"default": false,
@@ -3250,13 +3730,20 @@
"type": "boolean"
},
"rancid_ignorecomments": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"rancid_repo_type": {
- "default": "svn"
+ "default": "svn",
+ "type": "select",
+ "options": {
+ "svn": "SVN",
+ "git": "Git"
+ }
},
"rewrite_if_regexp./^cpu interface/": {
- "default": "Mgmt"
+ "default": "Mgmt",
+ "type": "text"
},
"rrd.heartbeat": {
"default": 600,
@@ -3292,13 +3779,16 @@
"type": "text"
},
"rrdgraph_def_text": {
- "default": "-c BACK#EEEEEE00 -c SHADEA#EEEEEE00 -c SHADEB#EEEEEE00 -c CANVAS#FFFFFF00 -c GRID#a5a5a5 -c MGRID#FF9999 -c FRAME#5e5e5e -c ARROW#5e5e5e -R normal"
+ "default": "-c BACK#EEEEEE00 -c SHADEA#EEEEEE00 -c SHADEB#EEEEEE00 -c CANVAS#FFFFFF00 -c GRID#a5a5a5 -c MGRID#FF9999 -c FRAME#5e5e5e -c ARROW#5e5e5e -R normal",
+ "type": "text"
},
"rrdgraph_def_text_color": {
- "default": "000000"
+ "default": "000000",
+ "type": "color"
},
"rrdgraph_real_percentile": {
- "default": false
+ "default": false,
+ "type": "boolean"
},
"rrdtool": {
"default": "rrdtool",
@@ -3315,9 +3805,11 @@
"type": "boolean"
},
"secure_cookies": {
+ "type": "boolean"
},
"sensors.guess_limits": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"sfdp": {
"default": "/usr/bin/sfdp",
@@ -3327,16 +3819,20 @@
"type": "text"
},
"show_locations": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"show_locations_dropdown": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"show_overview_tab": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"show_services": {
- "default": 0
+ "default": false,
+ "type": "boolean"
},
"site_style": {
"default": "light",
@@ -3352,70 +3848,92 @@
}
},
"sla_type_labels.dhcp": {
- "default": "DHCP"
+ "default": "DHCP",
+ "type": "text"
},
"sla_type_labels.dlsw": {
- "default": "DLSW"
+ "default": "DLSW",
+ "type": "text"
},
"sla_type_labels.dns": {
- "default": "DNS"
+ "default": "DNS",
+ "type": "text"
},
"sla_type_labels.echo": {
- "default": "ICMP ping"
+ "default": "ICMP ping",
+ "type": "text"
},
"sla_type_labels.ethernetJitter": {
- "default": "Ethernet jitter"
+ "default": "Ethernet jitter",
+ "type": "text"
},
"sla_type_labels.ethernetPing": {
- "default": "Ethernet ping"
+ "default": "Ethernet ping",
+ "type": "text"
},
"sla_type_labels.fileIO": {
- "default": "File I/O"
+ "default": "File I/O",
+ "type": "text"
},
"sla_type_labels.ftp": {
- "default": "FTP"
+ "default": "FTP",
+ "type": "text"
},
"sla_type_labels.http": {
- "default": "HTTP"
+ "default": "HTTP",
+ "type": "text"
},
"sla_type_labels.icmpjitter": {
- "default": "ICMP jitter"
+ "default": "ICMP jitter",
+ "type": "text"
},
"sla_type_labels.jitter": {
- "default": "Jitter"
+ "default": "Jitter",
+ "type": "text"
},
"sla_type_labels.lspGroup": {
- "default": "LSP group"
+ "default": "LSP group",
+ "type": "text"
},
"sla_type_labels.lspPing": {
- "default": "LSP ping"
+ "default": "LSP ping",
+ "type": "text"
},
"sla_type_labels.lspPingPseudowire": {
- "default": "LSP Pseudowire ping"
+ "default": "LSP Pseudowire ping",
+ "type": "text"
},
"sla_type_labels.lspTrace": {
- "default": "LSP trace"
+ "default": "LSP trace",
+ "type": "text"
},
"sla_type_labels.pathEcho": {
- "default": "Path ICMP ping"
+ "default": "Path ICMP ping",
+ "type": "text"
},
"sla_type_labels.rtp": {
- "default": "RTP"
+ "default": "RTP",
+ "type": "text"
},
"sla_type_labels.script": {
- "default": "Script"
+ "default": "Script",
+ "type": "text"
},
"sla_type_labels.tcpConnect": {
- "default": "TCP connect"
+ "default": "TCP connect",
+ "type": "text"
},
"sla_type_labels.udpEcho": {
- "default": "UDP ping"
+ "default": "UDP ping",
+ "type": "text"
},
"sla_type_labels.voip": {
- "default": "VoIP"
+ "default": "VoIP",
+ "type": "text"
},
"smokeping.pings": {
- "default": 20
+ "default": 20,
+ "type": "integer"
},
"snmp.community": {
"group": "poller",
@@ -3514,7 +4032,12 @@
"type": "text"
},
"snmptraps.eventlog": {
- "default": "unhandled"
+ "default": "unhandled",
+ "type": "select",
+ "options": {
+ "unhandled": "Unhandled Traps",
+ "all": "All Traps"
+ }
},
"snmpwalk": {
"default": "/usr/bin/snmpwalk",
@@ -3524,22 +4047,31 @@
"type": "text"
},
"sso.create_users": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"sso.update_users": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"sso.user_attr": {
- "default": "REMOTE_USER"
+ "default": "REMOTE_USER",
+ "type": "text"
},
"storage_perc_warn": {
- "default": 60
+ "default": 60,
+ "type": "integer",
+ "validate": {
+ "value": "integer|between:0,100"
+ }
},
"stylesheet": {
- "default": "css/styles.css"
+ "default": "css/styles.css",
+ "type": "text"
},
"summary_errors": {
- "default": 0
+ "default": 0,
+ "type": "integer"
},
"syslog_filter": {
"default": [
@@ -3547,7 +4079,8 @@
"Connection from UDP: [",
"ipSystemStatsTable node ipSystemStatsOutFragOKs not implemented",
"diskio.c"
- ]
+ ],
+ "type": "array"
},
"syslog_purge": {
"default": 30,
@@ -3557,13 +4090,16 @@
"type": "integer"
},
"temp_dir": {
- "default": "/tmp"
+ "default": "/tmp",
+ "type": "text"
},
"top_devices": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"top_ports": {
- "default": 1
+ "default": true,
+ "type": "boolean"
},
"traceroute": {
"default": "traceroute",
@@ -3579,14 +4115,17 @@
"order": 14,
"type": "text"
},
- "transit_descr.0": {
- "default": "transit"
+ "transit_descr": {
+ "default": ["transit"],
+ "type": "array"
},
"unix-agent-connection-time-out": {
- "default": 10
+ "default": 10,
+ "type": "integer"
},
"unix-agent-read-time-out": {
- "default": 10
+ "default": 10,
+ "type": "integer"
},
"unix-agent.connection-timeout": {
"default": 10,
@@ -3626,10 +4165,15 @@
}
},
"uptime_warning": {
- "default": 84600
+ "default": 84600,
+ "type": "integer",
+ "validate": {
+ "value": "integer|min:0"
+ }
},
"vertical_summary": {
- "default": 0
+ "default": 0,
+ "type": "integer"
},
"virsh": {
"default": "/usr/bin/virsh",
@@ -3639,16 +4183,20 @@
"type": "text"
},
"warn.ifdown": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"warn_colour": {
- "default": "#ffeeee"
+ "default": "#ffeeee",
+ "type": "color"
},
"warn_colour_alt": {
- "default": "#ffcccc"
+ "default": "#ffcccc",
+ "type": "color"
},
"web_mouseover": {
- "default": true
+ "default": true,
+ "type": "boolean"
},
"webui.availability_map_box_size": {
"default": 165,
@@ -3700,8 +4248,7 @@
"group": "webui",
"section": "search",
"order": 0,
- "type": "integer",
- "required": true
+ "type": "integer"
},
"webui.graph_stacked": {
"default": false,
@@ -3736,7 +4283,8 @@
"type": "text"
},
"xirrus_disable_stations": {
- "default": false
+ "default": false,
+ "type": "boolean"
}
}
}
diff --git a/misc/config_schema.json b/misc/config_schema.json
new file mode 100644
index 0000000000..b902b7c266
--- /dev/null
+++ b/misc/config_schema.json
@@ -0,0 +1,88 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "Warning!": {
+ "type": "string"
+ },
+ "config": {
+ "type": "object",
+ "propertyNames": {
+ "pattern": "^[a-z0-9_.\\-]+$"
+ },
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "default": {},
+ "type": {
+ "type": "string",
+ "enum": [
+ "integer",
+ "text",
+ "boolean",
+ "select",
+ "array",
+ "password",
+ "email",
+ "color",
+ "float",
+ "graph",
+ "dashboard-select",
+ "snmp3auth",
+ "ldap-groups",
+ "ad-groups"
+ ]
+ },
+ "section": {
+ "type": "string"
+ },
+ "group": {
+ "type": "string"
+ },
+ "order": {
+ "type": "integer"
+ },
+ "options": {
+ "type": "object",
+ "minProperties": 2
+ },
+ "units": {
+ "type": "string"
+ },
+ "validate": {
+ "propertyNames": {
+ "pattern": "^value$",
+ "type": "string"
+ }
+ },
+ "when": {
+ "properties": {
+ "setting": {
+ "type": "string"
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "equals",
+ "in"
+ ]
+ },
+ "value": {
+ "type": ["string", "array"]
+ }
+ }
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ }
+ },
+ "required": ["type"],
+ "additionalProperties": false
+ }
+ }
+ },
+ "required": ["Warning!", "config"]
+}
diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php
index 778ec66419..f1f00b46f7 100644
--- a/resources/lang/en/settings.php
+++ b/resources/lang/en/settings.php
@@ -310,6 +310,10 @@ return [
'description' => 'Enable Distributed Polling (requires additional setup)',
'help' => 'Enable distributed polling system wide. This is intended for load sharing, not remote polling. You must read the documentation for steps to enable: https://docs.librenms.org/Extensions/Distributed-Poller/'
],
+ 'distributed_poller_group' => [
+ 'description' => 'Default Poller Group',
+ 'help' => 'The default poller group all pollers should poll if none is set in config.php'
+ ],
'distributed_poller_memcached_host' => [
'description' => 'Memcached host',
'help' => 'The hostname or ip for the memcached server. This is required for poller_wrapper.py and daily.sh locking.'
@@ -722,6 +726,7 @@ return [
],
'validate' => [
'boolean' => ':value is not a valid boolean',
+ 'color' => ':value is not a valid hex color code',
'email' => ':value is not a valid email',
'integer' => ':value is not an integer',
'password' => 'The password is incorrect',
diff --git a/resources/views/settings/index.blade.php b/resources/views/settings/index.blade.php
index a166c1e47b..cbbc0cbe30 100644
--- a/resources/views/settings/index.blade.php
+++ b/resources/views/settings/index.blade.php
@@ -22,6 +22,6 @@
@routes
-
+
@endpush
diff --git a/tests/YamlTest.php b/tests/YamlTest.php
index 2fd1874b22..5239f776e2 100644
--- a/tests/YamlTest.php
+++ b/tests/YamlTest.php
@@ -25,6 +25,7 @@
namespace LibreNMS\Tests;
+use Illuminate\Support\Str;
use JsonSchema\Constraints\Constraint;
use JsonSchema\Exception\JsonDecodingException;
use LibreNMS\Config;
@@ -34,6 +35,11 @@ use Symfony\Component\Yaml\Yaml;
class YamlTest extends TestCase
{
+ public function testConfigSchema()
+ {
+ $this->validateFileAgainstSchema('/misc/config_definitions.json', '/misc/config_schema.json');
+ }
+
/**
* @group os
*/
@@ -52,36 +58,8 @@ class YamlTest extends TestCase
private function validateYamlFilesAgainstSchema($dir, $schema_file)
{
- $schema = (object)['$ref' => 'file://' . Config::get('install_dir') . $schema_file];
-
- foreach ($this->listFiles($dir . '/*.yaml') as $info) {
- list($file, $path) = $info;
-
- try {
- $data = Yaml::parse(file_get_contents($path));
- } catch (ParseException $e) {
- throw new ExpectationFailedException("$path Could not be parsed", null, $e);
- }
-
- try {
- $validator = new \JsonSchema\Validator;
- $validator->validate(
- $data,
- $schema,
- Constraint::CHECK_MODE_TYPE_CAST // | Constraint::CHECK_MODE_VALIDATE_SCHEMA
- );
- } catch (JsonDecodingException $e) {
- // Output the filename so we know what file failed
- echo "Json format invalid in $schema_file\n";
- throw $e;
- }
-
- $errors = collect($validator->getErrors())
- ->reduce(function ($out, $error) {
- return sprintf("%s[%s] %s\n", $out, $error['property'], $error['message']);
- }, '');
-
- $this->assertTrue($validator->isValid(), "$file does not validate. Violations:\n$errors");
+ foreach ($this->listFiles($dir . '/*.yaml') as $file) {
+ $this->validateFileAgainstSchema($file, $schema_file);
}
}
@@ -102,8 +80,47 @@ class YamlTest extends TestCase
return collect(glob($pattern))
->reduce(function ($array, $file) {
$name = basename($file);
- $array[$name] = [$name, $file];
+ $array[$name] = $file;
return $array;
}, []);
}
+
+ /**
+ * @param $filePath
+ * @param $schema_file
+ */
+ private function validateFileAgainstSchema($filePath, $schema_file)
+ {
+ $schema = (object)['$ref' => 'file://' . Config::get('install_dir') . $schema_file];
+ $filename = basename($filePath);
+ $filePath = Str::start($filePath, Config::get('install_dir'));
+
+ try {
+ $data = Str::endsWith($filePath, '.json')
+ ? json_decode(file_get_contents($filePath))
+ : Yaml::parse(file_get_contents($filePath));
+ } catch (ParseException $e) {
+ throw new ExpectationFailedException("$filePath Could not be parsed", null, $e);
+ }
+
+ try {
+ $validator = new \JsonSchema\Validator;
+ $validator->validate(
+ $data,
+ $schema,
+ Constraint::CHECK_MODE_TYPE_CAST // | Constraint::CHECK_MODE_VALIDATE_SCHEMA
+ );
+ } catch (JsonDecodingException $e) {
+ // Output the filename so we know what file failed
+ echo "Json format invalid in $schema_file\n";
+ throw $e;
+ }
+
+ $errors = collect($validator->getErrors())
+ ->reduce(function ($out, $error) {
+ return sprintf("%s[%s] %s\n", $out, $error['property'], $error['message']);
+ }, '');
+
+ $this->assertTrue($validator->isValid(), "$filename does not validate. Violations:\n$errors");
+ }
}