#!/usr/bin/perl # Show the LDAP server's data tree require './ldap-server-lib.pl'; &ui_print_header(undef, $text{'browser_title'}, "", "browser"); $access{'browser'} || &error($text{'browser_ecannot'}); &ReadParse(); # Connect to LDAP server, or die trying $ldap = &connect_ldap_db(); if (!ref($ldap)) { print &text('browser_econn', $ldap),"<p>\n"; &ui_print_footer("", $text{'index_return'}); exit; } # Work out the base (current navigation level) if ($in{'goparent'}) { $base = $in{'parent'}; } elsif (!$in{'base'}) { $base = &get_ldap_base(); } else { $base = $in{'base'}; } # Show current base (with option to change), and parent button $formno = 0; print &ui_form_start("edit_browser.cgi"),"\n"; print "<b>$text{'browser_base'}</b>\n"; print &ui_textbox("base", $base, 60)," ",&ui_submit($text{'browser_ok'}),"\n"; $parent = $base; $parent =~ s/^[^,]+,\s*//; if ($parent =~ /\S/) { print &ui_hidden("parent", $parent),"\n"; print " \n"; print &ui_submit($text{'browser_parent'}, "goparent"),"\n"; } print &ui_form_end(); $formno++; # Show list of objects under the base, and its attributes if ($in{'search'}) { $filter = '(|'.join('', map { '('.$_.'=*'.$in{'search'}.'*)' } @search_attrs).')'; } else { $filter = '(objectClass=*)'; } $rv = $ldap->search(base => $base, filter => $filter, scope => 'one', sizelimit => int($config{'browse_max'}), ); @subs = sort { lc($a->dn()) cmp lc($b->dn()) } $rv->all_entries; if ($rv->code && !@subs) { # Search failed print &text('browser_esearch', $rv->error),"<p>\n"; } else { # Start tabs for layout $in{'mode'} ||= @subs || $in{'search'} ? "subs" : "attrs"; @tabs = ( [ 'subs', $text{'browser_subs'} ], [ 'attrs', $text{'browser_attrs'} ] ); print &ui_tabs_start(\@tabs, "browser", $in{'mode'}, 1); # Show sub-objects, if any print &ui_tabs_start_tab("browser", "subs"); @crlinks = ( "<a href='add_form.cgi?base=". &urlize($base)."'>$text{'browser_sadd'}</a>" ); if ($rv->code || ($in{'search'} && !@subs)) { # Too many to show if (@subs && $in{'search'}) { # Too many results print &text('browser_toomany2', "<i>$in{'search'}</i>", $config{'browse_max'}),"<p>\n"; } elsif (@subs) { # No search, many sub-objects print &text('browser_toomany', $config{'browse_max'}),"<p>\n"; } else { # No matches print &text('browser_nomatch', "<i>$in{'search'}</i>"),"<p>\n"; } &show_search_form($text{'browser_search'}); print &ui_links_row(\@crlinks); } elsif (@subs) { # Search result, so show form if ($in{'search'}) { &show_search_form($text{'browser_search2'}); } # Can show some @tds = ( "width=90%", "width=10%" ); if ($in{'rename'}) { # Rename form print &ui_form_start("rename_browser.cgi", "post"); print &ui_hidden("old", $in{'rename'}); } else { # Delete sub-objects form print &ui_form_start("sdelete_browser.cgi", "post"); @tds = ( "width=5", @tds ); @links = ( &select_all_link("d", $formno), &select_invert_link("d", $formno), @crlinks, ); } print &ui_hidden("base", $base); print &ui_links_row(\@links); print &ui_columns_start([ $in{'rename'} ? ( ) : ( "" ), $text{'browser_sub'}, $text{'browser_acts'}, ], 100, 0, \@tds); foreach $dn (@subs) { $link = "<a href='edit_browser.cgi?base=". &urlize($dn->dn())."'>". &html_escape($dn->dn())."</a>"; @alinks = ( "<a href='edit_browser.cgi?base=". &urlize($base)."&mode=subs". "&rename=".&urlize($dn->dn()). "'>$text{'browser_rename'}</a>" ); if ($in{'rename'} eq $dn->dn()) { # Renaming this one @alinks = ( "<a href='edit_browser.cgi?base=". &urlize($base)."&mode=subs". "'>$text{'browser_cancel'}</a>" ); print &ui_columns_row([ &ui_textbox("rename", $dn->dn(), 70), &ui_links_row(\@alinks) ], \@tds); } elsif ($in{'rename'}) { # Display, no delete print &ui_columns_row([ $link,&ui_links_row(\@alinks) ], \@tds); } else { # Rename or select for delete print &ui_checked_columns_row([ $link, &ui_links_row(\@alinks) ], \@tds, "d", $dn->dn()); } } print &ui_columns_end(); print &ui_links_row(\@links); print &ui_form_end([ [ undef, $in{'rename'} ? $text{'browser_rsave'} : $text{'browser_sdelete'} ] ]); $formno++; } else { # Nothing to show print "<i>$text{'browser_subnone'}</i><p>\n"; print &ui_links_row(\@crlinks); } print &ui_tabs_end_tab(); # Show attributes print &ui_tabs_start_tab("browser", "attrs"); $rv2 = $ldap->search(base => $base, filter => '(objectClass=*)', scope => 'base'); ($bo) = $rv2->all_entries; @attrs = sort { lc($a) cmp lc($b) } $bo->attributes(); if (@attrs) { # Show all attributes @tds = ( "valign=top width=45%", "valign=top width=45%", "width=5% valign=top" ); if ($in{'edit'}) { # Editing form print &ui_form_start("save_browser.cgi", "post"); print &ui_hidden("edit", $in{'edit'}); } elsif ($in{'add'}) { # Add form print &ui_form_start("add_browser.cgi", "post"); } else { # Deleting form print &ui_form_start("delete_browser.cgi", "post"); @links = ( &select_all_link("d", $formno), &select_invert_link("d", $formno), "<a href='edit_browser.cgi?base=". &urlize($bo->dn())."&add=1&mode=attrs'>". "$text{'browser_add'}</a>", "<a href='add_form.cgi?base=". &urlize($base)."&clone=1'>". "$text{'browser_clone'}</a>" ); @tds = ( "width=5", @tds ); } print &ui_hidden("base", $bo->dn()); print &ui_hidden("mode", "attrs"); print &ui_links_row(\@links); print &ui_columns_start([ $in{'edit'} || $in{'add'} ? ( ) : ( "" ), $text{'browser_name'}, $text{'browser_value'}, $text{'browser_acts'} ], 100, 0, \@tds); foreach $a (@attrs) { @v = $bo->get_value($a); @alinks = ( "<a href='edit_browser.cgi?base=". &urlize($bo->dn())."&mode=attrs". "&edit=$a'>$text{'browser_edit'}</a>" ); @cols = ( $a, join(", ", @v), &ui_links_row(\@alinks), ); if ($in{'edit'} eq $a) { # Edit this one @alinks = ( "<a href='edit_browser.cgi?base=". &urlize($bo->dn())."&mode=attrs". "'>$text{'browser_cancel'}</a>" ); print &ui_columns_row([ $a, &ui_textarea("value", join("\n", @v), scalar(@v)+1, 60), &ui_links_row(\@alinks), ], \@tds); } elsif ($in{'edit'} || $in{'add'}) { # Display, no delete print &ui_columns_row(\@cols, \@tds); } else { # Edit or select for delete print &ui_checked_columns_row( \@cols, \@tds, "d", $a); } } if ($in{'add'}) { # Show row to add an attribute @alinks = ( "<a href='edit_browser.cgi?base=". &urlize($bo->dn())."&mode=attrs". "'>$text{'browser_cancel'}</a>" ); print &ui_columns_row([ &ui_textbox("add", undef, 20), &ui_textbox("value", undef, 60), &ui_links_row(\@alinks), ], \@tds); } print &ui_columns_end(); print &ui_links_row(\@links); print &ui_form_end([ [ undef, $in{'edit'} ? $text{'save'} : $in{'add'} ? $text{'create'} : $text{'browser_delete'} ] ]); $formno++; } else { print "<i>$text{'browser_attrnone'}</i><p>\n"; print &ui_links_row(\@links); } print &ui_tabs_end_tab(); print &ui_tabs_end(1); } $ldap->disconnect(); &ui_print_footer("", $text{'index_return'}); sub show_search_form { local ($msg) = @_; print &ui_form_start("edit_browser.cgi"); print &ui_hidden("base", $base); print "<b>$msg</b>\n"; print &ui_textbox("search", $in{'search'}, 40),"\n"; print &ui_submit($text{'browser_sok'}),"<p>\n"; print &ui_form_end(); $formno++; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 849 B | 0644 |
|
acl_form.cgi | File | 3.76 KB | 0755 |
|
acl_save.cgi | File | 2.9 KB | 0755 |
|
acl_security.pl | File | 558 B | 0755 |
|
add.cgi | File | 1.24 KB | 0755 |
|
add_browser.cgi | File | 1.01 KB | 0755 |
|
add_form.cgi | File | 1.98 KB | 0755 |
|
apply.cgi | File | 256 B | 0755 |
|
backup_config.pl | File | 787 B | 0755 |
|
bootup.cgi | File | 640 B | 0755 |
|
cgi_args.pl | File | 349 B | 0755 |
|
config | File | 116 B | 0644 |
|
config-ALL-linux | File | 230 B | 0644 |
|
config-AlmaLinux-7.0-ALL | File | 255 B | 0644 |
|
config-Amazon-Linux-2-ALL | File | 255 B | 0644 |
|
config-CentOS-Linux-7.0-ALL | File | 255 B | 0644 |
|
config-CentOS-Stream-Linux-8.0-ALL | File | 255 B | 0644 |
|
config-CloudLinux-8.0-ALL | File | 255 B | 0644 |
|
config-Oracle-Linux-8.0-ALL | File | 255 B | 0644 |
|
config-Redhat-Enterprise-Linux-6.0-6.9 | File | 261 B | 0644 |
|
config-Redhat-Enterprise-Linux-7.0-ALL | File | 255 B | 0644 |
|
config-Rocky-Linux-7.0-ALL | File | 255 B | 0644 |
|
config-Scientific-Linux-6.0-6.9 | File | 258 B | 0644 |
|
config-Scientific-Linux-7.0-ALL | File | 255 B | 0644 |
|
config-Ubuntu-Linux-8.10-ALL | File | 235 B | 0644 |
|
config-debian-linux-6.0-ALL | File | 231 B | 0644 |
|
config-debian-linux-ALL-5.9 | File | 234 B | 0644 |
|
config-freebsd | File | 289 B | 0644 |
|
config-freebsd-8-ALL | File | 318 B | 0644 |
|
config-mandrake-linux | File | 250 B | 0644 |
|
config-openSUSE-Linux-15.0-ALL | File | 247 B | 0644 |
|
config-pardus-linux | File | 170 B | 0644 |
|
config-redhat-linux | File | 261 B | 0644 |
|
config-redhat-linux-24.0-ALL | File | 280 B | 0644 |
|
config-solaris | File | 214 B | 0644 |
|
config-suse-linux | File | 253 B | 0644 |
|
config-syno-linux | File | 230 B | 0644 |
|
config-turbo-linux | File | 250 B | 0644 |
|
config.info | File | 989 B | 0644 |
|
config.info.ca | File | 1.09 KB | 0644 |
|
config.info.de | File | 1.14 KB | 0644 |
|
config.info.fr | File | 0 B | 0644 |
|
config.info.nl | File | 1.02 KB | 0644 |
|
config.info.no | File | 1.03 KB | 0644 |
|
config.info.pt_BR | File | 1.08 KB | 0644 |
|
create.cgi | File | 2.68 KB | 0755 |
|
defaultacl | File | 65 B | 0644 |
|
delete_acls.cgi | File | 964 B | 0755 |
|
delete_browser.cgi | File | 1.01 KB | 0755 |
|
down_acl.cgi | File | 1.26 KB | 0755 |
|
down_schema.cgi | File | 649 B | 0755 |
|
edit_acl.cgi | File | 1.75 KB | 0755 |
|
edit_browser.cgi | File | 7.61 KB | 0755 |
|
edit_create.cgi | File | 1.05 KB | 0755 |
|
edit_ldif.cgi | File | 3.25 KB | 0755 |
|
edit_schema.cgi | File | 2.13 KB | 0755 |
|
edit_sfile.cgi | File | 932 B | 0755 |
|
edit_slapd.cgi | File | 3.77 KB | 0755 |
|
gencert.cgi | File | 1.23 KB | 0755 |
|
gencert_form.cgi | File | 1.25 KB | 0755 |
|
gencert_ldif.cgi | File | 1.24 KB | 0755 |
|
index.cgi | File | 3.51 KB | 0755 |
|
install_check.pl | File | 469 B | 0755 |
|
ldap-server-lib.pl | File | 24.04 KB | 0755 |
|
log_parser.pl | File | 1.71 KB | 0755 |
|
module.info | File | 160 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 119 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 158 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 165 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 173 B | 0644 |
|
module.info.ca | File | 105 B | 0644 |
|
module.info.ca.auto | File | 25 B | 0644 |
|
module.info.cs | File | 0 B | 0644 |
|
module.info.cs.auto | File | 108 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 113 B | 0644 |
|
module.info.de | File | 95 B | 0644 |
|
module.info.de.auto | File | 23 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 191 B | 0644 |
|
module.info.es | File | 0 B | 0644 |
|
module.info.es.auto | File | 126 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 125 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 152 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 126 B | 0644 |
|
module.info.fr | File | 0 B | 0644 |
|
module.info.fr.auto | File | 123 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 144 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 138 B | 0644 |
|
module.info.hu | File | 0 B | 0644 |
|
module.info.hu.auto | File | 129 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 114 B | 0644 |
|
module.info.ja | File | 0 B | 0644 |
|
module.info.ja.auto | File | 146 B | 0644 |
|
module.info.ko | File | 0 B | 0644 |
|
module.info.ko.auto | File | 114 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 128 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 116 B | 0644 |
|
module.info.ms | File | 96 B | 0644 |
|
module.info.ms.auto | File | 24 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 121 B | 0644 |
|
module.info.nl | File | 20 B | 0644 |
|
module.info.nl.auto | File | 88 B | 0644 |
|
module.info.no | File | 20 B | 0644 |
|
module.info.no.auto | File | 90 B | 0644 |
|
module.info.pl | File | 0 B | 0644 |
|
module.info.pl.auto | File | 116 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 121 B | 0644 |
|
module.info.pt_BR | File | 25 B | 0644 |
|
module.info.pt_BR.auto | File | 105 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 127 B | 0644 |
|
module.info.ru | File | 26 B | 0644 |
|
module.info.ru.auto | File | 142 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 111 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 128 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 105 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 228 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 118 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 169 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 171 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 156 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 110 B | 0644 |
|
module.info.zh_TW | File | 0 B | 0644 |
|
module.info.zh_TW.auto | File | 119 B | 0644 |
|
perms.cgi | File | 432 B | 0755 |
|
prefs.info | File | 33 B | 0644 |
|
rename_browser.cgi | File | 1.04 KB | 0755 |
|
save_browser.cgi | File | 1.04 KB | 0755 |
|
save_ldif.cgi | File | 2.43 KB | 0755 |
|
save_schema.cgi | File | 727 B | 0755 |
|
save_sfile.cgi | File | 607 B | 0755 |
|
save_slapd.cgi | File | 2.78 KB | 0755 |
|
sdelete_browser.cgi | File | 936 B | 0755 |
|
start.cgi | File | 251 B | 0755 |
|
stop.cgi | File | 246 B | 0755 |
|
up_acl.cgi | File | 1.26 KB | 0755 |
|
up_schema.cgi | File | 649 B | 0755 |
|
view_sfile.cgi | File | 374 B | 0755 |
|