Handle hostnames with upper-case letters
[webmin.git] / ldap-server / add_form.cgi
1 #!/usr/local/bin/perl
2 # Show a form for adding a new object
3
4 require './ldap-server-lib.pl';
5 &ReadParse();
6 $ldap = &connect_ldap_db();
7 ref($ldap) || &error($ldap);
8
9 if ($in{'clone'}) {
10         # Get original object
11         $rv = $ldap->search(base => $in{'base'},
12                             filter => '(objectClass=*)',
13                             scope => 'base');
14         if (!$rv || $rv->code) {
15                 &error(&text('oadd_eget', "<tt>$in{'base'}</tt>",
16                                           &ldap_error($rv)));
17                 }
18         ($bo) = $rv->all_entries;
19         if ($in{'base'} =~ /^([^=]+)=([^,]+)[, ]*(.*)$/) {
20                 $dn1 = $1;
21                 $dn2 = $2;
22                 $base = $3;
23                 }
24         @classes = $bo->get_value("objectClass");
25         foreach $a ($bo->attributes()) {
26                 next if ($a eq "objectClass");
27                 local @av = $bo->get_value($a);
28                 push(@attrs, [ $a, @av == 1 ? $av[0] : \@av ]);
29                 }
30         push(@attrs, [ ], [ ]);
31         }
32 else {
33         # Under some object
34         $base = $in{'base'};
35         $dn1 = "cn";
36         @attrs = ( [ ], [ ], [ ], [ ], [ ] );
37         }
38
39 &ui_print_header(undef, $text{'oadd_title'}, "", "oadd");
40
41 print &ui_form_start("add.cgi", "post");
42 print &ui_table_start($text{'oadd_header'}, undef, 2);
43
44 # New object
45 print &ui_table_row($text{'oadd_dn'},
46         &ui_textbox("dn1", $dn1, 10)."=".&ui_textbox("dn2", $dn2, 40));
47
48 # Parent object
49 if ($base) {
50         print &ui_hidden("base", $base);
51         print &ui_table_row($text{'oadd_base'},
52                 "<tt>$base</tt>");
53         }
54
55 # Object classes
56 print &ui_table_row($text{'oadd_classes'},
57         &ui_textarea("classes", join("\n", @classes), 4, 40));
58
59 # Other attributes
60 $i = 0;
61 $atable = &ui_columns_start([ $text{'browser_name'}, $text{'browser_value'} ]);
62 foreach $a (@attrs) {
63         $atable .= &ui_columns_row([
64                 &ui_textbox("name_$i", $a->[0], 30),
65                 ref($a->[1]) ?
66                         &ui_textarea("value_$i", join("\n", @{$a->[1]}),
67                                      scalar(@{$a->[1]}), 50) :
68                         &ui_textbox("value_$i", $a->[1], 50),
69                 ]);
70         $i++;
71         }
72 $atable .= &ui_columns_end();
73 print &ui_table_row($text{'oadd_attrs'},
74         $atable);
75
76 print &ui_table_end();
77 print &ui_form_end([ [ undef, $text{'create'} ] ]);
78
79 &ui_print_footer("edit_browser.cgi?base=".&urlize($in{'base'}),
80                  $text{'browser_return'});