diff --git a/lib/App/Netdisco.pm b/lib/App/Netdisco.pm
index a7952d94..dd333a96 100644
--- a/lib/App/Netdisco.pm
+++ b/lib/App/Netdisco.pm
@@ -53,15 +53,15 @@ See the demo at: L
=back
We have several other pages with tips for
-L,
-L,
-L,
-and L.
+L,
+L,
+L,
+and L.
You can also speak to someone in the C<#netdisco@freenode> IRC channel, or on
the L.
Before installing or upgrading please always review the latest
-L.
+L.
=head1 Dependencies
@@ -77,7 +77,7 @@ On Fedora/Red-Hat:
root:~# yum install perl-core perl-DBD-Pg net-snmp-perl net-snmp-devel openssl-devel make automake gcc
-On BSD systems please see L.
+On BSD systems please see L.
With those installed, please check that your system's clock is correct.
@@ -118,8 +118,8 @@ The following is a general guide which works well in most circumstances. It
assumes you have a user C on your system, that you want to perform
an on-line installation, and have the application run self-contained from
within that user's home. There are alternatives: see the
-L documentation for further
-details.
+L
+documentation for further details.
To avoid muddying your system, use the following script to download and
install Netdisco and its dependencies into the C user's home area
@@ -160,7 +160,7 @@ uncomment the C setting to enable SNMP data gathering from
devices (this replaces cron jobs in Netdisco 1).
Have a quick read of the other settings to make sure you're happy, then move
-on. See L for further
+on. See L for further
details.
=head1 Initialisation
@@ -174,7 +174,7 @@ script will take care of all this for you:
If this is a new installation of Netdisco 2, answer yes to all questions. If
you wish to deploy without Internet access, see the
-L documentation.
+L documentation.
=head1 Startup
@@ -196,15 +196,15 @@ C<~netdisco/perl5> directory and re-run the C command above, to update
Netdisco's C library bindings.
We have several other pages with tips for
-L,
-L,
-L,
-and L.
+L,
+L,
+L,
+and L.
You can also speak to someone in the C<#netdisco@freenode> IRC channel, or on
the L.
Before installing or upgrading please always review the latest
-L.
+L.
=head1 Upgrading from 2.x
@@ -212,9 +212,8 @@ If you're running a version of Netdisco prior to 2.x then you should follow
the full installation instructions, above. This process is for upgrading
version 2.x only.
-Before upgrading please review the latest L. Then the process below should be
-run for each installation:
+Before upgrading please review the latest L.
+Then the process below should be run for each installation:
# upgrade Netdisco
~/bin/localenv cpanm --notest App::Netdisco
@@ -262,18 +261,20 @@ run:
Bundled with this distribution is a L layer for the Netdisco
database. This abstracts away all the SQL into an elegant, re-usable OO
-interface. See the L
+interface. See the L
documentation for further information.
=head2 Plugins
-Netdisco includes a Plugin subsystem for customizing the web user interface.
-See L for further information.
+Netdisco includes a Plugin subsystem for customizing the web user interface and backend daemon.
+See L
+and L
+for further information.
=head2 Developing
Lots of information about the architecture of this application is contained
-within the L documentation.
+within the L documentation.
=head1 AUTHOR
diff --git a/lib/App/Netdisco/Manual/BSDInstall.pod b/lib/App/Netdisco/Manual/BSDInstall.pod
deleted file mode 100644
index b41bd3fd..00000000
--- a/lib/App/Netdisco/Manual/BSDInstall.pod
+++ /dev/null
@@ -1,75 +0,0 @@
-=head1 NAME
-
-App::Netdisco::Manual::BSDInstall - BSD Install Instructions
-
-=head1 Introduction
-
-This document is compiled from suggestions and comments on the Netdisco mail
-lists. We're grateful for the help, and if you have any additions please do
-let the project staff know.
-
-You could also look at the following guide for FreeBSD 11: L
-
-=head1 Ports Installs
-
-=over 4
-
-=item *
-
-Perl (if not already installed)
-
-=item *
-
-C (will also pull in C)
-
-=item *
-
-C
-
-=item *
-
-C (should install the Perl binding C)
-
-=item *
-
-C
-
-=back
-
-=head1 Additional Steps
-
-=head2 Netdisco User
-
- pw useradd netdisco -N -m -s /bin/sh -w no
-
-=head2 PostgreSQL Setup
-
- /usr/local/etc/rc.d/postgresql initdb
- /usr/local/etc/rc.d/postgresql start
-
-Make sure PostgreSQL starts at boot by adding the following to
-"C":
-
- postgresql_enable="YES"
-
-When installing C port, it creates the C user with
-"C" shell. As root, do C and change the shell to C or
-whichever shell you want, so that you can do the C step from the
-main instructions.
-
-C doesn't seem to work on NetBSD. This needs looking into. Nothing
-will break, but it just means the server probably isn't tuned to your system's
-hardware (RAM, etc).
-
-=head1 Run Control Script
-
- # PROVIDE: netdiscoweb
- # REQUIRE: DAEMON
- # BEFORE: LOGIN
- # KEYWORD: shutdown
-
- rcvar="netdisco_enable"
-
-See also L
-
-=cut
diff --git a/lib/App/Netdisco/Manual/Configuration.pod b/lib/App/Netdisco/Manual/Configuration.pod
deleted file mode 100644
index d91a6c82..00000000
--- a/lib/App/Netdisco/Manual/Configuration.pod
+++ /dev/null
@@ -1,1505 +0,0 @@
-=head1 NAME
-
-App::Netdisco::Manual::Configuration - How to Configure Netdisco
-
-=head1 INTRODUCTION
-
-The configuration files for Netdisco come with all options set to sensible
-default values, and just a few that you must initially set yourself.
-
-There are two configuration files: C (which lives inside Netdisco)
-and C (which usually lives in C<${HOME}/environments>).
-
-The C file includes defaults for every setting, and should be left
-alone. Any time you want to set an option, use only the C
-file. The two are merged when Netdisco starts, with your settings in
-C overriding the defaults from C.
-
-=head2 YAML GUIDANCE
-
-The configuration file format for Netdisco is YAML. This is easy for humans to
-edit, but you should take care with whitespace and avoid TAB characters. YAML
-supports several data types:
-
-=over 4
-
-=item *
-
-Boolean - True/False value, using C<1> and C<0> or C and C
-respectively, e.g.:
-
- check_userlog: true
-
-=item *
-
-List - Set of things using C<[a, b, c]> on one line or C<-> on separate lines,
-e.g.:
-
- community: ['public', 'another']
-
- discover_no:
- - 192.0.2.0/24
- - '2001:db8::/32'
-
-=item *
-
-Dictionary - Key/Value pairs (like Perl Hash) using C<< {key1: val1, key2:
-val2} >> on one line or C on separate lines, e.g.:
-
- port_control_reasons:
- address: 'Address Allocation Abuse'
- copyright: 'Copyright Violation'
-
-=item *
-
-String - Optionally quoted, just like in Perl (quotes required if the item
-contains a colon character). For example:
-
- log: 'debug'
- expire_devices: 15
-
-=back
-
-=head2 ACCESS CONTROL LISTS
-
-Access Control Lists (ACLs) appear in many places in the configuration file,
-used to select or exclude devices or hosts for certain settings. ACLs are a
-single item or YAML list of items, which can contain:
-
-=over 4
-
-=item *
-
-Hostname, IP address, IP prefix (i.e. subnet), such as:
-
- - hostname.example.com
- - 192.0.2.1
- - '2001:db8::/32'
-
-=item *
-
-IP address range, using a hyphen on the last octet/hextet, and no whitespace:
-
- - 192.0.2.1-10
-
-=item *
-
-Regular expression in YAML format (no enforced anchors) which will match the
-device DNS name (using a fresh DNS lookup, so works on new discovery), e.g.:
-
- - !!perl/regexp ^sep0.*$
-
-=item *
-
-"C" to match against a device property, such as C or
-C (with enforced begin/end regexp anchors). When matching a device's
-interface, "C" is also an option (see C).
-
- - 'vendor:cisco'
-
-=item *
-
-"C" to reference the "C" group from the
-C setting. This is a way to either include ACLs in other ACLs, or
-re-use ACLs.
-
-=item *
-
-"C" to require all items to match (or not match) the provided IP or
-device. Note that this includes IP address version mismatches (v4-v6).
-
-=back
-
-To negate any item in an ACL (except YAML regexp), prefix with "C", for
-example "C". In that case the test will be that the ACL entry
-does I match the device or IP being assessed. Note, however, that the
-first match in an ACL wins (because the default mode is "OR"), so take care
-with the order of items or include "C" in the ACL if appropriate.
-
-To match any device, use "C". To match no devices use "C".
-
-Configuration settings in Netdisco that take an Access Control List (most of
-the "C<*_no>" and "C<*_only>" settings, and "C" settings) can accept
-either a YAML list of the above items, or merely a single item. This is useful
-if you create a C entry and wish to reference that as the ACL.
-
-=head1 SUPPORTED SETTINGS
-
-=head2 Essential Settings
-
-If you followed the installation instructions, then you should have set the
-database connection parameters to match those of your local system. That is,
-the database C, C, C and C.
-
-=head2 General Settings
-
-=head3 C
-
-Value: C. Default: C.
-
-The log level used by Netdisco. It's useful to see warning messages from the
-backend poller, as this can highlight broken topology.
-
-=head3 C
-
-Value: Format String. Default: C<< '[%P] %U %L %m' >>.
-
-Structure of the log messages. See L
-for details.
-
-=head3 C
-
-Value: List. Default: Empty List.
-
-Additional library paths for the application (both web frontend and backend
-poller daemons). You can also use a colon-separated list in the
-"C" environment variable which makes code available even earlier
-in the app startup sequence.
-
-=head3 C
-
-Value: List. Default: Empty List.
-
-Additional paths for L templates. Files in these paths will
-be loaded before (and hence override) any templates built in to Netdisco.
-
-If you want to copy and override a built in web template, then create the
-directories necessary (such as "ajax" or "sidebar") in this path. Note that
-templates may need to have a further "C" subdirectory created.
-
-=head3 C
-
-Value: Boolean. Default: false.
-
-A shortcut for using C and C. Setting this to
-true will push C<< $ENV{NETDISCO_HOME}/nd-site-local/{lib,share} >> into those
-settings, respectively. You can then put Perl code in C and templates in
-C within the C directory.
-
-Note that you still need to create the directories yourself, and templates may
-need to have a further "C" subdirectory created within "C".
-
-=head3 C
-
-Value: List of Database Configuration dictionaries. Default: None.
-
-The Plugins and User Reports features of Netdisco can gather data from
-external databases. You need to install the Perl database driver for the
-target database platform, and configure this setting appropriately. For
-example:
-
- external_databases:
- - tag: externaldb
- dsn: 'dbi:Pg:dbname=myexternaldb;host=192.0.2.1'
- user: oliver
- password: letmein
- options:
- pg_enable_utf8: true
-
-Note that C is I and maps to the C key if you use the
-Generic Reports feature (see "L", below), or becomes the Dancer
-database schema name if you program the Plugin directly.
-
-=head2 Web Frontend
-
-=head3 C
-
-Value: String. Default: None.
-
-Set this to your local site's domain name. This is usually removed from node
-names in the web interface to make things more readable. Make sure to include
-the leading dot character.
-
-=head3 C
-
-Value: Boolean. Default: C.
-
-Enable this to disable login authentication in the web frontend. The username
-will be set to C so if you want to allow extended permissions (C
-or C), create a dummy user with the appropriate flag in the
-database:
-
- netdisco=> insert into users (username) values ('guest');
- netdisco=> update users set port_control = true where username = 'guest';
- netdisco=> update users set admin = true where username = 'guest';
-
-=head3 C
-
-Value: Boolean. Default: C.
-
-Set this to C to disable the device autocomplete in the main navbar.
-
-=head3 C
-
-Value: Boolean. Default: C.
-
-Enable this to display a banner suggesting to log in with a guest account.
-The username and password of this account must both be "guest".
-
-=head3 C
-
-Value: Boolean. Default: C.
-
-Enable this if Netdisco is running within another web server such as Apache,
-and you want that server to handle user authentication. Normally the
-authenticated username will automatically be set in the C
-environment variable. See L for
-further details.
-
-=head3 C
-
-Value: Boolean. Default: C.
-
-Enable this if you proxy requests to Netdisco via another web server such as
-Apache, and you want that server to handle user authentication. You need to
-configure the authorized username to be passed from the frontend environment
-to Netdisco in the C HTTP Header. For example with Apache:
-
- RequestHeader unset X-REMOTE_USER
- RequestHeader set X-REMOTE_USER "%{REMOTE_USER}e" env=REMOTE_USER
-
-When running securely (https), replace C<< "%{REMOTE_USER}e" >> with C<<
-"%{REMOTE_USER}s" >>.
-
-=head3 C
-
-Value: Boolean. Default: C.
-
-Enable this to check that remote users (usernames that come from a frontend
-proxy server) also exist in the Netdisco Users database. No password check is
-made.
-
-This can be useful when you have web login or single sign-on on the frontend
-web server, but also want to limit to a set of known users in Netdisco. You
-can still load those users into the database in Netdisco and enable this
-setting to check any proxied access can be mapped to a known user.
-
-=head3 C
-
-Value: Settings Tree. Default: None.
-
-If set, and a user has the C flag also set on their account, then LDAP
-authentication will be used for their login.
-
- ldap:
- servers:
- - 'ad.example.com'
- user_string: 'MYDOMAIN\%USER%'
- opts:
- debug: 0
-
-There are several options within this setting:
-
-=head4 C
-
-This must be a list of one or more LDAP servers. If using Active Directory
-these would be your Domain Controllers.
-
-=head4 C
-
-String to construct the user portion of the DN. C<%USER%> is a variable which
-will be replaced at runtime with the logon name entered on the logon page of
-the application.
-
-Active Directory users may simply use C and skip all other
-options except C, as this notation eliminates the need to construct
-the full distinguished name.
-
-Examples: C or C.
-
-=head4 C
-
-Indicates where in the hierarchy to begin searches. If a proxy user is not
-defined and anonymous binds are not enabled this value will be appended to the
-C to construct the distinguished name for authentication.
-
-=head4 C
-
-User to bind with to perform searches. If defined as C, then
-anonymous binds will be performed and C will be ignored. For
-organizations with users in multiple OUs this option can be used to search for
-the user and construct the DN based upon the result.
-
-=head4 C
-
-Proxy user password. Ignored if proxy user defined as anonymous.
-
-=head4 C
-
-Dictionary of options to add to the connect string. Normally only needed if
-server does not support LDAPv3, or to enable debugging as in the example
-above.
-
-=head4 C
-
-A hash which, when defined, causes the connection tol use Transport Layer
-Security (TLS) which provides an encrypted connection. TLS is the preferred
-method of encryption, ldaps (port 636) is not supported.
-
-This is only possible if using LDAPv3 and the server supports it. These are
-the options for the TLS connection. See the L documentation under
-start_tls for options, but the defaults should work in most cases.
-
-=head3 C
-
-Value: String. Default: None.
-
-Mount point for the Netdisco web frontend. This is usually the root of the web
-server. Set this to the path under which all pages live, e.g. C.
-As an alternative you can use the C<--path> option to C.
-
-=head3 C
-
-Value: List of Modules. Default: List of bundled L names.
-
-Netdisco's plugin system allows the user more control over the user interface.
-Plugins can be distributed independently from Netdisco and are a better
-alternative to source code patches. This setting is the list of Plugins which
-are used in the default Netdisco distribution.
-
-You can override this to set your own list. If you only want to add to the
-default list then use C, which allows the Netdisco
-developers to update default C in a future release.
-
-Entries in the list will by default omit the leading
-C from the name. To override this for one entry,
-prefix it with a C<+> sign. You can also prefix with C to signify the
-alternate C namepsace.
-
-=head3 C
-
-Value: List of Modules. Default: Empty List.
-
-List of additional L names to load. See also the
-C setting.
-
-=head3 C
-
-Value: List of Reports dictionaries. Default: None.
-
-Use this configuration to add reports to Netdisco without writing any Perl
-code or HTML templates. For example:
-
- reports:
- - tag: power_inventory
- label: 'Power Supply Inventory'
- category: Device
- columns:
- - {name: 'Name'}
- - {ps1_type: 'PS1 Type'}
- - {ps1_status: 'PS1 Status'}
- query: |
- SELECT d.name, d.ps1_type, d.ps1_status
- FROM device d
- ORDER BY name
-
-The C of each item in the C configuration is an alias for the
-report, and becomes part of the web path.
-
-You can munge the data retrieved from the database by placing a Perl script
-with the same name as the C key into the "C" directory
-of Netdisco's home area. The script can access C<$config> for its
-configuration and C<@data> for the retrieved data. It should return a list of
-munged data.
-
-Within the tree you can provide each of the keys below:
-
-=head4 C
-
-Alias for the Report, which must be usable in a web path.
-
-=head4 C