forked from webmin/webmin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.cgi
executable file
·128 lines (116 loc) · 3.51 KB
/
index.cgi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/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', "<tt>$config{'slapd'}</tt>",
"../config.cgi?$module_name"),"<p>\n";
&foreign_require("software", "software-lib.pl");
$lnk = &software::missing_install_link("openldap",
$text{'index_openldap'},
"../$module_name/", $module_info{'desc'});
print $lnk,"<p>\n" if ($lnk);
&ui_print_footer("/", $text{'index'});
return;
}
elsif ($local == -2) {
# Installed but config missing
&ui_print_endpage(&text('index_econfig',
"<tt>$config{'config_file'}</tt>",
"../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 "<center>\n";
print &ui_form_start("perms.cgi");
print &text('index_permsdesc', "<tt>$config{'data_dir'}</tt>",
"<tt>$config{'ldap_user'}</tt>"),"<p>\n";
print &ui_form_end([ [ undef, $text{'index_perms'} ] ]);
print "</center>\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 "<center>\n";
print &ui_form_start("create.cgi");
print &ui_hidden('mode', 1);
print &ui_hidden('dn', $base);
print &text('index_setupdesc', "<tt>$base</tt>"),"<p>\n";
print &ui_form_end([ [ undef, $text{'index_setup'} ] ]);
print "</center>\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'});