MAJOR=4
MINOR=64
DEVNAME=ttyS0
     We split naming services from authentication services because they are
not the same thing.  Any nsswitch module that provides a crypted-password
field is enough to make pam_unix work, so nss_ldap + pam_unix can be used
for authentication.  Problem being that this is not enough (users can't
change their passwords with this setup), and you can't assume nss_ldap
implies that pam_ldap is the right thing to use, because the network might
just as likely be using Kerberos for authentication.

Currently, we read and parse the "passwd" entry in /etc/nsswitch.conf to
get the client configuration.  We always assume that either "files" or "compat"
is enabled, and don't preserve order or control flags.  Depending on what is
enabled, we write out entries in the file, adding modules for a particular
service based on a priori knowledge of whether or not a particular module is
applicable to the service.  Because we control nis, hesiod, ldap, and winbind,
we add and remove those always.  We preserve "db", "nisplus", and a few other
modules if we found them being used, but neither add nor remove them.

PAM configuration only touches /etc/pam.d/system-auth.  We assume pam_unix
first.  If enabled, pam_krb5 (or if /afs exists) pam_krb5afs comes next,
then pam_ldap, then pam_winbind.  For passwords, pam_cracklib goes first.
All services use pam_limits*.  Not all can use pam_access (which requires
that a TTY is set by the calling application).

The code is roughly divided into two modules: the back and the fronts.  The
back is in authinfo.[ch], and the fronts are authconfig.c and
authconfig-gtk.py, which needs authconfigmodule.c.  They communicate by
using the authInfoRead() and authInfoWrite() functions.  The rest is gravy,
so to speak.

* Due to PAM's design, pam_limits can never work perfectly.
      MAJOR=7
MINOR=2
DEVNAME=vcs2
  /   lY>C]
f!)F384_ub&=Ly     <?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Kibana</short>
  <description>Kibana is an open source data visualization platform that allows you to interact with your data through stunning, powerful graphics that can be combined into custom dashboards that help you share insights from your data far and wide.</description>
  <port protocol="tcp" port="5601"/>
</service>
  0   	li~ XEpNFY_ub&=LV[( ,9    	# -*- buffer-read-only: t -*-
# !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
# This file is built by regen/feature.pl.
# Any changes made here will be lost!

package feature;

our $VERSION = '1.27';

our %feature = (
    fc              => 'feature_fc',
    say             => 'feature_say',
    state           => 'feature_state',
    switch          => 'feature_switch',
    evalbytes       => 'feature_evalbytes',
    array_base      => 'feature_arybase',
    current_sub     => 'feature___SUB__',
    unicode_eval    => 'feature_unieval',
    unicode_strings => 'feature_unicode',
);

our %feature_bundle = (
    "5.10"    => [qw(array_base say state switch)],
    "5.11"    => [qw(array_base say state switch unicode_strings)],
    "5.15"    => [qw(current_sub evalbytes fc say state switch unicode_eval unicode_strings)],
    "all"     => [qw(array_base current_sub evalbytes fc say state switch unicode_eval unicode_strings)],
    "default" => [qw(array_base)],
);

$feature_bundle{"5.12"} = $feature_bundle{"5.11"};
$feature_bundle{"5.13"} = $feature_bundle{"5.11"};
$feature_bundle{"5.14"} = $feature_bundle{"5.11"};
$feature_bundle{"5.16"} = $feature_bundle{"5.15"};
$feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};

our $hint_shift   = 26;
our $hint_mask    = 0x1c000000;
our @hint_bundles = qw( default 5.10 5.11 5.15 );

# This gets set (for now) in $^H as well as in %^H,
# for runtime speed of the uc/lc/ucfirst/lcfirst functions.
# See HINT_UNI_8_BIT in perl.h.
our $hint_uni8bit = 0x00000800;

# TODO:
# - think about versioned features (use feature switch => 2)

=head1 NAME

feature - Perl pragma to enable new features

=head1 SYNOPSIS

    use feature qw(say switch);
    given