#!/usr/local/bin/perl
# Show icons for LDAP server configuration options
require './ldap-server-lib.pl';
# Try to get OpenLDAP version
$ver = &get_ldap_server_version();
$vermsg = &text('index_version', $ver) if ($ver);
# Show title
&ui_print_header(undef, $module_info{'desc'}, "", "intro", 1, 1, 0,
undef, undef, undef, $vermsg);
# Is it installed and usable?
$local = &local_ldap_server();
if ($local == -1) {
# Expected, but not installed
print &text('index_eslapd', "$config{'slapd'}",
"../config.cgi?$module_name"),"
\n";
&foreign_require("software", "software-lib.pl");
$lnk = &software::missing_install_link("openldap",
$text{'index_openldap'},
"../$module_name/", $module_info{'desc'});
print $lnk,"
\n" if ($lnk);
&ui_print_footer("/", $text{'index'});
return;
}
elsif ($local == -2) {
# Installed but config missing
&ui_print_endpage(&text('index_econfig',
"$config{'config_file'}",
"../config.cgi?$module_name"));
}
elsif ($local == 0) {
# Can we connect?
$ldap = &connect_ldap_db();
if (!ref($ldap)) {
&ui_print_endpage(&text('index_econnect', $ldap,
"../config.cgi?$module_name"));
}
}
# Check if ldap directory permissions are correct
$p = &check_ldap_permissions();
if (!$p) {
print "
\n";
print &ui_form_start("perms.cgi");
print &text('index_permsdesc', "$config{'data_dir'}",
"$config{'ldap_user'}"),"\n";
print &ui_form_end([ [ undef, $text{'index_perms'} ] ]);
print "
\n";
print &ui_hr();
}
# Check if need to init new install, by creating the root DN
$ldap = &connect_ldap_db();
if ($p && ref($ldap) && $access{'browser'}) {
$conf = &get_config();
$base = &find_value("suffix", $conf);
$rv = $ldap->search(base => $base,
filter => '(objectClass=*)',
scope => 'base');
if ($rv->code) {
# Not found .. offer to init
print "\n";
print &ui_form_start("create.cgi");
print &ui_hidden('mode', 1);
print &ui_hidden('dn', $base);
print &text('index_setupdesc', "$base"),"\n";
print &ui_form_end([ [ undef, $text{'index_setup'} ] ]);
print "
\n";
print &ui_hr();
}
}
# Work out icons
if ($local) {
# All local server icons
@pages = ( &get_config_type() == 1 ? "slapd" : "ldif",
"schema", "acl", "browser", "create" );
}
else {
# Just browser and DN creator
@pages = ( "browser", "create" );
}
@pages = grep { $access{$_} } @pages;
@links = map { "edit_".$_.".cgi" } @pages;
@titles = map { $text{$_."_title"} } @pages;
@icons = map { "images/$_.gif" } @pages;
&icons_table(\@links, \@titles, \@icons, 5);
if ($local == 1) {
# Show stop/restart buttons
print &ui_hr();
print &ui_buttons_start();
if (&is_ldap_server_running()) {
if ($access{'apply'}) {
print &ui_buttons_row("apply.cgi", $text{'index_apply'},
$text{'index_applydesc'});
}
if ($access{'start'}) {
print &ui_buttons_row("stop.cgi", $text{'index_stop'},
$text{'index_stopdesc'});
}
}
else {
if ($access{'start'}) {
print &ui_buttons_row("start.cgi", $text{'index_start'},
$text{'index_startdesc'});
}
}
# Start at boot button
if (&foreign_check("init") && $access{'start'}) {
&foreign_require("init", "init-lib.pl");
$iname = $config{'init_name'} || $module_name;
$st = &init::action_status($iname);
print &ui_buttons_row("bootup.cgi", $text{'index_boot'},
$text{'index_bootdesc'},
undef,
&ui_yesno_radio("boot",$st == 2 ? 1 : 0));
}
print &ui_buttons_end();
}
&ui_print_footer("/", $text{'index'});