OTRS 4.0.10. Ставим на Ubuntu + AD + Kerberos + SSO (Часть третья)

от автора

Третья часть статьи по установки и настройке OTRS на UbuntuServer в среде MS AD. Теперь поговорим об исправлениях различных косяков и прикручивании полезных плюшек. Первые две статьи более меняться не будут, а все остальны мои наработки будут дописываться в эту статью, получится такой неплохой howto.

Исправляем косяки локализации

В интерфейсе кустомера есть косячёк, на кнопке выхода вместо имени пользователя красуется %c %c, тоесть как-то так «Выход из системы %с %с». Исправляется это очень легко. Открываем файл /opt/otrs/Kernel/Language/ru.pm:
mcedit /opt/otrs/Kernel/Language/ru.pm
Находим строку «%c %c» (обратите внимание символу русские), если не получится, то номер строки 3070, и меняем «%c %c» на «%s %s». Сохраняем и всё ок.

Приятная плюшка №1. Модуль FAQ.

Думаю не стоит объяснять на сколько это полезный модуль в такой системе.
Для кустомеров сюда можно внести всяческие инструкции и ответы на часто задаваемые вопросы, а для агентов некое подобие базы знаний с напоминалками. короче всё что угодно на ваш выбор. Ставится эта плюшка прощще некуда.
Переходим на сайт OTRS в раздел публичных закачек
Выбираем Public Extensions -> OTRS 4 -> FAQ и качаем пакет с нашим модулем.
Заходим в админку OTRS -> Администрирование системы -> Управление пакетами.
Жмем кнопку «Обзор» и выбираем файл только что скачанного пакета, жмём установить.

Может выскочить ошибка:

Исправляется это правкой файла /etc/otrs/Kernel/Config.pm
находим в нем параметр SecureMode и изменяем его значение на 1, если такого нет, то дописываем вручную как на картинке

Вот собственно и всё, как добавлять статьи и раздавать на них доступ рассказывать не буду, тут вариантов нет и всё делается единственным способом информации по которому в сети валом.

Приятная плюшка №2. Модуль iPhoneHandle.

Что это за зверь такой, а зверь этот позволяет прикрутить к OTRS мобильные устройства агентов и работать с системой прямо с них, получать заявки, отвечать на них и закрывать прямо в телефоне, бесценная плюшка для санатория со 100% покрытием вафлей и огромным шататом сантихников, электриков и прочих инженеров.
В документации по OTRS говориться (да и из названия это тоже понятно) что модуль этот написан для iPhone и официальный клиент есть только под iPhone.
Но как оказалось сторонние умельцы уже давно распарсили протокол и понаписали клиентов для других платформ. Да и согласитесь было бы страно если бы сантехник носил при себе iPhone в кармане спецовки. Под андроид их даже два, на выбор, это DSHelpdesk (есть платная версия этого приложения) и просто Help desk.
И так, ставим модуль.
Качаем его всё с того же места что и предыдущий (повторно ссылку давать не буду).
Выбираем на последнем этапе соответсвующий модуль, ставим его аналогичнм способом что и предыдущий модуль. Поле установки в папке /opt/otrs/bin/cgi-bin/ должен появится файл json.pl, если появислся, значит всё ок, модуль встал удачно.

Далее ставим понравившееся приложение и перечисленных выше и пробуем зацепиться к серверу OTRS иииии (если вы делали настройку по моим инструкциям) не тут-то было, сразу всё не прокатит. А всё потому что модуль json.pl не дружит ни с какой авторизацией кроме авторизаци из DB самого OTRS. Поэтому топаем в /opt/otrs/Kernel/Config.pm и сразу же после блока авторизации AD добавляем ещё один бэк-энд блок авторизации в DB.
Выглядить это должно вот так:

# Указываем фильтр и параметры подключения к LDAP# $Self->{'AuthModule::LDAP::AlwaysFilter'} = '';  $Self->{'AuthModule::LDAP::Params'} = {  port => 389,  timeout => 120,  async => 0,  version => 3,  sscope => 'sub'  };   # Конец настроек LDAP аутентификации для Агентов #  # Настройка второго бек-энда для авторизации мобильных клиентов # $Self->{'AuthModule1'}='Kernel::System::Auth::DB';   # Настройка модуля синхронизации Агентов с LDAP # # Синхронизируем базу агентов с LDAP #  $Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';  

Что бы было понятнее, мы вставили вот такие строчки:

# Настройка второго бек-энда для авторизации мобильных клиентов # $Self->{'AuthModule1'}='Kernel::System::Auth::DB'; 

Попробуем зацепиться иииии, снова никак, а если вы выбрали для мобильно устройства DSHelpdesk, программа ещё и схлопнеться с ошибкой.
Трабла в том, что мобильный клиент не понимает что-такое Kerberos-авторизация, а Apache2 доблестно требует авторизоваться при попытках достпа к каталогу /opt/otrs/bin/cgi-bin и к файлу json.pl в том числе. Поэтому надо объяснить апачу что для достпа к этому файлу авторизация не обязательна, а для этого придётся подредактировать файл настроек виртуального хоста /etc/apache2/sites-enabled/otrs.conf и добавить в него ещё один маленький блок

    <Location /otrs/json.pl>     ErrorDocument 403 /otrs/json.pl     SetHandler  perl-script     PerlResponseHandler ModPerl::Registry     Options +ExecCGI     PerlOptions +ParseHeaders     PerlOptions +SetupEnv     Require all granted     Satisfy Any     </Location> 

Я добавил сразу же после первого блока Location сразу же после тега

Теперь привычные уже

service apache2 reload service apache2 restart 

И пробуем авторизоваться из мобильного клиента снова, и если вы всё сделали правильно, то авторизация пройдет успешно и мы увидим заявки отсортированные по папкам в соответствии со статусами.

Исправляем косяки

Модуль отлично работает, приложение цепляется, заявки видим, но вот проблема, при попытке открыть детали заявки, приложение либо выкидывает ошибку и ничего не открывает либо вообще схлопывается. А содержание той ошибки типа такого:
«No access method ‘TicketFlagSet()’ from ‘TicketObject’»
Долго рылся в поисках ответа, пока не прочитал внимательно описание одного из приложений прямо в Play-Market-е.
Оказалось решается это просто. Идём в админку OTRS: Администрирование системы -> Конфигурация системы -> в выпадающем меню выбираем iPhoneHandle -> API
Находим параметр
iPhone::API::Object###TicketObject
И стираем всё что там есть, жмём «Отправить» внизу страницы и вуаля, всё работает так так и должно и заявка в мобильном приложении открывается с подробностями и никаких ошибок.

ссылка на оригинал статьи http://habrahabr.ru/post/265541/