Adressbook of «YourMegaCompanyName»

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

License

afteroot/ldap-phonebook

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Контакты делятся на два типа:

Импортированные контакты нельзя редактировать, их можно только скрывать из списка и указывать расположение на карте. Все изменения нужно производить в AD, после чего провести повторную синхронизацию, при которой будут добавлены новые и обновлены существующие контакты.

  • Импорт контактов и фото из AD
  • Показать/скрыть любой контакт
  • Добавлять, редактировать и удалять локальные контакты
  • Указать расположение контакта на плане офиса. Удобно для ориентирования в большой компании
  • Экспорт в .xml файл для использования в приложении PhoneBook для Windows
  • Бекап всех контактов с координатами в XML
  • Восстановление контактов из XML бекапа
  • Скрытие всех контактов, которые были отключены в AD

Карты хранятся в файлах templ/map4.png

Подключить модули расширения в php.ini или скомпилировать PHP с поддержкой LDAP

  • Открыть в браузере install.php и заполнить предлагаемые параметры
  • Заменить изображения карт templ/map4.png своими схемами

Дополнительные настройки в inc.config.php (опционально)

Для включения LDAP аутентификации в LDAP_ADMIN_GROUP_DN нужно указать группу AD через которую предоставляется доступ:

// Группа в AD с пользователями имеющими доступ на редактирование справочника define('LDAP_ADMIN_GROUP_DN', 'CN=Phonebook admin,OU=Admin Roles,OU=Groups,OU=Company,DC=domain,DC=local'); 

Изменить количество и названия карт:

define('PB_MAPS_COUNT', 5); $map_names = array('Floor 1', 'Floor 3', 'Floor 6', 'Floor 14', 'Floor 25'); 

Изменения в новых версиях

  • Параметры LDAP_HOST и LDAP_PORT заменены на LDAP_URI. Пример: ldaps://dc-01 ldap://dc-02:389
  • При обнолении пароли у учётных записей будут заменены на ‘admin’, т.к. функция PASSWORD больше не поддерживается MySQL. Их требуется сменить.
  • Теперь аутентифакация LDAP и локальная работают параллельно. Для активации LDAP аутентификации в LDAP_ADMIN_GROUP_DN нужно указать группу доступа AD.

This service import users info from LDAP/AD to MySQL DB

screenshot

screenshot

Show selected contact on map

screenshot

screenshot

screenshot

screenshot

screenshot

screenshot

Corporate phone directory with contacts displayed on the office map

Contacts are divided into two types:

Imported contacts can not be edited, you can only hide them from the list and specify the location on the map. All that needs to be done in AD, then re-synchronize, which will be added new and updated.

  • Import contacts and photos from AD
  • Show / hide any contact
  • Add, edit and delete local contacts
  • Indicate the location of the contact on the office plan. Convenient for orientation in a large company
  • Export to an .xml file for use in the Phonebook application for Windows
  • Backup all contacts with coordinates to XML file
  • Restore all contacts from XML file
  • Hide all contacts that was disabled in AD

Maps are stored in the files templ / map 4 .png

Plug-ins in php.ini or compile PHP with LDAP support

  • Open in the browser install.php and fill in the proposed parameters
  • Replace the images of the maps templ / map 3 .png with their schemes

Источник

Создаём WEB адресный справочник PHP + LDAP

Так случилось, что у (относительно) большой кампании было много отдалённых офисов, в которых находилось приличное количество пользователей. Все офисы соединены в одну сеть с общим доменом, каждый офис был определён в Active Directory (далее по тексту AD) как Organization Unit (OU), в котором уже заводились пользователи.

Необходимо было дать пользователям возможность быстро и без особенных усилий получать контактные данные необходимого сотрудника из AD, а системных администраторов освободить от рутины редактирования текстового файла, который играл роль адресной книги.

Готовых подходящих вариантов для решения поставленной задачи не нашлось, поэтому пришлось делать всё своими руками и головой.

Начнём с того, что для начала нужно определиться что использовать, это просто — итоговый справочник должен быть доступен всем пользователям домена посредством браузера. Первое, что приходит на ум это PHP в связке с ldap, их и будем использовать. Большим плюсом использования PHP я считаю его относительную простоту — любой хоть немного понимающий системный администратор сможет внести, при необходимости, нужные правки в код, не особенно напрягаясь.

Итак, начнём. для начала зададим параметры подключения к домену:

$srv ="SERVER"; $srv_domain ="DOMAIN.COM"; $srv_login ="USERNAME@".$srv_domain; $srv_password ="PASSWORD"; 

Переменная $doscript нужна для того, чтобы хранить значение — определили ли мы OU, в котором будем искать пользователей или нет. Если не нашлось совпадений, перечисленных в «switch-case», то $doscript=false, главная часть скрипта выполняться не будет, а будет выведена стартовая страница «main_table.html» (о ней расскажу в самом конце).

Если же мы определили OU, тогда приступаем к дальнейшим действиям: начинаем рисовать пользователю страницу справочника:

Включаем стили для более приятного внешнего вида (да, их можно было подключить как css-файл, однако некоторые версии IE не хотят воспринимать стили, заданные таким образом, поэтому приходится писать прямо в скрипт):

 * a a:hover #bold #table,tr,td /* Нечетные строки */#table tbody tr:nth-child(odd) /* Четные строки */ #table tbody tr:nth-child(even) #noborder #sp30px #smallsize #top #top:hover .smalltext .smalltext:hover .transition-rotate .transition-rotate:hover #lineheight 

Со стилями покончено, теперь пишем заголовок вкладки и рисуем удобную ссылку возврата на главную страницу:

Определяем поисковые фильтры по AD, и получаем данные об OU:

$filter ="(&(objectcategory=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"; //все пользователи, кроме отключенных. $filter2 ="(objectCategory=OrganizationalUnit)"; // для получения информации о OU $ds=ldap_connect($srv); if ($ds) < $r=ldap_bind($ds,$srv_login,$srv_password);; ldap_set_option($ds,LDAP_OPT_REFERRALS, 0); ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3); $sr=ldap_search($ds,$dn ,$filter ); ldap_sort($ds,$sr, "givenname"); $info = ldap_get_entries($ds, $sr); $sr2=ldap_search($ds,$dn ,$filter2 ); $placeinfo = ldap_get_entries($ds, $sr2); $PlaceName = $placeinfo[0]["l"][0]; // name of place $PlaceAddres = $placeinfo[0]["street"][0]; // address of place $PlaceMail = $placeinfo[0]["description"][0]; // mail of place $PlacePhone = $placeinfo[0]["st"][0]; // phone of plase 

Далее оформляем верхнюю часть страницы:

Далее получаем в цикле и обрабатываем данные пользователей, при этом, чтобы скрыть некоторые (например служебные) учётные записи, просто прописываем «hide» в поле «комната» в реквизитах пользователя в AD, такие пользователи не будут отображаться в справочнике:

Кстати, если вам потребуется получить значение другого атрибута, то помните (это важно):
в запросе передаём имя атрибута строчными буквами, иначе не заработает.

И вставляем полученные данные в таблицу:

 echo " ". $n+=1 ." ". $UserName ." 
". $UserPosition ."
"; // Имя пользователя и должность if ($UserMail !='-') echo "
$UserMail
"; // если у пользователя есть e-mail создаём ссылку на отправку письма else echo "-"; //если нет e-mail - ставим прочерк. echo " ". $UserIpPhone ." ". $UserMobile ." "; > > echo "";

Далее мы закрываем подключение по ldap, или выводим сообщение о невозможности подключения к серверу:

ldap_close($ds); > else echo "

Unable to connect to LDAP server

"; echo '
';>

Файл «main_table.html» изнутри себя представляет простую html страницу с ссылками, и выглядит примерно так:

     
Places and offices

OU1
OU2

Если кому-либо поможет мой код — я буду рад, пользуйтесь!

Также можете свободно редактировать его как вам угодно (улучшать/ухудшать) и распространять любыми методами.

Источник

Телефонный справочник из Active Directory за 5 минут

Это краткая инструкция для быстрого запуска поисковой веб системы по данным (ФИО, должность, отдел, номер телефона, email) сотрудников из Active Directory (AD), сокращенно "телефонный справочник".

Для телефонного справочника нам нужны:

- Заполненная единообразно Active Directory

- Datatables для удобной работы с табличным отображением данных

1) Скачиваем архив и распаковываем на своем веб сервере.

2) В файле index.php указываем информацию из вашей Active Directory:

$srv = "";
$srv_domain = "";
$srv_login = "";
$srv_password = "";
$dn = "";

$srv = ""; - указываем IP адрес или FQDN контроллера домена, например, 192.168.1.1
$srv_domain = ""; - указываем суффикс домена, например, example.com
$srv_login = ""; - указываем логин пользователя, имеющего право читать ldap, например, admin@example.com
$srv_password = ""; - указываем его пароль
$dn = ""; - указываем базу, из которой будем читать пользователей, например, ou=Company,dc=example,dc=com

Так же указываем фильтр для выгрузки из AD, например, группу, в которую входят нужные нам пользователи, memberof=CN=Spravochnik,OU=Company,DC=example,DC=com .

3) После этих действий справочник будет работать.

"cn" - выводимое имя

"mail" - Email адрес

"title" - должность

"department" - отдел

"company" - организация

"telephonenumber" - номер телефона

"thumbnailphoto" - предпросмотр фото сотрудника

"jpegphoto" - фото сотрудника

"samaccountname" - имя входа пользователя(логин)

"info" - заметки

"manager" - руководитель

Поля thumbnailphoto и jpegphoto добавляются путем расширения схемы с помощью утилиты adext (установка описана в readme).

Источник

Читайте также:  This in object literal javascript
Оцените статью