[! use strict; use Proxmox::Form; use Proxmox::Utils; use Proxmox::Config::System; use Proxmox::ConfigServer; use Proxmox::HTMLTable; use Proxmox::HTMLDropDown; use Proxmox::License; !] [- my $system_cfg = $fdat{__system_config}; my $lic = $system_cfg->{license}; my $out = ""; if (!($lic->can_ldap())) { $out .= "
" . __("LDAP support is not enabled.") . "
" . __("Please upgrade your license to enable LDAP.") . "
"; print OUT $out; return; } my $url = $req_rec->uri; my $frm = Proxmox::Form->new (\%fdat); my $conn = Proxmox::ConfigClient::connect (); my $serverid; if ($udat{action} eq 'delete') { if ($udat{AM} eq 'w') { $conn->ldap_delete ($fdat {aa}); } else { $udat{popup_error} = Proxmox::Utils::msg ('nowr'); } } if ($frm->submit) { if ($udat{AM} eq 'w') { my $err; my $data; $data->{mode} = $fdat{ldapmode}; $data->{server1} = $fdat{server1}; $data->{server2} = $fdat{server2}; $data->{basedn} = Proxmox::Utils::trim ($fdat{basedn});; $data->{binddn} = Proxmox::Utils::trim ($fdat{binddn}); $data->{bindpw} = $fdat{bindpw}; $data->{port} = Proxmox::Utils::trim ($fdat{port}); $data->{groupbasedn} = Proxmox::Utils::trim ($fdat{groupbasedn}); $data->{mailattr} = Proxmox::Utils::trim ($fdat{mailattr}); $data->{accountattr} = Proxmox::Utils::trim ($fdat{accountattr}); $data->{filter} = Proxmox::Utils::trim ($fdat{filter}); eval { die __("invalid port number specified") . "\n" if $data->{port} !~ m/^\d{0,5}$/; if ($fdat{mode} == 2) { my $name = $fdat{name}; Proxmox::Utils::check_field (__("Profile Name"), $name, 'NOTEMPTY', 'CHAREXCL:[^\w\s]'); $name =~ s/\s/_/g; $serverid = "server_$name"; if ($system_cfg->get('ldap', $serverid)) { die __("Profile already exists - please choose another name") . "\n"; } } else { $serverid = $fdat{aa}; } }; $err = $@; if (!$err) { $system_cfg->set('ldap', $serverid, $data); $system_cfg->save(); $fdat{mode} = 1; $fdat{aa} = $serverid; my $res = $conn->ldap_status (2, $serverid)->result; if ($res->{errors}) { $err = $res->{errors}; } elsif (!$res->{mcount}) { $err = __("unable to find valid email addresses"); } } if ($err) { $udat{popup_error} = $err; $fdat{edit} = $fdat{mode}; } } else { $udat{popup_error} = Proxmox::Utils::msg ('nowr'); } } my $ldapinfo = $conn->ldap_status (1)->result; if ($fdat{edit} == 1 || ($fdat{edit} == 2 && $udat{AM} eq 'w')) { my $data; if ($fdat{edit} == 1) { $frm->add_element("section1", "hsection", undef, __("Edit LDAP profile")); $serverid = $fdat{aa}; $data = $system_cfg->get('ldap', $serverid); my $name = $serverid; $name =~ s/^server_//; $name =~ s/_/ /g; $frm->add_element("name", "rotext", $name, __("Profile Name")); } else { $data = {}; $frm->add_element("section1", "hsection", undef, __("Create new LDAP profile")); $frm->add_element("name", "text", '', __("Profile Name")); } $frm->add_element('ldapmode', "dropdown", $data->{mode} || 'ldap', __("LDAP Protocol"), [['ldap', 'LDAP'], ['ldaps', 'LDAPS']]); $frm->add_element("server1", "ip", $data->{server1} || "127.0.0.1", __("First LDAP Server")); $frm->add_element("server2", "ip", $data->{server2} || "127.0.0.1", __("Second LDAP Server")); $frm->add_element("binddn", "text", $data->{binddn} || '', __("Username")); $frm->add_element("bindpw", "password", $data->{bindpw} || '', __("Password")); $frm->add_element("aspace", "html", "