Handle hostnames with upper-case letters
[webmin.git] / ldap-server / edit_ldif.cgi
1 #!/usr/local/bin/perl
2 # Show local LDAP server configuration options, from LDIF format config
3
4 require './ldap-server-lib.pl';
5 &local_ldap_server() == 1 || &error($text{'slapd_elocal'});
6 $access{'slapd'} || &error($text{'slapd_ecannot'});
7 &ui_print_header(undef, $text{'slapd_title'}, "", "slapd");
8 $conf = &get_ldif_config();
9 @tds = ( "width=30%" );
10
11 print &ui_form_start("save_ldif.cgi", "post");
12 print &ui_hidden_table_start($text{'slapd_header'}, "width=100%", 2,
13                              "basic", 1,\@tds);
14
15 # Top-level DN
16 $defdb = &get_default_db();
17 $suffix = &find_ldif_value("olcSuffix", $conf, $defdb);
18 print &ui_table_row($text{'slapd_suffix'},
19                     &ui_textbox('suffix', $suffix, 60));
20
21 # Admin login
22 $rootdn = &find_ldif_value("olcRootDN", $conf, $defdb);
23 print &ui_table_row($text{'slapd_rootdn'},
24                     &ui_textbox('rootdn', $rootdn, 60));
25
26 # Admin password
27 $rootpw = &find_ldif_value("olcRootPW", $conf, $defdb);
28 if ($rootpw =~ /^{crypt}(.*)/i) {
29         $rootmode = 1;
30         $rootcrypt = $1;
31         }
32 elsif ($rootpw =~ /^{sha1}(.*)/i) {
33         $rootmode = 2;
34         $rootsha1 = $1;
35         }
36 elsif ($rootpw =~ /^{[a-z0-9]+}(.*)/i) {
37         $rootmode = 3;
38         $rootenc = $rootpw;
39         }
40 else {
41         $rootmode = 0;
42         $rootplain = $rootpw;
43         }
44
45 # Current password
46 print &ui_table_row($text{'slapd_rootpw'},
47                     $rootmode == 1 ? &text('slapd_root1', $rootcrypt) :
48                     $rootmode == 2 ? &text('slapd_root2', $rootsha1) :
49                     $rootmode == 3 ? &text('slapd_root3', $rootenc) :
50                     $rootplain eq '' ? $text{'slapd_noroot'} :
51                                      $rootplain);
52
53 # Set to new
54 print &ui_table_row($text{'slapd_rootchange'},
55                     &ui_opt_textbox('rootchange', undef, 30,
56                         $text{'slapd_leave'}, $text{'slapd_set'}));
57
58 # Cache size
59 $dbcachesize = &find_ldif_value("olcDbCachesize", $conf, $defdb);
60 print &ui_table_row($text{'slapd_dbcachesize'},
61             &ui_opt_textbox("dbcachesize", $dbcachesize, 10, $text{'default'}));
62
63 # Size limit
64 $sizelimit = &find_ldif_value("olcSizeLimit", $conf, $defdb);
65 print &ui_table_row($text{'slapd_sizelimit'},
66     &ui_opt_textbox('sizelimit', $sizelimit, 10, $text{'default'}." (500)"));
67
68 print &ui_hidden_table_end("basic");
69
70 # SSL section
71 print &ui_hidden_table_start($text{'slapd_header2'}, "width=100%", 2,
72                              "ssl", 0, \@tds);
73
74 # Protocols to serve
75 if (&can_get_ldap_protocols()) {
76         $protos = &get_ldap_protocols();
77         @protos = sort { $a cmp $b } keys %$protos;
78         print &ui_table_row($text{'slapd_protos'},
79                 &ui_select("protos",
80                            [ grep { $protos->{$_} } @protos ],
81                            [ map { [ $_, $text{'slapd_'.$_} ] } @protos ],
82                            scalar(@protos), 1));
83         }
84
85 # SSL file options
86 $anycert = 0;
87 $confdb = &get_config_db();
88 foreach $s ([ 'olcTLSCertificateFile', 'cert' ],
89             [ 'olcTLSCertificateKeyFile', 'key' ],
90             [ 'olcTLSCACertificateFile', 'ca' ]) {
91         $cert = &find_ldif_value($s->[0], $conf, $confdb);
92         print &ui_table_row($text{'slapd_'.$s->[1]},
93                 &ui_opt_textbox($s->[1], $cert, 50, $text{'slapd_none'}).
94                 &file_chooser_button($s->[1]));
95         $anycert = 1 if ($cert);
96         }
97
98 print &ui_hidden_table_end("ssl");
99 print &ui_form_end([ [ undef, $text{'save'} ] ]);
100
101 # SSL setup button
102 print &ui_hr();
103 print &ui_buttons_start();
104 print &ui_buttons_row("gencert_form.cgi", $text{'slapd_gencert'},
105                       $text{'slapd_gencertdesc'}.
106                       ($anycert ? "<b>$text{'slapd_gencertwarn'}</b>" : ""));
107 print &ui_buttons_end();
108
109 &ui_print_footer("", $text{'index_return'});
110