getMessage()); } $filter = "(&(uid=" . $id . ")(objectClass=ldapPublicKey))"; $attributes = array("ldapPublicKey"); if ($ldapconn) { $ldap_bind = ldap_bind($ldapconn, $ini['binddn'], $ini["bindpw"]); if ($ldap_bind) { $res = ldap_search($ldapconn, $ini['basedn'], $filter, $attributes); $info = ldap_get_entries($ldapconn, $res); if ($info["count"] > 0) { $keys = array(); // if user has ssh keys if (isset($info[0]["sshpublickey"])) { for ($i = 0; $i < $info[0]["sshpublickey"]["count"]; $i++) { $key = $info[0]["sshpublickey"][$i]; $key_name = array(); preg_match("/\S+@\S+/", $key, $key_name); $keys[] = [$key_name[0] => $key]; } return $keys; } } } } return false; } function add_ssh_key($id, $new_key) { $ini = parse_ini_file('../includes/config.ini'); try { $ldapconn = ldap_connect($ini['hostname'], $ini['port']); ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0); } catch (Exception $e) { die ('ERROR: ' . $e->getMessage()); } if (!$ldapconn) { return false; } $ldap_bind = @ldap_bind($ldapconn, $ini['binddn'], $ini["bindpw"]); if (!$ldap_bind) { return false; } $dn = "uid=" . $id . "," . $ini['basedn']; $entry['sshPublicKey'] = $new_key; $res = @ldap_mod_add($ldapconn, $dn, $entry); return $res; } function del_ssh_key($id, $key) { $ini = parse_ini_file('../includes/config.ini'); try { $ldapconn = ldap_connect($ini['hostname'], $ini['port']); ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0); } catch (Exception $e) { die ('ERROR: ' . $e->getMessage()); } if (!$ldapconn) { return false; } $ldap_bind = @ldap_bind($ldapconn, $ini['binddn'], $ini["bindpw"]); if (!$ldap_bind) { return false; } $dn = "uid=" . $id . "," . $ini['basedn']; $entry["sshPublicKey"] = $key; $res = @ldap_mod_del($ldapconn, $dn, $entry); return $res; }