ssh.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace SshModel;
  3. function get_ssh_keys($id) {
  4. global $ini;
  5. $filter = "(&(uid=" . $id . ")(objectClass=ldapPublicKey))";
  6. $attributes = array("ldapPublicKey");
  7. $ldap_bind = bind_as_operator();
  8. if ($ldap_bind[0]) {
  9. $res = ldap_search($ldap_bind[1], $ini['basedn'], $filter, $attributes);
  10. $info = ldap_get_entries($ldap_bind[1], $res);
  11. if ($info["count"] > 0) {
  12. $keys = array();
  13. // if user has ssh keys
  14. if (isset($info[0]["sshpublickey"])) {
  15. for ($i = 0; $i < $info[0]["sshpublickey"]["count"]; $i++) {
  16. $key = $info[0]["sshpublickey"][$i];
  17. $key_name = array();
  18. preg_match("/\S+@\S+/", $key, $key_name);
  19. $keys[] = [$key_name[0] => $key];
  20. }
  21. return $keys;
  22. }
  23. }
  24. }
  25. return false;
  26. }
  27. function add_ssh_key($id, $new_key) {
  28. global $ini;
  29. $ldap_bind = bind_as_operator();
  30. if (!$ldap_bind[0]) {
  31. return false;
  32. }
  33. $dn = "uid=" . $id . "," . $ini['basedn'];
  34. $entry['sshPublicKey'] = $new_key;
  35. $res = @ldap_mod_add($ldap_bind[1], $dn, $entry);
  36. return $res;
  37. }
  38. function del_ssh_key($id, $key) {
  39. global $ini;
  40. $ldap_bind = bind_as_operator();
  41. if (!$ldap_bind[0]) {
  42. return false;
  43. }
  44. $dn = "uid=" . $id . "," . $ini['basedn'];
  45. $entry["sshPublicKey"] = $key;
  46. $res = @ldap_mod_del($ldap_bind[1], $dn, $entry);
  47. return $res;
  48. }