суббота, 1 декабря 2012 г.

FreeSWITCH users via LDAP

Потребовалось авторизовать пользователей FreeSWITCH через LDAP вместо XML Directory. Оба имевшихся в комплекте модуля оказались со странностями:
  • mod_ldap вообще не похож на рабочий, код просто недописан
  • mod_xml_ldap пытается быть слишком универсальным и предполагает использование собственной схемы, в которой для одного пользователя предполагается иметь по записи для каждого параметра вместо очевидного, казалось бы, решения - добывать необходимую для авторизации информацию прямо из имеющихся атрибутов записей с objectClass=person
Впрочем, у FreeSWITCH есть универсальное решение для 99% интеграционных задач - mod_xml_curl + внешний HTTP-сервер (или один из поддерживаемых встраиваемых скриптовых языков). Беда в том, что это решение затягивает. Меня затянуло до встраивания LDAP-сервера :).

Затем я пришел в себя и решил все же еще раз вчитаться в код нативных модулей и исправить/переписать тот, который окажется более вменяемым. Все оказалось проще - второй модуль уже почти переписали и, видимо следуя общей традиции поддержки LDAP, таки бросили уже почти на финише.

Сделать последний шаг оказалось несложно. Оно работает, хотя и нуждается в более тщательном тестировании.