set_lx_office_erp_web_admin_password() {
+ if ! [ -f /etc/lx-office-erp/lx_office.conf ] ; then
+ cp /etc/lx-office-erp/lx_office.conf.default /etc/lx-office-erp/lx_office.conf
+ fi
db_get lx-office-erp/admin-password
ADMINPASSWORD="$RET"
- cat /etc/lx-office-erp/authentication.pl.default | \
- sed --expression "s/\$self->{admin_password} = 'admin';/\$self->{admin_password} = '$ADMINPASSWORD';/g" \
+ cat /etc/lx-office-erp/lx_office.conf | \
+ sed --expression "s/admin_password = /admin_password = $ADMINPASSWORD/g" \
> /tmp/1.txt
- mv /tmp/1.txt /etc/lx-office-erp/authentication.pl
+ mv /tmp/1.txt /etc/lx-office-erp/lx_office.conf
}
-set_lx_office_erp_authentication_db_password() {
+set_lx_office_erp_authentication_db_user_password() {
db_get lx-office-erp/lx-office-erp-user-postgresql-password
PASSWORD="$RET"
- cat /etc/lx-office-erp/authentication.pl | \
- sed --expression "s/'password' => '',/'password' => '$PASSWORD',/g" \
+ cat /etc/lx-office-erp/lx_office.conf | \
+ sed --expression "s/^password = /password = $PASSWORD/g" \
> /tmp/1.txt
- mv /tmp/1.txt /etc/lx-office-erp/authentication.pl
+ cat /tmp/1.txt | \
+ sed --expression "s/^user = postgres/user = lxoffice/g" \
+ > /etc/lx-office-erp/lx_office.conf
}
-set_lx_office_erp_authentication_db_user() {
- USER="lxoffice"
-
- cat /etc/lx-office-erp/authentication.pl | \
- sed --expression "s/'user' => 'postgres',/'user' => '$USER',/g" \
- > /tmp/1.txt
-
- mv /tmp/1.txt /etc/lx-office-erp/authentication.pl
-}
set_user_rights() {
chown -R www-data:www-data /usr/lib/lx-office-erp/users
chown -R www-data:www-data /usr/lib/lx-office-erp/templates
chown www-data:www-data /etc/lx-office-erp/lx_office.conf
chown www-data:www-data /usr/lib/lx-office-erp/menu.ini
- chown www-data:www-data /etc/lx-office-erp/authentication.pl
chmod 0600 /etc/lx-office-erp/lx_office.conf
- chmod 0600 /etc/lx-office-erp/authentication.pl
}
disable_ipv6_on_lo_interface() {
+ #Ist wohl nicht mehr notwendig.
# 2009-04-25
# Perls Libraries are not yet ipv6 read
echo "WICHTIG: ipv6 ist nunmehr auf dem Loopback-Interface deaktiviert, um die Funktionsfähigkeit von Lx-Office-ERP zu gewährleisten!"
}
mk_links() {
- if ! [ -f /usr/lib/lx-office-erp/config/authentication.pl ] ; then
- ln -s /etc/lx-office-erp/authentication.pl /usr/lib/lx-office-erp/config/authentication.pl
- fi;
if ! [ -f /usr/lib/lx-office-erp/config/lx_office.conf ] ; then
ln -s /etc/lx-office-erp/lx_office.conf /usr/lib/lx-office-erp/config/lx_office.conf
fi;
+ if ! [ -f /usr/lib/lx-office-erp/config/lx_office.conf.default ] ; then
+ ln -s /etc/lx-office-erp/lx_office.conf.default /usr/lib/lx-office-erp/config/lx_office.conf.default
+ fi;
+ if [ -e /etc/lx-office-erp/authentication.pl ] ; then
+ rm /etc/lx-office-erp/authentication.pl
+ fi
if [ -e /etc/apache2 ] ; then
if ! [ -f /etc/apache2/conf.d/lx-office-erp.apache2.conf ] ; then
ln -s /etc/lx-office-erp/lx-office-erp.apache2.conf /etc/apache2/conf.d/lx-office-erp.apache2.conf
VER=`cat /var/www/lx-office-erp/VERSION | cut -d '.' -f2`
if [ $VER = '6' ]; then
echo " ! 2.6 !" >> /tmp/lxo-erp.log
- echo "Version 2.6"
+ echo "Version 2.6.x"
mk_new_menu
else
mk_new_menu
mk_new_config
config_postgresql_factory_script
set_lx_office_erp_web_admin_password
- set_lx_office_erp_authentication_db_user
- set_lx_office_erp_authentication_db_password
- disable_ipv6_on_lo_interface
+ set_lx_office_erp_authentication_db_user_password
+ # disable_ipv6_on_lo_interface
mk_links
fi;
mk_new_config
config_postgresql_factory_script
set_lx_office_erp_web_admin_password
- set_lx_office_erp_authentication_db_user
- set_lx_office_erp_authentication_db_password
- disable_ipv6_on_lo_interface
+ set_lx_office_erp_authentication_db_user_password
+ # disable_ipv6_on_lo_interface
mk_links
set_user_rights
cp $SRC/VERSION usr/lib/lx-office-erp
cp $SRC/index.html usr/lib/lx-office-erp
cp $SRC/config/lx_office.conf.default etc/lx-office-erp/lx_office.conf.default
-cp $SRC/config/authentication.pl.default etc/lx-office-erp/
cp $SRC/menu.ini usr/lib/lx-office-erp/menu.default
cp -a $SRC/css var/lib/lx-office-erp
cp -a $SRC/templates var/lib/lx-office-erp
sub _read_auth_config {
$main::lxdebug->enter_sub();
- my $self = shift;
-
- my $code;
- my $in = IO::File->new('config/authentication.pl', 'r');
-
- if (!$in) {
- my $locale = Locale->new('en');
- $self->mini_error($locale->text('The config file "config/authentication.pl" was not found.'));
- }
-
- while (<$in>) {
- $code .= $_;
- }
- $in->close();
-
- eval $code;
+ my $self = shift;
- if ($@) {
- my $locale = Locale->new('en');
- $self->mini_error($locale->text('The config file "config/authentication.pl" contained invalid Perl code:'), $@);
- }
+ map { $self->{$_} = $::lx_office_conf{authentication}->{$_} } keys %{ $::lx_office_conf{authentication} };
+ $self->{DB_config} = $::lx_office_conf{'authentication/database'};
+ $self->{LDAP_config} = $::lx_office_conf{'authentication/ldap'};
if ($self->{module} eq 'DB') {
$self->{authenticator} = SL::Auth::DB->new($self);
if (!$self->{authenticator}) {
my $locale = Locale->new('en');
- $self->mini_error($locale->text('No or an unknown authenticantion module specified in "config/authentication.pl".'));
+ $self->mini_error($locale->text('No or an unknown authenticantion module specified in "config/lx_office.conf".'));
}
my $cfg = $self->{DB_config};
if (!$cfg) {
my $locale = Locale->new('en');
- $self->mini_error($locale->text('config/authentication.pl: Key "DB_config" is missing.'));
+ $self->mini_error($locale->text('config/lx_office.conf: Key "DB_config" is missing.'));
}
if (!$cfg->{host} || !$cfg->{db} || !$cfg->{user}) {
my $locale = Locale->new('en');
- $self->mini_error($locale->text('config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".'));
+ $self->mini_error($locale->text('config/lx_office.conf: Missing parameters in "authentication/database". Required parameters are "host", "db" and "user".'));
}
$self->{authenticator}->verify_config();
$self->{ldap} = Net::LDAP->new($cfg->{host}, 'port' => $port);
if (!$self->{ldap}) {
- $main::form->error($main::locale->text('The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.', $cfg->{host}, $port));
+ $main::form->error($main::locale->text('The LDAP server "#1:#2" is unreachable. Please check config/lx_office.conf.', $cfg->{host}, $port));
}
if ($cfg->{tls}) {
my $mesg = $self->{ldap}->start_tls('verify' => 'none');
if ($mesg->is_error()) {
- $main::form->error($main::locale->text('The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.'));
+ $main::form->error($main::locale->text('The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/lx_office.conf.'));
}
}
if ($cfg->{bind_dn}) {
my $mesg = $self->{ldap}->bind($cfg->{bind_dn}, 'password' => $cfg->{bind_password});
if ($mesg->is_error()) {
- $main::form->error($main::locale->text('Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.', $cfg->{bind_dn}));
+ $main::form->error($main::locale->text('Binding to the LDAP server as "#1" failed. Please check config/lx_office.conf.', $cfg->{bind_dn}));
}
}
my $cfg = $self->{auth}->{LDAP_config};
if (!$cfg) {
- $form->error($locale->text('config/authentication.pl: Key "LDAP_config" is missing.'));
+ $form->error($locale->text('config/lx_office.conf: Key "authentication/ldap" is missing.'));
}
if (!$cfg->{host} || !$cfg->{attribute} || !$cfg->{base_dn}) {
- $form->error($locale->text('config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".'));
+ $form->error($locale->text('config/lx_office.conf: Missing parameters in "authentication/ldap". Required parameters are "host", "attribute" and "base_dn".'));
}
$main::lxdebug->leave_sub();
use strict;
-use Readonly;
-
use SL::DB::MetaSetup::PeriodicInvoicesConfig;
__PACKAGE__->meta->add_relationships(
# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
__PACKAGE__->meta->make_manager_class;
-Readonly our @PERIODICITIES => qw(m q f b y);
-Readonly our %PERIOD_LENGTHS => ( m => 1, q => 3, f => 4, b => 6, y => 12 );
+our @PERIODICITIES = qw(m q f b y);
+our %PERIOD_LENGTHS = ( m => 1, q => 3, f => 4, b => 6, y => 12 );
sub get_period_length {
my $self = shift;
{ name => "parent", url => "http://search.cpan.org/~corion/", debian => 'libparent-perl' },
{ name => "Archive::Zip", version => '1.16', url => "http://search.cpan.org/~adamk/", debian => 'libarchive-zip-perl' },
{ name => "Class::Accessor", version => '0.30', url => "http://search.cpan.org/~kasei/", debian => 'libclass-accessor-perl' },
+ { name => "Config::Std", url => "http://search.cpan.org/~dconway/", debian => 'libconfig-std-perl' },
{ name => "CGI::Ajax", version => '0.697', url => "http://search.cpan.org/~bct/" }, # no debian package, ours contains bugfixes
{ name => "DateTime", url => "http://search.cpan.org/~drolsky/", debian => 'libdatetime-perl' },
{ name => "DBI", version => '1.50', url => "http://search.cpan.org/~timb/", debian => 'libdbi-perl' },
{ name => "Email::Address", url => "http://search.cpan.org/~rjbs/", debian => 'libemail-address-perl' },
{ name => "FCGI", url => "http://search.cpan.org/~mstrout/", debian => 'libfcgi-perl' },
{ name => "List::MoreUtils", version => '0.21', url => "http://search.cpan.org/~vparseval/", debian => 'liblist-moreutils-perl' },
+ { name => "Params::Validate", url => "http://search.cpan.org/~drolsky/", debian => 'libparams-validate-perl' },
{ name => "PDF::API2", version => '2.000', url => "http://search.cpan.org/~areibens/", debian => 'libpdf-api2-perl' },
{ name => "Rose::Object", url => "http://search.cpan.org/~jsiracusa/", debian => 'librose-object-perl' },
{ name => "Rose::DB", url => "http://search.cpan.org/~jsiracusa/", debian => 'librose-db-perl' },
sub check_for_conditional_dependencies {
return if $conditional_dependencies{net_ldap}++;
- my $self = {};
- eval do { local (@ARGV, $/) = 'config/authentication.pl'; <> } or return;
-
push @required_modules, { 'name' => 'Net::LDAP', 'url' => 'http://search.cpan.org/~gbarr/' }
- if $self->{module} && ($self->{module} eq 'LDAP');
+ if $::lx_office_conf{authentication} && ($::lx_office_conf{authentication}->{module} eq 'LDAP');
}
sub test_all_modules {
use Encode;
sub read {
- my $file = -f 'config/lx_office.conf' ? 'config/lx_office.conf' : 'config/lx_office.conf.default';
- read_config $file => %::lx_office_conf;
+ read_config 'config/lx_office.conf.default' => %::lx_office_conf;
_decode_recursively(\%::lx_office_conf);
+
+ if (-f 'config/lx_office.conf') {
+ read_config 'config/lx_office.conf' => my %local_conf;
+ _decode_recursively(\%local_conf);
+ _flat_merge(\%::lx_office_conf, \%local_conf);
+ }
}
sub _decode_recursively {
}
}
+sub _flat_merge {
+ my ($dst, $src) = @_;
+
+ while (my ($key, $value) = each %{ $src }) {
+ if (!exists $dst->{$key}) {
+ $dst->{$key} = $value;
+
+ } else {
+ map { $dst->{$key}->{$_} = $value->{$_} } keys %{ $value };
+ }
+ }
+}
+
1;
-2.6.3-unstable
+2.7.0-unstable
+++ /dev/null
-#!/usr/bin/perl
-
-# Das Passwort für den Zugang zum Administrationsfrontend im Klartext.
-# Kann nur in dieser Datei geändert werden, nicht im Administrationsfrontend
-# selber.
-$self->{admin_password} = 'admin';
-
-# Welches Modul soll zur Authentifizierung der Logins benutzt werden?
-# Entweder 'DB' oder 'LDAP'.
-#
-# Wenn LDAP-Authentifizierung benutzt wird, dann kann der Benutzer sein
-# Passwort nicht über Lx-Office ändern.
-$self->{module} = 'DB';
-
-# Verbindungsinformationen zur Datenbank mit den Benutzer- und
-# Gruppeninformationen. Wird auch dann benötigt, wenn gegen einen
-# LDAP-Server authentifiziert wird, weil dieser nur zur Passwortüberprüfung
-# benutzt wird. Der Rest der Benutzerdaten ist in der Datenbank hinterlegt.
-#
-# Ist 'module' = 'DB' dann wird diese Datenbank auch für die
-# Passwortüberprüfung benutzt.
-$self->{DB_config} = {
- 'host' => 'localhost',
- 'port' => 5432,
- 'db' => 'lxerp_auth',
- 'user' => 'lxoffice',
- 'password' => '',
-};
-
-# Wird nur benötigt, wenn 'module' = 'LDAP' ist. An diesem LDAP-Server
-# werden die Benutzerpasswörter durch einen LDAP-Bind überprüft.
-#
-# Es müssen mindestens die Parameter host, attribute und base_dn
-# angegeben werden.
-#
-# tls: Verschlüsselung per TLS erzwingen
-# attribute: Das LDAP-Attribut, das den Loginnamen enthält
-# base_dn: Basis-DN, ab der der LDAP-Baum durchsucht wird
-# filter: Ein optionaler LDAP-Filter. Die Zeichenkette '<%login%>' wird
-# innerhalb des Filters durch den Loginnamen ersetzt.
-# bind_dn und bind_password:
-# Wenn zum Durchsuchen des LDAP-Baumes eine Anmeldung erforderlich
-# ist (z.B. beim ActiveDirectory), dann müssen diese beiden
-# Parameter gesetzt sein.
-$self->{LDAP_config} = {
- 'host' => 'localhost',
- 'port' => 389,
- 'tls' => 0,
- 'attribute' => 'uid',
- 'base_dn' => '',
- 'filter' => '',
-
- 'bind_dn' => undef,
- 'bind_password' => undef,
-};
-
-# Der Name des Cookies kann geändert werden, sofern gewünscht.
-# $self->{cookie_name} = 'lx_office_erp_session_id';
-
-# Die Zeitspanne, bis eine inaktive Session ungültig wird, kann
-# hier geändert werden. Der Standardwert ist acht Stunden.
-# Die Angabe ist in Minuten.
-# $self->{session_timeout} = 8 * 60;
-
-1;
+[authentication]
+# The cleartext password for access to the administrative part. It
+# can only be changed in this file, not via the administrative
+# interface.
+admin_password = admin123
+
+# Which module to use for authentication. Valid values are 'DB' and
+# 'LDAP'. If 'LDAP' is used then users cannot change their password
+# via Lx-Office.
+module = DB
+
+# The cookie name can be changed if desired.
+cookie_name = lx_office_erp_session_id
+
+# The number of minutes a session is valid. The default value is eight
+# hours.
+session_timeout = 480
+
+[authentication/database]
+# Connection information for the database with the user and group
+# inforamtion. This information is always needed, even if LDAP is
+# used for authentication, as the user information is stored in this
+# database while LDAP is only used for password verification.
+#
+# If 'module' is set to 'DB' then this database also contains the
+# users' passwords.
+host = localhost
+port = 5432
+db = lxerp_auth
+user = postgres
+password =
+
+[authentication/ldap]
+# This section is only relevant if 'module' is set to 'LDAP'. It names
+# the LDAP server the passwords are verified against by doing a LDAP
+# bind operation.
+#
+# At least the parameters 'host', 'aatribute' and 'base_dn' have to be
+# specified.
+#
+# tls: Activate encryption via TLS
+# attribute: Name of the LDAP attribute containing the user's login name
+# base_dn: Base DN the LDAP searches start from
+# filter: An optional LDAP filter specification. The string '<%login%>'
+# is replaced by the user's login name before the search is started.
+# bind_dn and bind_password:
+# If searching the LDAP tree requires user credentials
+# (e.g. ActiveDirectory) then these two parameters specify
+# the user name and password to use.
+host = localhost
+port = 389
+tls = 0
+attribute = uid
+base_dn =
+filter =
+bind_dn =
+bind_password =
+
[system]
# EUR: Einnahmen-Überschussrechnung (net income method). Set this to 1
# if your company uses the net income method and to 0 for balacing.
@item
CGI::Ajax
@item
+Config::Std
+@item
DateTime
@item
DBI
@item
List::MoreUtils
@item
+Params::Validate
+@item
PDF::API2
@item
Rose::Object
Für Debian oder Ubuntu benötigen Sie diese Pakete:
-@code{apache2 postgresql libparent-perl libarchive-zip-perl libclass-accessor-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl}
+@code{apache2 postgresql libparent-perl libarchive-zip-perl libclass-accessor-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl libconfig-std-perl libparams-validate-perl}
Für Fedora Core benötigen Sie diese Pakete:
Welche Art der Passwortüberprüfung Lx-Office benutzt und wie Lx-Office
die Authentifizierungsdatenbank erreichen kann, wird in der
-Konfigurationsdatei @code{config/authentication.pl} festgelegt. Diese
+Konfigurationsdatei @code{config/lx_office.conf} festgelegt. Diese
muss bei der Installation und bei einem Upgrade von einer Version vor
v2.6.0 angelegt werden. Eine Beispielkonfigurationsdatei
-@code{config/authentication.pl.default} existiert, die als Vorlage
+@code{config/lx_office.conf.default} existiert, die als Vorlage
benutzt werden kann.
@node Administratorpasswort
@node Anlegen der Authentifizierungsdatenbank
@section Anlegen der Authentifizierungsdatenbank
-Nachdem alle Einstellungen in @code{config/authentication.pl}
+Nachdem alle Einstellungen in @code{config/lx_office.conf}
vorgenommen wurden, muss Lx-Office die Authentifizierungsdatenbank
anlegen. Dieses geschieht automatisch, wenn Sie sich im
Administrationsmodul anmelden, das unter der folgenden URL erreichbar
@uref{http://localhost/lx-erp/admin.pl}
Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei
-@code{config/authentication.pl} eingetragen haben.
+@code{config/lx_office.conf} eingetragen haben.
@menu
* Zusammenhänge:: Übersicht über Benutzer, Gruppen, Berechtigungen und Datenbanken
* CGI::Ajax
+ * Config::Std
+
* DateTime
* DBI
* List::MoreUtils
+ * Params::Validate
+
* PDF::API2
* Rose::Object
libpg-perl libemail-address-perl liblist-moreutils-perl
libpdf-api2-perl librose-object-perl librose-db-perl
librose-db-object-perl libtemplate-perl libtext-csv-xs-perl
-libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl'
+libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl
+libconfig-std-perl libparams-validate-perl'
Für Fedora Core benötigen Sie diese Pakete:
Welche Art der Passwortüberprüfung Lx-Office benutzt und wie
Lx-Office die Authentifizierungsdatenbank erreichen kann, wird in der
-Konfigurationsdatei `config/authentication.pl' festgelegt. Diese muss
-bei der Installation und bei einem Upgrade von einer Version vor v2.6.0
+Konfigurationsdatei `config/lx_office.conf' festgelegt. Diese muss bei
+der Installation und bei einem Upgrade von einer Version vor v2.6.0
angelegt werden. Eine Beispielkonfigurationsdatei
-`config/authentication.pl.default' existiert, die als Vorlage benutzt
+`config/lx_office.conf.default' existiert, die als Vorlage benutzt
werden kann.
6.2 Administratorpasswort
6.6 Anlegen der Authentifizierungsdatenbank
===========================================
-Nachdem alle Einstellungen in `config/authentication.pl' vorgenommen
+Nachdem alle Einstellungen in `config/lx_office.conf' vorgenommen
wurden, muss Lx-Office die Authentifizierungsdatenbank anlegen. Dieses
geschieht automatisch, wenn Sie sich im Administrationsmodul anmelden,
das unter der folgenden URL erreichbar sein sollte:
`http://localhost/lx-erp/admin.pl'
Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei
-`config/authentication.pl' eingetragen haben.
+`config/lx_office.conf' eingetragen haben.
7.1 Zusammenhänge
==================
<title>Administratorpasswort - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Grundlagen-zur-Benutzerauthentifizierung.html#Grundlagen-zur-Benutzerauthentifizierung" title="Grundlagen zur Benutzerauthentifizierung">
</head>
<body>
<div class="node">
-<p>
<a name="Administratorpasswort"></a>
-nächstes: <a rel="next" accesskey="n" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
-voriges: <a rel="previous" accesskey="p" href="Grundlagen-zur-Benutzerauthentifizierung.html#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
+Previous: <a rel="previous" accesskey="p" href="Grundlagen-zur-Benutzerauthentifizierung.html#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>,
+Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>Aktuelle Hinweise - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="index.html#Top" title="Top">
<link rel="next" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete" title="Benötigte Software und Pakete">
</head>
<body>
<div class="node">
-<p>
<a name="Aktuelle-Hinweise"></a>
-nächstes: <a rel="next" accesskey="n" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
-voriges: <a rel="previous" accesskey="p" href="index.html#Top">Top</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
+Previous: <a rel="previous" accesskey="p" href="index.html#Top">Top</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Anlegen der Authentifizierungsdatenbank - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies" title="Name des Session-Cookies">
</head>
<body>
<div class="node">
-<p>
<a name="Anlegen-der-Authentifizierungsdatenbank"></a>
-voriges: <a rel="previous" accesskey="p" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<p>
+Previous: <a rel="previous" accesskey="p" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
+Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<h3 class="section">6.6 Anlegen der Authentifizierungsdatenbank</h3>
-<p>Nachdem alle Einstellungen in <code>config/authentication.pl</code>
+<p>Nachdem alle Einstellungen in <code>config/lx_office.conf</code>
vorgenommen wurden, muss Lx-Office die Authentifizierungsdatenbank
anlegen. Dieses geschieht automatisch, wenn Sie sich im
Administrationsmodul anmelden, das unter der folgenden URL erreichbar
<title>Anpassung der PostgreSQL-Konfiguration - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes" title="Manuelle Installation des Programmpaketes">
<link rel="next" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration" title="Apache-Konfiguration">
</head>
<body>
<div class="node">
-<p>
<a name="Anpassung-der-PostgreSQL-Konfiguration"></a>
<a name="Anpassung-der-PostgreSQL_002dKonfiguration"></a>
-nächstes: <a rel="next" accesskey="n" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration">Apache-Konfiguration</a>,
-voriges: <a rel="previous" accesskey="p" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration">Apache-Konfiguration</a>,
+Previous: <a rel="previous" accesskey="p" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Apache-Konfiguration - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="next" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
</head>
<body>
<div class="node">
-<p>
<a name="Apache-Konfiguration"></a>
<a name="Apache_002dKonfiguration"></a>
-nächstes: <a rel="next" accesskey="n" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
-voriges: <a rel="previous" accesskey="p" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
+Previous: <a rel="previous" accesskey="p" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Authentifizierungsdatenbank - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Administratorpasswort.html#Administratorpasswort" title="Administratorpasswort">
</head>
<body>
<div class="node">
-<p>
<a name="Authentifizierungsdatenbank"></a>
-nächstes: <a rel="next" accesskey="n" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
-voriges: <a rel="previous" accesskey="p" href="Administratorpasswort.html#Administratorpasswort">Administratorpasswort</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
+Previous: <a rel="previous" accesskey="p" href="Administratorpasswort.html#Administratorpasswort">Administratorpasswort</a>,
+Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>Benötigte Software und Pakete - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise" title="Aktuelle Hinweise">
<link rel="next" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes" title="Manuelle Installation des Programmpaketes">
</head>
<body>
<div class="node">
-<p>
<a name="Ben%c3%b6tigte-Software-und-Pakete"></a>
<a name="Ben_00c3_00b6tigte-Software-und-Pakete"></a>
-nächstes: <a rel="next" accesskey="n" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
-voriges: <a rel="previous" accesskey="p" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
+Previous: <a rel="previous" accesskey="p" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Benutzer anlegen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Gruppen-anlegen.html#Gruppen-anlegen" title="Gruppen anlegen">
</head>
<body>
<div class="node">
-<p>
<a name="Benutzer-anlegen"></a>
-nächstes: <a rel="next" accesskey="n" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
-voriges: <a rel="previous" accesskey="p" href="Gruppen-anlegen.html#Gruppen-anlegen">Gruppen anlegen</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
+Previous: <a rel="previous" accesskey="p" href="Gruppen-anlegen.html#Gruppen-anlegen">Gruppen anlegen</a>,
+Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Benutzer- und Gruppenverwaltung - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="next" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen" title="OpenDocument-Vorlagen">
</head>
<body>
<div class="node">
-<p>
<a name="Benutzer--und-Gruppenverwaltung"></a>
<a name="Benutzer_002d-und-Gruppenverwaltung"></a>
-nächstes: <a rel="next" accesskey="n" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>,
-voriges: <a rel="previous" accesskey="p" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Next: <a rel="next" accesskey="n" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>,
+Previous: <a rel="previous" accesskey="p" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<p><a href="http://localhost/lx-erp/admin.pl">http://localhost/lx-erp/admin.pl</a>
<p>Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei
-<code>config/authentication.pl</code> eingetragen haben.
+<code>config/lx_office.conf</code> eingetragen haben.
<ul class="menu">
<li><a accesskey="1" href="Zusammenh_00c3_00a4nge.html#Zusammenh_00c3_00a4nge">Zusammenhänge</a>: Übersicht über Benutzer, Gruppen, Berechtigungen und Datenbanken
<title>Benutzerauthentifizierung und Administratorpasswort - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration" title="Apache-Konfiguration">
<link rel="next" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
</head>
<body>
<div class="node">
-<p>
<a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>
-nächstes: <a rel="next" accesskey="n" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
-voriges: <a rel="previous" accesskey="p" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration">Apache-Konfiguration</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
+Previous: <a rel="previous" accesskey="p" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration">Apache-Konfiguration</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Betriebssystem - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete" title="Benötigte Software und Pakete">
<link rel="next" href="Pakete.html#Pakete" title="Pakete">
</head>
<body>
<div class="node">
-<p>
<a name="Betriebssystem"></a>
-nächstes: <a rel="next" accesskey="n" href="Pakete.html#Pakete">Pakete</a>,
-aufwärts: <a rel="up" accesskey="u" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Pakete.html#Pakete">Pakete</a>,
+Up: <a rel="up" accesskey="u" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
<hr>
</div>
geben.
<p>Alternativ dazu kann die normale Installation durchgeführt werden
-(siehe <a href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), wenn vorher ein
+(see <a href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), wenn vorher ein
Kompatibilitätspaket installiert wird, das die fehlenden Pakete bereitstellt.
Das Paket ist auf <a href="https://sourceforge.net/projects/lx-office/files/Lx-Office%20ERP/2.6.2/">Sourceforge</a> unter dem Namen <code>lx-erp-perl-libs-compat-v2.tar.gz</code> hinterlegt.
<p><code>libbit-vector-perl libsub-exporter-perl libclone-perl libclass-factory-util-perl</code>
- <p>Danach sollte der Installationscheck (siehe <a href="Pakete.html#Pakete">Pakete</a>) die enthaltenen Pakete erkennen.
+ <p>Danach sollte der Installationscheck (see <a href="Pakete.html#Pakete">Pakete</a>) die enthaltenen Pakete erkennen.
</body></html>
<title>Datenbankbenutzer anlegen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="prev" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren" title="Erweiterung für servergespeicherte Prozeduren">
</head>
<body>
<div class="node">
-<p>
<a name="Datenbankbenutzer-anlegen"></a>
-voriges: <a rel="previous" accesskey="p" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
-aufwärts: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
+<p>
+Previous: <a rel="previous" accesskey="p" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
+Up: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
<hr>
</div>
<title>Datenbanken anlegen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Zusammenh_00c3_00a4nge.html#Zusammenh_00c3_00a4nge" title="Zusammenhänge">
</head>
<body>
<div class="node">
-<p>
<a name="Datenbanken-anlegen"></a>
-nächstes: <a rel="next" accesskey="n" href="Gruppen-anlegen.html#Gruppen-anlegen">Gruppen anlegen</a>,
-voriges: <a rel="previous" accesskey="p" href="Zusammenh_00c3_00a4nge.html#Zusammenh_00c3_00a4nge">Zusammenhänge</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Gruppen-anlegen.html#Gruppen-anlegen">Gruppen anlegen</a>,
+Previous: <a rel="previous" accesskey="p" href="Zusammenh_00c3_00a4nge.html#Zusammenh_00c3_00a4nge">Zusammenhänge</a>,
+Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Erweiterung für servergespeicherte Prozeduren - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="prev" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien" title="Änderungen an Konfigurationsdateien">
</head>
<body>
<div class="node">
-<p>
<a name="Erweiterung-f%c3%bcr-servergespeicherte-Prozeduren"></a>
<a name="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren"></a>
-nächstes: <a rel="next" accesskey="n" href="Datenbankbenutzer-anlegen.html#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>,
-voriges: <a rel="previous" accesskey="p" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
-aufwärts: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Datenbankbenutzer-anlegen.html#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>,
+Previous: <a rel="previous" accesskey="p" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
+Up: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
<hr>
</div>
<title>Grundlagen zur Benutzerauthentifizierung - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="next" href="Administratorpasswort.html#Administratorpasswort" title="Administratorpasswort">
</head>
<body>
<div class="node">
-<p>
<a name="Grundlagen-zur-Benutzerauthentifizierung"></a>
-nächstes: <a rel="next" accesskey="n" href="Administratorpasswort.html#Administratorpasswort">Administratorpasswort</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Administratorpasswort.html#Administratorpasswort">Administratorpasswort</a>,
+Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<p>Welche Art der Passwortüberprüfung Lx-Office benutzt und wie Lx-Office
die Authentifizierungsdatenbank erreichen kann, wird in der
-Konfigurationsdatei <code>config/authentication.pl</code> festgelegt. Diese
+Konfigurationsdatei <code>config/lx_office.conf</code> festgelegt. Diese
muss bei der Installation und bei einem Upgrade von einer Version vor
v2.6.0 angelegt werden. Eine Beispielkonfigurationsdatei
-<code>config/authentication.pl.default</code> existiert, die als Vorlage
+<code>config/lx_office.conf.default</code> existiert, die als Vorlage
benutzt werden kann.
</body></html>
<title>Gruppen anlegen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Datenbanken-anlegen.html#Datenbanken-anlegen" title="Datenbanken anlegen">
</head>
<body>
<div class="node">
-<p>
<a name="Gruppen-anlegen"></a>
-nächstes: <a rel="next" accesskey="n" href="Benutzer-anlegen.html#Benutzer-anlegen">Benutzer anlegen</a>,
-voriges: <a rel="previous" accesskey="p" href="Datenbanken-anlegen.html#Datenbanken-anlegen">Datenbanken anlegen</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Benutzer-anlegen.html#Benutzer-anlegen">Benutzer anlegen</a>,
+Previous: <a rel="previous" accesskey="p" href="Datenbanken-anlegen.html#Datenbanken-anlegen">Datenbanken anlegen</a>,
+Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Gruppenmitgliedschaften verwalten - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Benutzer-anlegen.html#Benutzer-anlegen" title="Benutzer anlegen">
</head>
<body>
<div class="node">
-<p>
<a name="Gruppenmitgliedschaften-verwalten"></a>
-nächstes: <a rel="next" accesskey="n" href="Migration-alter-Installationen.html#Migration-alter-Installationen">Migration alter Installationen</a>,
-voriges: <a rel="previous" accesskey="p" href="Benutzer-anlegen.html#Benutzer-anlegen">Benutzer anlegen</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Migration-alter-Installationen.html#Migration-alter-Installationen">Migration alter Installationen</a>,
+Previous: <a rel="previous" accesskey="p" href="Benutzer-anlegen.html#Benutzer-anlegen">Benutzer anlegen</a>,
+Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Lx-Office ERP verwenden - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen" title="OpenDocument-Vorlagen">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
</head>
<body>
<div class="node">
-<p>
<a name="Lx-Office-ERP-verwenden"></a>
<a name="Lx_002dOffice-ERP-verwenden"></a>
-voriges: <a rel="previous" accesskey="p" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Previous: <a rel="previous" accesskey="p" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Manuelle Installation des Programmpaketes - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete" title="Benötigte Software und Pakete">
<link rel="next" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
</head>
<body>
<div class="node">
-<p>
<a name="Manuelle-Installation-des-Programmpaketes"></a>
-nächstes: <a rel="next" accesskey="n" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
-voriges: <a rel="previous" accesskey="p" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
+Previous: <a rel="previous" accesskey="p" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Migration alter Installationen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten" title="Gruppenmitgliedschaften verwalten">
</head>
<body>
<div class="node">
-<p>
<a name="Migration-alter-Installationen"></a>
-voriges: <a rel="previous" accesskey="p" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<p>
+Previous: <a rel="previous" accesskey="p" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
+Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Name des Session-Cookies - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung" title="Passwortüberprüfung">
</head>
<body>
<div class="node">
-<p>
<a name="Name-des-Session-Cookies"></a>
<a name="Name-des-Session_002dCookies"></a>
-nächstes: <a rel="next" accesskey="n" href="Anlegen-der-Authentifizierungsdatenbank.html#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>,
-voriges: <a rel="previous" accesskey="p" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Anlegen-der-Authentifizierungsdatenbank.html#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>,
+Previous: <a rel="previous" accesskey="p" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
+Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>OpenDocument-Vorlagen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="next" href="Lx_002dOffice-ERP-verwenden.html#Lx_002dOffice-ERP-verwenden" title="Lx-Office ERP verwenden">
</head>
<body>
<div class="node">
-<p>
<a name="OpenDocument-Vorlagen"></a>
<a name="OpenDocument_002dVorlagen"></a>
-nächstes: <a rel="next" accesskey="n" href="Lx_002dOffice-ERP-verwenden.html#Lx_002dOffice-ERP-verwenden">Lx-Office ERP verwenden</a>,
-voriges: <a rel="previous" accesskey="p" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
-aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Lx_002dOffice-ERP-verwenden.html#Lx_002dOffice-ERP-verwenden">Lx-Office ERP verwenden</a>,
+Previous: <a rel="previous" accesskey="p" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
+Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<p>Dieses Verzeichnis, wie auch das komplette <code>users</code>-Verzeichnis, muss vom
Webserver beschreibbar sein. Dieses wurde bereits erledigt
-(siehe <a href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), kann aber erneut überprüft
+(see <a href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), kann aber erneut überprüft
werden, wenn die Konvertierung nach PDF fehlschlägt.
<!-- -->
<title>Pakete - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete" title="Benötigte Software und Pakete">
<link rel="prev" href="Betriebssystem.html#Betriebssystem" title="Betriebssystem">
</head>
<body>
<div class="node">
-<p>
<a name="Pakete"></a>
-voriges: <a rel="previous" accesskey="p" href="Betriebssystem.html#Betriebssystem">Betriebssystem</a>,
-aufwärts: <a rel="up" accesskey="u" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
+<p>
+Previous: <a rel="previous" accesskey="p" href="Betriebssystem.html#Betriebssystem">Betriebssystem</a>,
+Up: <a rel="up" accesskey="u" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
<hr>
</div>
<li>Archive::Zip
<li>Class::Accessor
<li>CGI::Ajax
+<li>Config::Std
<li>DateTime
<li>DBI
<li>DBD::Pg
<li>Email::Address
<li>List::MoreUtils
+<li>Params::Validate
<li>PDF::API2
<li>Rose::Object
<li>Rose::DB
<p>Für Debian oder Ubuntu benötigen Sie diese Pakete:
- <p><code>apache2 postgresql libparent-perl libarchive-zip-perl libclass-accessor-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl</code>
+ <p><code>apache2 postgresql libparent-perl libarchive-zip-perl libclass-accessor-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl libconfig-std-perl libparams-validate-perl</code>
<p>Für Fedora Core benötigen Sie diese Pakete:
<title>Passwortüberprüfung - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank" title="Authentifizierungsdatenbank">
</head>
<body>
<div class="node">
-<p>
<a name="Passwort%c3%bcberpr%c3%bcfung"></a>
<a name="Passwort_00c3_00bcberpr_00c3_00bcfung"></a>
-nächstes: <a rel="next" accesskey="n" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
-voriges: <a rel="previous" accesskey="p" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
+Previous: <a rel="previous" accesskey="p" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
+Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>Zeichensätze/die Verwendung von UTF-8 - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="next" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien" title="Änderungen an Konfigurationsdateien">
</head>
<body>
<div class="node">
-<p>
<a name="Zeichens%c3%a4tze%2fdie-Verwendung-von-UTF-8"></a>
<a name="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8"></a>
-nächstes: <a rel="next" accesskey="n" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
-aufwärts: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
+<p>
+Next: <a rel="next" accesskey="n" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
+Up: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
<hr>
</div>
<title>Zusammenhänge - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="next" href="Datenbanken-anlegen.html#Datenbanken-anlegen" title="Datenbanken anlegen">
</head>
<body>
<div class="node">
-<p>
<a name="Zusammenh%c3%a4nge"></a>
<a name="Zusammenh_00c3_00a4nge"></a>
-nächstes: <a rel="next" accesskey="n" href="Datenbanken-anlegen.html#Datenbanken-anlegen">Datenbanken anlegen</a>,
-aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Datenbanken-anlegen.html#Datenbanken-anlegen">Datenbanken anlegen</a>,
+Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Änderungen an Konfigurationsdateien - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="prev" href="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8.html#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8" title="Zeichensätze/die Verwendung von UTF-8">
</head>
<body>
<div class="node">
-<p>
<a name="%c3%84nderungen-an-Konfigurationsdateien"></a>
<a name="g_t_00c3_0084nderungen-an-Konfigurationsdateien"></a>
-nächstes: <a rel="next" accesskey="n" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
-voriges: <a rel="previous" accesskey="p" href="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8.html#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">Zeichensätze/die Verwendung von UTF-8</a>,
-aufwärts: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
+Previous: <a rel="previous" accesskey="p" href="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8.html#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">Zeichensätze/die Verwendung von UTF-8</a>,
+Up: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
<hr>
</div>
<title>Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.11">
+<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="#Top">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<meta http-equiv="Content-Style-Type" content="text/css">
<div class="node">
-<p>
<a name="Top"></a>
-nächstes: <a rel="next" accesskey="n" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
-aufwärts: <a rel="up" accesskey="u" href="../index.html#dir">(dir)</a>
+<p>
+Next: <a rel="next" accesskey="n" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
+Up: <a rel="up" accesskey="u" href="../index.html#dir">(dir)</a>
<hr>
</div>
--- /dev/null
+File::Slurp.pm version 0.04
+===========================
+
+This module provides subroutines to read or write entire files with a
+simple call. It also has a subroutine for reading the list of filenames
+in a directory.
+
+In the extras/ directory you can read an article (slurp_article.pod)
+about file slurping and also run a benchmark (slurp_bench.pl) that
+compares many ways of slurping/spewing files.
+
+This module was first written and owned by David Muir Sharnoff (MUIR on
+CPAN). I checked out his module and decided to write a new version
+which would be faster, and with many more features. To that end, David
+graciously transfered the namespace to me.
+
+Since then, I discovered and fixed a bug in the original module's test
+script (which had only 7 tests), which is included now as t/original.t.
+This module now has 164 tests in 7 test scripts, and passes on Windows,
+Linux, Solaris and Mac OS X.
+
+There have been some comments about the somewhat unusual version number.
+The problem was that David used a future date (2004.0904) in his version
+number, and the only way I could get CPAN to index my new module was to
+make it have a version number higher than the old one, so I chose the
+9999 prefix and appended the real revision number to it.
+
+INSTALLATION
+
+To install this module type the following:
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2003 Uri Guttman <uri@stemsystems.com>
+
+Licensed the same as Perl.
'Bin From' => 'Quelllagerplatz',
'Bin List' => 'Lagerliste',
'Bin To' => 'Ziellagerplatz',
- 'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
+ 'Binding to the LDAP server as "#1" failed. Please check config/lx_office.conf.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte überprüfen Sie die Angaben in config/lx_office.conf.',
'Bins saved.' => 'Lagerplätze gespeichert.',
'Bins that have been used in the past cannot be deleted anymore. For these bins there\'s no checkbox in the "Delete" column.' => 'Lagerplätze, die bereits benutzt wurden, können nicht mehr gelöscht werden. Deswegen fehlt bei ihnen die Checkbox in der Spalte "Löschen".',
'Birthday' => 'Geburtstag',
'If you chose to let Lx-Office do the migration then Lx-Office will also remove the old member file after creating a backup copy of it in the directory "#1".' => 'Falls Sie sich entscheiden, Lx-Office die Migration durchführen zu lassen, so wird Lx-Office ein Backup der alten Dateien im Verzeichnis "#1" erstellen und die Dateien anschließend löschen.',
'If you enter values for the part number and / or part description then only those bins containing parts whose part number or part description match your input will be shown.' => 'Wenn Sie für die Artikelnummer und / oder die Beschreibung etwas eingeben, so werden nur die Lagerplätze angezeigt, in denen Waren eingelagert sind, die Ihre Suchbegriffe enthalten.',
'If you see this message, you most likely just setup your LX-Office and haven\'t added any entry types. If this is the case, the option is accessible for administrators in the System menu.' => 'Wenn Sie diese Meldung sehen haben Sie wahrscheinlich ein frisches LX-Office Setup und noch keine Buchungsgruppen eingerichtet. Ein Administrator kann dies im Systemmenü erledigen.',
- 'If you want to change any of these parameters then press the "Back" button, edit the file "config/authentication.pl" and login into the admin module again.' => 'Wenn Sie einen der Parameter ändern wollen, so drücken Sie auf den "Zurück"-Button, bearbeiten Sie die Datei "config/authentication.pl", und melden Sie sich erneut im Administrationsbereich an.',
+ 'If you want to change any of these parameters then press the "Back" button, edit the file "config/lx_office.conf" and login into the admin module again.' => 'Wenn Sie einen der Parameter ändern wollen, so drücken Sie auf den "Zurück"-Button, bearbeiten Sie die Datei "config/lx_office.conf", und melden Sie sich erneut im Administrationsbereich an.',
'If you want to delete such a dataset you have to edit the user(s) that are using the dataset in question and have them use another dataset.' => 'Wenn Sie eine solche Datenbank löschen wollen, so müssen Sie zuerst die Benutzer bearbeiten, die die fragliche Datenbank benutzen, und sie so ändern, dass sie eine andere Datenbank benutzen.',
'If you want to set up the authentication database yourself then log in to the administration panel. Lx-Office will then create the database and tables for you.' => 'Wenn Sie die Authentifizierungsdatenbank selber einrichten wollen, so melden Sie sich an der Administrationsoberfläche an. Lx-Office wird dann die Datenbank und die Tabellen für Sie anlegen.',
'If you yourself want to upgrade the installation then please read the file "doc/UPGRADE" and follow the steps outlined in this file.' => 'Wenn Sie selber die Aktualisierung bzw. Einrichtung übernehmen wollen, so lesen Sie bitte die Datei "doc/UPGRADE" und folgen Sie den dort beschriebenen Schritten.',
'No group has been selected, or the group does not exist anymore.' => 'Es wurde keine Gruppe ausgewählt, oder die Gruppe wurde in der Zwischenzeit gelöscht.',
'No groups have been added yet.' => 'Es wurden noch keine Gruppen angelegt.',
'No licenses were found that match the search criteria.' => 'Es wurden keine Lizenzen gefunden, auf die die Suchkriterien zutreffen.',
- 'No or an unknown authenticantion module specified in "config/authentication.pl".' => 'Es wurde kein oder ein unbekanntes Authentifizierungsmodul in "config/authentication.pl" angegeben.',
+ 'No or an unknown authenticantion module specified in "config/lx_office.conf".' => 'Es wurde kein oder ein unbekanntes Authentifizierungsmodul in "config/lx_office.conf" angegeben.',
'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
'No prices will be updated because no prices have been entered.' => 'Es werden keine Preise aktualisiert, weil keine gültigen Preisänderungen eingegeben wurden.',
'No problems were recognized.' => 'Es wurden keine Probleme gefunden.',
'The AP transaction #1 has been deleted.' => 'Die Kreditorenbuchung #1 wurde gelöscht.',
'The AR transaction #1 has been deleted.' => 'Die Debitorenbuchung #1 wurde gelöscht.',
'The GL transaction #1 has been deleted.' => 'Die Dialogbuchung #1 wurde gelöscht.',
- 'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
+ 'The LDAP server "#1:#2" is unreachable. Please check config/lx_office.conf.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte überprüfen Sie die Angaben in config/lx_office.conf.',
'The SEPA export has been created.' => 'Der SEPA-Export wurde erstellt',
'The SEPA strings have been saved.' => 'Die bei SEPA-Überweisungen verwendeten Begriffe wurden gespeichert.',
'The access rights have been saved.' => 'Die Zugriffsrechte wurden gespeichert.',
'The account 3804 will not be added automatically.' => 'Das Konto 3804 wird nicht automatisch hinzugefügt.',
'The assembly has been created.' => 'Das Erzeugnis wurde hergestellt.',
'The assistant could not find anything wrong with #1. Maybe the problem has been solved in the meantime.' => 'Der Korrekturassistent konnte kein Problem bei #1 feststellen. Eventuell wurde das Problem in der Zwischenzeit bereits behoben.',
- 'The authentication configuration file "config/authentication.pl" does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' => 'Die Konfigurationsdatei für die Authentifizierung "config/authentication.pl" wurde nicht gefunden. Diese Lx-Office-Installation wurde vermutlich noch nicht vollständig aktualisiert oder eingerichtet. Bitte wenden Sie sich an Ihren Administrator.',
+ 'The authentication configuration file "config/lx_office.conf" does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' => 'Die Konfigurationsdatei für die Authentifizierung "config/lx_office.conf" wurde nicht gefunden. Diese Lx-Office-Installation wurde vermutlich noch nicht vollständig aktualisiert oder eingerichtet. Bitte wenden Sie sich an Ihren Administrator.',
'The authentication database is not reachable at the moment. Either it hasn\'t been set up yet or the database server might be down. Please contact your administrator.' => 'Die Authentifizierungsdatenbank kann momentan nicht erreicht werden. Entweder wurde sie noch nicht eingerichtet, oder der Datenbankserver antwortet nicht. Bitte wenden Sie sich an Ihren Administrator.',
'The available options depend on the varibale type:' => 'Die verfügbaren Optionen hängen vom Variablentypen ab:',
'The backup you upload here has to be a file created with "pg_dump -o -Ft".' => 'Die von Ihnen hochzuladende Sicherungsdatei muss mit dem Programm und den Parametern "pg_dump -o -Ft" erstellt worden sein.',
'The base unit does not exist.' => 'Die Basiseinheit existiert nicht.',
'The base unit relations must not contain loops (e.g. by saying that unit A\'s base unit is B, B\'s base unit is C and C\'s base unit is A) in row %d.' => 'Die Beziehungen der Einheiten dürfen keine Schleifen beinhalten (z.B. wenn gesagt wird, dass Einheit As Basiseinheit B, Bs Basiseinheit C und Cs Basiseinheit A ist) in Zeile %d.',
'The columns "Dunning Duedate", "Total Fees" and "Interest" show data for the previous dunning created for this invoice.' => 'Die Spalten "Zahlbar bis", "Kumulierte Gebühren" und "Zinsen" zeigen Daten der letzten für diese Rechnung erzeugten Mahnung.',
- 'The config file "config/authentication.pl" contained invalid Perl code:' => 'Die Konfigurationsdatei "config/authentication.pl" enthielt ungütigen Perl-Code:',
- 'The config file "config/authentication.pl" was not found.' => 'Die Konfigurationsdatei "config/authentication.pl" wurde nicht gefunden.',
- 'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.' => 'Die Verbindung zum LDAP-Server kann nicht verschlüsselt werden (Fehler bei SSL/TLS-Initialisierung). Bitte überprüfen Sie die Angaben in config/authentication.pl.',
+ 'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/lx_office.conf.' => 'Die Verbindung zum LDAP-Server kann nicht verschlüsselt werden (Fehler bei SSL/TLS-Initialisierung). Bitte überprüfen Sie die Angaben in config/lx_office.conf.',
'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
'The connection to the database could not be established.' => 'Die Verbindung zur Datenbank konnte nicht hergestellt werden.',
'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
'close' => 'schließen',
'closed' => 'geschlossen',
'companylogo_subtitle' => 'Lizenziert für',
- 'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Das Schlüsselwort "DB_config" fehlt.',
- 'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Der Schlüssel "LDAP_config" fehlt.',
- 'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Fehlende Parameter in "DB_config". Benötigte Parameter sind "host", "db" und "user".',
- 'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Fehlende Parameter in "LDAP_config". Benötigt werden "host", "attribute" und "base_dn".',
+ 'config/lx_office.conf: Key "DB_config" is missing.' => 'config/lx_office.conf: Das Schlüsselwort "DB_config" fehlt.',
+ 'config/lx_office.conf: Key "authentication/ldap" is missing.' => 'config/lx_office.conf: Der Schlüssel "authentication/ldap" fehlt.',
+ 'config/lx_office.conf: Missing parameters in "authentication/database". Required parameters are "host", "db" and "user".' => 'config/lx_office.conf: Fehlende Parameter in "authentication/database". Benötigte Parameter sind "host", "db" und "user".',
+ 'config/lx_office.conf: Missing parameters in "authentication/ldap". Required parameters are "host", "attribute" and "base_dn".' => 'config/lx_office.conf: Fehlende Parameter in "authentication/ldap". Benötigt werden "host", "attribute" und "base_dn".',
'continue' => 'weiter',
'correction' => 'Korrektur',
'cp_greeting to cp_gender migration' => 'Datenumwandlung von Titel nach Geschlecht (cp_greeting to cp_gender)',
function anmelden($login=false,$pwd=false) {
ini_set("gc_maxlifetime","3600");
- $tmp = @file_get_contents("../config/authentication.pl");
- preg_match("/'db'[ ]*=> '(.+)'/",$tmp,$hits);
- $dbname=$hits[1];
- preg_match("/'password'[ ]*=> '(.+)'/",$tmp,$hits);
- $dbpasswd=$hits[1];
- preg_match("/'user'[ ]*=> '(.+)'/",$tmp,$hits);
- $dbuser=$hits[1];
- preg_match("/'host'[ ]*=> '(.+)'/",$tmp,$hits);
- $dbhost=($hits[1])?$hits[1]:"localhost";
- preg_match("/'port'[ ]*=> '?(.+)'?/",$tmp,$hits);
- $dbport=($hits[1])?$hits[1]:"5432";
- preg_match("/[ ]*\\\$self->\{cookie_name\}[ ]*=[ ]*'(.+)'/",$tmp,$hits);
- $cookiename=$hits[1];
+ if (file_exists("../config/lx_office.conf")) {
+ $lxo = fopen("../config/lx_office.conf","r");
+ } else if (file_exists("../config/lx_office.conf.default")) {
+ $lxo = fopen("../config/lx_office.conf.default","r");
+ } else {
+ return false;
+ }
+ $dbsec = false;
+ $tmp = fgets($lxo,512);
+ while (!feof($lxo)) {
+ if (preg_match("/^[\s]*#/",$tmp)) {
+ $tmp = fgets($lxo,512);
+ continue;
+ }
+ if ($dbsec) {
+ preg_match("/db[ ]*= (.+)/",$tmp,$hits);
+ if ($hits[1]) $dbname=$hits[1];
+ preg_match("/password[ ]*= (.+)/",$tmp,$hits);
+ if ($hits[1]) $dbpasswd=$hits[1];
+ preg_match("/user[ ]*= (.+)/",$tmp,$hits);
+ if ($hits[1]) $dbuser=$hits[1];
+ preg_match("/host[ ]*= (.+)/",$tmp,$hits);
+ if ($hits[1]) $dbhost=($hits[1])?$hits[1]:"localhost";
+ preg_match("/port[ ]*= (.+)/",$tmp,$hits);
+ if ($hits[1]) $dbport=($hits[1])?$hits[1]:"5432";
+ if (preg_match("/\[[a-z]+/",$tmp)) break;
+ $tmp = fgets($lxo,512);
+ continue;
+ }
+ preg_match("/[ ]*cookie_name[ ]*=[ ]*(.+)/",$tmp,$hits);
+ if ($hits[1]) $cookiename=$hits[1];
+ if (preg_match("!\[authentication/database\]!",$tmp)) $dbsec = true;
+ $tmp = fgets($lxo,512);
+ }
if (!$cookiename) $cookiename='lx_office_erp_session_id';
+ $cookie=$_COOKIE[$cookiename];
if ($login) {
$auth=authuser($dbhost,$dbport,$dbuser,$dbpasswd,$dbname,false,$login,$pwd);
} else {
--- /dev/null
+package File::Slurp;
+
+use strict;
+
+use Carp ;
+use POSIX qw( :fcntl_h ) ;
+use Fcntl qw( :DEFAULT ) ;
+use Symbol ;
+
+my $is_win32 = $^O =~ /win32/i ;
+
+# Install subs for various constants that aren't set in older perls
+# (< 5.005). Fcntl on old perls uses Exporter to define subs without a
+# () prototype These can't be overridden with the constant pragma or
+# we get a prototype mismatch. Hence this less than aesthetically
+# appealing BEGIN block:
+
+BEGIN {
+ unless( eval { defined SEEK_SET() } ) {
+ *SEEK_SET = sub { 0 };
+ *SEEK_CUR = sub { 1 };
+ *SEEK_END = sub { 2 };
+ }
+
+ unless( eval { defined O_BINARY() } ) {
+ *O_BINARY = sub { 0 };
+ *O_RDONLY = sub { 0 };
+ *O_WRONLY = sub { 1 };
+ }
+
+ unless ( eval { defined O_APPEND() } ) {
+
+ if ( $^O =~ /olaris/ ) {
+ *O_APPEND = sub { 8 };
+ *O_CREAT = sub { 256 };
+ *O_EXCL = sub { 1024 };
+ }
+ elsif ( $^O =~ /inux/ ) {
+ *O_APPEND = sub { 1024 };
+ *O_CREAT = sub { 64 };
+ *O_EXCL = sub { 128 };
+ }
+ elsif ( $^O =~ /BSD/i ) {
+ *O_APPEND = sub { 8 };
+ *O_CREAT = sub { 512 };
+ *O_EXCL = sub { 2048 };
+ }
+ }
+}
+
+# print "OS [$^O]\n" ;
+
+# print "O_BINARY = ", O_BINARY(), "\n" ;
+# print "O_RDONLY = ", O_RDONLY(), "\n" ;
+# print "O_WRONLY = ", O_WRONLY(), "\n" ;
+# print "O_APPEND = ", O_APPEND(), "\n" ;
+# print "O_CREAT ", O_CREAT(), "\n" ;
+# print "O_EXCL ", O_EXCL(), "\n" ;
+
+use base 'Exporter' ;
+use vars qw( %EXPORT_TAGS @EXPORT_OK $VERSION @EXPORT ) ;
+
+%EXPORT_TAGS = ( 'all' => [
+ qw( read_file write_file overwrite_file append_file read_dir ) ] ) ;
+
+@EXPORT = ( @{ $EXPORT_TAGS{'all'} } );
+@EXPORT_OK = qw( slurp ) ;
+
+$VERSION = '9999.13';
+
+*slurp = \&read_file ;
+
+sub read_file {
+
+ my( $file_name, %args ) = @_ ;
+
+# set the buffer to either the passed in one or ours and init it to the null
+# string
+
+ my $buf ;
+ my $buf_ref = $args{'buf_ref'} || \$buf ;
+ ${$buf_ref} = '' ;
+
+ my( $read_fh, $size_left, $blk_size ) ;
+
+# check if we are reading from a handle (glob ref or IO:: object)
+
+ if ( ref $file_name ) {
+
+# slurping a handle so use it and don't open anything.
+# set the block size so we know it is a handle and read that amount
+
+ $read_fh = $file_name ;
+ $blk_size = $args{'blk_size'} || 1024 * 1024 ;
+ $size_left = $blk_size ;
+
+# DEEP DARK MAGIC. this checks the UNTAINT IO flag of a
+# glob/handle. only the DATA handle is untainted (since it is from
+# trusted data in the source file). this allows us to test if this is
+# the DATA handle and then to do a sysseek to make sure it gets
+# slurped correctly. on some systems, the buffered i/o pointer is not
+# left at the same place as the fd pointer. this sysseek makes them
+# the same so slurping with sysread will work.
+
+ eval{ require B } ;
+
+ if ( $@ ) {
+
+ @_ = ( \%args, <<ERR ) ;
+Can't find B.pm with this Perl: $!.
+That module is needed to slurp the DATA handle.
+ERR
+ goto &_error ;
+ }
+
+ if ( B::svref_2object( $read_fh )->IO->IoFLAGS & 16 ) {
+
+# set the seek position to the current tell.
+
+ sysseek( $read_fh, tell( $read_fh ), SEEK_SET ) ||
+ croak "sysseek $!" ;
+ }
+ }
+ else {
+
+# a regular file. set the sysopen mode
+
+ my $mode = O_RDONLY ;
+
+#printf "RD: BINARY %x MODE %x\n", O_BINARY, $mode ;
+
+# open the file and handle any error
+
+ $read_fh = gensym ;
+ unless ( sysopen( $read_fh, $file_name, $mode ) ) {
+ @_ = ( \%args, "read_file '$file_name' - sysopen: $!");
+ goto &_error ;
+ }
+
+ binmode($read_fh, $args{'binmode'}) if $args{'binmode'};
+
+# get the size of the file for use in the read loop
+
+ $size_left = -s $read_fh ;
+
+ unless( $size_left ) {
+
+ $blk_size = $args{'blk_size'} || 1024 * 1024 ;
+ $size_left = $blk_size ;
+ }
+ }
+
+# infinite read loop. we exit when we are done slurping
+
+ while( 1 ) {
+
+# do the read and see how much we got
+
+ my $read_cnt = sysread( $read_fh, ${$buf_ref},
+ $size_left, length ${$buf_ref} ) ;
+
+ if ( defined $read_cnt ) {
+
+# good read. see if we hit EOF (nothing left to read)
+
+ last if $read_cnt == 0 ;
+
+# loop if we are slurping a handle. we don't track $size_left then.
+
+ next if $blk_size ;
+
+# count down how much we read and loop if we have more to read.
+ $size_left -= $read_cnt ;
+ last if $size_left <= 0 ;
+ next ;
+ }
+
+# handle the read error
+
+ @_ = ( \%args, "read_file '$file_name' - sysread: $!");
+ goto &_error ;
+ }
+
+# fix up cr/lf to be a newline if this is a windows text file
+
+ ${$buf_ref} =~ s/\015\012/\n/g if $is_win32 && !$args{'binmode'} ;
+
+# this is the 5 returns in a row. each handles one possible
+# combination of caller context and requested return type
+
+ my $sep = $/ ;
+ $sep = '\n\n+' if defined $sep && $sep eq '' ;
+
+# caller wants to get an array ref of lines
+
+# this split doesn't work since it tries to use variable length lookbehind
+# the m// line works.
+# return [ split( m|(?<=$sep)|, ${$buf_ref} ) ] if $args{'array_ref'} ;
+ return [ length(${$buf_ref}) ? ${$buf_ref} =~ /(.*?$sep|.+)/sg : () ]
+ if $args{'array_ref'} ;
+
+# caller wants a list of lines (normal list context)
+
+# same problem with this split as before.
+# return split( m|(?<=$sep)|, ${$buf_ref} ) if wantarray ;
+ return length(${$buf_ref}) ? ${$buf_ref} =~ /(.*?$sep|.+)/sg : ()
+ if wantarray ;
+
+# caller wants a scalar ref to the slurped text
+
+ return $buf_ref if $args{'scalar_ref'} ;
+
+# caller wants a scalar with the slurped text (normal scalar context)
+
+ return ${$buf_ref} if defined wantarray ;
+
+# caller passed in an i/o buffer by reference (normal void context)
+
+ return ;
+}
+
+sub write_file {
+
+ my $file_name = shift ;
+
+# get the optional argument hash ref from @_ or an empty hash ref.
+
+ my $args = ( ref $_[0] eq 'HASH' ) ? shift : {} ;
+
+ my( $buf_ref, $write_fh, $no_truncate, $orig_file_name, $data_is_ref ) ;
+
+# get the buffer ref - it depends on how the data is passed into write_file
+# after this if/else $buf_ref will have a scalar ref to the data.
+
+ if ( ref $args->{'buf_ref'} eq 'SCALAR' ) {
+
+# a scalar ref passed in %args has the data
+# note that the data was passed by ref
+
+ $buf_ref = $args->{'buf_ref'} ;
+ $data_is_ref = 1 ;
+ }
+ elsif ( ref $_[0] eq 'SCALAR' ) {
+
+# the first value in @_ is the scalar ref to the data
+# note that the data was passed by ref
+
+ $buf_ref = shift ;
+ $data_is_ref = 1 ;
+ }
+ elsif ( ref $_[0] eq 'ARRAY' ) {
+
+# the first value in @_ is the array ref to the data so join it.
+
+ ${$buf_ref} = join '', @{$_[0]} ;
+ }
+ else {
+
+# good old @_ has all the data so join it.
+
+ ${$buf_ref} = join '', @_ ;
+ }
+
+# see if we were passed a open handle to spew to.
+
+ if ( ref $file_name ) {
+
+# we have a handle. make sure we don't call truncate on it.
+
+ $write_fh = $file_name ;
+ $no_truncate = 1 ;
+ }
+ else {
+
+# spew to regular file.
+
+ if ( $args->{'atomic'} ) {
+
+# in atomic mode, we spew to a temp file so make one and save the original
+# file name.
+ $orig_file_name = $file_name ;
+ $file_name .= ".$$" ;
+ }
+
+# set the mode for the sysopen
+
+ my $mode = O_WRONLY | O_CREAT ;
+ $mode |= O_APPEND if $args->{'append'} ;
+ $mode |= O_EXCL if $args->{'no_clobber'} ;
+
+#printf "WR: BINARY %x MODE %x\n", O_BINARY, $mode ;
+
+# open the file and handle any error.
+
+ $write_fh = gensym ;
+ unless ( sysopen( $write_fh, $file_name, $mode ) ) {
+ @_ = ( $args, "write_file '$file_name' - sysopen: $!");
+ goto &_error ;
+ }
+
+ binmode($write_fh, $args->{'binmode'}) if $args->{'binmode'};
+ }
+
+ sysseek( $write_fh, 0, SEEK_END ) if $args->{'append'} ;
+
+
+#print 'WR before data ', unpack( 'H*', ${$buf_ref}), "\n" ;
+
+# fix up newline to write cr/lf if this is a windows text file
+
+ if ( $is_win32 && !$args->{'binmode'} ) {
+
+# copy the write data if it was passed by ref so we don't clobber the
+# caller's data
+ $buf_ref = \do{ my $copy = ${$buf_ref}; } if $data_is_ref ;
+ ${$buf_ref} =~ s/\n/\015\012/g ;
+ }
+
+#print 'after data ', unpack( 'H*', ${$buf_ref}), "\n" ;
+
+# get the size of how much we are writing and init the offset into that buffer
+
+ my $size_left = length( ${$buf_ref} ) ;
+ my $offset = 0 ;
+
+# loop until we have no more data left to write
+
+ do {
+
+# do the write and track how much we just wrote
+
+ my $write_cnt = syswrite( $write_fh, ${$buf_ref},
+ $size_left, $offset ) ;
+
+ unless ( defined $write_cnt ) {
+
+# the write failed
+ @_ = ( $args, "write_file '$file_name' - syswrite: $!");
+ goto &_error ;
+ }
+
+# track much left to write and where to write from in the buffer
+
+ $size_left -= $write_cnt ;
+ $offset += $write_cnt ;
+
+ } while( $size_left > 0 ) ;
+
+# we truncate regular files in case we overwrite a long file with a shorter file
+# so seek to the current position to get it (same as tell()).
+
+ truncate( $write_fh,
+ sysseek( $write_fh, 0, SEEK_CUR ) ) unless $no_truncate ;
+
+ close( $write_fh ) ;
+
+# handle the atomic mode - move the temp file to the original filename.
+
+ rename( $file_name, $orig_file_name ) if $args->{'atomic'} ;
+
+ return 1 ;
+}
+
+# this is for backwards compatibility with the previous File::Slurp module.
+# write_file always overwrites an existing file
+
+*overwrite_file = \&write_file ;
+
+# the current write_file has an append mode so we use that. this
+# supports the same API with an optional second argument which is a
+# hash ref of options.
+
+sub append_file {
+
+# get the optional args hash ref
+ my $args = $_[1] ;
+ if ( ref $args eq 'HASH' ) {
+
+# we were passed an args ref so just mark the append mode
+
+ $args->{append} = 1 ;
+ }
+ else {
+
+# no args hash so insert one with the append mode
+
+ splice( @_, 1, 0, { append => 1 } ) ;
+ }
+
+# magic goto the main write_file sub. this overlays the sub without touching
+# the stack or @_
+
+ goto &write_file
+}
+
+# basic wrapper around opendir/readdir
+
+sub read_dir {
+
+ my ($dir, %args ) = @_;
+
+# this handle will be destroyed upon return
+
+ local(*DIRH);
+
+# open the dir and handle any errors
+
+ unless ( opendir( DIRH, $dir ) ) {
+
+ @_ = ( \%args, "read_dir '$dir' - opendir: $!" ) ;
+ goto &_error ;
+ }
+
+ my @dir_entries = readdir(DIRH) ;
+
+ @dir_entries = grep( $_ ne "." && $_ ne "..", @dir_entries )
+ unless $args{'keep_dot_dot'} ;
+
+ return @dir_entries if wantarray ;
+ return \@dir_entries ;
+}
+
+# error handling section
+#
+# all the error handling uses magic goto so the caller will get the
+# error message as if from their code and not this module. if we just
+# did a call on the error code, the carp/croak would report it from
+# this module since the error sub is one level down on the call stack
+# from read_file/write_file/read_dir.
+
+
+my %err_func = (
+ 'carp' => \&carp,
+ 'croak' => \&croak,
+) ;
+
+sub _error {
+
+ my( $args, $err_msg ) = @_ ;
+
+# get the error function to use
+
+ my $func = $err_func{ $args->{'err_mode'} || 'croak' } ;
+
+# if we didn't find it in our error function hash, they must have set
+# it to quiet and we don't do anything.
+
+ return unless $func ;
+
+# call the carp/croak function
+
+ $func->($err_msg) ;
+
+# return a hard undef (in list context this will be a single value of
+# undef which is not a legal in-band value)
+
+ return undef ;
+}
+
+1;
+__END__
+
+=head1 NAME
+
+File::Slurp - Efficient Reading/Writing of Complete Files
+
+=head1 SYNOPSIS
+
+ use File::Slurp;
+
+ my $text = read_file( 'filename' ) ;
+ my @lines = read_file( 'filename' ) ;
+
+ write_file( 'filename', @lines ) ;
+
+ use File::Slurp qw( slurp ) ;
+
+ my $text = slurp( 'filename' ) ;
+
+
+=head1 DESCRIPTION
+
+This module provides subs that allow you to read or write entire files
+with one simple call. They are designed to be simple to use, have
+flexible ways to pass in or get the file contents and to be very
+efficient. There is also a sub to read in all the files in a
+directory other than C<.> and C<..>
+
+These slurp/spew subs work for files, pipes and
+sockets, and stdio, pseudo-files, and DATA.
+
+=head2 B<read_file>
+
+This sub reads in an entire file and returns its contents to the
+caller. In list context it will return a list of lines (using the
+current value of $/ as the separator including support for paragraph
+mode when it is set to ''). In scalar context it returns the entire
+file as a single scalar.
+
+ my $text = read_file( 'filename' ) ;
+ my @lines = read_file( 'filename' ) ;
+
+The first argument to C<read_file> is the filename and the rest of the
+arguments are key/value pairs which are optional and which modify the
+behavior of the call. Other than binmode the options all control how
+the slurped file is returned to the caller.
+
+If the first argument is a file handle reference or I/O object (if ref
+is true), then that handle is slurped in. This mode is supported so
+you slurp handles such as C<DATA>, C<STDIN>. See the test handle.t
+for an example that does C<open( '-|' )> and child process spews data
+to the parant which slurps it in. All of the options that control how
+the data is returned to the caller still work in this case.
+
+NOTE: as of version 9999.06, read_file works correctly on the C<DATA>
+handle. It used to need a sysseek workaround but that is now handled
+when needed by the module itself.
+
+You can optionally request that C<slurp()> is exported to your code. This
+is an alias for read_file and is meant to be forward compatible with
+Perl 6 (which will have slurp() built-in).
+
+The options are:
+
+=head3 binmode
+
+If you set the binmode option, then the file will be slurped in binary
+mode.
+
+ my $bin_data = read_file( $bin_file, binmode => ':raw' ) ;
+ # Or
+ my $bin_data = read_file( $bin_file, binmode => ':utf8' ) ;
+
+=head3 array_ref
+
+If this boolean option is set, the return value (only in scalar
+context) will be an array reference which contains the lines of the
+slurped file. The following two calls are equivalent:
+
+ my $lines_ref = read_file( $bin_file, array_ref => 1 ) ;
+ my $lines_ref = [ read_file( $bin_file ) ] ;
+
+=head3 scalar_ref
+
+If this boolean option is set, the return value (only in scalar
+context) will be an scalar reference to a string which is the contents
+of the slurped file. This will usually be faster than returning the
+plain scalar.
+
+ my $text_ref = read_file( $bin_file, scalar_ref => 1 ) ;
+
+=head3 buf_ref
+
+You can use this option to pass in a scalar reference and the slurped
+file contents will be stored in the scalar. This can be used in
+conjunction with any of the other options.
+
+ my $text_ref = read_file( $bin_file, buf_ref => \$buffer,
+ array_ref => 1 ) ;
+ my @lines = read_file( $bin_file, buf_ref => \$buffer ) ;
+
+=head3 blk_size
+
+You can use this option to set the block size used when slurping from an already open handle (like \*STDIN). It defaults to 1MB.
+
+ my $text_ref = read_file( $bin_file, blk_size => 10_000_000,
+ array_ref => 1 ) ;
+
+=head3 err_mode
+
+You can use this option to control how read_file behaves when an error
+occurs. This option defaults to 'croak'. You can set it to 'carp' or
+to 'quiet to have no error handling. This code wants to carp and then
+read abother file if it fails.
+
+ my $text_ref = read_file( $file, err_mode => 'carp' ) ;
+ unless ( $text_ref ) {
+
+ # read a different file but croak if not found
+ $text_ref = read_file( $another_file ) ;
+ }
+
+ # process ${$text_ref}
+
+=head2 B<write_file>
+
+This sub writes out an entire file in one call.
+
+ write_file( 'filename', @data ) ;
+
+The first argument to C<write_file> is the filename. The next argument
+is an optional hash reference and it contains key/values that can
+modify the behavior of C<write_file>. The rest of the argument list is
+the data to be written to the file.
+
+ write_file( 'filename', {append => 1 }, @data ) ;
+ write_file( 'filename', {binmode => ':raw' }, $buffer ) ;
+
+As a shortcut if the first data argument is a scalar or array
+reference, it is used as the only data to be written to the file. Any
+following arguments in @_ are ignored. This is a faster way to pass in
+the output to be written to the file and is equivilent to the
+C<buf_ref> option. These following pairs are equivilent but the pass
+by reference call will be faster in most cases (especially with larger
+files).
+
+ write_file( 'filename', \$buffer ) ;
+ write_file( 'filename', $buffer ) ;
+
+ write_file( 'filename', \@lines ) ;
+ write_file( 'filename', @lines ) ;
+
+If the first argument is a file handle reference or I/O object (if ref
+is true), then that handle is slurped in. This mode is supported so
+you spew to handles such as \*STDOUT. See the test handle.t for an
+example that does C<open( '-|' )> and child process spews data to the
+parant which slurps it in. All of the options that control how the
+data is passes into C<write_file> still work in this case.
+
+C<write_file> returns 1 upon successfully writing the file or undef if
+it encountered an error.
+
+The options are:
+
+=head3 binmode
+
+If you set the binmode option, then the file will be written in binary
+mode.
+
+ write_file( $bin_file, {binmode => ':raw'}, @data ) ;
+ # Or
+ write_file( $bin_file, {binmode => ':utf8'}, @data ) ;
+
+=head3 buf_ref
+
+You can use this option to pass in a scalar reference which has the
+data to be written. If this is set then any data arguments (including
+the scalar reference shortcut) in @_ will be ignored. These are
+equivilent:
+
+ write_file( $bin_file, { buf_ref => \$buffer } ) ;
+ write_file( $bin_file, \$buffer ) ;
+ write_file( $bin_file, $buffer ) ;
+
+=head3 atomic
+
+If you set this boolean option, the file will be written to in an
+atomic fashion. A temporary file name is created by appending the pid
+($$) to the file name argument and that file is spewed to. After the
+file is closed it is renamed to the original file name (and rename is
+an atomic operation on most OS's). If the program using this were to
+crash in the middle of this, then the file with the pid suffix could
+be left behind.
+
+=head3 append
+
+If you set this boolean option, the data will be written at the end of
+the current file.
+
+ write_file( $file, {append => 1}, @data ) ;
+
+C<write_file> croaks if it cannot open the file. It returns true if it
+succeeded in writing out the file and undef if there was an
+error. (Yes, I know if it croaks it can't return anything but that is
+for when I add the options to select the error handling mode).
+
+=head3 no_clobber
+
+If you set this boolean option, an existing file will not be overwritten.
+
+ write_file( $file, {no_clobber => 1}, @data ) ;
+
+=head3 err_mode
+
+You can use this option to control how C<write_file> behaves when an
+error occurs. This option defaults to 'croak'. You can set it to
+'carp' or to 'quiet' to have no error handling other than the return
+value. If the first call to C<write_file> fails it will carp and then
+write to another file. If the second call to C<write_file> fails, it
+will croak.
+
+ unless ( write_file( $file, { err_mode => 'carp', \$data ) ;
+
+ # write a different file but croak if not found
+ write_file( $other_file, \$data ) ;
+ }
+
+=head2 overwrite_file
+
+This sub is just a typeglob alias to write_file since write_file
+always overwrites an existing file. This sub is supported for
+backwards compatibility with the original version of this module. See
+write_file for its API and behavior.
+
+=head2 append_file
+
+This sub will write its data to the end of the file. It is a wrapper
+around write_file and it has the same API so see that for the full
+documentation. These calls are equivilent:
+
+ append_file( $file, @data ) ;
+ write_file( $file, {append => 1}, @data ) ;
+
+=head2 read_dir
+
+This sub reads all the file names from directory and returns them to
+the caller but C<.> and C<..> are removed by default.
+
+ my @files = read_dir( '/path/to/dir' ) ;
+
+It croaks if it cannot open the directory.
+
+In a list context C<read_dir> returns a list of the entries in the
+directory. In a scalar context it returns an array reference which has
+the entries.
+
+=head3 keep_dot_dot
+
+If this boolean option is set, C<.> and C<..> are not removed from the
+list of files.
+
+ my @all_files = read_dir( '/path/to/dir', keep_dot_dot => 1 ) ;
+
+=head2 EXPORT
+
+ read_file write_file overwrite_file append_file read_dir
+
+=head2 SEE ALSO
+
+An article on file slurping in extras/slurp_article.pod. There is
+also a benchmarking script in extras/slurp_bench.pl.
+
+=head2 BUGS
+
+If run under Perl 5.004, slurping from the DATA handle will fail as
+that requires B.pm which didn't get into core until 5.005.
+
+=head1 AUTHOR
+
+Uri Guttman, E<lt>uri@stemsystems.comE<gt>
+
+=cut
next if $useline =~ /^most and offer that in a small/; # YAML
my $version = Module::CoreList->first_release($module);
- $modules{$module} = $supplied{$module} ? 'included'
- : $version ? sprintf '%2.6f', $version
- : is_documented($module) ? 'required'
- : '!missing';
+ $modules{$module} = { status => $supplied{$module} ? 'included'
+ : $version ? sprintf '%2.6f', $version
+ : is_documented($module) ? 'required'
+ : '!missing',
+ files => $uselines{$useline},
+ };
# build requirement tree
for my $file (@{ $uselines{$useline} }) {
$changed = 0;
for my $src_module (keys %requires) {
for my $dst_module (keys %{ $requires{$src_module} }) {
- if ( $modules{$src_module} =~ /^required/
- && $modules{$dst_module} eq '!missing') {
- $modules{$dst_module} = "required"; # . ", via $src_module";
+ if ( $modules{$src_module}
+ && $modules{$dst_module}
+ && $modules{$src_module}->{status} =~ /^required/
+ && $modules{$dst_module}->{status} eq '!missing') {
+ $modules{$dst_module}->{status} = "required"; # . ", via $src_module";
$changed = 1;
}
}
}
}
-print sprintf "%8s : %s", color_text($modules{$_}), $_
+print sprintf "%8s : %s (%s)", color_text($modules{$_}->{status}), $_, join(' ', @{ $modules{$_}->{files} || [] })
for sort {
- $modules{$a} cmp $modules{$b}
- || $a cmp $b
+ $modules{$a}->{status} cmp $modules{$b}->{status}
+ || $a cmp $b
} keys %modules;
sub modulize {
</table>
<p>
- [% 'If you want to change any of these parameters then press the "Back" button, edit the file "config/authentication.pl" and login into the admin module again.' | $T8 %]
+ [% 'If you want to change any of these parameters then press the "Back" button, edit the file "config/lx_office.conf" and login into the admin module again.' | $T8 %]
</p>
<form method="post" action="admin.pl">
<p><b>[% 'Error!' | $T8 %]</b></p>
- <p>[% 'The authentication configuration file "config/authentication.pl" does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' | $T8 %]</p>
+ <p>[% 'The authentication configuration file "config/lx_office.conf" does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' | $T8 %]</p>
<p>[% 'If you yourself want to upgrade the installation then please read the file "doc/UPGRADE" and follow the steps outlined in this file.' | $T8 %]</p>